@hegemonart/get-design-done 1.15.0 → 1.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +9 -5
- package/.claude-plugin/plugin.json +19 -5
- package/CHANGELOG.md +122 -0
- package/README.md +41 -0
- package/SKILL.md +4 -1
- package/agents/component-benchmark-harvester.md +112 -0
- package/agents/component-benchmark-synthesizer.md +88 -0
- package/agents/design-auditor.md +60 -1
- package/agents/design-doc-writer.md +21 -0
- package/agents/design-executor.md +22 -4
- package/agents/design-pattern-mapper.md +61 -0
- package/agents/motion-mapper.md +74 -9
- package/agents/token-mapper.md +8 -0
- package/connections/design-corpora.md +158 -0
- package/package.json +13 -3
- package/reference/components/README.md +94 -0
- package/reference/components/TEMPLATE.md +184 -0
- package/reference/components/accordion.md +217 -0
- package/reference/components/alert.md +198 -0
- package/reference/components/badge.md +202 -0
- package/reference/components/breadcrumbs.md +198 -0
- package/reference/components/button.md +195 -0
- package/reference/components/card.md +200 -0
- package/reference/components/checkbox.md +207 -0
- package/reference/components/chip.md +209 -0
- package/reference/components/command-palette.md +228 -0
- package/reference/components/date-picker.md +227 -0
- package/reference/components/drawer.md +201 -0
- package/reference/components/file-upload.md +219 -0
- package/reference/components/input.md +208 -0
- package/reference/components/label.md +200 -0
- package/reference/components/link.md +193 -0
- package/reference/components/list.md +217 -0
- package/reference/components/menu.md +212 -0
- package/reference/components/modal-dialog.md +210 -0
- package/reference/components/navbar.md +211 -0
- package/reference/components/pagination.md +205 -0
- package/reference/components/popover.md +197 -0
- package/reference/components/progress.md +210 -0
- package/reference/components/radio.md +203 -0
- package/reference/components/rich-text-editor.md +226 -0
- package/reference/components/select-combobox.md +219 -0
- package/reference/components/sidebar.md +211 -0
- package/reference/components/skeleton.md +197 -0
- package/reference/components/slider.md +208 -0
- package/reference/components/stepper.md +220 -0
- package/reference/components/switch.md +194 -0
- package/reference/components/table.md +229 -0
- package/reference/components/tabs.md +213 -0
- package/reference/components/toast.md +200 -0
- package/reference/components/tooltip.md +201 -0
- package/reference/components/tree.md +225 -0
- package/reference/css-grid-layout.md +835 -0
- package/reference/external/NOTICE.hyperframes +28 -0
- package/reference/image-optimization.md +582 -0
- package/reference/motion-advanced.md +754 -0
- package/reference/motion-easings.md +381 -0
- package/reference/motion-interpolate.md +282 -0
- package/reference/motion-spring.md +234 -0
- package/reference/motion-transition-taxonomy.md +155 -0
- package/reference/motion.md +20 -0
- package/reference/output-contracts/motion-map.schema.json +135 -0
- package/reference/registry.json +285 -0
- package/reference/registry.schema.json +6 -1
- package/reference/variable-fonts-loading.md +532 -0
- package/scripts/lib/easings.cjs +280 -0
- package/scripts/lib/parse-contract.cjs +220 -0
- package/scripts/lib/spring.cjs +160 -0
- package/scripts/tests/test-motion-provenance.sh +64 -0
- package/skills/benchmark/SKILL.md +105 -0
|
@@ -5,7 +5,8 @@ tools: Read, Write, Edit, Bash, Grep, Glob
|
|
|
5
5
|
color: yellow
|
|
6
6
|
default-tier: sonnet
|
|
7
7
|
tier-rationale: "Follows an Opus-authored plan; executes rather than plans"
|
|
8
|
-
size_budget:
|
|
8
|
+
size_budget: XXL
|
|
9
|
+
size_budget_rationale: "Phase 17 added Benchmark Spec Pre-Flight section for type:components (+17 lines)"
|
|
9
10
|
parallel-safe: conditional-on-touches
|
|
10
11
|
typical-duration-seconds: 60
|
|
11
12
|
reads-only: false
|
|
@@ -128,7 +129,7 @@ For `audit` tasks: grep the codebase using patterns from `reference/anti-pattern
|
|
|
128
129
|
|
|
129
130
|
### Type: typography
|
|
130
131
|
|
|
131
|
-
Read `reference/typography.md` before starting.
|
|
132
|
+
Read `reference/typography.md` before starting. If `reference/variable-fonts-loading.md` is present, also read it — apply variable font axis guidance, font-display trade-offs, fallback metric overrides (size-adjust, ascent-override), and FOIT/FOUT rules to any web font or @font-face decisions in this task.
|
|
132
133
|
|
|
133
134
|
1. **Identify current state**: grep all font-size values in the codebase. List every unique value.
|
|
134
135
|
2. **Design the target scale**: from the `<decisions>` in DESIGN-CONTEXT.md, pick the modular ratio (default: 1.25, base 16px). Compute: 12/14/16/20/24/30/36/48px (or `text-xs` through `text-5xl` in Tailwind).
|
|
@@ -177,7 +178,7 @@ before committing final values.
|
|
|
177
178
|
|
|
178
179
|
### Type: layout
|
|
179
180
|
|
|
180
|
-
Read `reference/layout.md` (if present) and relevant DESIGN-CONTEXT.md decisions before starting.
|
|
181
|
+
Read `reference/layout.md` (if present) and relevant DESIGN-CONTEXT.md decisions before starting. If `reference/css-grid-layout.md` is present, also read it — apply modern Grid patterns (subgrid, container queries with `@container`, fluid `clamp()` typography, logical properties, safe-area insets, anchor positioning). If `reference/image-optimization.md` is present, apply it to any image-related layout decisions (format choice, srcset/sizes, lazy-loading, CDN transforms, image budget enforcement).
|
|
181
182
|
|
|
182
183
|
1. **Inventory layout structure**: identify all grid, flex, and positioning patterns in scope files.
|
|
183
184
|
2. **Check spacing consistency**: grep for magic spacing values (px or rem) not from a spacing scale. Map to nearest scale step.
|
|
@@ -220,7 +221,7 @@ Work through the accessibility checklist:
|
|
|
220
221
|
|
|
221
222
|
### Type: motion
|
|
222
223
|
|
|
223
|
-
Read `reference/motion.md` and `reference/framer-motion-patterns.md` before starting.
|
|
224
|
+
Read `reference/motion.md` and `reference/framer-motion-patterns.md` before starting. If `reference/motion-advanced.md` is present, also read it — apply advanced patterns (gesture/drag mechanics, clip-path animations, blur-to-mask crossfades, CSS transitions vs keyframes for interruptible UI, WAAPI, Framer Motion hardware-accel gotcha, motion cohesion rules, next-day review process). If `reference/motion-easings.md` is present, use canonical `--ease-*` tokens rather than raw cubic-bezier strings. If `reference/motion-spring.md` is present, use named presets (gentle/wobbly/stiff/slow) for spring configurations.
|
|
224
225
|
|
|
225
226
|
`reference/framer-motion-patterns.md` contains Framer Motion-specific implementation patterns that complement the framework-agnostic rules in `reference/motion.md`. When the codebase uses Framer Motion (detectable by `framer-motion` imports), apply the patterns from that file: spring/tween configuration, `AnimatePresence` with `initial={false}`, layout animations, variants with `staggerChildren`, gesture props (`whileHover`, `whileTap` at scale 0.96), `useReducedMotion` or `MotionConfig reducedMotion="user"` for a11y, and the hard constraint that `bounce: 0` for all micro-interactions.
|
|
226
227
|
|
|
@@ -288,6 +289,23 @@ Read `reference/anti-patterns.md`, `reference/design-system-guidance.md`, and DE
|
|
|
288
289
|
|
|
289
290
|
Read all relevant reference files for this component's concerns (typography, color, accessibility, motion) before starting.
|
|
290
291
|
|
|
292
|
+
#### Benchmark Spec Pre-Flight
|
|
293
|
+
|
|
294
|
+
Before executing the task, check for a benchmark spec:
|
|
295
|
+
|
|
296
|
+
```bash
|
|
297
|
+
# Extract component name from task description (PascalCase → kebab-case)
|
|
298
|
+
ls reference/components/<name>.md 2>/dev/null
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
If `reference/components/<name>.md` exists:
|
|
302
|
+
1. Read the spec's **Anatomy**, **States**, **Variants**, and **Keyboard & Accessibility** sections
|
|
303
|
+
2. Use these as the authoritative contract for the implementation — do not re-discover naming conventions, ARIA roles, or keyboard patterns that the spec already defines
|
|
304
|
+
3. In the task output file (`task-NN.md`), add a line: `Spec pre-flight: reference/components/<name>.md — [N] states, [M] variants, WAI-ARIA contract applied`
|
|
305
|
+
4. Flag any deviation between the task instructions and the spec in the `## Deviations` section
|
|
306
|
+
|
|
307
|
+
If no spec exists, skip silently and proceed normally (graceful degradation).
|
|
308
|
+
|
|
291
309
|
1. **Read the component spec from the task's Action field**: understand what the component does, its states, its variants.
|
|
292
310
|
2. **Apply ALL relevant reference guidelines simultaneously**: typography scale, color token usage, accessibility requirements (ARIA, focus management, keyboard nav), motion constraints.
|
|
293
311
|
3. **Build the component structure**: markup, styles, and behavior per the spec.
|
|
@@ -6,6 +6,7 @@ color: green
|
|
|
6
6
|
model: inherit
|
|
7
7
|
default-tier: sonnet
|
|
8
8
|
tier-rationale: "Catalogs design patterns present in codebase; open-ended classification"
|
|
9
|
+
size_budget: XL
|
|
9
10
|
parallel-safe: always
|
|
10
11
|
typical-duration-seconds: 45
|
|
11
12
|
reads-only: false
|
|
@@ -117,6 +118,66 @@ Identify: CSS Modules, styled-components, Tailwind utility classes, or inline st
|
|
|
117
118
|
|
|
118
119
|
---
|
|
119
120
|
|
|
121
|
+
## Component Convergence Detection
|
|
122
|
+
|
|
123
|
+
After pattern extraction, scan for component implementations against the benchmark corpus.
|
|
124
|
+
|
|
125
|
+
### Step 1: Enumerate available specs
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
ls reference/components/*.md 2>/dev/null | grep -v TEMPLATE | grep -v README
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
If `reference/components/` does not exist or is empty, skip this entire section.
|
|
132
|
+
|
|
133
|
+
### Step 2: Detect implementations per spec
|
|
134
|
+
|
|
135
|
+
For each spec file, run its **Grep Signatures** section patterns against the source root:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# Example for button.md — adapt per spec's actual grep signatures
|
|
139
|
+
grep -rn "role=\"button\"\|<button\b" src/ --include="*.tsx" --include="*.jsx" -l 2>/dev/null | wc -l
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
A component is "detected" if ≥1 signature pattern returns results.
|
|
143
|
+
|
|
144
|
+
### Step 3: Compute convergence score per detected component
|
|
145
|
+
|
|
146
|
+
For detected components, check coverage against the spec's **States** and **Variants** tables:
|
|
147
|
+
- Count spec states: how many are implemented (aria attributes, CSS classes, data attributes)
|
|
148
|
+
- Count spec variants: how many variant prop values exist in the codebase
|
|
149
|
+
- Convergence % = (implemented items / total spec items) × 100, rounded to 10%
|
|
150
|
+
|
|
151
|
+
### Step 4: Write `.design/map/component-convergence.md`
|
|
152
|
+
|
|
153
|
+
```markdown
|
|
154
|
+
---
|
|
155
|
+
generated: [ISO timestamp]
|
|
156
|
+
total_specs: [N]
|
|
157
|
+
detected: [M]
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
# Component Convergence
|
|
161
|
+
|
|
162
|
+
## Matched Components
|
|
163
|
+
|
|
164
|
+
| Component | Spec | Convergence | Key Gaps |
|
|
165
|
+
|-----------|------|-------------|----------|
|
|
166
|
+
| Button | reference/components/button.md | 90% | Missing loading aria-busy |
|
|
167
|
+
| Toast | reference/components/toast.md | 60% | Missing role="alert" on error variant |
|
|
168
|
+
|
|
169
|
+
## Absent Components (spec exists, no codebase match)
|
|
170
|
+
|
|
171
|
+
- `reference/components/command-palette.md` — no implementation detected
|
|
172
|
+
- `reference/components/tree.md` — no implementation detected
|
|
173
|
+
|
|
174
|
+
## Summary
|
|
175
|
+
|
|
176
|
+
**N/M specs detected** in codebase · Average convergence: X%
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
120
181
|
## DESIGN-PATTERNS.md Output Format
|
|
121
182
|
|
|
122
183
|
Write to `.design/DESIGN-PATTERNS.md`. Use exactly this structure:
|
package/agents/motion-mapper.md
CHANGED
|
@@ -25,6 +25,10 @@ You inventory motion and animation patterns. Zero session memory. You do not mod
|
|
|
25
25
|
|
|
26
26
|
- `.design/STATE.md`
|
|
27
27
|
- `reference/motion.md` (if present)
|
|
28
|
+
- `reference/motion-advanced.md` (if present) — advanced patterns: spring physics, scroll-driven, FLIP, View Transitions API, gesture/drag mechanics, clip-path patterns, blur crossfades, Framer Motion hardware-accel gotcha
|
|
29
|
+
- `reference/motion-easings.md` (if present) — 12 canonical easing presets; classify each detected easing against this catalog
|
|
30
|
+
- `reference/motion-transition-taxonomy.md` (if present) — 8 transition families; classify page/route transitions against this taxonomy
|
|
31
|
+
- `reference/motion-spring.md` (if present) — spring presets; classify spring configs against gentle/wobbly/stiff/slow
|
|
28
32
|
- Any files supplied by the orchestrator
|
|
29
33
|
|
|
30
34
|
## Scan Strategy
|
|
@@ -61,8 +65,37 @@ From the collected values, bucket by:
|
|
|
61
65
|
- Normal: 200–400ms
|
|
62
66
|
- Slow: >400ms
|
|
63
67
|
|
|
68
|
+
## Advanced Scan Patterns (Phase 18+)
|
|
69
|
+
|
|
70
|
+
When `reference/motion-advanced.md` is present, additionally scan for:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# Gesture / drag patterns
|
|
74
|
+
grep -rEn "setPointerCapture|onPointerDown.*drag|dragConstraints|useDragControls" src/ | head -40
|
|
75
|
+
grep -rEn "velocity|flick|swipe.*dismiss|drag.*dismiss" src/ | head -40
|
|
76
|
+
|
|
77
|
+
# Clip-path animations
|
|
78
|
+
grep -rEn "clip-path|clipPath|inset\(" src/ | head -40
|
|
79
|
+
|
|
80
|
+
# FLIP / View Transitions
|
|
81
|
+
grep -rEn "layoutId|startViewTransition|view-transition-name" src/ | head -30
|
|
82
|
+
|
|
83
|
+
# Scroll-driven
|
|
84
|
+
grep -rEn "animation-timeline|ScrollTimeline|useScroll\b" src/ | head -30
|
|
85
|
+
|
|
86
|
+
# WAAPI
|
|
87
|
+
grep -rEn "\.animate\(\[|WebAnimation|getAnimations" src/ | head -20
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Classify gesture patterns against `reference/motion-advanced.md` (velocity formula, pointer capture, multi-touch protection).
|
|
91
|
+
Classify easing values against the 12 canonical presets in `reference/motion-easings.md`; output `"custom"` with justification for anything that doesn't match.
|
|
92
|
+
Classify page/route transitions against the 8 families in `reference/motion-transition-taxonomy.md`.
|
|
93
|
+
Classify spring configs against the 4 presets in `reference/motion-spring.md`.
|
|
94
|
+
|
|
64
95
|
## Output Format — `.design/map/motion.md`
|
|
65
96
|
|
|
97
|
+
**The output MUST begin with a structured JSON block** enclosed in ` ```json ``` ` fences, followed by the prose sections. The JSON block must conform to `reference/output-contracts/motion-map.schema.json`. Malformed or missing blocks are validation failures.
|
|
98
|
+
|
|
66
99
|
```markdown
|
|
67
100
|
---
|
|
68
101
|
generated: [ISO 8601]
|
|
@@ -70,22 +103,54 @@ generated: [ISO 8601]
|
|
|
70
103
|
|
|
71
104
|
# Motion Map
|
|
72
105
|
|
|
106
|
+
```json
|
|
107
|
+
{
|
|
108
|
+
"schema_version": "1.0.0",
|
|
109
|
+
"generated_at": "[ISO 8601]",
|
|
110
|
+
"summary": {
|
|
111
|
+
"total_animations": 0,
|
|
112
|
+
"custom_easings": 0,
|
|
113
|
+
"reduced_motion_compliant": false,
|
|
114
|
+
"libraries": []
|
|
115
|
+
},
|
|
116
|
+
"animations": [
|
|
117
|
+
{
|
|
118
|
+
"id": "example-toast-enter",
|
|
119
|
+
"location": { "file": "src/components/Toast.tsx", "line": 12 },
|
|
120
|
+
"description": "Toast enter animation — opacity + translateY",
|
|
121
|
+
"easing": "cubic-out",
|
|
122
|
+
"duration_class": "quick",
|
|
123
|
+
"duration_ms": 180,
|
|
124
|
+
"trigger": "state-change",
|
|
125
|
+
"library": "framer-motion",
|
|
126
|
+
"reduced_motion_handled": true
|
|
127
|
+
}
|
|
128
|
+
]
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
73
132
|
## CSS transitions
|
|
74
|
-
| File | Property | Duration | Easing |
|
|
75
|
-
|
|
133
|
+
| File | Property | Duration | Easing | Canonical Easing |
|
|
134
|
+
|------|----------|----------|--------|-----------------|
|
|
76
135
|
|
|
77
136
|
## Library usage
|
|
78
137
|
| Library | Files | Notes |
|
|
79
138
|
|---------|-------|-------|
|
|
80
139
|
|
|
81
140
|
## Duration distribution
|
|
82
|
-
-
|
|
83
|
-
-
|
|
84
|
-
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
141
|
+
- Instant (<100ms): [N]
|
|
142
|
+
- Quick (100–200ms): [N]
|
|
143
|
+
- Standard (200–400ms): [N]
|
|
144
|
+
- Slow (400–800ms): [N]
|
|
145
|
+
- Narrative (>800ms): [N]
|
|
146
|
+
|
|
147
|
+
## Easing classification
|
|
148
|
+
| Detected Easing | Canonical Name | Count | Notes |
|
|
149
|
+
|----------------|---------------|-------|-------|
|
|
150
|
+
|
|
151
|
+
## Advanced patterns detected
|
|
152
|
+
| Pattern | Files | Notes |
|
|
153
|
+
|---------|-------|-------|
|
|
89
154
|
|
|
90
155
|
## Reduced-motion compliance
|
|
91
156
|
- `prefers-reduced-motion` queries present: [N]
|
package/agents/token-mapper.md
CHANGED
|
@@ -119,6 +119,14 @@ After the standard token inventory, scan and report:
|
|
|
119
119
|
- Check if they have `font-variant-numeric: tabular-nums` or Tailwind `tabular-nums` class
|
|
120
120
|
- Report missing instances
|
|
121
121
|
|
|
122
|
+
5. **Easing token consolidation** (when `reference/motion-easings.md` is present)
|
|
123
|
+
- Grep: `cubic-bezier\(` in CSS/SCSS/styled-components/Tailwind config
|
|
124
|
+
- Grep: `ease:` or `easing:` in Framer Motion / GSAP configs
|
|
125
|
+
- For each raw easing value found, check if a canonical `--ease-*` token from `reference/motion-easings.md` would serve the same purpose
|
|
126
|
+
- Report raw values that map to a canonical preset (recommend the `--ease-*` token)
|
|
127
|
+
- Report raw values with no canonical match as informational (may warrant a custom token)
|
|
128
|
+
- Do NOT flag values that are already using `--ease-*` tokens
|
|
129
|
+
|
|
122
130
|
### Output format:
|
|
123
131
|
```
|
|
124
132
|
## Micro-polish token findings
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# Design Corpora — Component Benchmark Sources
|
|
2
|
+
|
|
3
|
+
This file is the canonical source list for `agents/component-benchmark-harvester.md`.
|
|
4
|
+
It catalogs the 18 design systems used when harvesting per-component benchmarks,
|
|
5
|
+
with licensing notes and a documented fallback chain.
|
|
6
|
+
|
|
7
|
+
## Fallback Chain
|
|
8
|
+
|
|
9
|
+
When a primary URL is unreachable, try in order:
|
|
10
|
+
|
|
11
|
+
1. **Canonical URL** — documented per-system below
|
|
12
|
+
2. **archive.org snapshot** — `https://web.archive.org/web/*/` + canonical URL
|
|
13
|
+
3. **Refero MCP search** — `mcp__refero__search` with component name + system name
|
|
14
|
+
4. **Pinterest MCP visual search** — `mcp__pinterest__search` with component name + system name
|
|
15
|
+
|
|
16
|
+
Document which tier was used in the raw harvest file under `Source tier:`.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Design Systems Catalog
|
|
21
|
+
|
|
22
|
+
### 1. Material Design 3 (Google)
|
|
23
|
+
- **Canonical**: https://m3.material.io/components
|
|
24
|
+
- **License**: Apache 2.0 (docs: Creative Commons BY 4.0)
|
|
25
|
+
- **Coverage**: Full component set with anatomy, variants, accessibility, theming tokens
|
|
26
|
+
- **Notes**: Use `/components/<slug>` path. Best for density, motion, and adaptive layout guidance.
|
|
27
|
+
|
|
28
|
+
### 2. Apple HIG
|
|
29
|
+
- **Canonical**: https://developer.apple.com/design/human-interface-guidelines/
|
|
30
|
+
- **License**: © Apple Inc. — educational fair use for benchmarking
|
|
31
|
+
- **Coverage**: iOS, macOS, visionOS, watchOS; focus on a11y, gestures, platform norms
|
|
32
|
+
- **Notes**: Crawl per-platform variant pages. Best for accessibility contracts and iOS-native patterns.
|
|
33
|
+
|
|
34
|
+
### 3. Radix UI Primitives + WAI-ARIA APG
|
|
35
|
+
- **Canonical (Radix)**: https://www.radix-ui.com/primitives/docs/components/
|
|
36
|
+
- **Canonical (WAI-ARIA APG)**: https://www.w3.org/WAI/ARIA/apg/patterns/
|
|
37
|
+
- **License**: MIT (Radix); W3C (WAI-ARIA APG — freely usable)
|
|
38
|
+
- **Coverage**: Unstyled primitives + full ARIA keyboard contracts
|
|
39
|
+
- **Notes**: WAI-ARIA APG keyboard contracts should be quoted verbatim. Radix wraps them with implementation detail.
|
|
40
|
+
|
|
41
|
+
### 4. shadcn/ui
|
|
42
|
+
- **Canonical**: https://ui.shadcn.com/docs/components/
|
|
43
|
+
- **License**: MIT
|
|
44
|
+
- **Coverage**: Radix-based, Tailwind-styled components; real-world usage patterns
|
|
45
|
+
- **Notes**: Best for "what real teams ship" convergence signal alongside spec systems.
|
|
46
|
+
|
|
47
|
+
### 5. Polaris (Shopify)
|
|
48
|
+
- **Canonical**: https://polaris.shopify.com/components/
|
|
49
|
+
- **License**: Creative Commons BY-NC-SA 4.0 (docs)
|
|
50
|
+
- **Coverage**: E-commerce-optimised components; excellent do/don't examples
|
|
51
|
+
- **Notes**: Polaris has unusually detailed do/don't guidance — mine it for anti-pattern blocks.
|
|
52
|
+
|
|
53
|
+
### 6. Carbon Design System (IBM)
|
|
54
|
+
- **Canonical**: https://carbondesignsystem.com/components/
|
|
55
|
+
- **License**: Apache 2.0
|
|
56
|
+
- **Coverage**: Enterprise UI; data-heavy components; full accessibility matrix
|
|
57
|
+
- **Notes**: Best for data-dense table/form contexts and enterprise accessibility contracts.
|
|
58
|
+
|
|
59
|
+
### 7. Fluent 2 (Microsoft)
|
|
60
|
+
- **Canonical**: https://fluent2.microsoft.design/components/web/
|
|
61
|
+
- **License**: MIT
|
|
62
|
+
- **Coverage**: Windows / Microsoft 365 design language; dense information hierarchy
|
|
63
|
+
- **Notes**: Good for focus-management patterns in complex workflows.
|
|
64
|
+
|
|
65
|
+
### 8. Primer (GitHub)
|
|
66
|
+
- **Canonical**: https://primer.style/components/
|
|
67
|
+
- **License**: MIT
|
|
68
|
+
- **Coverage**: Developer tools UI; markdown + code contexts; icon integration
|
|
69
|
+
- **Notes**: Best for developer-tool and productivity-app component norms.
|
|
70
|
+
|
|
71
|
+
### 9. Atlassian Design System
|
|
72
|
+
- **Canonical**: https://atlassian.design/components/
|
|
73
|
+
- **License**: Atlassian Design System License (educational fair use)
|
|
74
|
+
- **Coverage**: Collaboration software; complex overlays; strong focus management
|
|
75
|
+
- **Notes**: Excellent focus-trap and dialog accessibility guidance.
|
|
76
|
+
|
|
77
|
+
### 10. Ant Design
|
|
78
|
+
- **Canonical**: https://ant.design/components/
|
|
79
|
+
- **License**: MIT
|
|
80
|
+
- **Coverage**: Large enterprise component set; Asian market conventions
|
|
81
|
+
- **Notes**: High component density; useful for form and data-table convergence.
|
|
82
|
+
|
|
83
|
+
### 11. Mantine
|
|
84
|
+
- **Canonical**: https://mantine.dev/
|
|
85
|
+
- **License**: MIT
|
|
86
|
+
- **Coverage**: Full-featured React library; excellent composability patterns
|
|
87
|
+
- **Notes**: Good for controlled vs uncontrolled patterns and React-idiomatic API design.
|
|
88
|
+
|
|
89
|
+
### 12. Chakra UI
|
|
90
|
+
- **Canonical**: https://chakra-ui.com/docs/components/
|
|
91
|
+
- **License**: MIT
|
|
92
|
+
- **Coverage**: Accessible by default; strong theming; popular in SaaS
|
|
93
|
+
- **Notes**: Good accessibility defaults baseline; useful for theming-token convergence.
|
|
94
|
+
|
|
95
|
+
### 13. Base Web (Uber)
|
|
96
|
+
- **Canonical**: https://baseweb.design/components/
|
|
97
|
+
- **License**: MIT
|
|
98
|
+
- **Coverage**: High-density, internationalization-aware components
|
|
99
|
+
- **Notes**: Good for RTL, i18n, and high-density layout patterns.
|
|
100
|
+
|
|
101
|
+
### 14. Nord Design System (Trivago)
|
|
102
|
+
- **Canonical**: https://nordhealth.design/components/
|
|
103
|
+
- **License**: MIT
|
|
104
|
+
- **Coverage**: Healthcare / hospitality UI; strong accessibility focus
|
|
105
|
+
- **Notes**: Smaller corpus; useful for healthcare context accessibility norms.
|
|
106
|
+
|
|
107
|
+
### 15. Spectrum (Adobe)
|
|
108
|
+
- **Canonical**: https://spectrum.adobe.com/page/component-list/
|
|
109
|
+
- **License**: Apache 2.0
|
|
110
|
+
- **Coverage**: Creative tools UI; multi-surface (web, mobile, desktop)
|
|
111
|
+
- **Notes**: Best for creative-tool contexts and platform-adaptive component behavior.
|
|
112
|
+
|
|
113
|
+
### 16. Lightning Design System (Salesforce)
|
|
114
|
+
- **Canonical**: https://www.lightningdesignsystem.com/components/
|
|
115
|
+
- **License**: BSD 3-Clause (Salesforce SLDS license)
|
|
116
|
+
- **Coverage**: CRM / enterprise SaaS; dense forms; complex data grids
|
|
117
|
+
- **Notes**: Good for enterprise form validation patterns and data-heavy contexts.
|
|
118
|
+
|
|
119
|
+
### 17. Evergreen (Segment)
|
|
120
|
+
- **Canonical**: https://evergreen.segment.com/components/
|
|
121
|
+
- **License**: MIT
|
|
122
|
+
- **Coverage**: Analytics / data SaaS; compact components
|
|
123
|
+
- **Notes**: Small system; useful as a convergence signal for SaaS-optimised defaults.
|
|
124
|
+
|
|
125
|
+
### 18. Gestalt (Pinterest)
|
|
126
|
+
- **Canonical**: https://gestalt.pinterest.systems/
|
|
127
|
+
- **License**: Apache 2.0
|
|
128
|
+
- **Coverage**: Visual-content feed; strong image + card patterns
|
|
129
|
+
- **Notes**: Best for card / masonry / visual-content component norms.
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Supplemental Source
|
|
134
|
+
|
|
135
|
+
### Phase 15 Impeccable Salvage
|
|
136
|
+
- **Path**: `.planning/research/impeccable-salvage/`
|
|
137
|
+
- **License**: MIT (internal port)
|
|
138
|
+
- **Notes**: Harvested design-knowledge prose from the pre-Phase-15 impeccable plugin.
|
|
139
|
+
The harvester should consume this directory for any component-relevant excerpts before
|
|
140
|
+
reaching out to external URLs.
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Attribution Convention
|
|
145
|
+
|
|
146
|
+
Every excerpt written to `.planning/benchmarks/raw/<component>.md` must carry a
|
|
147
|
+
source-attribution line in the format:
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
> Source: [System Name](<canonical-url>) — [license] — accessed <date>
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
For WAI-ARIA APG keyboard contracts quoted verbatim, use:
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
> Source: WAI-ARIA Authoring Practices Guide (<url>) — W3C — accessed <date>
|
|
157
|
+
> Quoted verbatim per W3C document license.
|
|
158
|
+
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hegemonart/get-design-done",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.18.0",
|
|
4
4
|
"description": "A Claude Code plugin for systematic design improvement",
|
|
5
5
|
"author": "Hegemon",
|
|
6
6
|
"homepage": "https://github.com/hegemonart/get-design-done",
|
|
@@ -66,10 +66,20 @@
|
|
|
66
66
|
"palette-catalog",
|
|
67
67
|
"style-vocabulary",
|
|
68
68
|
"industry-palettes",
|
|
69
|
-
"ui-style-vocabulary"
|
|
69
|
+
"ui-style-vocabulary",
|
|
70
|
+
"variable-fonts",
|
|
71
|
+
"container-queries",
|
|
72
|
+
"view-transitions",
|
|
73
|
+
"motion-vocabulary",
|
|
74
|
+
"motion-easings",
|
|
75
|
+
"transition-taxonomy",
|
|
76
|
+
"gesture-mechanics",
|
|
77
|
+
"clip-path-animation",
|
|
78
|
+
"component-specs",
|
|
79
|
+
"design-system-benchmarks"
|
|
70
80
|
],
|
|
71
81
|
"skills": [
|
|
72
82
|
"SKILL.md"
|
|
73
83
|
],
|
|
74
84
|
"hooks": "hooks/hooks.json"
|
|
75
|
-
}
|
|
85
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Component Benchmark Corpus
|
|
2
|
+
|
|
3
|
+
Per-component design specifications harvested from 18 major design systems.
|
|
4
|
+
Each spec is ≤350 lines, greppable, diff-friendly, and agent-consumable.
|
|
5
|
+
|
|
6
|
+
**Spec shape**: `TEMPLATE.md` — Purpose · Anatomy · Variants · States · Sizing ·
|
|
7
|
+
Typography · Keyboard/a11y · Motion · Do/Don't · Anti-patterns · Citations · Grep signatures
|
|
8
|
+
|
|
9
|
+
**Harvest source list**: `connections/design-corpora.md` (18 systems)
|
|
10
|
+
**Tooling**: `agents/component-benchmark-harvester.md` → `agents/component-benchmark-synthesizer.md`
|
|
11
|
+
**CLI**: `/gdd:benchmark <component>` — see `skills/benchmark/SKILL.md`
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Wave 1 — Inputs (foundational)
|
|
16
|
+
|
|
17
|
+
| Component | Spec | Purpose |
|
|
18
|
+
|-----------|------|---------|
|
|
19
|
+
| Button | [button.md](button.md) | Triggers actions; primary, secondary, ghost, destructive variants |
|
|
20
|
+
| Input | [input.md](input.md) | Single-line text entry with label, error, helper text |
|
|
21
|
+
| Select / Combobox | [select-combobox.md](select-combobox.md) | Choose one option from a list; keyboard-navigable dropdown |
|
|
22
|
+
| Checkbox | [checkbox.md](checkbox.md) | Binary or indeterminate choice; groupable with fieldset |
|
|
23
|
+
| Radio | [radio.md](radio.md) | Mutually exclusive choice within a group |
|
|
24
|
+
| Switch | [switch.md](switch.md) | Binary toggle with immediate effect (vs. checkbox form submission) |
|
|
25
|
+
| Link | [link.md](link.md) | Navigation anchor; inline or standalone; external-link pattern |
|
|
26
|
+
| Label | [label.md](label.md) | Accessible association between caption and form control |
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Wave 2 — Containers
|
|
31
|
+
|
|
32
|
+
| Component | Spec | Purpose |
|
|
33
|
+
|-----------|------|---------|
|
|
34
|
+
| Card | [card.md](card.md) | Contained content surface; clickable or static |
|
|
35
|
+
| Modal / Dialog | [modal-dialog.md](modal-dialog.md) | Blocking overlay with focus trap and backdrop |
|
|
36
|
+
| Drawer / Sheet | [drawer.md](drawer.md) | Side or bottom sliding panel |
|
|
37
|
+
| Popover | [popover.md](popover.md) | Anchored overlay; dismisses on outside-click or Escape |
|
|
38
|
+
| Tooltip | [tooltip.md](tooltip.md) | Hover/focus-triggered label; no interactive content |
|
|
39
|
+
| Accordion | [accordion.md](accordion.md) | Collapsible content sections; single or multi-open |
|
|
40
|
+
| Tabs | [tabs.md](tabs.md) | Horizontal/vertical tab navigation with keyboard support |
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Wave 3 — Feedback
|
|
45
|
+
|
|
46
|
+
| Component | Spec | Purpose |
|
|
47
|
+
|-----------|------|---------|
|
|
48
|
+
| Toast / Snackbar | [toast.md](toast.md) | Ephemeral status notification; auto-dismisses 4–8s |
|
|
49
|
+
| Alert / Banner | [alert.md](alert.md) | Persistent inline status message; four severity variants |
|
|
50
|
+
| Progress | [progress.md](progress.md) | Linear and circular completion indicator; determinate + indeterminate |
|
|
51
|
+
| Skeleton | [skeleton.md](skeleton.md) | Loading placeholder matching content shape |
|
|
52
|
+
| Badge | [badge.md](badge.md) | Numeric or status indicator overlaid on another element |
|
|
53
|
+
| Chip / Tag | [chip.md](chip.md) | Compact toggleable/removable label; filter, input, suggestion, display |
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Wave 4 — Navigation & Data *(v1.17.0 · plan 17-02)*
|
|
58
|
+
|
|
59
|
+
| Component | Spec | Purpose |
|
|
60
|
+
|-----------|------|---------|
|
|
61
|
+
| Menu | [menu.md](menu.md) | Dropdown and context menu; action list with ARIA menu roles |
|
|
62
|
+
| Navbar | [navbar.md](navbar.md) | Top navigation bar; primary nav + skip link + mobile hamburger |
|
|
63
|
+
| Sidebar | [sidebar.md](sidebar.md) | Collapsible side navigation panel; icon+label / icon-only states |
|
|
64
|
+
| Breadcrumbs | [breadcrumbs.md](breadcrumbs.md) | Hierarchical location trail; aria-current + hidden separators |
|
|
65
|
+
| Pagination | [pagination.md](pagination.md) | Page-set navigation; previous/next + page buttons + per-page |
|
|
66
|
+
| Table | [table.md](table.md) | Data table with sorting, selection, sticky header, virtualisation |
|
|
67
|
+
| List | [list.md](list.md) | Display list (`<ul>/<ol>`) and interactive listbox (`role="listbox"`) |
|
|
68
|
+
| Tree | [tree.md](tree.md) | Hierarchical tree view; expand/collapse with full ARIA tree roles |
|
|
69
|
+
| Command Palette | [command-palette.md](command-palette.md) | Global Cmd/Ctrl+K launcher; dialog + combobox + listbox pattern |
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Wave 5 — Data & Advanced
|
|
74
|
+
|
|
75
|
+
| Component | Spec | Purpose |
|
|
76
|
+
|-----------|------|---------|
|
|
77
|
+
| Date Picker | [date-picker.md](date-picker.md) | Calendar-based date/range selection; input + popover variants |
|
|
78
|
+
| Slider | [slider.md](slider.md) | Single-value and range thumb on a track; full keyboard contract |
|
|
79
|
+
| File Upload | [file-upload.md](file-upload.md) | Drag-drop zone + accessible file input; per-file progress list |
|
|
80
|
+
| Rich-Text Editor | [rich-text-editor.md](rich-text-editor.md) | WYSIWYG authoring with contenteditable + toolbar + mentions |
|
|
81
|
+
| Stepper / Wizard | [stepper.md](stepper.md) | Sequential multi-step flow; role="list" (not tablist) |
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Coverage Summary
|
|
86
|
+
|
|
87
|
+
| Wave | Specs | Status |
|
|
88
|
+
|------|-------|--------|
|
|
89
|
+
| Wave 1 — Inputs | 8 | v1.16.0 |
|
|
90
|
+
| Wave 2 — Containers | 7 | v1.16.0 |
|
|
91
|
+
| Wave 3 — Feedback | 6 | v1.17.0 |
|
|
92
|
+
| Wave 4 — Navigation & Data | 9 | v1.17.0 |
|
|
93
|
+
| Wave 5 — Data & Advanced | 5 | v1.17.0 |
|
|
94
|
+
| **Total** | **35** | — |
|