plugin87 / scaffold-project
Scaffold a new design-product project that matches the recommended Claude Code layout (the reference structure). Use when starting a fresh product/app that will be built with this design system.
Step 0 — is the kit here? This skill reads files from the kit. Check once:
ls ${CLAUDE_SKILL_DIR}/../../../tokens >/dev/null 2>&1 && echo KIT_OK || echo KIT_MISSING
OnKIT_MISSINGonly the skill folders were installed, which is whatnpx skills adddoes. Say so plainly, point the user atnpx ux-ui-agent-skills initor the plugin install, and stop. Do not guess the
contents of a file you could not open.
Generate a new design-project skeleton from ${CLAUDE_SKILL_DIR}/../../../templates/product-design/ into a target directory the user names.
The layout to produce (exactly the reference structure):
<target>/
# CONTEXT CLAUDE LOADS
CLAUDE.md the brief Claude reads every session
CLAUDE.local.md your personal prefs, gitignored
.mcp.json Figma, Notion, Drive connections
# TEAM TOOLKIT
.claude/
rules/ conventions, loaded only when relevant
skills/ repeatable workflows, off main context
commands/ your custom slash commands
settings.json shared permissions, checked into git
# YOUR PROJECT
design-tokens.json source of truth: color, type, spacing
src/components/ the real UI Claude reads and edits
public/images/ real images so prototypes don't break
reference/ real screens Claude studies for contextThe fast path, when the kit is installed or reachable via npx:
npx ux-ui-agent-skills new <target>That does steps 2 and 3 below in one call (template copied, CLAUDE.local.md
un-suffixed, engine areas installed without overwriting the lean brief). Then pick
up at step 4. The manual steps are spelled out so the same result can be produced
by hand from a clone.
Steps:
- Ask for the target directory if not given. Create it if it does not exist.
Copy every file of
${CLAUDE_SKILL_DIR}/../../../templates/product-design/into it, preserving the tree.
Two rules on the copy:CLAUDE.local.md.templatelands asCLAUDE.local.md(the suffix exists
only so the kit's own gitignore cannot swallow the file)..gitkeepstays in.claude/skills/,.claude/commands/,src/components/,public/images/, andreference/so the empty folders
survive the first commit.
The template already ships
.gitignore(which ignoresCLAUDE.local.md),.mcp.json,.claude/settings.json, and three rules files
(components.md,tokens.md,accessibility.md).Install the engine next to it so the gates the brief references actually run:
npx ux-ui-agent-skills add tokens components taste accessibility \ workflows content frameworks design-systems scripts skillsUse
add, notinit:initalso writes the full engineCLAUDE.mdover the
lean project brief. The project brief stays short by design, and the engine
knowledge loads from the copied folders when a task needs it.Install the render gates' one dependency in the target:
npm i -D playwright.
Skipping this is silent: every render gate printsSKIPPEDand exits 0.Fill in the placeholders in
CLAUDE.mdwith the user: product, primary user,
stack, icon set, vocabulary. Leave nothing in angle brackets behind.Point
design-tokens.jsonat the brand: replace theprimitive.brandramp,
keep the semantic and component tiers, then prove it still passes:python3 ${CLAUDE_SKILL_DIR}/../../../scripts/validate_contrast.pyRemind the user to fill
reference/with real screens andpublic/images/
with real imagery, and to set the MCP env vars (FIGMA_API_KEY, ...) in their
own shell. Never write a secret into.mcp.json.
Verify before handing over: the target tree matches the layout above, and
python3 ${CLAUDE_SKILL_DIR}/../../../scripts/validate_template.pypasses against the source template.