| name | design-audit |
| description | Audits an app's current design state and matches it against the awesome-design-md catalog (full bodies of 69 brand DESIGN.md files internalized) to deliver a Top-3 design-system matching report with exact hex/font/value citations. Use for '๋์์ธ ์ง๋จ', '๋์์ธ ๊ฐ์ฌ', 'design audit', '๋์์ธ ์ฒดํฌ', '๋์์ธ ์ํ', '๋์์ธ ๋ถ์', '๋์์ธ ๋ฆฌ๋ทฐ', '๋ด ์ฑ ๋์์ธ', '์ฐ๋ฆฌ ์ฑ ๋์์ธ', '๋์์ธ ์์คํ
์ถ์ฒ', '์ด๋ค ๋์์ธ์ด ์ด์ธ๋ ค', '์ด๋ค ๋์์ธ์ด ๋ง์๊น', 'DESIGN.md ์ถ์ฒ', '๋์์ธ ๋งค์นญ', '๋์์ธ ๋ฒค์น๋งํฌ', 'awesome-design-md' requests. Accepts platform-agnostic input (iOS/Web/Android/tokens), returns a Top-3 matching report plus each brand's exact design tokens, and behaves equivalently to having installed the DESIGN.md via the getdesign CLI. |
| model | opus |
| argument-hint | [<target path|screenshot|description> --platform ios|web|android|any] |
user: "๋ด iOS ์ฑ ๋์์ธ ์ง๋จํด์ค"
assistant: "design-audit ๋ชจ๋๋ก ์ ํ. Xcode ํ๋ก์ ํธ์ ์์ยทํฐํธยท์ปดํฌ๋ํธ ํ ํฐ์ ์ค์บํ๊ณ , awesome-design-md 69๊ฐ ๋ธ๋๋ ์ค Top-3 ๋งค์นญ์ ๋ฆฌํฌํธ๋ก ์ ๊ณตํฉ๋๋ค."
user: "์ฐ๋ฆฌ ์น ์ฑ์ ์ด๋ค ๋์์ธ ์์คํ
์ด ์ด์ธ๋ฆด๊น? ์คํฌ๋ฆฐ์ท ์ฒจ๋ถ"
assistant: "design-audit ๋ชจ๋๋ก ์ ํ. ์คํฌ๋ฆฐ์ท์ ์์/ํ์ดํฌ/๋ฐ๋/๋ฌด๋๋ฅผ ์ถ์ถํ๊ณ , ์นดํ๋ก๊ทธ ์ธ๋ฑ์ค์ ๋งค์นญํด Top-3๋ฅผ ์ ์ ํฉ๋๋ค."
user: "'๋คํฌ ๋ฏธ๋๋ฉ, ๋ณด๋ผ ํฌ์ธํธ, ๊ฐ๋ฐ์ ๋๊ตฌ ๋๋' ์ด๋ฐ ๋ฐฉํฅ์ด์ผ. ๋ง๋ DESIGN.md ์ถ์ฒํด์ค"
assistant: "์์ ํ ์
๋ ฅ์ ํ์ฑํด trait ๋ฒกํฐ(๋ฌด๋/์์/์นดํ
๊ณ ๋ฆฌ)๋ฅผ ๊ตฌ์ฑํ๊ณ , matching-rubric์ผ๋ก Top-3๋ฅผ ๋ฆฌํฌํธํฉ๋๋ค."
design-audit
Audit the current app's design state and match the best-fitting Top-3 brand design systems from VoltAgent's awesome-design-md catalog, producing a report with exact hex/font/value citations.
Respond to the user in Korean.
Equivalence Principle โ Parity with the getdesign CLI
This skill should deliver results equivalent to working from a DESIGN.md installed via npx getdesign@latest add <slug>. To achieve this:
- Full-body internalization: the actual
DESIGN.md bodies of all 69 brands are byte-level replicated under $REF/designs/*.md. No summarizing or restructuring.
- Exact citation: when the report mentions brand tokens (color hex, font family, numeric values), read them directly from the body and cite verbatim rather than paraphrasing โ paraphrase loses the load-bearing exact values.
- Provenance:
$REF/designs/manifest.json preserves the original sha256 hashes, commit, and update date; $REF/designs/ATTRIBUTION.md records the MIT license and attribution.
If the user wants to install a chosen brand into their project, also offer the npx getdesign@latest add <slug> command as an optional aid.
Path Convention
This skill's absolute path varies by install environment (e.g., direct repository use vs. placement under ~/.claude/plugins/cache/.../design-audit/). All paths in this document are relative to the skill directory where this SKILL.md lives, with these shorthand symbols:
$SKILL = directory where this SKILL.md lives (absolute path resolved at runtime)
$REF = $SKILL/references
Read tool calls: the Read tool requires absolute paths, so when you see an example like Read $REF/designs/stripe.md, construct <skill absolute path>/references/designs/stripe.md from the absolute path where SKILL.md was loaded. Use that resolved path rather than a hardcoded plugins/... path, which breaks across install environments.
Bash script calls: when running $SKILL/scripts/*.sh, use the $CLAUDE_PLUGIN_ROOT environment variable or the absolute path from when SKILL.md was loaded. Scripts resolve their own path via BASH_SOURCE, so internal logic is portable as long as the call path is correct.
Scope and Non-Scope
| Scope (the skill does this) | Non-scope (the skill does not) |
|---|
| Extract current app's design tokens/mood/category | Replace actual code colors/fonts |
| Top-3 matching based on 69 internalized DESIGN.md bodies | Generate platform-specific token code |
| Exact hex/font/value citation for Top-3 brands | Implement SwiftUI/CSS/Compose conversion |
| Provide selection rationale, trade-offs, contrast references | Run installation (user does this directly) |
For platform-specific token conversion/application, switch to the design-craft skill. For designer/painter-based generation, use the design-research + design-craft combination.
Input Sources
Use three inputs alone or combined. The more you combine, the higher the accuracy.
- Code/token files โ SwiftUI Color, Asset Catalog, CSS variables, Tailwind config, Android colors.xml, design tokens JSON
- Screenshots โ images provided by the user or captured from the Simulator/browser (visual analysis via the Read tool)
- Narrative โ natural-language descriptions like "dark minimal, purple accent, developer tool"
Workflow
Phase 0: Identify Input
Determine the input type:
- Project path given โ proceed in code extraction mode
- Image file/screenshot attached โ proceed in visual analysis mode
- Text description only โ proceed in narrative parsing mode
- Nothing given โ request at least one source (AskUserQuestion is available)
The --platform ios|web|android|any argument branches the extraction strategy. Default is any (platform-agnostic tokens only).
Phase 1: Extract Design State
Load $REF/extraction-guide.md and follow the block for the relevant platform. Structure the extraction into a trait vector with these 6 fields:
| Field | Content | Example |
|---|
| palette | 3โ5 main colors + brightness extremes | #0A0A0A, #8B5CF6, #F5F5F4 / very-low-brightness + high-saturation purple |
| typography | family + main weights | Geist, weight 400/600 / mono JetBrains Mono |
| density | spacing/component density | loose / moderate / dense |
| mood | 3 mood keywords | minimal, dark, developer |
| surface | background/card treatment | flat / elevated / gradient |
| category | inferred industry | developer-tool, fintech, ai-llm, ... |
Mark fields that cannot be extracted as unknown and state this in the report. Do not fill missing data with guesses, since fabricated tokens make the match misleading.
Phase 2: First-Pass Matching (Index-Based Screening)
Load $REF/catalog-index.md โ an index structuring the 69 brands into 9 categories. Each entry has slug | category | file | one_liner | traits[].
Compute the Top-5 candidates using the scoring formula in $REF/matching-rubric.md:
score(brand) = palette_match * 0.30
+ mood_match * 0.25
+ category_fit * 0.20
+ typography_fit * 0.15
+ density_fit * 0.10
Before finalizing Top-3 from Top-5, first perform the body verification in Phase 3. Follow these rules:
- Avoid category bias: if all of Top-3 are in the same category, consider swapping the 2nd place for a candidate from a different category
- Rationale required: cite at least 2 matching traits ("which traits matched") for each match
- Record trade-offs: report not only strengths but also "which characteristics are sacrificed by adopting this brand"
Phase 3: Second-Pass Matching (Body Precision Verification)
For each Top-5 candidate, load $REF/designs/{slug}.md with the Read tool โ this file is a byte-level replica of the original DESIGN.md body.
Extract the following from the body and re-check against the vector:
- Section 1 โ Visual Theme & Atmosphere: reconfirm mood keywords
- Section 2 โ Color Palette & Roles: actual hex values (e.g., Stripe Purple
#533afd)
- Section 3 โ Typography Rules: actual font family names (e.g.,
sohne-var, SF Pro)
- Section 7 โ Do's and Don'ts: identify guidelines that may conflict with the user's app
If the body conflicts with the index one_liner, prioritize the body and re-score. Example: if a brand tagged only purple in the index turns out to use #6366F1 (indigo) in the body, recompute palette_match.
After re-scoring, finalize Top-3. If Top-5 is insufficient for information gathering, you may expand to Top-7.
Phase 4: Generate Report
Follow the section structure of $REF/report-template.md exactly. The report has these 7 sections:
- ์์ฝ โ current app trait vector (6 fields)
- Top-3 ๋งค์นญ โ per-brand score, rationale, trade-offs
- Top-3 ๋์์ธ ํ ํฐ ๋ฐ์ท โ measured palette/typo/key values cited directly from each brand's DESIGN.md body (no paraphrasing)
- ์ ํ ๊ฐ์ด๋ โ which candidate fits which situation
- ๋ณธ๋ฌธ ์ ์ฒด ๊ฒฝ๋ก โ
Read $REF/designs/{slug}.md + auxiliary install command
- ์ฃผ์์ฌํญ โ data limits, unverified inferences
- ๋ค์ ๋จ๊ณ โ after selection, convert tokens via design-craft or install directly
Output the report as markdown text. If file saving is needed, ask the user for the path.
Phase 5: Suggest Follow-up
Right after the report, present only a single follow-up option to the user:
- "Top-3 ์ค X๋ฅผ ๊ณจ๋๋ค๋ฉด โ ๋ณธ๋ฌธ ์ ์ฒด ๋ก๋ ํ์ฅ / ์ค์น ์ปค๋งจ๋ ์คํ / design-craft๋ก ํ ํฐ ๋ณํ"
Do not modify code automatically. End here without user approval, since installation and code changes belong to the user.
Catalog Freshness
$REF/designs/*.md and $REF/designs/manifest.json are a byte-level snapshot of the npm getdesign@0.6.8 tarball (currently 69 brands). To check whether upstream has been updated:
bash $SKILL/scripts/fetch-catalog-diff.sh
bash $CLAUDE_PLUGIN_ROOT/skills/design-audit/scripts/fetch-catalog-diff.sh
This script downloads the manifest.json from the latest getdesign tarball on the npm registry, compares it against the local $REF/designs/manifest.json sha256 hashes/brand set, and outputs new, removed, and body-changed brands. If differences are found, re-sync with $SKILL/scripts/sync-designs.sh (then manually update the table in $REF/catalog-index.md); if there are none, it exits 0.
Per-Input-Source Detail
Code/Token File Mode
For platform blocks, refer to the relevant section of $REF/extraction-guide.md. The core search patterns are:
- iOS:
**/*.xcassets/**/Contents.json, Color(red:green:blue:), Color("Asset"), Font.custom, .font(.system)
- Web:
:root { --color-* }, tailwind.config.*, theme.extend.colors, global CSS variables
- Android:
res/values/colors.xml, Theme.kt, MaterialTheme.colorScheme
- Platform-agnostic:
design-tokens.json, tokens.yaml, *.tokens.*
Find files with Glob/Grep and read exact values with Read. Read values from the source rather than guessing colors, since guessed colors corrupt the vector.
Screenshot Mode
Open the image with the Read tool and identify:
- Dominant hex of 3โ5 colors (approximate values acceptable, e.g.,
#2E2A2B-level precision)
- Typography: serif vs sans vs mono, weight contrast strength
- Density: elements per screen, padding area ratio
- Mood: dark/light, flat/gradient, editorial/functional
If multiple images are provided, prioritize common traits and note per-screen differences separately.
Narrative Mode
Extract the 6 fields from the natural-language description. Mark missing fields as unknown and present up to 2 follow-up questions to the user:
- "์ฃผ ์์์ ๋ฌด์์ธ๊ฐ? (hex ๋๋ ์ด๋ฆ)"
- "ํ์ดํฌ ๋ฐฉํฅ์ serif/sans/mono ์ค ์ด๋ ์ชฝ์ธ๊ฐ?"
If 3 or more questions would be needed, allow uncertainty and proceed with unknown.
Agent Delegation
Large code scans that are burdensome within a single skill turn can be delegated to an Explore subagent:
Agent(subagent_type=Explore,
description="์ฑ ๋์์ธ ํ ํฐ ์ค์บ",
prompt="<ํ๋ซํผ๋ณ glob ํจํด + ์ถ์ถ ๊ธฐ์ค>. Top ์์ 5๊ฐ์ ํฐํธ ํจ๋ฐ๋ฆฌ๋ง ๋ฆฌํฌํธ. 200๋จ์ด ์ด๋ด.")
After delegation, assemble the trait vector and run matching on the main thread.
Limits and Caveats
- Catalog snapshot point: internalized from
getdesign@0.6.8 (2026-04-24). When upstream updates, scripts/fetch-catalog-diff.sh detects the diff and scripts/sync-designs.sh re-syncs.
- "Similar" is not the default: the most similar brand is not necessarily the best. Include "contrast brands" (1โ2 in a completely different direction) in the report as references to expand the user's imagination.
- Brand trademarks: the token values this skill provides are design-system records extracted from public CSS values; rights to each brand's logo, trademark, and visual identity belong to the respective company. Legal review is needed before commercial use.
Additional Resources
Reference Files
references/catalog-index.md โ index of 69 brands' category/slug/traits/local file paths
references/designs/*.md โ full DESIGN.md bodies of 69 brands (byte-replicated from awesome-design-md originals)
references/designs/manifest.json โ each file's sha256 hash/sourceCommit/update date
references/designs/ATTRIBUTION.md โ full MIT license and source attribution
references/extraction-guide.md โ extraction strategies and glob patterns per iOS/Web/Android/platform-agnostic input
references/matching-rubric.md โ trait vector vs catalog matching scoring formula (+ body re-scoring rules)
references/report-template.md โ Top-3 report markdown structure (7 sections โ includes body token excerpts)
Scripts
scripts/fetch-catalog-diff.sh โ compares the manifest.json of the latest remote npm package (getdesign) tarball against local hashes to detect changes
scripts/sync-designs.sh โ re-syncs references/designs/ from a new tarball when upstream changes are found
scripts/fetch-design-md.sh โ immediately prints the local body for a slug and provides auxiliary install command/URL guidance
Related Skills
- design-craft โ use after selecting a brand from Top-3 to convert to platform-specific tokens
- design-research โ use when designer/painter-based tokens are needed (in contrast to brand-based)