Creative Tim UI Blocks
creativetimofficial/ui
Helps install, generate and review Creative Tim UI blocks: shadcn/ui-based React and Tailwind sections that follow a restrained, production-minded design philosophy.
“Skill: shadcn-parity”
$ npx skills add udecode/kitcn --skill shadcn-parity -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install udecode/kitcn shadcn-parity --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/udecode/kitcn.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/shadcn-parity .claude/skills/shadcn-parity && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "shadcn-parity" agent skill from https://github.com/udecode/kitcn/tree/main/.agents/skills/shadcn-parity into .claude/skills/shadcn-parity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shadcn-parity", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/udecode/kitcn/tree/main/.agents/skills/shadcn-parityType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add udecode/kitcn --skill shadcn-parity -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install udecode/kitcn shadcn-parity --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/udecode/kitcn.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/shadcn-parity .agents/skills/shadcn-parity && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "shadcn-parity" agent skill from https://github.com/udecode/kitcn/tree/main/.agents/skills/shadcn-parity into .agents/skills/shadcn-parity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shadcn-parity", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add udecode/kitcn --skill shadcn-parity -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install udecode/kitcn shadcn-parity --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/udecode/kitcn.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/shadcn-parity .cursor/skills/shadcn-parity && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "shadcn-parity" agent skill from https://github.com/udecode/kitcn/tree/main/.agents/skills/shadcn-parity into .cursor/skills/shadcn-parity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shadcn-parity", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/udecode/kitcn.git --path .agents/skills/shadcn-parity--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add udecode/kitcn --skill shadcn-parity -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install udecode/kitcn shadcn-parity --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/udecode/kitcn.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/shadcn-parity .gemini/skills/shadcn-parity && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "shadcn-parity" agent skill from https://github.com/udecode/kitcn/tree/main/.agents/skills/shadcn-parity into .gemini/skills/shadcn-parity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shadcn-parity", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install udecode/kitcn shadcn-parityInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add udecode/kitcn --skill shadcn-parity -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/udecode/kitcn.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/shadcn-parity .github/skills/shadcn-parity && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "shadcn-parity" agent skill from https://github.com/udecode/kitcn/tree/main/.agents/skills/shadcn-parity into .github/skills/shadcn-parity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shadcn-parity", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add udecode/kitcn --skill shadcn-parity -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install udecode/kitcn shadcn-parity --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/udecode/kitcn.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/shadcn-parity .opencode/skills/shadcn-parity && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "shadcn-parity" agent skill from https://github.com/udecode/kitcn/tree/main/.agents/skills/shadcn-parity into .opencode/skills/shadcn-parity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shadcn-parity", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
shadcn-parityShadcn Parity is a skill in udecode/kitcn (450 stars). Its SKILL.md is about 3.7k tokens. Licence: Apache-2.0.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit c6010f5. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
bunbunxeslintFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use bunx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Shadcn Parity loads about 3.7k tokens when it runs. Until then it costs about 9 tokens; SKILL.md has 1,836 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
- `.env.local`- `.env.local`- remove `CONVEX_DEPLOYMENT` noise from `.env.local`Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from udecode/kitcn at commit c6010f5, republished under its Apache-2.0 licence (© udecode). 1,836 words, ~3,667 tokens.
.claude/skills/shadcn-parity/SKILL.md (or your agent's skills folder).Use this for UI/component parity work, including shadcn-owned shell files, registry-style component authorship, React component patterns, and React Compiler/Effect decisions inside shadcn-compatible surfaces.
Load these only when the task needs the detail:
.agents/rules/shadcn-parity/references/components.md — comprehensive component architecture reference: accessibility, asChild, composition, data attributes, artifact taxonomy, polymorphism, controlled/uncontrolled state, and component typing..agents/rules/shadcn-parity/references/react.md — comprehensive React reference: React Compiler, manual memoization escape hatches, Effects, useEffectEvent, ref access, derived state, Tailwind v4 syntax, data attributes, and UI constraints.When the user asks for shadcn parity, treat ../shadcn as the source of
truth. Do not give them "inspired by shadcn". Do not abstract away the parts
that matter. Clone the methodology:
Only diverge when:
If you diverge, say exactly why.
For kitcn init -t next, shadcn owns the app shell. kitcn
owns the integration layer.
Shadcn-owned files stay shadcn-owned:
app/layout.tsxapp/page.tsxapp/globals.csscomponents/theme-provider.tsxlib/utils.tscomponents.jsoneslint.config.mjsnext.config.mjspostcss.config.mjskitcn-owned files stay kitcn-owned:
components/providers.tsxlib/convex/*.env.localconvex/*concave.json<functionsDir>/tsconfig.jsontsconfig.json alias patch for @convex/*The rule is simple:
For the current Next scaffold, the acceptable shell patches are narrow:
layout.tsx to mount Providerstsconfig.json to add @convex/*components.json only when tailwind.css must follow src/ vs rootFor kitcn init, overwrite behavior must match that ownership split:
--yes skips conflicting owned replacements--overwrite is the only bulk replacement hammerIf you find yourself authoring a full replacement for a shadcn-owned file, you are probably doing it wrong.
Public templates stay concrete:
kitcn init -t nextkitcn init -t viteInternally, kitcn only has two scaffold modes:
next-appreactFramework detection should feel like shadcn, not like a fake kitcn abstraction:
next-app maps to next-appnext-pages, vite, react-router, tanstack-start, and manual map to
reactinit -t stays universal. Keep it narrow.
init -t always owns:
convex/functions/schema.tsconvex/functions/http.tsconvex/lib/crpc.tsconvex/lib/get-env.ts<functionsDir>/tsconfig.jsontsconfig.json patch.gitignore entries for .convex/ and .concave/components/providers.tsxlib/convex/*.env.localcodegen, convex:dev, typecheck:convex, root typecheckNext-only baseline pieces:
/convex messages demolib/convex/server.tslib/convex/rsc.tsxlayout.tsxtsconfig.jsoncomponents.jsonReact-mode baseline keeps the client core only:
/convex demo in v1init -t options stay narrow:
-t next-t vite--backend convex|concave--cwd--name--defaults--yes--prod--preview-name--deployment-name--env-fileDo not grow init -t with fake feature flags.
Optional capability belongs in add:
kitcn add authkitcn add ratelimitkitcn add resendAuth is the first real bundle. It patches the init -t baseline and owns:
get-envoptionalAuth*auth*Mode split:
next-app: minimal /auth page + provider/client/server wiringreact: auth server config/runtime, auth client, provider wiring, auth env,
and auth cRPC families onlyAuth v1 does not own:
Rule:
init -tinitaddinit -tkitcn should match shadcn on the data model as closely as possible.
Same shape:
packages/kitcn/src/cli/registry/items/<item>/<item>-item.tsCurrent kitcn divergence:
That extra install layer is what kitcn adds beyond plain shadcn registry resolution:
schema.tscrpc.ts, http.ts, providers, and get-env.tsnext-app vs reactplugins.lock.jsonRule:
RegistryItem as possiblefixtures/* is not hand-authored. It is a normalized snapshot of real
CLI output.
The important bit:
_generated/* output comes from real kitcn
codegen during kitcn init -tinit -t must fail if real codegen cannot be producedkitcn codegen directly from the fixture scriptWhy not direct kitcn codegen?
kitcn init -t next already owns the whole sequence:
scaffold -> dependency install -> codegen -> bootstrap retry -> codegen retryRepo automation adds two deliberate details:
tooling/fixtures.ts owns committed starters:
next, next-auth, vite, vite-authconvex unless config or --backend says otherwisetooling/scenarios.ts, materialized under
tmp/scenarios/*To regenerate the checked-in fixture:
bun run fixtures:syncTo verify the fixture still matches fresh CLI output:
bun run fixtures:checkTo materialize runnable tmp apps for manual runtime:
bun run scenario:prepare allWhy this exists:
fixtures/*/package.json stays normalized to workspace:*fixtures:check swaps that to a packed local tarball before validationtmp/scenarios/*, never in fixtures/*scenario:dev, which ones add
test:auth and test:e2e, and which ones must use scenario:checkfixtures:check is not just a diff. It validates the fresh generated app with:
bun install
bun typecheckNext starters also run bun lint. Vite starters intentionally skip lint in
this lane because shadcn's default eslint . sweeps generated/runtime files.
It validates against the current local package under test, not the last published npm version:
kitcn package to a tarballIf you need the slower rebuild-first lane, use:
bun run fixtures:check:fullWhen checking parity or drift:
bun run fixtures:sync instead of editing fixtures/* by handbun run fixtures:checkkitcn init -t next, not the fixturetooling/fixtures.ts does this:
create a temp directory
for each committed starter, run the local CLI:
bunx kitcn --backend concave init -t <next|vite> --yes --cwd <tmp> --name <starter>For auth starters, follow with:
bunx kitcn --backend concave add auth --yeslet create run the actual scaffold flow:
shadcn init -t nextif codegen needs Convex bootstrap, create bootstraps Convex and reruns real
codegen
validate the fresh generated app:
kitcn to a tarballbun installbun typecheckbun lint only for templates whose registry entry enables lintcopy the generated app into fixtures/<starter>
apply repo-only normalization:
node_modules, .next, lockfiles, etc.)kitcn to workspace:*CONVEX_DEPLOYMENT noise from .env.localThat means the fixture is allowed to normalize repo-local junk, but it is not allowed to invent user-facing files.
Do not change this into:
bunx kitcn init -t next --yes --cwd <tmp> --name next
cd <tmp>/next
bunx kitcn codegenThat skips the point of create owning bootstrap/codegen orchestration and can reintroduce interactive or half-bootstrapped failure modes.
If fixtures/next differs from fresh output, assume the CLI is wrong first.
Do not "fix" fixture drift by patching the fixture directly unless the change is
strictly part of repo-only normalization.
Start here before editing:
../shadcn/packages/shadcn/src/commands../shadcn/packages/shadcn/src/utils../shadcn/packages/shadcn/testPrefer shadcn's non-e2e tests over guessing intended behavior.
Build a parity map between the local surface and the shadcn surface.
Check:
If there is a direct analog, mirror it.
Read the matching shadcn implementation and the relevant unit tests before changing local code.
Do not stop at the happy path source file. Read the tests too. That is where the real contract usually lives.
For parity work, the first useful move is usually test porting.
Port/adapt shadcn's non-e2e tests for:
Adjust only the domain-specific payloads, paths, and names.
Do not add dead legacy tests like "old API no longer exists". Just delete the old path.
If shadcn splits logic into command modules and shared utilities, mirror that split locally.
Prefer:
Avoid:
Parity includes UX, not just logic.
Mirror:
If local dependencies differ, keep the behavior and shape the same with the closest local equivalent.
If the repo needs a stronger behavior than shadcn, keep it behind the same surface.
Good:
Bad:
If an old local abstraction conflicts with the parity target, remove it.
Do not keep:
Make the result look like it was built that way from the start.
Before calling the work done, verify:
If you catch yourself doing any of these, stop:
That is how parity rots into fan fiction.
When reporting parity work back to the user, state:
If there was no divergence, say so plainly.
© udecode, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/shadcn-parity of udecode/kitcn.
Open the folder on GitHubat commit c6010f5
Shadcn Parity next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Shadcn Parity this skilludecode/kitcn | 450 | — | ~3.7k | Automated safety check: Notes | Apache-2.0 | |
| Creative Tim UI Blockscreativetimofficial/ui | 12k | — | ~2.1k | Automated safety check: Notes | MIT | |
| Cosscrafter-station/petdex | 4.2k | — | ~1.4k | Automated safety check: Pass | MIT | |
| Ss Learnbitjaru/styleseed | 972 | — | ~1.3k | Automated safety check: Pass | MIT | |
| Migrate Radix To BaseTheOrcDev/youtube-to-blog | 180 | 2 repos | ~2.3k | Automated safety check: Pass | MIT | |
| UithingBayBreezy/ui-thing | 729 | — | ~1.3k | Automated safety check: Pass | Custom licence |
creativetimofficial/ui
Helps install, generate and review Creative Tim UI blocks: shadcn/ui-based React and Tailwind sections that follow a restrained, production-minded design philosophy.
crafter-station/petdex
Helps implement coss UI components correctly. An agent skill from crafter-station/petdex.
bitjaru/styleseed
Capture a human-approved UI design lesson as a privacy-minimized local StyleSeed candidate, review it, and prepare an opt-in share package without transmitting project code, prompts, screenshots, or…
TheOrcDev/youtube-to-blog
Migrates React projects and components from Radix UI to Base UI.
BayBreezy/ui-thing
Manages UI Thing components, prose, blocks, themes, shortcuts, docs, and MCP-driven workflows in Nuxt projects and in the UI Thing source repo.
Hainrixz/editor-pro-max
Helps choose and drop in animated React components from Magic UI and React Bits for landing pages, marketing sites and dashboards, instead of hand-coding animations.
udecode/kitcn
Create a short annotated visual walkthrough from real final-state screenshots or rendered artifacts.
udecode/kitcn
Prevent feature creep when building software, apps, and AI-powered products.
udecode/kitcn
Repair an unreleased .changeset/.md file so it matches the real branch delta against main.
udecode/kitcn
Audit newer Convex npm releases against kitcn. An agent skill from udecode/kitcn.
udecode/kitcn
A skill your agent uses when working with Jotai X stores (createAtomStore), accessing state in components or callbacks, persisting state to cookies or localStorage
udecode/kitcn
Run a scoped Linear backlog autonomously as a sequence of maximal safe parallel batches by composing orchestrator, autogoal, and task.
Categories
Run `npx skills add udecode/kitcn --skill shadcn-parity -a claude-code`. Or copy the skill folder (.agents/skills/shadcn-parity in udecode/kitcn) into .claude/skills/shadcn-parity in your project. Claude Code loads it when a task matches its description.
Run `npx skills add udecode/kitcn --skill shadcn-parity -a codex`. Or copy the skill folder (.agents/skills/shadcn-parity in udecode/kitcn) into .agents/skills/shadcn-parity in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add udecode/kitcn --skill shadcn-parity -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/shadcn-parity, .gemini/skills/shadcn-parity, .github/skills/shadcn-parity and .opencode/skills/shadcn-parity in your project.
Going by SKILL.md and its folder, Shadcn Parity needs the command-line tools its instructions call (bun, bunx and eslint).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Shadcn Parity is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Shadcn Parity: Creative Tim UI Blocks (creativetimofficial/ui, 12k stars), Coss (crafter-station/petdex, 4.2k stars), Ss Learn (bitjaru/styleseed, 972 stars) and Migrate Radix To Base (TheOrcDev/youtube-to-blog, 180 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
udecode (a GitHub organization) maintains it in udecode/kitcn, which has 450 GitHub stars. The repository holds 33 skills in this directory. The repository was last updated on October 1, 2026.
Source: udecode/kitcn on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.