Update Cnw Templates
nrwl/nx
Update the CNW (create-nx-workspace) template repos (nrwl/empty-template, nrwl/react-template, etc.) to a target nx version via nx migrate, verify each repo, and open a PR per repo.
Manages zard/ui components and projects — adding, composing, styling, and debugging Angular UI built on TailwindCSS v4.
$ npx skills add zard-ui/zardui --skill zard -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install zard-ui/zardui zard --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/zard-ui/zardui.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/zard .claude/skills/zard && 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 "zard" agent skill from https://github.com/zard-ui/zardui/tree/master/skills/zard into .claude/skills/zard/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "zard", 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/zard-ui/zardui/tree/master/skills/zardType 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 zard-ui/zardui --skill zard -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install zard-ui/zardui zard --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/zard-ui/zardui.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/zard .agents/skills/zard && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "zard" agent skill from https://github.com/zard-ui/zardui/tree/master/skills/zard into .agents/skills/zard/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "zard", 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 zard-ui/zardui --skill zard -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install zard-ui/zardui zard --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/zard-ui/zardui.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/zard .cursor/skills/zard && 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 "zard" agent skill from https://github.com/zard-ui/zardui/tree/master/skills/zard into .cursor/skills/zard/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "zard", 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/zard-ui/zardui.git --path skills/zard--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 zard-ui/zardui --skill zard -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install zard-ui/zardui zard --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/zard-ui/zardui.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/zard .gemini/skills/zard && 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 "zard" agent skill from https://github.com/zard-ui/zardui/tree/master/skills/zard into .gemini/skills/zard/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "zard", 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 zard-ui/zardui zardInstalls 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 zard-ui/zardui --skill zard -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/zard-ui/zardui.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/zard .github/skills/zard && 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 "zard" agent skill from https://github.com/zard-ui/zardui/tree/master/skills/zard into .github/skills/zard/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "zard", 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 zard-ui/zardui --skill zard -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install zard-ui/zardui zard --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/zard-ui/zardui.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/zard .opencode/skills/zard && 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 "zard" agent skill from https://github.com/zard-ui/zardui/tree/master/skills/zard into .opencode/skills/zard/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "zard", 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.
zardManages zard/ui components and projects — adding, composing, styling, and debugging Angular UI built on TailwindCSS v4.
Zard is an agent skill from zard-ui/zardui. Manages zard/ui components and projects — adding, composing, styling, and debugging Angular UI built on TailwindCSS v4. Provides project context, component source, and the real API instead of a remembered one. Applies when working with zard/ui, zard-cli, the zard registry, or any project with a components.json that declares a zard projectType. Also triggers for "zard-cli init", "add a zard component", or "set up zard/ui in an Nx workspace".
Its SKILL.md is about 4.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 11 other files (for example `cli.md`, `customization.md` and `mcp.md`).
It sits in Development, covering Monorepo tooling. It works with Angular, Nx and Tailwind CSS. The repository describes itself as: A collection of beautiful and accessible components for Angular based in Shadcn/ui and Ng-zorro. Fully open source and free ❤️. The licence is MIT.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 4340909. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
Bash(npx zard-cli *)Bash(pnpm dlx zard-cli *)Bash(bunx --bun zard-cli *)From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npxnpmpnpmyarnbunxFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
zardui.comFrom 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.
Zard loads about 4.6k tokens when it runs. Until then it costs about 112 tokens; SKILL.md has 1,604 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 found no risky patterns in SKILL.md.
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 zard-ui/zardui at commit 4340909, republished under its MIT licence (© zard-ui). 1,604 words, ~4,643 tokens.
.claude/skills/zard/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.An Angular component library. Components are installed as source code into the user's project by the CLI — there is no runtime package to import from, and no component to npm install.
IMPORTANT: Run every CLI command with the project's own package runner:
npx zard-cli,pnpm dlx zard-cli,yarn zard-cli, orbunx zard-cli— pick the one matchingpackageManagerincomponents.json. The examples below usenpx zard-cli; substitute the right runner.
Read components.json at the project root before doing anything else. It is written by zard-cli init and is the whole configuration — there is no zard-cli info command to call.
{
"$schema": "https://zardui.com/schema.json",
"style": "css",
"icons": "lucide",
"rtl": false,
"projectType": "angular",
"appConfigFile": "src/app/app.config.ts",
"packageManager": "npm",
"tailwind": { "css": "src/styles.css", "baseColor": "neutral" },
"baseUrl": "src/app",
"aliases": {
"components": "@/shared/components",
"utils": "@/shared/utils",
"core": "@/shared/core",
"services": "@/shared/services",
"blocks": "@/shared/blocks"
}
}No components.json means the project has not been initialised — run init rather than writing component files by hand.
A components.json that exists but whose installed component source uses a renamed selector or an old file layout (core/css/tailwind.css instead of core/css/zard.css, a bare ::-webkit-scrollbar block in the global CSS, a button-group "divider" instead of "separator", a toast folder instead of sonner) belongs to a project predating the current registry. That is a job for the migration skill, which names every renamed selector precisely — not for guessing which shape is current.
For anything the file does not answer — what exists, what a component's API is, what it depends on — read the registry or use the MCP server. Never reconstruct a component API from memory.
aliases.components → the import prefix for every component. Use the actual value; never hardcode @/shared/components. The prefix can be anything (@app/..., ~/...) — it is mapped in tsconfig.json, or tsconfig.base.json in an Nx workspace.aliases.blocks → the import prefix a block (add dashboard-01, add login-01) is written under. Absent from a components.json written before blocks were installable — a re-run of init adds it.baseUrl → the source root the aliases resolve against. Components are written under it.projectType → angular, angular-library, nx, nx-library, or analog. Decides which tsconfig holds the aliases, where Tailwind is configured, and whether an app.config.ts exists at all. See cli.md.appConfigFile → where provideZard() is registered. Empty in a library — there the consuming app registers it.tailwind.css → the global CSS file holding the theme tokens. Always edit this file; never create a second one.tailwind.baseColor → the theme preset: neutral, stone, zinc, gray, or slate.icons → the icon family the components are written with (lucide today). Decides the @ng-icons/* package and the symbol names. See rules/icons.md.rtl → declares layout direction intent. It does not change what gets installed.packageManager → use it for every dependency install (pnpm add date-fns, not npm install date-fns) and to pick the CLI runner.registryUrl → optional. Present when the project installs from a registry other than https://zardui.com/r. See registry.md.zard-cli add has written it. Check the components directory first; do not import what is not there.zType="outline", zSize="sm" — not a class that re-styles the component into the same thing.bg-primary, text-muted-foreground. Never bg-blue-500, never a dark: colour override.OnPush, input(), z-prefixed inputs. See rules/angular.md.Always enforced. Each links to a file with Incorrect/Correct pairs.
imports, ChangeDetectionStrategy.OnPush, ViewEncapsulation.None. No NgModules, no Default change detection.input(), model(), output(). No @Input() / @Output() decorators in new code.z-<name> and/or [z-<name>]. Some components are element-only, some are attributes on a native tag (input[z-input], button[z-button]). Use the one the component declares.Zard<Name>Imports array, not the individual classes one by one.apps/web/src/generated/** and public/r/*.json are build artefacts.bg-primary not bg-blue-600.class is for layout, not for restyling. It is merged last and wins — which is exactly why it should not be used to override the component's own colours.mergeClasses(), not string concatenation. It is twMerge(clsx(...)); plain interpolation loses the conflict resolution.space-x-* / space-y-*. Use flex with gap-*.size-* when width and height match. size-4, not w-4 h-4.dark: colour overrides. The tokens already switch.tailwind.config.js; the theme lives in CSS.scroll-fade needs an overflow container; shimmer is text-only. Both are pure-CSS utilities from the core item.z-card wants z-card-header / z-card-title / z-card-content / z-card-footer, not everything dumped into content.z-select-item inside z-select-group.z-dialog / z-sheet / z-alert-dialog / z-drawer in the template with [(zVisible)] and the header/title/description/footer children, or open the same panel from code through ZardDialogService / ZardSheetService / ZardAlertDialogService / ZardDrawerService. Never toggle them with a hand-written open flag or @if.ZardSonnerService — show, success, error, promise.z-separator not <hr>, z-skeleton not an animate-pulse div, z-badge not a styled span, z-empty not a hand-built empty state.z-field-group + z-field, never a div with space-y-*.data-invalid on the field and aria-invalid on the control.z-field-error, not a loose paragraph.typeset container, never a class per tag. zard-cli add typeset installs the stylesheet.--typeset-size, --typeset-leading, --typeset-flow.not-typeset on any component embedded in prose. It brings its own sizing.typeset-scroll around a wide table, instead of a hand-rolled overflow wrapper.!important — every element selector sits inside :where().@ng-icons/<family> and are registered with provideIcons in viewProviders. An unregistered name renders nothing, silently.icons in components.json. Do not assume lucide.// Host classes: computed + mergeClasses. Never assembled in the template.
protected readonly classes = computed(() => mergeClasses(cardVariants(), this.class()));
// Variants, not classes.
<button z-button zType="outline" zSize="sm">Save</button> // correct
<button z-button class="border bg-transparent px-2.5">Save</button> // wrong
// Spacing: gap-*, not space-y-*.
<div class="flex flex-col gap-4"> // correct
<div class="space-y-4"> // wrong
// Field: data-invalid on the field, aria-invalid on the control.
<div z-field [attr.data-invalid]="invalid || null">
<label z-field-label for="email">Email</label>
<input z-input id="email" [attr.aria-invalid]="invalid || null" />
<z-field-error>Enter a valid email.</z-field-error>
</div>
// Loading button: the zLoading input, not a hand-rolled spinner.
<button z-button [zLoading]="saving()" [zDisabled]="saving()">Save</button>| Need | Use |
|---|---|
| Action | z-button (zType: default, destructive, outline, secondary, ghost, link) |
| Grouped actions | z-button-group, z-toggle, z-toggle-group |
| Text input | input[z-input], textarea[z-textarea], z-input-group, z-input-otp |
| Choice | z-select, z-combobox, z-radio-group, z-checkbox, z-switch, z-slider |
| Dates | z-calendar, z-date-picker |
| Form structure | z-field-group, z-field, z-field-label, z-field-description, z-field-error |
| Data display | z-table, z-card, z-item, z-badge, z-avatar, z-chart |
| Navigation | z-navigation-menu, z-breadcrumb, z-tab-group, z-pagination |
| Nested / tree list | z-collapsible, nested — a folder tree is a z-collapsible inside a z-collapsible-content, not a dedicated tree component. See the composition rule. |
| Layout | z-sidebar (with z-sidebar-provider and z-sidebar-inset), z-separator, z-resizable, z-accordion, z-carousel |
| Overlays | z-dialog (modal), z-drawer (bottom/side sheet), z-sheet (side panel), z-alert-dialog (confirmation) — each also from code via its service —, z-popover, z-tooltip, z-dropdown |
| Command palette | z-command |
| Feedback | ZardSonnerService (toast), z-alert, z-progress, z-skeleton, z-spinner |
| Empty states | z-empty |
| Chat / messages | z-bubble, z-bubble-group, z-bubble-content, z-bubble-reactions |
| Keyboard hints | z-kbd |
| Rendered prose | typeset + a preset class (a stylesheet, not a component) — see rules/typeset.md |
Names are the registry names — the same string zard-cli add takes. Two names from an older registry, tree and layout, no longer exist: layout's header/content/sidebar shape was replaced by the sidebar component above; tree has no replacement component — nest z-collapsible instead, per the row above. A project installed before the removal may still have them; see the migration skill.
Not every registry name is a component you pick for a UI need — five install infrastructure instead:
| Item | What it is | Installed |
|---|---|---|
core | Shared directives, the overlay stack, provideZard(), and the theme CSS | Automatic — init installs it; no component declares it as a dependency |
utils | mergeClasses() (twMerge(clsx(...))) | Automatic — same as core |
utilities | The scroll-fade / shimmer CSS utilities — see rules/styling.md | zard-cli add utilities, or installed with a component that uses them |
dark-mode | The dark-mode service and the toggle script injected into index.html | Opt-in — zard-cli add dark-mode (interactive; needs an index.html path) |
typeset | The prose stylesheet for rendered markdown | Opt-in — zard-cli add typeset — see rules/typeset.md |
components.json. No file → run init. Note aliases, baseUrl, icons, packageManager, projectType.aliases.components. Do not re-add what is there, and do not import what is not.<registryUrl>/registry.json lists every item; the MCP server exposes the same thing as list-components and search-components.get-component-docs (MCP) or https://zardui.com/docs/components/<name>.md. Every component page is published as Markdown. Guessing at inputs is the single most common failure mode.npx zard-cli add <name> — dependencies of the component, both npm packages and other registry items, are resolved and installed with it.icons.# Initialise a project (full-screen wizard).
npx zard-cli init
npx zard-cli init --type nx --project web # answer the wizard up front
npx zard-cli init --yes # accept the defaults; required without a TTY
# Add components.
npx zard-cli add button card dialog
npx zard-cli add # pick from the list
npx zard-cli add --all
npx zard-cli add button --overwrite # replace local changes — ask first
npx zard-cli add button --path src/app/ui # a directory other than the configured one
# Diagnose.
npx zard-cli add button --debug
npx zard-cli --versionThere is no search, view, diff, info, or build command — those are shadcn's. See cli.md for the full flag reference.
init and add, every flag, the five project types, headless behaviourZARD_REGISTRY_URL / ZARD_DOCS_URLmergeClasses, extending a componentinput(), OnPush, ViewEncapsulation.None, selectorsmergeClasses, variants before raw classes, the scroll-fade / shimmer utilitiesprovideIcons, the catalog, the configurable family--overwrite, the core/utils/utilities split)© zard-ui, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 10 other files in skills/zard of zard-ui/zardui.
Open the folder on GitHubat commit 4340909
Zard 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 |
|---|---|---|---|---|---|---|
| Zard this skillzard-ui/zardui | 1.2k | — | ~4.6k | Automated safety check: Pass | MIT | |
| Update Cnw Templatesnrwl/nx | 29k | — | ~1.9k | Automated safety check: Notes | MIT | |
| Cometchat Angular V5 Patternscometchat/cometchat-skills | 132 | — | ~1.6k | Automated safety check: Pass | MIT | |
| Angular ToolingKilo-Org/kilo-marketplace | 190 | — | ~1.7k | Automated safety check: Pass | MIT | |
| Nx Importnrwl/nx | 29k | 6 repos | ~3.5k | Automated safety check: Pass | MIT | |
| Nx Workspacenomcopter/react-mosaic | 4.8k | 8 repos | ~1.9k | Automated safety check: Pass | Custom licence |
nrwl/nx
Update the CNW (create-nx-workspace) template repos (nrwl/empty-template, nrwl/react-template, etc.) to a target nx version via nx migrate, verify each repo, and open a PR per repo.
cometchat/cometchat-skills
Angular project-shape glue for CometChat — Angular CLI vs Nx, standalone vs NgModule, environment file wiring, SSR/Angular Universal, lazy routes, and RxJS/signals state patterns.
Kilo-Org/kilo-marketplace
Use Angular CLI and development tools effectively in Angular v20+ projects.
nrwl/nx
Import, merge, or combine repositories into an Nx workspace using nx import.
nomcopter/react-mosaic
Explore and understand Nx workspaces. An agent skill from nomcopter/react-mosaic.
nomcopter/react-mosaic
Helps with running tasks in an Nx workspace. An agent skill from nomcopter/react-mosaic.
zard-ui/zardui
Migrates a project whose installed zard/ui component source predates the current registry — components are copied into the project by zard-cli, so nothing upgrades them on its own.
Works with
Categories
Manages zard/ui components and projects — adding, composing, styling, and debugging Angular UI built on TailwindCSS v4. Zard is an agent skill from zard-ui/zardui. Manages zard/ui components and projects — adding, composing, styling, and debugging Angular UI built on TailwindCSS v4.
Zard fits situations like: add a zard component; set up zard/ui in an Nx workspace.
Run `npx skills add zard-ui/zardui --skill zard -a claude-code`. Or copy the skill folder (skills/zard in zard-ui/zardui) into .claude/skills/zard in your project. Claude Code loads it when a task matches its description.
Run `npx skills add zard-ui/zardui --skill zard -a codex`. Or copy the skill folder (skills/zard in zard-ui/zardui) into .agents/skills/zard 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 zard-ui/zardui --skill zard -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/zard, .gemini/skills/zard, .github/skills/zard and .opencode/skills/zard in your project.
Going by SKILL.md and its folder, Zard needs the command-line tools its instructions call (npx, npm, pnpm, yarn and bunx). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Bash(npx zard-cli *), Bash(pnpm dlx zard-cli *), Bash(bunx --bun zard-cli *).
SKILL.md names 1 domain. In commands or code: zardui.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Zard is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.6k tokens (SKILL.md is roughly 19k 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 Zard: Update Cnw Templates (nrwl/nx, 29k stars), Cometchat Angular V5 Patterns (cometchat/cometchat-skills, 132 stars), Angular Tooling (Kilo-Org/kilo-marketplace, 190 stars) and Nx Import (nrwl/nx, 29k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
zard-ui (a GitHub organization) maintains it in zard-ui/zardui, which has 1,174 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 9, 2026.
Source: zard-ui/zardui on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.