Lynx UI Guidance
Use this skill when a Lynx.js app exposes a workspace-resolvable @dumbooks/lynx-ui package or needs a Lynx-native fallback when that package is unavailable.
This package is poised for future open source, but this skill must frame it as local to the current workspace for now. Do not imply public npm availability, public OSS release approval, license clearance, or external consumer stability unless the local package docs/manifest and release proofs explicitly say so.
This skill is a read-time contract checklist. Do not hardcode component counts, stability counts, or schema assumptions from remembered docs; query the local registry/docs/CLI/MCP surface available in the current environment because docs and manifest can diverge.
Hard boundaries
- Resolve the local
lynx-ui package from the target project's declared dependency or workspace configuration; do not search arbitrary machine paths.
- Read the resolved
lynx-ui package only; do not write to it without a separate explicit package-edit task.
- Treat
@dumbooks/lynx-ui as a local-workspace/internal-beta dependency unless the consuming project evidence proves a published package source.
- Prefer package imports from
@dumbooks/lynx-ui for promoted internal-beta package components when the consuming workspace can resolve the local package.
- Treat
@dumbooks/lynx-ui/experimental as an opt-in compatibility alias, not the default recommendation.
- Do not read secrets, tokens, private registry credentials, or arbitrary files outside approved project paths.
- Do not perform MCP-driven installs or writes. Install-like requests should return a guarded local CLI plan.
- Do not copy DOM/Radix/Tailwind/daisyUI runtime source into Lynx runtime code. Adapt behavior with Lynx primitives and independently authored package APIs.
- Keep proof and stability caveats visible:
internal-beta, public-web-beta, and tri-platform-stable are separate proof levels.
- Keep app business logic outside design-system migration suggestions: preserve route-owned calculations, navigation targets, data selectors, and service boundaries.
Local-workspace framing
When recommending @dumbooks/lynx-ui:
- State that the evidence comes from the package root resolved through the target workspace's dependency graph.
- Do not claim it is published, installable from a public registry, or stable for unrelated external projects.
- If the target app is outside the Dumbooks/workspace context, provide two paths: local workspace integration if available, or a Lynx-native composition fallback using official Lynx elements and CSS Modules.
- Separate internal package import proof from external package-consumer proof. Source aliases, workspace app runtime proof, and built package proof are not interchangeable.
- Future OSS readiness is a roadmap/status note, not permission to copy package source or make public release claims.
External-consumer availability gate
For any target app that is outside the local Dumbooks/workspace context, first check whether @dumbooks/lynx-ui is actually consumable by that app:
- Read the target app's dependency graph (
package.json, workspace config, lockfile, aliases, or package manager workspace evidence) for a resolvable @dumbooks/lynx-ui dependency.
- Resolve the package root from that dependency graph, then read its
package.json for private, license, version, exports, peer dependencies, and package files before making availability claims.
- If the package manifest is still private, unlicensed, repo-local, or otherwise unpublished, state that package-import guidance is local-workspace/internal-beta only and give a Lynx-native fallback composition.
- Built package claims require built-dist proof such as
pnpm validate:lynx-ui:package-build; public registry or public OSS claims require explicit package manifest, release, license/originality, and publication evidence.
- Do not suggest
npm install @dumbooks/lynx-ui, public registry installation, external support expectations, or native-stable quality unless the current package evidence proves those claims.
Registry-first component selection
Before recommending a component, import path, migration, stability claim, copy/install plan, or visual-style/base-color choice:
- Read the registry entry, local docs, registry examples, or MCP component resource from the resolved package root.
- Check these required fields when present in the manifest/resource:
status
stability
ownership.copyInstall
publicExport
exportChannel
engineCompatibility.proof
runtimeCompatibility.proofGate
runtimeCompatibility.targetHosts
runtimeCompatibility.verifiedHosts
sourceProvenance
contentHash
proofArtifacts
proofRequirements
aiUsageHints
licenseOriginalityNotes
officialSubstrateStatus
officialSubstrate
adapterStrategy
dependencyGate
- Check the registry
examples field and the referenced examples/*.tsx files when usage patterns, prop combinations, state ownership, or visual-style/base-color composition are needed. Do not invent component APIs when an example or docs file exists.
- Prefer package imports for package-owned components whose
exportChannel supports root package use and whose workspace resolution is available.
- Keep official substrate status visible:
official-backed means an approved official Lynx UI package or facade is part of the implementation.
official-concept-complete means official concepts inform the local implementation without an unapproved runtime dependency.
local-owned-complete means local tokens/elements/proof gates own the behavior.
- unresolved/deferred substrate or dependency gates must be reported as follow-up risk, not hidden.
- For copy/install-style requests, explain the dry-run-first CLI workflow and require explicit write-mode approval before mutation. Do not mutate through MCP or through this skill.
- Run or request the lightest validation that proves the claim; require host runtime or visual proof before UI-quality/stability claims.
Useful read-only references
After resolving the package root from the target workspace, inspect only the files relevant to the request:
package.json
README.md
docs/AI_TOOLING_CONTRACT.md
docs/COMPONENT_REFERENCE.md
docs/COMPONENT_STRATEGY.md
docs/OFFICIAL_LYNX_UI_HYBRID_STRATEGY.md
src/registry/manifest.json
src/index.ts
examples/README.md
examples/components.tsx
examples/flavor-gallery.tsx
Package, source-alias, and proof distinctions
- The root
@dumbooks/lynx-ui entrypoint is the default recommendation for internal-beta package components when the registry says the component is publicly exported through the root channel and the consuming workspace can resolve it.
@dumbooks/lynx-ui/experimental is a compatibility alias for promotion-history consumers and future opt-in experimental entries; do not recommend it by default.
- Workspace app runtime proof can be source-alias scoped. Do not treat source-alias behavior as proof that built package artifacts work for external package consumers.
- Built package claims require package-build proof such as
pnpm validate:lynx-ui:package-build in the resolved package workspace; do not run it unless the user is working in that workspace and asks for validation.
- Public/external runtime claims require built-dist package proof or a future host-runtime proof that consumes built artifacts.
- Public web beta and tri-platform stable are separate release profiles; internal beta does not imply public release approval, iOS/Android proof, or native-stable quality.
- License/originality notes and public OSS release gates must stay visible when adapting shadcn-like, daisyUI-like, or official-substrate concepts.
Exact export surface
Confirm the current package.json exports map before recommending imports. As of the current local package contract, the intended import surfaces are:
@dumbooks/lynx-ui — root internal-beta component and token entrypoint; default only when workspace/package resolution is proven.
@dumbooks/lynx-ui/tokens — token helpers and registries for code consumers.
@dumbooks/lynx-ui/tokens.css — token/theme CSS side-effect import for theme layers.
@dumbooks/lynx-ui/token-registry — token registry JSON for tooling/inspection.
@dumbooks/lynx-ui/flavors — visual style and base-color registries.
@dumbooks/lynx-ui/registry — registry helper module for local tooling.
@dumbooks/lynx-ui/registry-manifest — registry manifest JSON for read-only metadata checks.
@dumbooks/lynx-ui/experimental — compatibility alias only; never the default recommendation.
If any export is missing, private, source-alias-only, or blocked by the target workspace, do not invent an import path. Report the missing exact export surface and provide a Lynx-native fallback using official elements and CSS Modules.
Examples-first usage lookup
When usage is unclear, read examples before writing or recommending code:
- Prefer a component registry
examples field when present because it is component-scoped.
- Use
examples/components.tsx for root component composition patterns.
- Use
examples/flavor-gallery.tsx for visual style/base-color/token composition.
- Use workflow-specific examples such as
examples/reconciliation-exception-review.tsx when forms, validation messages, review queues, or app-local business logic boundaries are in scope.
- Treat examples as usage evidence, not permission to copy private package internals into external projects. Preserve route-owned business logic and adapt only public-safe package imports or Lynx-native composition patterns.
Local CLI boundary
Use these as documentation or read-only planning guidance, not as implicit permission to mutate:
pnpm lynx-ui list --json
pnpm lynx-ui info <component-id> --json
pnpm lynx-ui theme --json
pnpm lynx-ui list --items --json
pnpm lynx-ui doctor --json
pnpm lynx-ui check --json
pnpm lynx-ui diff <component-id> --to <target-dir> --json
diff is read-only. add, copy, install, and sync are dry-run by default in the package contract; mutating runs require explicit --write, a caller-provided target directory, generated-file markers, rollback/provenance metadata, and conflict guards. This skill must not run those mutating commands unless the user starts a separate approved copy/install task.
Current public categories
Use registry/docs to confirm exact availability. Do not hardcode counts.
- Primitives: text, surfaces, buttons, cards, badges, status, loading, separators, and foundations.
- Forms: fields, labels, input controls, search, selection, validation messages, toggles, sliders, and related controls.
- Interactions: tabs, disclosures, overlays, menus, popovers, dialogs, drawers, tooltips, carousels, pagination, and scroll/command-like surfaces.
- Patterns: breadcrumbs, record lists, detail sections, empty states, metric cards, workspace sections, toolbars, sidebars, tables, charts, and app-composition helpers.
- Platform items: visual styles, base-color palettes, token/theme layer, CLI, MCP, docs, registry, and skill metadata via
list --items, the manifest items array, or local docs.
Recommended output shapes
Component recommendation
- State the chosen
@dumbooks/lynx-ui import path and that it is local-workspace/internal-beta unless target evidence proves otherwise.
- State the exact export surface used, including subpath when relevant.
- Name the registry/doc/example evidence checked.
- List package availability and proof caveats before broad quality/stability claims.
- State
officialSubstrateStatus, officialSubstrate, adapterStrategy, and dependencyGate when relevant.
- Provide source changes only in the consuming app, not inside
packages/lynx-ui, unless the user starts a package-edit task.
- If workspace resolution or external-consumer proof is not proven, include a Lynx-native fallback composition using official elements and CSS Modules.
Unavailable component
- State that the component was not found or lacks the required proof/export/workspace gate.
- Suggest a Lynx-native composition using available primitives/patterns or official elements.
- Mark missing package capability as a follow-up instead of inventing a package API.
Copy/install request
- Prefer package import first when local workspace resolution is available.
- If copy ownership is explicitly required, return a dry-run plan using
pnpm lynx-ui diff <id> --to <dir> --json.
- Explain that mutation requires a separate explicit
--write command and review of generated rollback/provenance metadata.
- Do not perform MCP writes.
Visual style/base color selection
- Query theme/style/base-color metadata (
theme, list --items, registry items, docs, or MCP resource).
- State selected visual style and base-color evidence.
- Record proof limits for the target host before making visual-quality claims.
Migration guidance
- Preserve business logic, navigation, data selectors, accounting/service behavior, and host/native-module boundaries.
- Replace DOM/Radix/Tailwind runtime assumptions with Lynx elements, CSS Modules, tokens, and package APIs.
- Keep unavailable capabilities as follow-ups and require validation evidence before broad stability claims.
- Separate local-workspace import guidance from future OSS/package-release guidance.
1---2name: lynx-ui-guidance3description: Use read-only @dumbooks/lynx-ui guidance for Lynx-native UI composition, component selection, registry checks, package-import-first usage, exact export surface and examples lookup, proof gates, official-substrate metadata, guarded CLI boundaries, local-workspace/external-consumer framing, and migration planning. Applies when a Lynx app needs components, tokens, forms, overlays, patterns, themes, visual styles, base colors, or a replacement for DOM-oriented UI-kit assumptions.4license: MIT5---67# Lynx UI Guidance89Use this skill when a Lynx.js app exposes a workspace-resolvable `@dumbooks/lynx-ui` package or needs a Lynx-native fallback when that package is unavailable.1011This package is poised for future open source, but this skill must frame it as **local to the current workspace for now**. Do not imply public npm availability, public OSS release approval, license clearance, or external consumer stability unless the local package docs/manifest and release proofs explicitly say so.1213This skill is a read-time contract checklist. Do not hardcode component counts, stability counts, or schema assumptions from remembered docs; query the local registry/docs/CLI/MCP surface available in the current environment because docs and manifest can diverge.1415## Hard boundaries1617- Resolve the local `lynx-ui` package from the target project's declared dependency or workspace configuration; do not search arbitrary machine paths.18- Read the resolved `lynx-ui` package only; do not write to it without a separate explicit package-edit task.19- Treat `@dumbooks/lynx-ui` as a local-workspace/internal-beta dependency unless the consuming project evidence proves a published package source.20- Prefer package imports from `@dumbooks/lynx-ui` for promoted internal-beta package components when the consuming workspace can resolve the local package.21- Treat `@dumbooks/lynx-ui/experimental` as an opt-in compatibility alias, not the default recommendation.22- Do not read secrets, tokens, private registry credentials, or arbitrary files outside approved project paths.23- Do not perform MCP-driven installs or writes. Install-like requests should return a guarded local CLI plan.24- Do not copy DOM/Radix/Tailwind/daisyUI runtime source into Lynx runtime code. Adapt behavior with Lynx primitives and independently authored package APIs.25- Keep proof and stability caveats visible: `internal-beta`, `public-web-beta`, and `tri-platform-stable` are separate proof levels.26- Keep app business logic outside design-system migration suggestions: preserve route-owned calculations, navigation targets, data selectors, and service boundaries.2728## Local-workspace framing2930When recommending `@dumbooks/lynx-ui`:3132- State that the evidence comes from the package root resolved through the target workspace's dependency graph.33- Do not claim it is published, installable from a public registry, or stable for unrelated external projects.34- If the target app is outside the Dumbooks/workspace context, provide two paths: local workspace integration if available, or a Lynx-native composition fallback using official Lynx elements and CSS Modules.35- Separate internal package import proof from external package-consumer proof. Source aliases, workspace app runtime proof, and built package proof are not interchangeable.36- Future OSS readiness is a roadmap/status note, not permission to copy package source or make public release claims.3738## External-consumer availability gate3940For any target app that is outside the local Dumbooks/workspace context, first check whether `@dumbooks/lynx-ui` is actually consumable by that app:41421. Read the target app's dependency graph (`package.json`, workspace config, lockfile, aliases, or package manager workspace evidence) for a resolvable `@dumbooks/lynx-ui` dependency.432. Resolve the package root from that dependency graph, then read its `package.json` for `private`, `license`, `version`, `exports`, peer dependencies, and package files before making availability claims.443. If the package manifest is still private, unlicensed, repo-local, or otherwise unpublished, state that package-import guidance is local-workspace/internal-beta only and give a Lynx-native fallback composition.454. Built package claims require built-dist proof such as `pnpm validate:lynx-ui:package-build`; public registry or public OSS claims require explicit package manifest, release, license/originality, and publication evidence.465. Do not suggest `npm install @dumbooks/lynx-ui`, public registry installation, external support expectations, or native-stable quality unless the current package evidence proves those claims.4748## Registry-first component selection4950Before recommending a component, import path, migration, stability claim, copy/install plan, or visual-style/base-color choice:51521. Read the registry entry, local docs, registry examples, or MCP component resource from the resolved package root.532. Check these required fields when present in the manifest/resource:54 - `status`55 - `stability`56 - `ownership.copyInstall`57 - `publicExport`58 - `exportChannel`59 - `engineCompatibility.proof`60 - `runtimeCompatibility.proofGate`61 - `runtimeCompatibility.targetHosts`62 - `runtimeCompatibility.verifiedHosts`63 - `sourceProvenance`64 - `contentHash`65 - `proofArtifacts`66 - `proofRequirements`67 - `aiUsageHints`68 - `licenseOriginalityNotes`69 - `officialSubstrateStatus`70 - `officialSubstrate`71 - `adapterStrategy`72 - `dependencyGate`733. Check the registry `examples` field and the referenced `examples/*.tsx` files when usage patterns, prop combinations, state ownership, or visual-style/base-color composition are needed. Do not invent component APIs when an example or docs file exists.744. Prefer package imports for package-owned components whose `exportChannel` supports root package use and whose workspace resolution is available.755. Keep official substrate status visible:76 - `official-backed` means an approved official Lynx UI package or facade is part of the implementation.77 - `official-concept-complete` means official concepts inform the local implementation without an unapproved runtime dependency.78 - `local-owned-complete` means local tokens/elements/proof gates own the behavior.79 - unresolved/deferred substrate or dependency gates must be reported as follow-up risk, not hidden.806. For copy/install-style requests, explain the dry-run-first CLI workflow and require explicit write-mode approval before mutation. Do not mutate through MCP or through this skill.817. Run or request the lightest validation that proves the claim; require host runtime or visual proof before UI-quality/stability claims.8283## Useful read-only references8485After resolving the package root from the target workspace, inspect only the files relevant to the request:8687- `package.json`88- `README.md`89- `docs/AI_TOOLING_CONTRACT.md`90- `docs/COMPONENT_REFERENCE.md`91- `docs/COMPONENT_STRATEGY.md`92- `docs/OFFICIAL_LYNX_UI_HYBRID_STRATEGY.md`93- `src/registry/manifest.json`94- `src/index.ts`95- `examples/README.md`96- `examples/components.tsx`97- `examples/flavor-gallery.tsx`9899## Package, source-alias, and proof distinctions100101- The root `@dumbooks/lynx-ui` entrypoint is the default recommendation for internal-beta package components when the registry says the component is publicly exported through the root channel and the consuming workspace can resolve it.102- `@dumbooks/lynx-ui/experimental` is a compatibility alias for promotion-history consumers and future opt-in experimental entries; do not recommend it by default.103- Workspace app runtime proof can be source-alias scoped. Do not treat source-alias behavior as proof that built package artifacts work for external package consumers.104- Built package claims require package-build proof such as `pnpm validate:lynx-ui:package-build` in the resolved package workspace; do not run it unless the user is working in that workspace and asks for validation.105- Public/external runtime claims require built-dist package proof or a future host-runtime proof that consumes built artifacts.106- Public web beta and tri-platform stable are separate release profiles; internal beta does not imply public release approval, iOS/Android proof, or native-stable quality.107- License/originality notes and public OSS release gates must stay visible when adapting shadcn-like, daisyUI-like, or official-substrate concepts.108109## Exact export surface110111Confirm the current `package.json` `exports` map before recommending imports. As of the current local package contract, the intended import surfaces are:112113- `@dumbooks/lynx-ui` — root internal-beta component and token entrypoint; default only when workspace/package resolution is proven.114- `@dumbooks/lynx-ui/tokens` — token helpers and registries for code consumers.115- `@dumbooks/lynx-ui/tokens.css` — token/theme CSS side-effect import for theme layers.116- `@dumbooks/lynx-ui/token-registry` — token registry JSON for tooling/inspection.117- `@dumbooks/lynx-ui/flavors` — visual style and base-color registries.118- `@dumbooks/lynx-ui/registry` — registry helper module for local tooling.119- `@dumbooks/lynx-ui/registry-manifest` — registry manifest JSON for read-only metadata checks.120- `@dumbooks/lynx-ui/experimental` — compatibility alias only; never the default recommendation.121122If any export is missing, private, source-alias-only, or blocked by the target workspace, do not invent an import path. Report the missing exact export surface and provide a Lynx-native fallback using official elements and CSS Modules.123124## Examples-first usage lookup125126When usage is unclear, read examples before writing or recommending code:127128- Prefer a component registry `examples` field when present because it is component-scoped.129- Use `examples/components.tsx` for root component composition patterns.130- Use `examples/flavor-gallery.tsx` for visual style/base-color/token composition.131- Use workflow-specific examples such as `examples/reconciliation-exception-review.tsx` when forms, validation messages, review queues, or app-local business logic boundaries are in scope.132- Treat examples as usage evidence, not permission to copy private package internals into external projects. Preserve route-owned business logic and adapt only public-safe package imports or Lynx-native composition patterns.133134## Local CLI boundary135136Use these as documentation or read-only planning guidance, not as implicit permission to mutate:137138```bash139pnpm lynx-ui list --json140pnpm lynx-ui info <component-id> --json141pnpm lynx-ui theme --json142pnpm lynx-ui list --items --json143pnpm lynx-ui doctor --json144pnpm lynx-ui check --json145pnpm lynx-ui diff <component-id> --to <target-dir> --json146```147148`diff` is read-only. `add`, `copy`, `install`, and `sync` are dry-run by default in the package contract; mutating runs require explicit `--write`, a caller-provided target directory, generated-file markers, rollback/provenance metadata, and conflict guards. This skill must not run those mutating commands unless the user starts a separate approved copy/install task.149150## Current public categories151152Use registry/docs to confirm exact availability. Do not hardcode counts.153154- **Primitives:** text, surfaces, buttons, cards, badges, status, loading, separators, and foundations.155- **Forms:** fields, labels, input controls, search, selection, validation messages, toggles, sliders, and related controls.156- **Interactions:** tabs, disclosures, overlays, menus, popovers, dialogs, drawers, tooltips, carousels, pagination, and scroll/command-like surfaces.157- **Patterns:** breadcrumbs, record lists, detail sections, empty states, metric cards, workspace sections, toolbars, sidebars, tables, charts, and app-composition helpers.158- **Platform items:** visual styles, base-color palettes, token/theme layer, CLI, MCP, docs, registry, and skill metadata via `list --items`, the manifest `items` array, or local docs.159160## Recommended output shapes161162### Component recommendation1631641. State the chosen `@dumbooks/lynx-ui` import path and that it is local-workspace/internal-beta unless target evidence proves otherwise.1652. State the exact export surface used, including subpath when relevant.1663. Name the registry/doc/example evidence checked.1674. List package availability and proof caveats before broad quality/stability claims.1685. State `officialSubstrateStatus`, `officialSubstrate`, `adapterStrategy`, and `dependencyGate` when relevant.1696. Provide source changes only in the consuming app, not inside `packages/lynx-ui`, unless the user starts a package-edit task.1707. If workspace resolution or external-consumer proof is not proven, include a Lynx-native fallback composition using official elements and CSS Modules.171172### Unavailable component1731741. State that the component was not found or lacks the required proof/export/workspace gate.1752. Suggest a Lynx-native composition using available primitives/patterns or official elements.1763. Mark missing package capability as a follow-up instead of inventing a package API.177178### Copy/install request1791801. Prefer package import first when local workspace resolution is available.1812. If copy ownership is explicitly required, return a dry-run plan using `pnpm lynx-ui diff <id> --to <dir> --json`.1823. Explain that mutation requires a separate explicit `--write` command and review of generated rollback/provenance metadata.1834. Do not perform MCP writes.184185### Visual style/base color selection1861871. Query theme/style/base-color metadata (`theme`, `list --items`, registry `items`, docs, or MCP resource).1882. State selected visual style and base-color evidence.1893. Record proof limits for the target host before making visual-quality claims.190191### Migration guidance1921931. Preserve business logic, navigation, data selectors, accounting/service behavior, and host/native-module boundaries.1942. Replace DOM/Radix/Tailwind runtime assumptions with Lynx elements, CSS Modules, tokens, and package APIs.1953. Keep unavailable capabilities as follow-ups and require validation evidence before broad stability claims.1964. Separate local-workspace import guidance from future OSS/package-release guidance.