npx claudepluginhub sethgammon/citadel --plugin citadelThis skill uses the workspace's default tool permissions.
- At the start of a new project (generate starter manifest from preferences)
Creates structured DESIGN.md files for visual design systems (colors, typography, spacing, components) that AI agents read to generate consistent UI. Handles from-scratch visions, website extractions, or codebase analysis.
Generates or verifies .claude/aesthetic-direction.md design-language contract from project UI files, Tailwind config, and CSS; auto-invoked by architect/craft for first-time UI work.
Audits web projects for design drift in colors, spacing, typography; extracts values to tokens and refactors Tailwind, CSS Modules, styled-components, MUI, Chakra UI codebases to use design system.
Share bugs, ideas, or general feedback.
Check for existing styles: look for tailwind.config.*, global CSS files, or component files with style patterns. If any exist, use Extract Mode. If none exist or the user says "new project", use Generate Mode.
Extract Mode: Read style sources (tailwind config, global CSS, component files). Present findings to user and confirm before writing.
Generate Mode: Ask up to 4 questions about feel, color mode, brand colors, and layout density. Use sensible defaults for anything not specified.
Write to .planning/design-manifest.md using the template defined below. Every section must have real values — no placeholders.
Present a summary of the manifest to the user: "Here's your design manifest. It will be used by the post-edit hook to flag deviations. Anything to change?"
tailwind.config.* — extract colors, spacing, fonts, breakpointsAsk up to 4 questions: feel (minimal/playful/corporate/bold), color mode (dark/light/both), brand colors (hex or "pick for me"), layout density. Use sensible defaults for anything not specified.
Write to .planning/design-manifest.md:
# Design Manifest
> Generated: {date}
> Mode: {extracted | generated}
> Source: {tailwind.config.ts, globals.css, etc. | user preferences}
## Colors
### Primary Palette
- primary: {hex} — {usage: buttons, links, accents}
- primary-hover: {hex}
- primary-muted: {hex}
### Neutral Palette
- background: {hex}
- surface: {hex} — {cards, modals, elevated elements}
- border: {hex}
- text-primary: {hex}
- text-secondary: {hex}
- text-muted: {hex}
### Semantic
- success: {hex}
- warning: {hex}
- error: {hex}
- info: {hex}
## Typography
- font-family: {value}
- heading-font: {value, or "same as body"}
- Type scale: {xs, sm, base, lg, xl, 2xl, 3xl — with px/rem values}
- Line heights: {tight, normal, relaxed — with values}
- Font weights used: {list}
## Spacing
- Base unit: {4px / 0.25rem}
- Scale: {1, 2, 3, 4, 6, 8, 12, 16, 24 — in base units}
- Component padding: {standard value}
- Section gap: {standard value}
- Page margin: {standard value}
## Shape
- Border radius: {none, sm, md, lg, full — with values}
- Default radius: {which one is used most}
- Shadow scale: {sm, md, lg — with values}
## Layout
- Max content width: {value}
- Breakpoints: {sm, md, lg, xl — with values}
- Grid/flex preference: {which is used more}
- Spacing rhythm: {consistent gaps between sections}
## Component Patterns
{Only populated in extract mode or after the project has components}
- Button: {padding, radius, font-weight, transition}
- Card: {padding, radius, shadow, border}
- Input: {padding, radius, border-color, focus-ring}
## Anti-Patterns (things to flag)
- Colors not in the palette above
- Font sizes not in the type scale
- Spacing values not in the spacing scale
- Border radius values not matching the shape section
- Hardcoded colors instead of CSS variables or Tailwind classes
post-edit.js checks for .planning/design-manifest.md. When a CSS/TSX/JSX/Tailwind file is edited, it scans for: hardcoded hex colors not in the palette, font sizes outside the type scale, spacing values outside the scale, and border radius values not in the shape section. Warnings only — not blocks. One warning per category per edit.
Hook rules: skip entirely if no manifest; scan only the edited file; cache the manifest once per session; do not flag Tailwind utility classes that map to config; only flag raw hex/px values.
Disclosure: "Updating design manifest. Existing manifest will be modified."
Reversibility: amber — modifies .planning/design-manifest.md; undo with git checkout .planning/design-manifest.md.
Trust gates:
No styles and no preferences: Default to Generate Mode; use sensible defaults (minimal, light mode, neutral palette); present before writing.
Tailwind config but no custom theme: Extract available values (font, breakpoints); note which sections use Tailwind defaults; generate the rest.
.planning/ missing: Create it; if not possible, output manifest inline and instruct user to save it.
"Update the manifest": Re-run Extract Mode, diff against existing manifest, present only what changed.
---HANDOFF---
- Design manifest: .planning/design-manifest.md
- Mode: {extracted | generated}
- Sources: {files read, or "user preferences"}
- Anti-patterns documented: {count}
- Next: Post-edit hook will flag deviations automatically
- Reversibility: amber — undo with `git checkout .planning/design-manifest.md`
---