Police large volumes of AI-generated frontend work for design-system adherence, plan features against the system before they're built, and audit the design system itself so it can be policed. The idea: generation is cheap, the bottleneck is judgment.
> /plugin marketplace add igloude/ds-skills> /plugin install ds-skills@igloude
What's inside
Police large volumes of AI-generated frontend work for design-system adherence, plan features against the system before they're built, and audit the design system itself so it can be policed.
The idea: generation is cheap, the bottleneck is judgment. An expensive model spends its intelligence on judgment — is this a violation, how severe under this repo's policy, what exactly changes — and encodes that judgment into reviews, maps, and plans precise enough for the generating agent or a cheaper executor to apply. The skills are report-only: they never change a line of code, and every artifact they write survives a cold read — a reader with zero session context can act on the file alone. Readiness multiplies: every gap ds-doctor closes in the rulebook reduces violations at generation time and false positives at review time, across every agent and every branch.
All four skills are user-invoked (/ds, /ds-doctor, /ds-plan, /ds-drift) — they are deliberate, expensive operations, not something an agent should wander into, and their descriptions cost your sessions no permanent context. /ds is the router: it holds the diagram below and points you at the right sibling.
/ds-doctor → audits the DS itself, writes ds/MANIFEST.md
└→ everything below reads it
/ds-plan → analyzes feature plan, identifies gaps in DS
├→ Covered / Composable → exact props, to the generators
└→ Extension / Net-new → DS work items inform the DS backlog
generators → N branches of AI work
/ds-drift → analyzes current state of codebase for DS adherence (capable model)
├→ reviews: verdicts + specs → back to the generators
└→ plans: self-contained specs → cheap model, or --issues
ds is the router: one page that says which sibling to reach for and the loop between them.
ds-doctor audits the design system: component contracts, tokens, guidelines, deprecation hygiene, and generates the manifest (ds/MANIFEST.md + ds/tokens.json).
ds-plan takes a ticket, spec, or design and, using the DS manifest, it classifies every UI element in the feature into one of five buckets:
ds-drift reviews already completed code against the design system: hand-rolled duplicates of DS components, token violations (including hallucinated tokens), misused or deprecated component APIs, a11y parity gaps, and extraction candidates. Verdicts come from a stated severity policy.
npx skills add igloude/ds-skills
Or as a Claude Code plugin:
/plugin marketplace add igloude/ds-skills
/plugin install ds-skills@igloude
These skills are almost entirely markdown — instructions an agent reads, not programs. The exceptions are worth stating precisely, because a skill that audits your code should be auditable itself:
skills/ds-drift/scripts/nearest_token.mjs (~340 lines, no dependencies, Node 18+). It reads a token map and a list of color literals, prints JSON to stdout, and writes nothing — no network, no disk writes, and it never imports or evaluates code from the repo it's pointed at. The first 40 lines are a header stating exactly that, and the rest is color math you can read in a sitting before approving it.git, rg/grep, and whatever typecheck/lint/test commands your repo already defines, in check mode. No installs, no formatters, no commits, no writes to your working tree.plans/, and — ds-doctor only — the ds/MANIFEST.md + ds/tokens.json pair. Nothing else is ever modified.--issues flag: gh issue create. It runs an auth and target-repo preflight, shows you every title first, and asks before publishing from a public repo. Without the flag, no issue is ever created.If a command a skill proposes doesn't match this description, that's a bug — it's meant to be safe to approve without reading the transcript twice.
Coverage maps, reviews, plans, and the manifest are plain markdown — any agent or human can pick them up. The only runtime dependency is Node 18+ for the token classifier script; everything else is markdown.
/ds the router — which skill, when, and the loop between them
/ds-doctor full DS audit → readiness summary → doc-fix plans
/ds-doctor manifest regenerate ds/MANIFEST.md + ds/tokens.json (run per release)
/ds-doctor component <name> one component's contract, in depth
/ds-doctor tokens token-layer category only
/ds-doctor quick|deep effort dial
/ds-doctor ... --issues publish selected doc-fix plans as GitHub issues
/ds-plan <ticket|spec|design> classify every element → coverage map + build sequence
/ds-plan element <description> one element, fast — "do we have something for this?"
/ds-plan surface <name> restrict a large feature to one screen or flow
/ds-plan quick|deep effort dial (deep walks the full state matrix)
/ds-plan backlog aggregate DS work items across every map, ranked by what they block
/ds-plan recheck <map> re-validate a map after a DS release
/ds-plan ... --issues file the extensions and gaps as ds-request issues
/ds-plan ... --manifest <path> override manifest discovery
/ds-drift gate the current branch → verdict + review
/ds-drift batch <refs...> review N agent branches + cross-branch divergence
/ds-drift sweep full-repo audit → findings table → plans
/ds-drift tokens|adoption|... focus any mode on one category
/ds-drift quick|deep sweep effort dial
/ds-drift coverage metrics only — the drift dashboard
/ds-drift upgrade <version> impact audit for a DS version bump
/ds-drift plan <description> skip the audit, spec one remediation
/ds-drift review-plan <file> critique and tighten an existing plan
/ds-drift reconcile verify, refresh, retire; audit waivers; promote lint rules
/ds-drift ... --issues also publish as GitHub issues
/ds-drift ... --manifest <path> override manifest discovery
A typical adoption, start to finish:
/ds-doctor. Fix the blockers it finds (usually: unstated palette policy, unresolvable tokens, disambiguation, etc.), then /ds-doctor manifest. Publish ds/ with the package so consuming repos get it via node_modules.CLAUDE.md./ds-plan <ticket-or-design> in the app repo. Ship any DS work it puts in Wave 0 (already written as work items), start the Wave 1 app work in parallel, and hand the map to the agent doing the building./ds-drift on a feature branch. Read the verdict; feed the remediation spec back to the agent that generated the work./ds-drift batch the branches — the divergence pass catches the same component being invented three times, which no single-branch review can see./ds-drift sweep periodically for the baseline, coverage for the trendline, reconcile to keep the record honest. When a violation recurs across three reviews, the skill proposes a lint rule that retires it.examples/ holds a generated manifest (MANIFEST.example.md), a coverage map (004-map-team-invitations.md), and a gate review (003-review-feat-billing-settings.md) — the artifacts you'll actually interact with, one per skill, all against the same fictional @acme/ui.
## Verdict: NEEDS CHANGES
- **Counts** (introduced): blocking 2 · should-fix 3 · advisory 1 · waived 0
- **Pre-existing** (in touched files, not counted in verdict): 2 — see backlog
### [TOK-01] Replace hallucinated token `--acme-color-primary-dark` `token.hallucinated`
**Evidence** — `apps/billing/src/SettingsPanel.tsx:47` …
**Why blocking**: the token does not exist in `ds/tokens.json` — the border
silently renders `currentColor` today.
**Remediation**:
- Change: `var(--acme-color-primary-dark)` → `var(--color-border-interactive)`
- Verify: `grep -rn "acme-color-primary-dark" apps/billing/src/` → no matches
- STOP if: the intended color was genuinely the darker brand shade — no such
semantic token exists; that is a `ds-request` issue, not an inline literal.
One source of truth: skills/ds-drift/references/conventions.md, which every skill reads first. The short version:
plans/ and (ds-doctor only) the ds/ manifest pair. Asked to fix or build something, the skill declines and points at the spec.gh issue create, strictly behind --issues.file:line references.MIT © igloude
FAQ
ds-skills is a Claude Code plugin with 4 hand-picked skills for development work, indexed on Flowy. Install it with the command on its page. It includes ds-doctor, ds-drift, ds-plan. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it