quiver-cli 1.3.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +197 -239
- package/dist/cli.js +3163 -2040
- package/package.json +10 -11
- package/template/.agents/AGENTS.md +0 -26
- package/template/.agents/commands/cp.md +0 -108
- package/template/.agents/commands/next-setup.md +0 -1064
- package/template/.agents/commands/review.md +0 -68
- package/template/.agents/commands/terraform-readme.md +0 -38
- package/template/.agents/config.json +0 -80
- package/template/.agents/plugins/opencode/rtk.ts +0 -34
- package/template/.agents/skills/agent-browser/SKILL.md +0 -51
- package/template/.agents/skills/apps/skybridge/SKILL.md +0 -50
- package/template/.agents/skills/code/cleanup/SKILL.md +0 -26
- package/template/.agents/skills/code/improve/SKILL.md +0 -122
- package/template/.agents/skills/code/improve/references/audit-playbook.md +0 -130
- package/template/.agents/skills/code/improve/references/closing-the-loop.md +0 -96
- package/template/.agents/skills/code/improve/references/plan-template.md +0 -197
- package/template/.agents/skills/code/vercel-react-best-practices/AGENTS.md +0 -3810
- package/template/.agents/skills/code/vercel-react-best-practices/README.md +0 -123
- package/template/.agents/skills/code/vercel-react-best-practices/SKILL.md +0 -149
- package/template/.agents/skills/code/vercel-react-best-practices/metadata.json +0 -15
- package/template/.agents/skills/code/vercel-react-best-practices/rules/_sections.md +0 -46
- package/template/.agents/skills/code/vercel-react-best-practices/rules/_template.md +0 -28
- package/template/.agents/skills/code/vercel-react-best-practices/rules/advanced-effect-event-deps.md +0 -56
- package/template/.agents/skills/code/vercel-react-best-practices/rules/advanced-event-handler-refs.md +0 -55
- package/template/.agents/skills/code/vercel-react-best-practices/rules/advanced-init-once.md +0 -42
- package/template/.agents/skills/code/vercel-react-best-practices/rules/advanced-use-latest.md +0 -39
- package/template/.agents/skills/code/vercel-react-best-practices/rules/async-api-routes.md +0 -38
- package/template/.agents/skills/code/vercel-react-best-practices/rules/async-cheap-condition-before-await.md +0 -37
- package/template/.agents/skills/code/vercel-react-best-practices/rules/async-defer-await.md +0 -82
- package/template/.agents/skills/code/vercel-react-best-practices/rules/async-dependencies.md +0 -51
- package/template/.agents/skills/code/vercel-react-best-practices/rules/async-parallel.md +0 -28
- package/template/.agents/skills/code/vercel-react-best-practices/rules/async-suspense-boundaries.md +0 -99
- package/template/.agents/skills/code/vercel-react-best-practices/rules/bundle-analyzable-paths.md +0 -63
- package/template/.agents/skills/code/vercel-react-best-practices/rules/bundle-barrel-imports.md +0 -60
- package/template/.agents/skills/code/vercel-react-best-practices/rules/bundle-conditional.md +0 -31
- package/template/.agents/skills/code/vercel-react-best-practices/rules/bundle-defer-third-party.md +0 -49
- package/template/.agents/skills/code/vercel-react-best-practices/rules/bundle-dynamic-imports.md +0 -35
- package/template/.agents/skills/code/vercel-react-best-practices/rules/bundle-preload.md +0 -50
- package/template/.agents/skills/code/vercel-react-best-practices/rules/client-event-listeners.md +0 -74
- package/template/.agents/skills/code/vercel-react-best-practices/rules/client-localstorage-schema.md +0 -71
- package/template/.agents/skills/code/vercel-react-best-practices/rules/client-passive-event-listeners.md +0 -48
- package/template/.agents/skills/code/vercel-react-best-practices/rules/client-swr-dedup.md +0 -56
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-batch-dom-css.md +0 -107
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-cache-function-results.md +0 -80
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-cache-property-access.md +0 -28
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-cache-storage.md +0 -70
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-combine-iterations.md +0 -32
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-early-exit.md +0 -50
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-flatmap-filter.md +0 -60
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-hoist-regexp.md +0 -45
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-index-maps.md +0 -37
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-length-check-first.md +0 -49
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-min-max-loop.md +0 -82
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-request-idle-callback.md +0 -105
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-set-map-lookups.md +0 -24
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-tosorted-immutable.md +0 -57
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-activity.md +0 -26
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -47
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-conditional-render.md +0 -40
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-content-visibility.md +0 -38
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-hoist-jsx.md +0 -46
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +0 -82
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +0 -30
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-resource-hints.md +0 -85
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-script-defer-async.md +0 -68
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-svg-precision.md +0 -28
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-usetransition-loading.md +0 -75
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-defer-reads.md +0 -39
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-dependencies.md +0 -45
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +0 -40
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-derived-state.md +0 -29
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-functional-setstate.md +0 -74
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-lazy-state-init.md +0 -58
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +0 -38
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-memo.md +0 -44
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +0 -45
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-no-inline-components.md +0 -82
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +0 -35
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +0 -64
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-transitions.md +0 -40
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-use-deferred-value.md +0 -59
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +0 -73
- package/template/.agents/skills/code/vercel-react-best-practices/rules/server-after-nonblocking.md +0 -73
- package/template/.agents/skills/code/vercel-react-best-practices/rules/server-auth-actions.md +0 -96
- package/template/.agents/skills/code/vercel-react-best-practices/rules/server-cache-lru.md +0 -41
- package/template/.agents/skills/code/vercel-react-best-practices/rules/server-cache-react.md +0 -76
- package/template/.agents/skills/code/vercel-react-best-practices/rules/server-dedup-props.md +0 -65
- package/template/.agents/skills/code/vercel-react-best-practices/rules/server-hoist-static-io.md +0 -149
- package/template/.agents/skills/code/vercel-react-best-practices/rules/server-no-shared-module-state.md +0 -50
- package/template/.agents/skills/code/vercel-react-best-practices/rules/server-parallel-fetching.md +0 -83
- package/template/.agents/skills/code/vercel-react-best-practices/rules/server-parallel-nested-fetching.md +0 -34
- package/template/.agents/skills/code/vercel-react-best-practices/rules/server-serialization.md +0 -38
- package/template/.agents/skills/data/prisma-cli/SKILL.md +0 -247
- package/template/.agents/skills/data/prisma-cli/references/db-execute.md +0 -78
- package/template/.agents/skills/data/prisma-cli/references/db-pull.md +0 -185
- package/template/.agents/skills/data/prisma-cli/references/db-push.md +0 -148
- package/template/.agents/skills/data/prisma-cli/references/db-seed.md +0 -188
- package/template/.agents/skills/data/prisma-cli/references/debug.md +0 -46
- package/template/.agents/skills/data/prisma-cli/references/dev.md +0 -157
- package/template/.agents/skills/data/prisma-cli/references/format.md +0 -48
- package/template/.agents/skills/data/prisma-cli/references/generate.md +0 -173
- package/template/.agents/skills/data/prisma-cli/references/init.md +0 -136
- package/template/.agents/skills/data/prisma-cli/references/mcp.md +0 -38
- package/template/.agents/skills/data/prisma-cli/references/migrate-deploy.md +0 -127
- package/template/.agents/skills/data/prisma-cli/references/migrate-dev.md +0 -145
- package/template/.agents/skills/data/prisma-cli/references/migrate-diff.md +0 -89
- package/template/.agents/skills/data/prisma-cli/references/migrate-reset.md +0 -78
- package/template/.agents/skills/data/prisma-cli/references/migrate-resolve.md +0 -57
- package/template/.agents/skills/data/prisma-cli/references/migrate-status.md +0 -65
- package/template/.agents/skills/data/prisma-cli/references/studio.md +0 -137
- package/template/.agents/skills/data/prisma-cli/references/validate.md +0 -53
- package/template/.agents/skills/data/prisma-client-api/SKILL.md +0 -216
- package/template/.agents/skills/data/prisma-client-api/references/client-methods.md +0 -223
- package/template/.agents/skills/data/prisma-client-api/references/constructor.md +0 -208
- package/template/.agents/skills/data/prisma-client-api/references/filters.md +0 -256
- package/template/.agents/skills/data/prisma-client-api/references/model-queries.md +0 -281
- package/template/.agents/skills/data/prisma-client-api/references/query-options.md +0 -276
- package/template/.agents/skills/data/prisma-client-api/references/raw-queries.md +0 -194
- package/template/.agents/skills/data/prisma-client-api/references/relations.md +0 -308
- package/template/.agents/skills/data/prisma-client-api/references/transactions.md +0 -184
- package/template/.agents/skills/design/impeccable/SKILL.md +0 -84
- package/template/.agents/skills/design/impeccable/reference/adapt.md +0 -312
- package/template/.agents/skills/design/impeccable/reference/adapt.native.md +0 -58
- package/template/.agents/skills/design/impeccable/reference/android.md +0 -40
- package/template/.agents/skills/design/impeccable/reference/animate.md +0 -86
- package/template/.agents/skills/design/impeccable/reference/audit.md +0 -136
- package/template/.agents/skills/design/impeccable/reference/audit.native.md +0 -139
- package/template/.agents/skills/design/impeccable/reference/bolder.md +0 -31
- package/template/.agents/skills/design/impeccable/reference/clarify.md +0 -94
- package/template/.agents/skills/design/impeccable/reference/colorize.md +0 -86
- package/template/.agents/skills/design/impeccable/reference/craft-floor.md +0 -42
- package/template/.agents/skills/design/impeccable/reference/craft.md +0 -5
- package/template/.agents/skills/design/impeccable/reference/critique.md +0 -788
- package/template/.agents/skills/design/impeccable/reference/degraded/asset-producer.md +0 -90
- package/template/.agents/skills/design/impeccable/reference/degraded/documenter.md +0 -24
- package/template/.agents/skills/design/impeccable/reference/degraded/finish-reviewer.md +0 -37
- package/template/.agents/skills/design/impeccable/reference/degraded/manual-edit-applier.md +0 -92
- package/template/.agents/skills/design/impeccable/reference/delight.md +0 -70
- package/template/.agents/skills/design/impeccable/reference/distill.md +0 -111
- package/template/.agents/skills/design/impeccable/reference/doctor.md +0 -53
- package/template/.agents/skills/design/impeccable/reference/document.md +0 -416
- package/template/.agents/skills/design/impeccable/reference/extract.md +0 -69
- package/template/.agents/skills/design/impeccable/reference/harden.md +0 -336
- package/template/.agents/skills/design/impeccable/reference/hooks.md +0 -105
- package/template/.agents/skills/design/impeccable/reference/init.md +0 -125
- package/template/.agents/skills/design/impeccable/reference/ios.md +0 -45
- package/template/.agents/skills/design/impeccable/reference/layout.md +0 -84
- package/template/.agents/skills/design/impeccable/reference/live-setup.md +0 -102
- package/template/.agents/skills/design/impeccable/reference/live.md +0 -323
- package/template/.agents/skills/design/impeccable/reference/new-work.md +0 -105
- package/template/.agents/skills/design/impeccable/reference/onboard.md +0 -234
- package/template/.agents/skills/design/impeccable/reference/operate.md +0 -61
- package/template/.agents/skills/design/impeccable/reference/optimize.md +0 -258
- package/template/.agents/skills/design/impeccable/reference/overdrive.md +0 -127
- package/template/.agents/skills/design/impeccable/reference/polish.md +0 -97
- package/template/.agents/skills/design/impeccable/reference/quieter.md +0 -99
- package/template/.agents/skills/design/impeccable/reference/routing.md +0 -18
- package/template/.agents/skills/design/impeccable/reference/shape.md +0 -59
- package/template/.agents/skills/design/impeccable/reference/typeset.md +0 -80
- package/template/.agents/skills/design/impeccable/reference/visualize.md +0 -47
- package/template/.agents/skills/design/impeccable/scripts/command-metadata.json +0 -94
- package/template/.agents/skills/design/impeccable/scripts/concept-seed.mjs +0 -558
- package/template/.agents/skills/design/impeccable/scripts/context-signals.mjs +0 -334
- package/template/.agents/skills/design/impeccable/scripts/context.mjs +0 -1450
- package/template/.agents/skills/design/impeccable/scripts/critique-storage.mjs +0 -213
- package/template/.agents/skills/design/impeccable/scripts/detect-csp.mjs +0 -198
- package/template/.agents/skills/design/impeccable/scripts/detect.mjs +0 -21
- package/template/.agents/skills/design/impeccable/scripts/detector/browser/injected/index.mjs +0 -2023
- package/template/.agents/skills/design/impeccable/scripts/detector/cli/main.mjs +0 -438
- package/template/.agents/skills/design/impeccable/scripts/detector/design-system.mjs +0 -983
- package/template/.agents/skills/design/impeccable/scripts/detector/detect-antipatterns-browser.js +0 -8283
- package/template/.agents/skills/design/impeccable/scripts/detector/detect-antipatterns.mjs +0 -50
- package/template/.agents/skills/design/impeccable/scripts/detector/engines/browser/detect-url.mjs +0 -372
- package/template/.agents/skills/design/impeccable/scripts/detector/engines/regex/detect-text.mjs +0 -768
- package/template/.agents/skills/design/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +0 -1186
- package/template/.agents/skills/design/impeccable/scripts/detector/engines/static-html/detect-html.mjs +0 -264
- package/template/.agents/skills/design/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +0 -189
- package/template/.agents/skills/design/impeccable/scripts/detector/findings.mjs +0 -18
- package/template/.agents/skills/design/impeccable/scripts/detector/node/file-system.mjs +0 -212
- package/template/.agents/skills/design/impeccable/scripts/detector/profile/profiler.mjs +0 -166
- package/template/.agents/skills/design/impeccable/scripts/detector/registry/antipatterns.mjs +0 -617
- package/template/.agents/skills/design/impeccable/scripts/detector/rules/checks.mjs +0 -5580
- package/template/.agents/skills/design/impeccable/scripts/detector/shared/color.mjs +0 -124
- package/template/.agents/skills/design/impeccable/scripts/detector/shared/constants.mjs +0 -112
- package/template/.agents/skills/design/impeccable/scripts/detector/shared/fonts.mjs +0 -30
- package/template/.agents/skills/design/impeccable/scripts/detector/shared/inline-ignores.mjs +0 -148
- package/template/.agents/skills/design/impeccable/scripts/detector/shared/page.mjs +0 -7
- package/template/.agents/skills/design/impeccable/scripts/doctor.mjs +0 -336
- package/template/.agents/skills/design/impeccable/scripts/embed-prompt.mjs +0 -133
- package/template/.agents/skills/design/impeccable/scripts/generate-image.mjs +0 -240
- package/template/.agents/skills/design/impeccable/scripts/hook-admin.mjs +0 -741
- package/template/.agents/skills/design/impeccable/scripts/hook-before-edit.mjs +0 -516
- package/template/.agents/skills/design/impeccable/scripts/hook-lib.mjs +0 -2100
- package/template/.agents/skills/design/impeccable/scripts/hook.mjs +0 -78
- package/template/.agents/skills/design/impeccable/scripts/lib/artifact-schema.mjs +0 -93
- package/template/.agents/skills/design/impeccable/scripts/lib/composition-catalog.mjs +0 -200
- package/template/.agents/skills/design/impeccable/scripts/lib/concept-catalog.mjs +0 -357
- package/template/.agents/skills/design/impeccable/scripts/lib/design-parser.mjs +0 -842
- package/template/.agents/skills/design/impeccable/scripts/lib/impeccable-config.mjs +0 -658
- package/template/.agents/skills/design/impeccable/scripts/lib/impeccable-paths.mjs +0 -137
- package/template/.agents/skills/design/impeccable/scripts/lib/is-generated.mjs +0 -69
- package/template/.agents/skills/design/impeccable/scripts/lib/provider.mjs +0 -5
- package/template/.agents/skills/design/impeccable/scripts/lib/roll-selection.mjs +0 -362
- package/template/.agents/skills/design/impeccable/scripts/lib/staleness-deep.mjs +0 -457
- package/template/.agents/skills/design/impeccable/scripts/lib/staleness-notice.mjs +0 -169
- package/template/.agents/skills/design/impeccable/scripts/lib/staleness.mjs +0 -457
- package/template/.agents/skills/design/impeccable/scripts/lib/surface-briefs.mjs +0 -151
- package/template/.agents/skills/design/impeccable/scripts/lib/target-args.mjs +0 -42
- package/template/.agents/skills/design/impeccable/scripts/lib/target-slug.mjs +0 -33
- package/template/.agents/skills/design/impeccable/scripts/lib/template-extensions.mjs +0 -146
- package/template/.agents/skills/design/impeccable/scripts/live/accept-css.mjs +0 -617
- package/template/.agents/skills/design/impeccable/scripts/live/accept-verify.mjs +0 -60
- package/template/.agents/skills/design/impeccable/scripts/live/browser-script-parts.mjs +0 -55
- package/template/.agents/skills/design/impeccable/scripts/live/completion.mjs +0 -28
- package/template/.agents/skills/design/impeccable/scripts/live/event-validation.mjs +0 -199
- package/template/.agents/skills/design/impeccable/scripts/live/frameworks/astro.mjs +0 -47
- package/template/.agents/skills/design/impeccable/scripts/live/frameworks/detect-utils.mjs +0 -73
- package/template/.agents/skills/design/impeccable/scripts/live/frameworks/index.mjs +0 -143
- package/template/.agents/skills/design/impeccable/scripts/live/frameworks/journal.mjs +0 -197
- package/template/.agents/skills/design/impeccable/scripts/live/frameworks/nextjs.mjs +0 -49
- package/template/.agents/skills/design/impeccable/scripts/live/frameworks/nuxt.mjs +0 -161
- package/template/.agents/skills/design/impeccable/scripts/live/frameworks/script-src.mjs +0 -17
- package/template/.agents/skills/design/impeccable/scripts/live/frameworks/static-html.mjs +0 -26
- package/template/.agents/skills/design/impeccable/scripts/live/frameworks/sveltekit.mjs +0 -71
- package/template/.agents/skills/design/impeccable/scripts/live/frameworks/tag-strategy.mjs +0 -247
- package/template/.agents/skills/design/impeccable/scripts/live/frameworks/tanstack-start.mjs +0 -70
- package/template/.agents/skills/design/impeccable/scripts/live/frameworks/vite-generic.mjs +0 -42
- package/template/.agents/skills/design/impeccable/scripts/live/generation-preflight.mjs +0 -149
- package/template/.agents/skills/design/impeccable/scripts/live/insert-ui.mjs +0 -458
- package/template/.agents/skills/design/impeccable/scripts/live/instructions.mjs +0 -142
- package/template/.agents/skills/design/impeccable/scripts/live/manual-apply.mjs +0 -939
- package/template/.agents/skills/design/impeccable/scripts/live/manual-edit-routes.mjs +0 -357
- package/template/.agents/skills/design/impeccable/scripts/live/manual-edits-buffer.mjs +0 -152
- package/template/.agents/skills/design/impeccable/scripts/live/poll-lanes.mjs +0 -14
- package/template/.agents/skills/design/impeccable/scripts/live/roots.mjs +0 -508
- package/template/.agents/skills/design/impeccable/scripts/live/session-store.mjs +0 -563
- package/template/.agents/skills/design/impeccable/scripts/live/source-lock.mjs +0 -105
- package/template/.agents/skills/design/impeccable/scripts/live/source-search.mjs +0 -105
- package/template/.agents/skills/design/impeccable/scripts/live/svelte-ast.mjs +0 -961
- package/template/.agents/skills/design/impeccable/scripts/live/svelte-component.mjs +0 -1342
- package/template/.agents/skills/design/impeccable/scripts/live/sveltekit-adapter.mjs +0 -316
- package/template/.agents/skills/design/impeccable/scripts/live/tanstack-adapter.mjs +0 -280
- package/template/.agents/skills/design/impeccable/scripts/live/ui-core.mjs +0 -180
- package/template/.agents/skills/design/impeccable/scripts/live/vocabulary.mjs +0 -171
- package/template/.agents/skills/design/impeccable/scripts/live-accept.mjs +0 -954
- package/template/.agents/skills/design/impeccable/scripts/live-browser-dom.js +0 -146
- package/template/.agents/skills/design/impeccable/scripts/live-browser-session.js +0 -123
- package/template/.agents/skills/design/impeccable/scripts/live-browser.js +0 -12512
- package/template/.agents/skills/design/impeccable/scripts/live-commit-manual-edits.mjs +0 -1244
- package/template/.agents/skills/design/impeccable/scripts/live-complete.mjs +0 -107
- package/template/.agents/skills/design/impeccable/scripts/live-copy-edit-agent.mjs +0 -683
- package/template/.agents/skills/design/impeccable/scripts/live-discard-manual-edits.mjs +0 -51
- package/template/.agents/skills/design/impeccable/scripts/live-inject.mjs +0 -503
- package/template/.agents/skills/design/impeccable/scripts/live-insert.mjs +0 -292
- package/template/.agents/skills/design/impeccable/scripts/live-manual-edit-evidence.mjs +0 -368
- package/template/.agents/skills/design/impeccable/scripts/live-poll.mjs +0 -429
- package/template/.agents/skills/design/impeccable/scripts/live-resume.mjs +0 -123
- package/template/.agents/skills/design/impeccable/scripts/live-server.mjs +0 -1661
- package/template/.agents/skills/design/impeccable/scripts/live-status.mjs +0 -71
- package/template/.agents/skills/design/impeccable/scripts/live-target.mjs +0 -30
- package/template/.agents/skills/design/impeccable/scripts/live-wrap.mjs +0 -927
- package/template/.agents/skills/design/impeccable/scripts/live.mjs +0 -359
- package/template/.agents/skills/design/impeccable/scripts/modern-screenshot.umd.js +0 -14
- package/template/.agents/skills/design/impeccable/scripts/palette.mjs +0 -628
- package/template/.agents/skills/design/impeccable/scripts/pin.mjs +0 -221
- package/template/.agents/skills/design/impeccable/scripts/serve-question.mjs +0 -932
- package/template/.agents/skills/design/impeccable/scripts/surface-brief.mjs +0 -74
- package/template/.agents/skills/design/shadcn/SKILL.md +0 -277
- package/template/.agents/skills/design/shadcn/agents/openai.yml +0 -5
- package/template/.agents/skills/design/shadcn/assets/shadcn-small.png +0 -0
- package/template/.agents/skills/design/shadcn/assets/shadcn.png +0 -0
- package/template/.agents/skills/design/shadcn/cli.md +0 -290
- package/template/.agents/skills/design/shadcn/customization.md +0 -209
- package/template/.agents/skills/design/shadcn/evals/evals.json +0 -77
- package/template/.agents/skills/design/shadcn/mcp.md +0 -105
- package/template/.agents/skills/design/shadcn/registry.md +0 -277
- package/template/.agents/skills/design/shadcn/rules/base-vs-radix.md +0 -306
- package/template/.agents/skills/design/shadcn/rules/chat.md +0 -224
- package/template/.agents/skills/design/shadcn/rules/composition.md +0 -213
- package/template/.agents/skills/design/shadcn/rules/forms.md +0 -192
- package/template/.agents/skills/design/shadcn/rules/icons.md +0 -101
- package/template/.agents/skills/design/shadcn/rules/styling.md +0 -185
- package/template/.agents/skills/find-skills/SKILL.md +0 -141
- package/template/.agents/skills/hono/SKILL.md +0 -579
- package/template/.agents/skills/integrations/langfuse/SKILL.md +0 -146
- package/template/.agents/skills/integrations/langfuse/references/ci-cd.md +0 -41
- package/template/.agents/skills/integrations/langfuse/references/cli.md +0 -60
- package/template/.agents/skills/integrations/langfuse/references/error-analysis.md +0 -88
- package/template/.agents/skills/integrations/langfuse/references/instrumentation.md +0 -121
- package/template/.agents/skills/integrations/langfuse/references/judge-calibration.md +0 -291
- package/template/.agents/skills/integrations/langfuse/references/prompt-engineering.md +0 -35
- package/template/.agents/skills/integrations/langfuse/references/prompt-migration.md +0 -79
- package/template/.agents/skills/integrations/langfuse/references/skill-feedback.md +0 -55
- package/template/.agents/skills/integrations/langfuse/references/trace-evaluator-upgrade.md +0 -76
- package/template/.agents/skills/integrations/langfuse/references/user-feedback.md +0 -92
- package/template/.agents/skills/integrations/langfuse/references/v4-project-migration.md +0 -73
- package/template/.agents/skills/integrations/posthog/SKILL.md +0 -102
- package/template/.agents/skills/integrations/posthog/references/error-tracking-alerts.md +0 -63
- package/template/.agents/skills/integrations/posthog/references/error-tracking-assigning-issues.md +0 -77
- package/template/.agents/skills/integrations/posthog/references/error-tracking-fingerprints.md +0 -57
- package/template/.agents/skills/integrations/posthog/references/error-tracking-monitoring.md +0 -140
- package/template/.agents/skills/integrations/posthog/references/error-tracking-nextjs.md +0 -490
- package/template/.agents/skills/integrations/posthog/references/error-tracking-source-maps.md +0 -45
- package/template/.agents/skills/integrations/posthog/references/feature-flags-best-practices.md +0 -139
- package/template/.agents/skills/integrations/posthog/references/feature-flags-react.md +0 -302
- package/template/.agents/skills/integrations/posthog/references/identify-users.md +0 -202
- package/template/.agents/skills/integrations/posthog/references/integration-example.md +0 -706
- package/template/.agents/skills/integrations/posthog/references/integration-nextjs.md +0 -385
- package/template/.agents/skills/integrations/posthog/references/integration-step-1-begin.md +0 -43
- package/template/.agents/skills/integrations/posthog/references/integration-step-2-edit.md +0 -37
- package/template/.agents/skills/integrations/posthog/references/integration-step-3-revise.md +0 -22
- package/template/.agents/skills/integrations/posthog/references/integration-step-4-conclude.md +0 -38
- package/template/.agents/skills/integrations/posthog/references/llm-analytics-anthropic.md +0 -200
- package/template/.agents/skills/integrations/posthog/references/llm-analytics-basics.md +0 -62
- package/template/.agents/skills/integrations/posthog/references/llm-analytics-costs.md +0 -197
- package/template/.agents/skills/integrations/posthog/references/llm-analytics-manual-capture.md +0 -397
- package/template/.agents/skills/integrations/posthog/references/llm-analytics-traces.md +0 -98
- package/template/.agents/skills/integrations/posthog/references/llm-analytics-vercel-ai.md +0 -120
- package/template/.agents/skills/repo/repo-ci/SKILL.md +0 -265
- package/template/.agents/skills/repo/repo-init-next-js/SKILL.md +0 -129
- package/template/.agents/skills/repo/repo-init-next-js/references/file-contents.md +0 -800
- package/template/.agents/skills/repo/repo-init-next-js/scripts/setup.sh +0 -47
- package/template/.agents/skills/repo/repo-init-node/SKILL.md +0 -196
- package/template/.agents/skills/skill-creator/LICENSE.txt +0 -202
- package/template/.agents/skills/skill-creator/SKILL.md +0 -485
- package/template/.agents/skills/skill-creator/agents/analyzer.md +0 -274
- package/template/.agents/skills/skill-creator/agents/comparator.md +0 -202
- package/template/.agents/skills/skill-creator/agents/grader.md +0 -223
- package/template/.agents/skills/skill-creator/assets/eval_review.html +0 -146
- package/template/.agents/skills/skill-creator/eval-viewer/generate_review.py +0 -471
- package/template/.agents/skills/skill-creator/eval-viewer/viewer.html +0 -1325
- package/template/.agents/skills/skill-creator/references/schemas.md +0 -430
- package/template/.agents/skills/skill-creator/scripts/__init__.py +0 -0
- package/template/.agents/skills/skill-creator/scripts/aggregate_benchmark.py +0 -401
- package/template/.agents/skills/skill-creator/scripts/generate_report.py +0 -326
- package/template/.agents/skills/skill-creator/scripts/improve_description.py +0 -247
- package/template/.agents/skills/skill-creator/scripts/package_skill.py +0 -136
- package/template/.agents/skills/skill-creator/scripts/quick_validate.py +0 -103
- package/template/.agents/skills/skill-creator/scripts/run_eval.py +0 -310
- package/template/.agents/skills/skill-creator/scripts/run_loop.py +0 -328
- package/template/.agents/skills/skill-creator/scripts/utils.py +0 -47
- package/template/.agents/skills/supabase/CHANGELOG.md +0 -71
- package/template/.agents/skills/supabase/SKILL.md +0 -145
- package/template/.agents/skills/supabase/assets/feedback-issue-template.md +0 -17
- package/template/.agents/skills/supabase/references/skill-feedback.md +0 -17
- package/template/.agents/skills/supabase-postgres-best-practices/CHANGELOG.md +0 -73
- package/template/.agents/skills/supabase-postgres-best-practices/SKILL.md +0 -64
- package/template/.agents/skills/supabase-postgres-best-practices/references/_contributing.md +0 -170
- package/template/.agents/skills/supabase-postgres-best-practices/references/_sections.md +0 -39
- package/template/.agents/skills/supabase-postgres-best-practices/references/_template.md +0 -34
- package/template/.agents/skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +0 -55
- package/template/.agents/skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +0 -49
- package/template/.agents/skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +0 -46
- package/template/.agents/skills/supabase-postgres-best-practices/references/conn-limits.md +0 -44
- package/template/.agents/skills/supabase-postgres-best-practices/references/conn-pooling.md +0 -41
- package/template/.agents/skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +0 -46
- package/template/.agents/skills/supabase-postgres-best-practices/references/data-batch-inserts.md +0 -54
- package/template/.agents/skills/supabase-postgres-best-practices/references/data-n-plus-one.md +0 -53
- package/template/.agents/skills/supabase-postgres-best-practices/references/data-pagination.md +0 -50
- package/template/.agents/skills/supabase-postgres-best-practices/references/data-upsert.md +0 -50
- package/template/.agents/skills/supabase-postgres-best-practices/references/lock-advisory.md +0 -56
- package/template/.agents/skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +0 -68
- package/template/.agents/skills/supabase-postgres-best-practices/references/lock-short-transactions.md +0 -50
- package/template/.agents/skills/supabase-postgres-best-practices/references/lock-skip-locked.md +0 -54
- package/template/.agents/skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +0 -45
- package/template/.agents/skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +0 -55
- package/template/.agents/skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +0 -55
- package/template/.agents/skills/supabase-postgres-best-practices/references/query-composite-indexes.md +0 -44
- package/template/.agents/skills/supabase-postgres-best-practices/references/query-covering-indexes.md +0 -40
- package/template/.agents/skills/supabase-postgres-best-practices/references/query-index-types.md +0 -48
- package/template/.agents/skills/supabase-postgres-best-practices/references/query-missing-indexes.md +0 -43
- package/template/.agents/skills/supabase-postgres-best-practices/references/query-partial-indexes.md +0 -45
- package/template/.agents/skills/supabase-postgres-best-practices/references/schema-constraints.md +0 -80
- package/template/.agents/skills/supabase-postgres-best-practices/references/schema-data-types.md +0 -46
- package/template/.agents/skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +0 -59
- package/template/.agents/skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +0 -55
- package/template/.agents/skills/supabase-postgres-best-practices/references/schema-partitioning.md +0 -55
- package/template/.agents/skills/supabase-postgres-best-practices/references/schema-primary-keys.md +0 -61
- package/template/.agents/skills/supabase-postgres-best-practices/references/security-privileges.md +0 -54
- package/template/.agents/skills/supabase-postgres-best-practices/references/security-rls-basics.md +0 -50
- package/template/.agents/skills/supabase-postgres-best-practices/references/security-rls-performance.md +0 -63
- package/template/.agents/skills/writing/humanizer/SKILL.md +0 -621
- package/template/.agents/upstreams.json +0 -116
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
# Customization & Theming
|
|
2
|
-
|
|
3
|
-
Components reference semantic CSS variable tokens. Change the variables to change every component.
|
|
4
|
-
|
|
5
|
-
## Contents
|
|
6
|
-
|
|
7
|
-
- How it works (CSS variables → Tailwind utilities → components)
|
|
8
|
-
- Color variables and OKLCH format
|
|
9
|
-
- Dark mode setup
|
|
10
|
-
- Changing the theme (presets, CSS variables)
|
|
11
|
-
- Adding custom colors (Tailwind v3 and v4)
|
|
12
|
-
- Border radius
|
|
13
|
-
- Customizing components (variants, className, wrappers)
|
|
14
|
-
- Checking for updates
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## How It Works
|
|
19
|
-
|
|
20
|
-
1. CSS variables defined in `:root` (light) and `.dark` (dark mode).
|
|
21
|
-
2. Tailwind maps them to utilities: `bg-primary`, `text-muted-foreground`, etc.
|
|
22
|
-
3. Components use these utilities — changing a variable changes all components that reference it.
|
|
23
|
-
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
## Color Variables
|
|
27
|
-
|
|
28
|
-
Every color follows the `name` / `name-foreground` convention. The base variable is for backgrounds, `-foreground` is for text/icons on that background.
|
|
29
|
-
|
|
30
|
-
| Variable | Purpose |
|
|
31
|
-
| -------------------------------------------- | -------------------------------- |
|
|
32
|
-
| `--background` / `--foreground` | Page background and default text |
|
|
33
|
-
| `--card` / `--card-foreground` | Card surfaces |
|
|
34
|
-
| `--primary` / `--primary-foreground` | Primary buttons and actions |
|
|
35
|
-
| `--secondary` / `--secondary-foreground` | Secondary actions |
|
|
36
|
-
| `--muted` / `--muted-foreground` | Muted/disabled states |
|
|
37
|
-
| `--accent` / `--accent-foreground` | Hover and accent states |
|
|
38
|
-
| `--destructive` / `--destructive-foreground` | Error and destructive actions |
|
|
39
|
-
| `--border` | Default border color |
|
|
40
|
-
| `--input` | Form input borders |
|
|
41
|
-
| `--ring` | Focus ring color |
|
|
42
|
-
| `--chart-1` through `--chart-5` | Chart/data visualization |
|
|
43
|
-
| `--sidebar-*` | Sidebar-specific colors |
|
|
44
|
-
| `--surface` / `--surface-foreground` | Secondary surface |
|
|
45
|
-
|
|
46
|
-
Colors use OKLCH: `--primary: oklch(0.205 0 0)` where values are lightness (0–1), chroma (0 = gray), and hue (0–360).
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
## Dark Mode
|
|
51
|
-
|
|
52
|
-
Class-based toggle via `.dark` on the root element. In Next.js, use `next-themes`:
|
|
53
|
-
|
|
54
|
-
```tsx
|
|
55
|
-
import { ThemeProvider } from "next-themes"
|
|
56
|
-
|
|
57
|
-
<ThemeProvider attribute="class" defaultTheme="system" enableSystem>
|
|
58
|
-
{children}
|
|
59
|
-
</ThemeProvider>
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
---
|
|
63
|
-
|
|
64
|
-
## Changing the Theme
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
# Apply a preset code from ui.shadcn.com.
|
|
68
|
-
npx shadcn@latest apply --preset a2r6bw
|
|
69
|
-
|
|
70
|
-
# Positional shorthand also works.
|
|
71
|
-
npx shadcn@latest apply a2r6bw
|
|
72
|
-
|
|
73
|
-
# Switch to a named preset and overwrite existing components.
|
|
74
|
-
npx shadcn@latest apply --preset nova
|
|
75
|
-
|
|
76
|
-
# Preserve existing components instead.
|
|
77
|
-
npx shadcn@latest init --preset nova --force --no-reinstall
|
|
78
|
-
|
|
79
|
-
# Use a custom theme URL.
|
|
80
|
-
npx shadcn@latest apply --preset "https://ui.shadcn.com/init?base=radix&style=nova&theme=blue&..."
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
Or edit CSS variables directly in `globals.css`.
|
|
84
|
-
|
|
85
|
-
---
|
|
86
|
-
|
|
87
|
-
## Adding Custom Colors
|
|
88
|
-
|
|
89
|
-
Add variables to the file at `tailwindCssFile` from `npx shadcn@latest info` (typically `globals.css`). Never create a new CSS file for this.
|
|
90
|
-
|
|
91
|
-
```css
|
|
92
|
-
/* 1. Define in the global CSS file. */
|
|
93
|
-
:root {
|
|
94
|
-
--warning: oklch(0.84 0.16 84);
|
|
95
|
-
--warning-foreground: oklch(0.28 0.07 46);
|
|
96
|
-
}
|
|
97
|
-
.dark {
|
|
98
|
-
--warning: oklch(0.41 0.11 46);
|
|
99
|
-
--warning-foreground: oklch(0.99 0.02 95);
|
|
100
|
-
}
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
```css
|
|
104
|
-
/* 2a. Register with Tailwind v4 (@theme inline). */
|
|
105
|
-
@theme inline {
|
|
106
|
-
--color-warning: var(--warning);
|
|
107
|
-
--color-warning-foreground: var(--warning-foreground);
|
|
108
|
-
}
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
When `tailwindVersion` is `"v3"` (check via `npx shadcn@latest info`), register in `tailwind.config.js` instead:
|
|
112
|
-
|
|
113
|
-
```js
|
|
114
|
-
// 2b. Register with Tailwind v3 (tailwind.config.js).
|
|
115
|
-
module.exports = {
|
|
116
|
-
theme: {
|
|
117
|
-
extend: {
|
|
118
|
-
colors: {
|
|
119
|
-
warning: "oklch(var(--warning) / <alpha-value>)",
|
|
120
|
-
"warning-foreground":
|
|
121
|
-
"oklch(var(--warning-foreground) / <alpha-value>)",
|
|
122
|
-
},
|
|
123
|
-
},
|
|
124
|
-
},
|
|
125
|
-
}
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
```tsx
|
|
129
|
-
// 3. Use in components.
|
|
130
|
-
<div className="bg-warning text-warning-foreground">Warning</div>
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
---
|
|
134
|
-
|
|
135
|
-
## Border Radius
|
|
136
|
-
|
|
137
|
-
`--radius` controls border radius globally. Components derive values from it (`rounded-lg` = `var(--radius)`, `rounded-md` = `calc(var(--radius) - 2px)`).
|
|
138
|
-
|
|
139
|
-
---
|
|
140
|
-
|
|
141
|
-
## Customizing Components
|
|
142
|
-
|
|
143
|
-
See also: [rules/styling.md](./rules/styling.md) for Incorrect/Correct examples.
|
|
144
|
-
|
|
145
|
-
Prefer these approaches in order:
|
|
146
|
-
|
|
147
|
-
### 1. Built-in variants
|
|
148
|
-
|
|
149
|
-
```tsx
|
|
150
|
-
<Button variant="outline" size="sm">
|
|
151
|
-
Click
|
|
152
|
-
</Button>
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
### 2. Tailwind classes via `className`
|
|
156
|
-
|
|
157
|
-
```tsx
|
|
158
|
-
<Card className="mx-auto max-w-md">...</Card>
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
### 3. Add a new variant
|
|
162
|
-
|
|
163
|
-
Edit the component source to add a variant via `cva`:
|
|
164
|
-
|
|
165
|
-
```tsx
|
|
166
|
-
// components/ui/button.tsx
|
|
167
|
-
warning: "bg-warning text-warning-foreground hover:bg-warning/90",
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
### 4. Wrapper components
|
|
171
|
-
|
|
172
|
-
Compose shadcn/ui primitives into higher-level components:
|
|
173
|
-
|
|
174
|
-
```tsx
|
|
175
|
-
export function ConfirmDialog({ title, description, onConfirm, children }) {
|
|
176
|
-
return (
|
|
177
|
-
<AlertDialog>
|
|
178
|
-
<AlertDialogTrigger asChild>{children}</AlertDialogTrigger>
|
|
179
|
-
<AlertDialogContent>
|
|
180
|
-
<AlertDialogHeader>
|
|
181
|
-
<AlertDialogTitle>{title}</AlertDialogTitle>
|
|
182
|
-
<AlertDialogDescription>{description}</AlertDialogDescription>
|
|
183
|
-
</AlertDialogHeader>
|
|
184
|
-
<AlertDialogFooter>
|
|
185
|
-
<AlertDialogCancel>Cancel</AlertDialogCancel>
|
|
186
|
-
<AlertDialogAction onClick={onConfirm}>Confirm</AlertDialogAction>
|
|
187
|
-
</AlertDialogFooter>
|
|
188
|
-
</AlertDialogContent>
|
|
189
|
-
</AlertDialog>
|
|
190
|
-
)
|
|
191
|
-
}
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
---
|
|
195
|
-
|
|
196
|
-
## Checking for Updates
|
|
197
|
-
|
|
198
|
-
```bash
|
|
199
|
-
npx shadcn@latest add button --diff
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
To preview exactly what would change before updating, use `--dry-run` and `--diff`:
|
|
203
|
-
|
|
204
|
-
```bash
|
|
205
|
-
npx shadcn@latest add button --dry-run # see all affected files
|
|
206
|
-
npx shadcn@latest add button --diff button.tsx # see the diff for a specific file
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
See [Updating Components in SKILL.md](./SKILL.md#updating-components) for the full smart merge workflow.
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"skill_name": "shadcn",
|
|
3
|
-
"evals": [
|
|
4
|
-
{
|
|
5
|
-
"id": 1,
|
|
6
|
-
"prompt": "I'm building a Next.js app with shadcn/ui (base-nova preset, lucide icons). Create a settings form component with fields for: full name, email address, and notification preferences (email, SMS, push notifications as toggle options). Add validation states for required fields.",
|
|
7
|
-
"expected_output": "A React component using FieldGroup, Field, ToggleGroup, data-invalid/aria-invalid validation, gap-* spacing, and semantic colors.",
|
|
8
|
-
"files": [],
|
|
9
|
-
"expectations": [
|
|
10
|
-
"Uses FieldGroup and Field components for form layout instead of raw div with space-y",
|
|
11
|
-
"Uses Switch for independent on/off notification toggles (not looping Button with manual active state)",
|
|
12
|
-
"Uses data-invalid on Field and aria-invalid on the input control for validation states",
|
|
13
|
-
"Uses gap-* (e.g. gap-4, gap-6) instead of space-y-* or space-x-* for spacing",
|
|
14
|
-
"Uses semantic color tokens (e.g. bg-background, text-muted-foreground, text-destructive) instead of raw colors like bg-red-500",
|
|
15
|
-
"No manual dark: color overrides"
|
|
16
|
-
]
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
"id": 2,
|
|
20
|
-
"prompt": "Create a dialog component for editing a user profile. It should have the user's avatar at the top, input fields for name and bio, and Save/Cancel buttons with appropriate icons. Using shadcn/ui with radix-nova preset and tabler icons.",
|
|
21
|
-
"expected_output": "A React component with DialogTitle, Avatar+AvatarFallback, data-icon on icon buttons, no icon sizing classes, tabler icon imports.",
|
|
22
|
-
"files": [],
|
|
23
|
-
"expectations": [
|
|
24
|
-
"Includes DialogTitle for accessibility (visible or with sr-only class)",
|
|
25
|
-
"Avatar component includes AvatarFallback",
|
|
26
|
-
"Icons on buttons use the data-icon attribute (data-icon=\"inline-start\" or data-icon=\"inline-end\")",
|
|
27
|
-
"No sizing classes on icons inside components (no size-4, w-4, h-4, etc.)",
|
|
28
|
-
"Uses tabler icons (@tabler/icons-react) instead of lucide-react",
|
|
29
|
-
"Uses asChild for custom triggers (radix preset)"
|
|
30
|
-
]
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
"id": 3,
|
|
34
|
-
"prompt": "Create a dashboard component that shows 4 stat cards in a grid. Each card has a title, large number, percentage change badge, and a loading skeleton state. Using shadcn/ui with base-nova preset and lucide icons.",
|
|
35
|
-
"expected_output": "A React component with full Card composition, Skeleton for loading, Badge for changes, semantic colors, gap-* spacing.",
|
|
36
|
-
"files": [],
|
|
37
|
-
"expectations": [
|
|
38
|
-
"Uses full Card composition with CardHeader, CardTitle, CardContent (not dumping everything into CardContent)",
|
|
39
|
-
"Uses Skeleton component for loading placeholders instead of custom animate-pulse divs",
|
|
40
|
-
"Uses Badge component for percentage change instead of custom styled spans",
|
|
41
|
-
"Uses semantic color tokens instead of raw color values like bg-green-500 or text-red-600",
|
|
42
|
-
"Uses gap-* instead of space-y-* or space-x-* for spacing",
|
|
43
|
-
"Uses size-* when width and height are equal instead of separate w-* h-*"
|
|
44
|
-
]
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
"id": 4,
|
|
48
|
-
"prompt": "I'm building a Next.js app with shadcn/ui (base-nova preset, lucide icons). Build a chat conversation view: a scrollable thread of messages from two different people, each with an avatar, sender name, timestamp, and message bubble. A couple of messages include an image attachment and a PDF file attachment, and there's a 'Today' divider separating the days.",
|
|
49
|
-
"expected_output": "A React component composing MessageScroller, Message, Bubble, Attachment, and Marker from the registry instead of hand-rolled bubble/divider/attachment markup.",
|
|
50
|
-
"files": [],
|
|
51
|
-
"expectations": [
|
|
52
|
-
"Uses MessageScroller (MessageScrollerProvider, MessageScrollerViewport, MessageScrollerContent, MessageScrollerItem) for the scrollable thread instead of a raw overflow-y-auto div or ScrollArea",
|
|
53
|
-
"Wraps each row in MessageScrollerItem inside MessageScrollerContent",
|
|
54
|
-
"Uses Message with MessageAvatar/MessageContent/MessageHeader for row layout instead of custom flex divs",
|
|
55
|
-
"Uses Bubble + BubbleContent for the message surface instead of a styled div with bg-muted/bg-primary",
|
|
56
|
-
"Uses Attachment (AttachmentMedia, AttachmentContent, AttachmentTitle, AttachmentDescription) for the file and image attachments instead of Item or a custom card",
|
|
57
|
-
"Uses Marker (variant=\"separator\") for the 'Today' divider instead of Separator plus a centered label",
|
|
58
|
-
"Uses semantic color tokens and gap-* spacing; no raw colors like bg-emerald-500 and no space-y-*",
|
|
59
|
-
"Includes \"use client\" when the component uses state or event handlers (isRSC)"
|
|
60
|
-
]
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
"id": 5,
|
|
64
|
-
"prompt": "Using shadcn/ui (base-nova preset, lucide icons), build a streaming AI chat UI. The assistant's reply streams in while it generates, the view auto-scrolls to follow the latest content but stops following if the user scrolls up to read earlier messages, a 'jump to latest' button appears when the user has scrolled away from the bottom, and a subtle 'thinking…' shimmer shows while the model is generating.",
|
|
65
|
-
"expected_output": "A React component that delegates scroll/anchor behavior to MessageScroller and uses MessageScrollerButton for jump-to-latest and the shimmer utility for the thinking indicator — no hand-rolled scroll logic or custom shimmer keyframes.",
|
|
66
|
-
"files": [],
|
|
67
|
-
"expectations": [
|
|
68
|
-
"Uses MessageScroller with MessageScrollerProvider (autoScroll) and scrollAnchor on message items for the stick-to-bottom/follow behavior instead of a custom useStickToBottom hook or ResizeObserver/scrollTop wiring",
|
|
69
|
-
"Uses MessageScrollerButton for the jump-to-latest control instead of a hand-built conditional button driven by manual scroll-position state",
|
|
70
|
-
"Uses the shimmer utility class for the 'thinking…' indicator instead of a custom @keyframes or bg-clip-text gradient animation",
|
|
71
|
-
"Wraps each message row in MessageScrollerItem inside MessageScrollerContent",
|
|
72
|
-
"Uses Message + Bubble + BubbleContent for the conversation rows instead of hand-rolled bubble divs",
|
|
73
|
-
"Uses semantic color tokens and gap-* spacing; includes \"use client\" (isRSC)"
|
|
74
|
-
]
|
|
75
|
-
}
|
|
76
|
-
]
|
|
77
|
-
}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
# shadcn MCP Server
|
|
2
|
-
|
|
3
|
-
The CLI includes an MCP server that lets AI assistants search, browse, view, and install items from registries.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Setup
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
shadcn mcp # start the MCP server (stdio)
|
|
11
|
-
shadcn mcp init # write config for your editor
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
Editor config files:
|
|
15
|
-
|
|
16
|
-
| Editor | Config file |
|
|
17
|
-
| ----------- | ------------------------------- |
|
|
18
|
-
| Claude Code | `.mcp.json` |
|
|
19
|
-
| Cursor | `.cursor/mcp.json` |
|
|
20
|
-
| VS Code | `.vscode/mcp.json` |
|
|
21
|
-
| OpenCode | `opencode.json` |
|
|
22
|
-
| Codex | `~/.codex/config.toml` (manual) |
|
|
23
|
-
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
## Tools
|
|
27
|
-
|
|
28
|
-
> **Tip:** MCP tools handle registry operations (search, view, install). For project configuration (aliases, framework, Tailwind version), use `npx shadcn@latest info` — there is no MCP equivalent.
|
|
29
|
-
|
|
30
|
-
### `shadcn:get_project_registries`
|
|
31
|
-
|
|
32
|
-
Returns registry names from `components.json`. Errors if no `components.json` exists.
|
|
33
|
-
|
|
34
|
-
**Input:** none
|
|
35
|
-
|
|
36
|
-
### `shadcn:list_items_in_registries`
|
|
37
|
-
|
|
38
|
-
Lists all items from one or more registries. Registries can be configured
|
|
39
|
-
namespaces such as `@acme`, public GitHub sources such as `owner/repo`, or
|
|
40
|
-
registry catalog URLs. Omit `registries` to list from every registry configured
|
|
41
|
-
in `components.json`.
|
|
42
|
-
|
|
43
|
-
**Input:** `registries` (string[], optional — omit for all configured), `types` (string[], optional — e.g. `["ui", "block"]`), `limit` (number, optional, defaults to 100), `offset` (number, optional)
|
|
44
|
-
|
|
45
|
-
### `shadcn:search_items_in_registries`
|
|
46
|
-
|
|
47
|
-
Fuzzy search across registries. Registries can be configured namespaces, public
|
|
48
|
-
GitHub sources, or registry catalog URLs. Omit `registries` to search every
|
|
49
|
-
registry configured in `components.json` — e.g. "find me a hero" across all
|
|
50
|
-
configured registries.
|
|
51
|
-
|
|
52
|
-
**Input:** `registries` (string[], optional — omit for all configured), `query` (string), `types` (string[], optional — e.g. `["ui", "block"]`), `limit` (number, optional, defaults to 100), `offset` (number, optional)
|
|
53
|
-
|
|
54
|
-
### `shadcn:view_items_in_registries`
|
|
55
|
-
|
|
56
|
-
View item details including full file contents.
|
|
57
|
-
|
|
58
|
-
**Input:** `items` (string[]) — e.g.
|
|
59
|
-
`["@shadcn/button", "@shadcn/card", "owner/repo/item"]`
|
|
60
|
-
|
|
61
|
-
### `shadcn:get_item_examples_from_registries`
|
|
62
|
-
|
|
63
|
-
Find usage examples and demos with source code. Omit `registries` to search
|
|
64
|
-
every registry configured in `components.json`.
|
|
65
|
-
|
|
66
|
-
**Input:** `registries` (string[], optional — omit for all configured), `query` (string) — e.g. `"accordion-demo"`, `"button example"`
|
|
67
|
-
|
|
68
|
-
### `shadcn:get_add_command_for_items`
|
|
69
|
-
|
|
70
|
-
Returns the CLI install command.
|
|
71
|
-
|
|
72
|
-
**Input:** `items` (string[]) — e.g. `["@shadcn/button"]`
|
|
73
|
-
|
|
74
|
-
### `shadcn:get_audit_checklist`
|
|
75
|
-
|
|
76
|
-
Returns a checklist for verifying components (imports, deps, lint, TypeScript).
|
|
77
|
-
|
|
78
|
-
**Input:** none
|
|
79
|
-
|
|
80
|
-
---
|
|
81
|
-
|
|
82
|
-
## Configuring Registries
|
|
83
|
-
|
|
84
|
-
Namespaced and authenticated registries are set in `components.json`. The
|
|
85
|
-
`@shadcn` registry is always built-in. Public GitHub registries can also be used
|
|
86
|
-
directly as `owner/repo` registry sources when the repository has a root
|
|
87
|
-
`registry.json`; they do not need `components.json` configuration.
|
|
88
|
-
|
|
89
|
-
```json
|
|
90
|
-
{
|
|
91
|
-
"registries": {
|
|
92
|
-
"@acme": "https://acme.com/r/{name}.json",
|
|
93
|
-
"@private": {
|
|
94
|
-
"url": "https://private.com/r/{name}.json",
|
|
95
|
-
"headers": { "Authorization": "Bearer ${MY_TOKEN}" }
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
- Names must start with `@`.
|
|
102
|
-
- URLs must contain `{name}`.
|
|
103
|
-
- `${VAR}` references are resolved from environment variables.
|
|
104
|
-
|
|
105
|
-
Community registry index: `https://ui.shadcn.com/r/registries.json`
|
|
@@ -1,277 +0,0 @@
|
|
|
1
|
-
# Registry Authoring and Addresses
|
|
2
|
-
|
|
3
|
-
Use this reference when the user wants to create, fix, publish, or reason about
|
|
4
|
-
a shadcn registry.
|
|
5
|
-
|
|
6
|
-
## Mental Model
|
|
7
|
-
|
|
8
|
-
A registry has two forms:
|
|
9
|
-
|
|
10
|
-
- **Source registry**: an authored `registry.json` in a project or repository.
|
|
11
|
-
It may use `include` and file paths that point at source files.
|
|
12
|
-
- **Built registry**: generated JSON files served to CLI consumers, usually
|
|
13
|
-
from `public/r`. Use `npx shadcn@latest build` to create this form.
|
|
14
|
-
|
|
15
|
-
The CLI installer consumes registry item payloads. A source registry is a way to
|
|
16
|
-
author those payloads from real files.
|
|
17
|
-
|
|
18
|
-
Registry items are not limited to React components. They can distribute
|
|
19
|
-
components, hooks, utilities, design tokens, pages, config files, docs, rules,
|
|
20
|
-
workflows, templates, MCP files, and other project files.
|
|
21
|
-
|
|
22
|
-
## Root `registry.json`
|
|
23
|
-
|
|
24
|
-
The root registry file should define registry metadata and either `items` or
|
|
25
|
-
`include`.
|
|
26
|
-
|
|
27
|
-
```json
|
|
28
|
-
{
|
|
29
|
-
"$schema": "https://ui.shadcn.com/schema/registry.json",
|
|
30
|
-
"name": "acme",
|
|
31
|
-
"homepage": "https://acme.com",
|
|
32
|
-
"items": [
|
|
33
|
-
{
|
|
34
|
-
"name": "absolute-url",
|
|
35
|
-
"type": "registry:lib",
|
|
36
|
-
"title": "Absolute URL",
|
|
37
|
-
"description": "A utility to turn any path into an absolute URL.",
|
|
38
|
-
"files": [
|
|
39
|
-
{
|
|
40
|
-
"path": "lib/absolute-url.ts",
|
|
41
|
-
"type": "registry:lib"
|
|
42
|
-
}
|
|
43
|
-
]
|
|
44
|
-
}
|
|
45
|
-
]
|
|
46
|
-
}
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
Root registry rules:
|
|
50
|
-
|
|
51
|
-
- Root `registry.json` must include `name` and `homepage`.
|
|
52
|
-
- `items` is an array of registry item definitions.
|
|
53
|
-
- `include` may be used to split the source registry into multiple files.
|
|
54
|
-
- Included registry files may omit `name` and `homepage`.
|
|
55
|
-
|
|
56
|
-
## Include
|
|
57
|
-
|
|
58
|
-
Use `include` to keep large registries modular.
|
|
59
|
-
|
|
60
|
-
```json
|
|
61
|
-
{
|
|
62
|
-
"$schema": "https://ui.shadcn.com/schema/registry.json",
|
|
63
|
-
"name": "acme",
|
|
64
|
-
"homepage": "https://acme.com",
|
|
65
|
-
"include": ["registry/ui/registry.json", "registry/blocks/registry.json"]
|
|
66
|
-
}
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
Include rules:
|
|
70
|
-
|
|
71
|
-
- Include paths are relative to the `registry.json` that declares them.
|
|
72
|
-
- Include paths must explicitly point to a `registry.json` file.
|
|
73
|
-
- Do not use remote URLs, absolute paths, or parent traversal (`..`).
|
|
74
|
-
- Item file paths are relative to the registry file that declares the item.
|
|
75
|
-
- Duplicate item names fail across the resolved registry.
|
|
76
|
-
|
|
77
|
-
Example included file:
|
|
78
|
-
|
|
79
|
-
```json
|
|
80
|
-
{
|
|
81
|
-
"items": [
|
|
82
|
-
{
|
|
83
|
-
"name": "button",
|
|
84
|
-
"type": "registry:ui",
|
|
85
|
-
"files": [
|
|
86
|
-
{
|
|
87
|
-
"path": "button.tsx",
|
|
88
|
-
"type": "registry:ui"
|
|
89
|
-
}
|
|
90
|
-
]
|
|
91
|
-
}
|
|
92
|
-
]
|
|
93
|
-
}
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
If this file is at `registry/ui/registry.json`, then `button.tsx` is read from
|
|
97
|
-
`registry/ui/button.tsx`, and the built item path is emitted relative to the
|
|
98
|
-
root registry.
|
|
99
|
-
|
|
100
|
-
## Item Definitions
|
|
101
|
-
|
|
102
|
-
Common item fields:
|
|
103
|
-
|
|
104
|
-
```json
|
|
105
|
-
{
|
|
106
|
-
"name": "login-form",
|
|
107
|
-
"type": "registry:block",
|
|
108
|
-
"title": "Login Form",
|
|
109
|
-
"description": "A login form with email and password fields.",
|
|
110
|
-
"dependencies": ["zod"],
|
|
111
|
-
"registryDependencies": ["button", "input", "label"],
|
|
112
|
-
"files": [
|
|
113
|
-
{
|
|
114
|
-
"path": "blocks/login-form.tsx",
|
|
115
|
-
"type": "registry:block"
|
|
116
|
-
}
|
|
117
|
-
],
|
|
118
|
-
"cssVars": {
|
|
119
|
-
"light": {
|
|
120
|
-
"brand": "oklch(0.62 0.18 250)"
|
|
121
|
-
},
|
|
122
|
-
"dark": {
|
|
123
|
-
"brand": "oklch(0.72 0.16 250)"
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
Important fields:
|
|
130
|
-
|
|
131
|
-
- `name`: the installable item name. It is not necessarily a file path.
|
|
132
|
-
- `type`: one of the registry item types, such as `registry:ui`,
|
|
133
|
-
`registry:block`, `registry:lib`, `registry:hook`, `registry:file`,
|
|
134
|
-
`registry:page`, `registry:theme`, `registry:style`, `registry:font`, or
|
|
135
|
-
`registry:item`.
|
|
136
|
-
- `files`: source files copied or generated by the item.
|
|
137
|
-
- `dependencies`: npm runtime dependencies.
|
|
138
|
-
- `devDependencies`: npm development dependencies.
|
|
139
|
-
- `registryDependencies`: other registry items required by this item.
|
|
140
|
-
- `cssVars`, `css`, `tailwind`, `envVars`, and `docs`: optional install-time
|
|
141
|
-
additions.
|
|
142
|
-
|
|
143
|
-
File rules:
|
|
144
|
-
|
|
145
|
-
- File paths are relative to the declaring `registry.json`.
|
|
146
|
-
- `registry:file` and `registry:page` files require a `target`.
|
|
147
|
-
- Do not use remote file URLs in source registry file paths.
|
|
148
|
-
- Keep source files copy-pasteable: no hidden app-only imports.
|
|
149
|
-
|
|
150
|
-
## Registry Dependencies
|
|
151
|
-
|
|
152
|
-
`registryDependencies` entries are item addresses, not file paths.
|
|
153
|
-
|
|
154
|
-
```json
|
|
155
|
-
{
|
|
156
|
-
"name": "login-form",
|
|
157
|
-
"type": "registry:block",
|
|
158
|
-
"registryDependencies": ["button", "@acme/input", "acme/ui/card#v1.2.0"],
|
|
159
|
-
"files": [
|
|
160
|
-
{
|
|
161
|
-
"path": "blocks/login-form.tsx",
|
|
162
|
-
"type": "registry:block"
|
|
163
|
-
}
|
|
164
|
-
]
|
|
165
|
-
}
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
Dependency rules:
|
|
169
|
-
|
|
170
|
-
- Bare names such as `"button"` mean official shadcn items.
|
|
171
|
-
- Bare names never mean same-registry or same-repository items.
|
|
172
|
-
- Namespaced dependencies use `@namespace/item-name`.
|
|
173
|
-
- GitHub dependencies use `owner/repo/item-name`.
|
|
174
|
-
- Pin GitHub dependencies with `owner/repo/item-name#ref` when needed.
|
|
175
|
-
- Refs are not inherited. If `owner/repo/foo#v2` depends on `bar` from the same
|
|
176
|
-
repo at `v2`, write `owner/repo/bar#v2`.
|
|
177
|
-
- Do not use relative dependencies such as `"./bar"`.
|
|
178
|
-
|
|
179
|
-
## Address Schemes
|
|
180
|
-
|
|
181
|
-
When reasoning about a registry item string, classify it first.
|
|
182
|
-
|
|
183
|
-
| Address | Scheme | Meaning |
|
|
184
|
-
| ----------------------------------- | --------- | ------------------------------------------------------------ |
|
|
185
|
-
| `button` | shadcn | Official shadcn item named `button`. |
|
|
186
|
-
| `@acme/button` | namespace | Item `button` from configured registry `@acme`. |
|
|
187
|
-
| `@acme/ui/button` | namespace | Item `ui/button` from configured registry `@acme`. |
|
|
188
|
-
| `https://example.com/r/button.json` | url | Built registry item JSON at that URL. |
|
|
189
|
-
| `./button.json` | file | Built registry item JSON on disk. |
|
|
190
|
-
| `acme/ui/button` | github | Item `button` from GitHub repo `acme/ui`. |
|
|
191
|
-
| `acme/ui/forms/login#main` | github | Item `forms/login` from GitHub repo `acme/ui` at ref `main`. |
|
|
192
|
-
|
|
193
|
-
For namespace and GitHub addresses, slashful item names are allowed and are item
|
|
194
|
-
names, not file paths. Addresses ending in `.json` keep file-address
|
|
195
|
-
precedence, so `acme/ui/data/schema.json` is treated as a file path, not a
|
|
196
|
-
GitHub item address.
|
|
197
|
-
|
|
198
|
-
## GitHub Registries
|
|
199
|
-
|
|
200
|
-
A public GitHub repository can act as a source registry when it has a root
|
|
201
|
-
`registry.json`.
|
|
202
|
-
|
|
203
|
-
```txt
|
|
204
|
-
owner/repo/item-name[#ref]
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
Rules:
|
|
208
|
-
|
|
209
|
-
- The first two path segments are GitHub owner and repo.
|
|
210
|
-
- All remaining path segments are the registry item name.
|
|
211
|
-
- The source entrypoint is always root `registry.json`.
|
|
212
|
-
- GitHub registries are source registries consumed directly by the CLI. They do
|
|
213
|
-
not require `shadcn build` or generated item JSON files.
|
|
214
|
-
- `include` follows the same source-registry rules as local registries.
|
|
215
|
-
- Currently, GitHub addresses support public `github.com` repositories only.
|
|
216
|
-
- Private repos and GitHub Enterprise require explicit product decisions.
|
|
217
|
-
|
|
218
|
-
When implementing GitHub registry fetching, resolve refs to a commit SHA before
|
|
219
|
-
reading source files. Do not read moving refs directly from
|
|
220
|
-
`raw.githubusercontent.com`, because branch-like refs can be cached for several
|
|
221
|
-
minutes.
|
|
222
|
-
|
|
223
|
-
Preferred flow:
|
|
224
|
-
|
|
225
|
-
```txt
|
|
226
|
-
owner/repo[#ref]
|
|
227
|
-
-> resolve ref with git ls-remote
|
|
228
|
-
-> commit SHA
|
|
229
|
-
-> read https://raw.githubusercontent.com/{owner}/{repo}/{sha}/registry.json
|
|
230
|
-
-> read includes and item files from the same SHA
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
This keeps a command on one consistent repository snapshot.
|
|
234
|
-
|
|
235
|
-
Full 40-character commit SHAs are already stable and can be used directly.
|
|
236
|
-
Branches, tags, and short refs require Git so the CLI can resolve them to a
|
|
237
|
-
commit SHA first.
|
|
238
|
-
|
|
239
|
-
## Build and Verify
|
|
240
|
-
|
|
241
|
-
Use the CLI to build source registries:
|
|
242
|
-
|
|
243
|
-
```bash
|
|
244
|
-
npx shadcn@latest build
|
|
245
|
-
npx shadcn@latest build registry.json --output public/r
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
Use CLI commands to inspect the result:
|
|
249
|
-
|
|
250
|
-
```bash
|
|
251
|
-
npx shadcn@latest list @acme
|
|
252
|
-
npx shadcn@latest search @acme -q "login"
|
|
253
|
-
npx shadcn@latest view @acme/login-form
|
|
254
|
-
npx shadcn@latest add @acme/login-form --dry-run
|
|
255
|
-
npx shadcn@latest registry validate ./registry.json
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
Use GitHub addresses directly for public GitHub registries:
|
|
259
|
-
|
|
260
|
-
```bash
|
|
261
|
-
npx shadcn@latest list owner/repo
|
|
262
|
-
npx shadcn@latest search owner/repo -q "login"
|
|
263
|
-
npx shadcn@latest view owner/repo/item
|
|
264
|
-
npx shadcn@latest add owner/repo/item --dry-run
|
|
265
|
-
npx shadcn@latest registry validate owner/repo
|
|
266
|
-
```
|
|
267
|
-
|
|
268
|
-
When working on registry implementation in the shadcn/ui codebase:
|
|
269
|
-
|
|
270
|
-
- Keep address parsing pure and testable.
|
|
271
|
-
- Do not add side effects to validators.
|
|
272
|
-
- Preserve existing behavior for official shadcn, namespace, URL, and file
|
|
273
|
-
schemes.
|
|
274
|
-
- Add tests for address parsing, source loading, dependency resolution, list,
|
|
275
|
-
search, view, and add paths.
|
|
276
|
-
- Prefer small source-reader abstractions over a plugin system until there are
|
|
277
|
-
multiple real providers.
|