Two Claude Code skills that turn your repo into paste-ready Claude Design prompts — brand-aware, project-type-tuned, language-aware, file-persisted.
SaferSkills independently audited claude-design-prompter (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The second step of the design pipeline. Reads the brand foundation produced by /claude-design-brand and turns it into focused, paste-ready prompts for specific surfaces — plus answers Claude Design's follow-ups consistently with stored decisions.
Four modes: Logo, All-Pages, Landing, Answer.
Before any mode runs, check for docs/design/BRAND.md AND a ## Brand section in .claude/design-system.md. If missing or empty:
"Brand foundation hasn't been set up yet. Run /claude-design-brand first — it scans
the repo, detects what kind of project this is, and produces the brand decisions
that every other artifact (logo, pages, landing) will inherit. Want me to suggest
running it now?"Don't proceed with any mode until brand exists. The whole point of this skill is consistency — no foundation, no consistent output.
Translate user-facing strings to the user's current conversation language. Internal keys (file names, frontmatter, template placeholders) stay English.
On invocation without explicit mode, the FIRST action is a single AskUserQuestion (after the BRAND pre-condition check). No preamble. Translate strings to user language. Canonical English:
question: "Claude Design Prompter — which mode?"
header: "Mode"
multiSelect: false
options:
1. label: "Logo — generate logo prompt + LOGO.md"
description: "Reads BRAND.md, asks ≤4 logo-specific questions (construction, feel, color treatment, variants) with brand-aware recommendations, prints a Claude Design prompt block, writes docs/design/LOGO.md."
2. label: "All-Pages — every app page (landing excluded)"
description: "Detects pages from app/, pages/, src/routes/, README. For each page asks ≤4 questions (content type, density, primary action, states) with brand-aware recommendations. Prints one Claude Design prompt block per page, writes docs/design/ALL-PAGES.md (one document, sectioned by page)."
3. label: "Landing — composite landing page"
description: "Reads BRAND.md, asks ≤4 questions about goal / hero treatment / sections / interactivity. Prints one composite Claude Design prompt block (navbar + hero + sections + cta + footer in one), writes docs/design/LANDING.md."
4. label: "Answer — resolve a Claude Design follow-up"
description: "Paste the question Claude Design asked you (text or screenshot — Win+Shift+S works). The skill checks BRAND.md + existing prompter outputs and proposes a consistent answer; new answers can be recorded back."On direct invocation with explicit mode arg (logo, all-pages, landing, answer): skip the dispatcher, go straight in (still run the BRAND pre-condition check).
Loads targets/logo.md. Brand-aware: pulls primary color, mood, voice from BRAND.md. Recommendations in questions reflect brand character (e.g. brand mood "industrial" → recommendation favors mark-only or monogram, sharp construction; brand mood "editorial" → wordmark recommendation).
Output: docs/design/LOGO.md + ## Logo section in .claude/design-system.md + paste-ready prompt block.
Page discovery (this is where the system stops being static):
app/, pages/, src/app/, src/pages/, src/routes/, routes/, app/routes/parent/child keys (e.g. admin/users)/api/billing → billing page candidate).pages_detected[]. Show the user the list and ask:For each chosen page, load targets/all-pages.md for the question flow + per-page prompt block format.
Output: a single docs/design/ALL-PAGES.md with one section per page. Each section contains:
Also append ## Pages.<key> summaries to .claude/design-system.md.
Loads targets/landing.md. Composite: navbar + hero + sections + cta + footer in ONE landing prompt — not split, because Claude Design produces a coherent landing better when given the whole thing.
Brand-aware: recommendations reflect detected project type (e.g. SaaS landing recommends "social proof early"; portfolio landing recommends "big type hero, low-volume CTA").
Output: docs/design/LANDING.md + ## Landing section in .claude/design-system.md + paste-ready prompt block.
Loads targets/answer.md for the full flow including multi-question screenshot batching and brand-aware option generation. Summary:
claude-design-questions.md..claude/design-system.md (brand + per-mode sections). If a decision exists, propose it directly with one-line justification: BRAND.md sets motion=subtle (industrial mood, terminal feel — fits this project type).AskUserQuestion. After the user picks, ask whether to record it. If yes, edit the relevant doc (BRAND.md or per-mode doc) AND .claude/design-system.md.claude-design-questions.md.After Logo / All-Pages / Landing modes write their docs/design/<NAME>.md:
templates/docs-readme.md.tmpl from scratch using the current set of files in docs/design/. The {{OPTIONAL_FILES}} placeholder lists every file present in the folder right now (excluding README.md itself), with a one-line description per file. This is regenerated, not appended — keeps the index in lock-step with reality.<!-- design-system:start --> and <!-- design-system:end -->. Replace it with a freshly rendered templates/claude-md-section.md.tmpl. If the file or block doesn't exist, create it (block at end of file; create file with a top-level heading if missing). Idempotent: same content always produces the same block.## Logo / ## Pages.<key> / ## Landing). Other sections are left untouched.Never duplicate any of these blocks. Never delete content owned by other sections.
When reading BRAND.md, scan for any value followed by (auto) — these were defaulted in Quick mode without user confirmation. When generating downstream prompts (Logo / All-Pages / Landing) the agent MUST:
(auto) markers in the printed prompt block's Assumptions or footer section so the user knows which inherited brand decisions are unconfirmed.> Inherited from BRAND.md with (auto) defaults: <list>. Run /claude-design-prompter → Answer or re-run /claude-design-brand to lock these.(auto) further as a fact in other docs — it stays a flagged assumption until the user confirms./claude-design-brand.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.