opencodekit 0.10.0 → 0.11.1

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.
Files changed (47) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/template/.opencode/agent/planner.md +3 -2
  3. package/dist/template/.opencode/command/accessibility-check.md +297 -30
  4. package/dist/template/.opencode/command/analyze-mockup.md +412 -20
  5. package/dist/template/.opencode/command/analyze-project.md +445 -30
  6. package/dist/template/.opencode/command/brainstorm.md +294 -5
  7. package/dist/template/.opencode/command/commit.md +231 -17
  8. package/dist/template/.opencode/command/create.md +415 -77
  9. package/dist/template/.opencode/command/design-audit.md +483 -29
  10. package/dist/template/.opencode/command/design.md +615 -6
  11. package/dist/template/.opencode/command/edit-image.md +223 -20
  12. package/dist/template/.opencode/command/finish.md +163 -71
  13. package/dist/template/.opencode/command/fix-ci.md +297 -24
  14. package/dist/template/.opencode/command/fix-types.md +351 -13
  15. package/dist/template/.opencode/command/fix-ui.md +299 -13
  16. package/dist/template/.opencode/command/fix.md +262 -9
  17. package/dist/template/.opencode/command/generate-diagram.md +327 -26
  18. package/dist/template/.opencode/command/generate-icon.md +266 -22
  19. package/dist/template/.opencode/command/generate-image.md +232 -12
  20. package/dist/template/.opencode/command/generate-pattern.md +234 -20
  21. package/dist/template/.opencode/command/generate-storyboard.md +231 -21
  22. package/dist/template/.opencode/command/handoff.md +208 -31
  23. package/dist/template/.opencode/command/implement.md +163 -50
  24. package/dist/template/.opencode/command/import-plan.md +253 -52
  25. package/dist/template/.opencode/command/init.md +154 -35
  26. package/dist/template/.opencode/command/integration-test.md +410 -24
  27. package/dist/template/.opencode/command/issue.md +177 -21
  28. package/dist/template/.opencode/command/new-feature.md +390 -54
  29. package/dist/template/.opencode/command/plan.md +394 -107
  30. package/dist/template/.opencode/command/pr.md +235 -29
  31. package/dist/template/.opencode/command/quick-build.md +234 -5
  32. package/dist/template/.opencode/command/research-and-implement.md +442 -12
  33. package/dist/template/.opencode/command/research-ui.md +444 -34
  34. package/dist/template/.opencode/command/research.md +179 -45
  35. package/dist/template/.opencode/command/restore-image.md +416 -22
  36. package/dist/template/.opencode/command/resume.md +447 -63
  37. package/dist/template/.opencode/command/revert-feature.md +347 -65
  38. package/dist/template/.opencode/command/review-codebase.md +199 -4
  39. package/dist/template/.opencode/command/skill-create.md +506 -14
  40. package/dist/template/.opencode/command/skill-optimize.md +487 -16
  41. package/dist/template/.opencode/command/status.md +326 -60
  42. package/dist/template/.opencode/command/summarize.md +374 -33
  43. package/dist/template/.opencode/command/triage.md +361 -0
  44. package/dist/template/.opencode/command/ui-review.md +296 -25
  45. package/dist/template/.opencode/skill/beads/SKILL.md +108 -3
  46. package/dist/template/.opencode/skill/playwriter/SKILL.md +148 -0
  47. package/package.json +1 -1
@@ -1,17 +1,626 @@
1
1
  ---
2
- description: UI/UX visual design and aesthetics
3
- argument-hint: "[topic or task-id]"
2
+ description: UI/UX visual design with aesthetic direction and code output
3
+ argument-hint: "<component|page|system|'review'> [topic] [--direction:<aesthetic>] [--quick|--deep]"
4
4
  agent: vision
5
5
  ---
6
6
 
7
7
  # Design: $ARGUMENTS
8
8
 
9
+ ## Load Beads Skill
10
+
11
+ ```typescript
12
+ skill({ name: "beads" });
13
+ ```
14
+
15
+ ## Phase 1: Context Discovery
16
+
17
+ Parse `$ARGUMENTS` to determine design task:
18
+
19
+ | Task Type | Description | Output Focus |
20
+ | ------------------ | ------------------------------ | --------------------------- |
21
+ | `component <name>` | Design a specific component | Component spec + code |
22
+ | `page <name>` | Design a page layout | Layout structure + sections |
23
+ | `system` | Create/extend design system | Tokens + guidelines |
24
+ | `review <path>` | Review existing UI for quality | Findings + recommendations |
25
+
26
+ **Depth** (default: `--deep`):
27
+
28
+ - `--quick` - High-level direction + key decisions only (~5 min)
29
+ - `--deep` - Full design spec with code output (~15-20 min)
30
+
31
+ ### Detect Existing Design System
32
+
33
+ ```bash
34
+ # Check for design system in use
35
+ glob pattern="**/tailwind.config.{js,ts,mjs}"
36
+ glob pattern="**/globals.css"
37
+ glob pattern="**/components.json" # shadcn
38
+
39
+ # Read existing styles
40
+ read tailwind.config.js
41
+ read src/styles/globals.css
42
+ ```
43
+
44
+ **Identify component library:**
45
+
46
+ | File/Pattern Found | Library |
47
+ | ------------------------------------ | ---------------- |
48
+ | `components.json` with shadcn schema | shadcn/ui |
49
+ | `@mui/material` in package.json | Material UI |
50
+ | `@chakra-ui/*` | Chakra UI |
51
+ | `@radix-ui/*` only | Radix Primitives |
52
+ | None detected | Custom system |
53
+
54
+ ---
55
+
56
+ ## Phase 2: Aesthetic Direction (DECISION GATE)
57
+
9
58
  skill({ name: "frontend-aesthetics" })
10
59
 
11
- Focus on visual design: typography, color, spacing, layout, accessibility. Avoid AI slop aesthetics.
60
+ **BEFORE any design work, you MUST state:**
61
+
62
+ 1. **Aesthetic direction** — Which style(s)?
63
+ 2. **Why** — How does it fit the context/brand?
64
+
65
+ ### Available Directions
66
+
67
+ Pick ONE (or combine 2 max):
68
+
69
+ | Direction | Character | Best For |
70
+ | -------------------- | ----------------------------------------------- | ---------------------------------- |
71
+ | **Neo-Brutalist** | Raw textures, bold type, harsh contrasts | Developer tools, creative agencies |
72
+ | **Soft Minimalism** | Muted palettes, generous whitespace | SaaS, productivity apps |
73
+ | **Retro-Futuristic** | CRT effects, scan lines, neon | Gaming, entertainment |
74
+ | **Editorial** | Dynamic grids, mixed media, bold type | Magazines, portfolios |
75
+ | **Glass Morphism** | Translucent layers, backdrop blur, depth | Dashboards, modern apps |
76
+ | **Dark Academia** | Rich textures, serif type, scholarly | Education, libraries |
77
+ | **Swiss Design** | Grid systems, sans-serif, functional | Enterprise, documentation |
78
+ | **Art Deco** | Geometric patterns, gold accents, luxury | Finance, premium products |
79
+ | **Y2K Revival** | Gradients, metallics, early-web nostalgia | Youth brands, creative |
80
+ | **Organic/Natural** | Flowing shapes, nature palettes, paper textures | Wellness, sustainability |
81
+
82
+ **Override with flag:** `--direction:neo-brutalist` or `--direction:soft-minimalism+swiss`
83
+
84
+ ### Direction Declaration
85
+
86
+ ```markdown
87
+ ## Aesthetic Direction
88
+
89
+ **Selected:** [Direction name(s)]
90
+
91
+ **Rationale:** [1-2 sentences explaining why this fits]
92
+
93
+ **Key characteristics I will apply:**
94
+
95
+ - [Specific element 1]
96
+ - [Specific element 2]
97
+ - [Specific element 3]
98
+ ```
99
+
100
+ ---
101
+
102
+ ## Phase 3: Typography Specification
103
+
104
+ ### Font Selection
105
+
106
+ **Recommended fonts by context:**
107
+
108
+ | Context | Primary | Secondary |
109
+ | --------------- | ----------------------------------------------- | -------------------- |
110
+ | Code/Tech | JetBrains Mono, Fira Code, Space Mono | Inter, IBM Plex Sans |
111
+ | Editorial | Playfair Display, Crimson Pro, Instrument Serif | Source Sans 3 |
112
+ | Display/Bold | Bebas Neue, Oswald, Archivo Black | Work Sans |
113
+ | Technical/Clean | IBM Plex, Source Sans 3, Work Sans | JetBrains Mono |
114
+ | Distinctive | Bricolage Grotesque, Syne, Outfit | Space Grotesk |
115
+
116
+ **AVOID without purpose:** Inter, Roboto, Arial, system fonts
117
+
118
+ ### Type Scale
119
+
120
+ ```css
121
+ /* Type scale - adjust base for your design */
122
+ :root {
123
+ --font-sans: "Outfit", system-ui, sans-serif;
124
+ --font-mono: "JetBrains Mono", monospace;
125
+
126
+ /* Scale: 1.25 ratio (Major Third) */
127
+ --text-xs: 0.64rem; /* 10px */
128
+ --text-sm: 0.8rem; /* 13px */
129
+ --text-base: 1rem; /* 16px */
130
+ --text-lg: 1.25rem; /* 20px */
131
+ --text-xl: 1.563rem; /* 25px */
132
+ --text-2xl: 1.953rem; /* 31px */
133
+ --text-3xl: 2.441rem; /* 39px */
134
+ --text-4xl: 3.052rem; /* 49px */
135
+
136
+ /* Line heights */
137
+ --leading-tight: 1.1;
138
+ --leading-snug: 1.3;
139
+ --leading-normal: 1.5;
140
+ --leading-relaxed: 1.75;
141
+
142
+ /* Font weights - use extremes */
143
+ --font-light: 200;
144
+ --font-normal: 400;
145
+ --font-bold: 700;
146
+ --font-black: 900;
147
+ }
148
+ ```
149
+
150
+ ### Pairing Rules
151
+
152
+ - **High contrast = interesting**: Display + monospace, serif + geometric sans
153
+ - **Use weight extremes**: 200/300 vs 800/900, NOT 400 vs 600
154
+ - **Limit to 2 families**: One for headings, one for body
155
+
156
+ ---
157
+
158
+ ## Phase 4: Color Specification
159
+
160
+ ### Color Palette Structure
161
+
162
+ ```css
163
+ :root {
164
+ /* Primitives - raw color values */
165
+ --color-slate-50: #f8fafc;
166
+ --color-slate-100: #f1f5f9;
167
+ --color-slate-200: #e2e8f0;
168
+ --color-slate-300: #cbd5e1;
169
+ --color-slate-400: #94a3b8;
170
+ --color-slate-500: #64748b;
171
+ --color-slate-600: #475569;
172
+ --color-slate-700: #334155;
173
+ --color-slate-800: #1e293b;
174
+ --color-slate-900: #0f172a;
175
+ --color-slate-950: #020617;
176
+
177
+ /* Brand color (pick ONE dominant) */
178
+ --color-brand: #2563eb;
179
+ --color-brand-light: #3b82f6;
180
+ --color-brand-dark: #1d4ed8;
181
+
182
+ /* Accent (sharp contrast to brand) */
183
+ --color-accent: #f59e0b;
184
+
185
+ /* Semantic - light mode */
186
+ --background: var(--color-slate-50);
187
+ --foreground: var(--color-slate-900);
188
+ --muted: var(--color-slate-100);
189
+ --muted-foreground: var(--color-slate-500);
190
+ --primary: var(--color-brand);
191
+ --primary-foreground: white;
192
+ --secondary: var(--color-slate-100);
193
+ --secondary-foreground: var(--color-slate-900);
194
+ --accent: var(--color-accent);
195
+ --accent-foreground: var(--color-slate-900);
196
+ --destructive: #ef4444;
197
+ --destructive-foreground: white;
198
+ --success: #10b981;
199
+ --warning: #f59e0b;
200
+ --border: var(--color-slate-200);
201
+ --ring: var(--color-brand);
202
+ }
203
+
204
+ .dark {
205
+ --background: var(--color-slate-950);
206
+ --foreground: var(--color-slate-50);
207
+ --muted: var(--color-slate-800);
208
+ --muted-foreground: var(--color-slate-400);
209
+ --secondary: var(--color-slate-800);
210
+ --secondary-foreground: var(--color-slate-50);
211
+ --border: var(--color-slate-800);
212
+ }
213
+ ```
214
+
215
+ ### Color Anti-Patterns (NEVER DO)
216
+
217
+ | Anti-Pattern | Why It's Bad | Do Instead |
218
+ | --------------------------------- | -------------------------- | --------------------------------------- |
219
+ | Purple/blue gradient backgrounds | Overused AI slop signature | Solid colors or subtle texture |
220
+ | `#6366F1` or `#667eea` as primary | Generic "Tailwind indigo" | Choose distinctive brand color |
221
+ | Flat white `#FFFFFF` backgrounds | Harsh, sterile | Use warm white `#FAFAF9` or subtle gray |
222
+ | Rainbow gradients | Overwhelming, no hierarchy | Limited palette with one accent |
223
+ | Too many colors (>6 semantic) | Confusion, inconsistency | Stick to primary + accent + neutrals |
224
+
225
+ ---
226
+
227
+ ## Phase 5: Spacing & Layout
228
+
229
+ ### Spacing Scale
230
+
231
+ ```css
232
+ :root {
233
+ /* Base unit: 4px (or 0.25rem) */
234
+ --space-0: 0;
235
+ --space-1: 0.25rem; /* 4px */
236
+ --space-2: 0.5rem; /* 8px */
237
+ --space-3: 0.75rem; /* 12px */
238
+ --space-4: 1rem; /* 16px */
239
+ --space-5: 1.25rem; /* 20px */
240
+ --space-6: 1.5rem; /* 24px */
241
+ --space-8: 2rem; /* 32px */
242
+ --space-10: 2.5rem; /* 40px */
243
+ --space-12: 3rem; /* 48px */
244
+ --space-16: 4rem; /* 64px */
245
+ --space-20: 5rem; /* 80px */
246
+ --space-24: 6rem; /* 96px */
247
+ }
248
+ ```
249
+
250
+ ### Layout Patterns
251
+
252
+ ```css
253
+ /* Container */
254
+ .container {
255
+ width: 100%;
256
+ max-width: 1280px;
257
+ margin-inline: auto;
258
+ padding-inline: var(--space-4);
259
+ }
260
+
261
+ @media (min-width: 640px) {
262
+ .container {
263
+ padding-inline: var(--space-6);
264
+ }
265
+ }
266
+
267
+ @media (min-width: 1024px) {
268
+ .container {
269
+ padding-inline: var(--space-8);
270
+ }
271
+ }
272
+
273
+ /* Section spacing */
274
+ .section {
275
+ padding-block: var(--space-16);
276
+ }
277
+
278
+ @media (min-width: 768px) {
279
+ .section {
280
+ padding-block: var(--space-24);
281
+ }
282
+ }
283
+ ```
284
+
285
+ ### Responsive Breakpoints
286
+
287
+ | Breakpoint | Width | Typical Use |
288
+ | ---------- | ------ | ---------------- |
289
+ | `sm` | 640px | Mobile landscape |
290
+ | `md` | 768px | Tablets |
291
+ | `lg` | 1024px | Small laptops |
292
+ | `xl` | 1280px | Desktops |
293
+ | `2xl` | 1536px | Large screens |
294
+
295
+ ---
296
+
297
+ ## Phase 6: Component Patterns
298
+
299
+ ### For Component Design Tasks
300
+
301
+ **Component Specification Template:**
302
+
303
+ ```markdown
304
+ ## Component: [Name]
305
+
306
+ ### Purpose
307
+
308
+ [What problem does this solve?]
309
+
310
+ ### Variants
311
+
312
+ | Variant | Use Case | Visual Difference |
313
+ | ----------- | ------------------ | ----------------- |
314
+ | default | Standard usage | Base styling |
315
+ | primary | Primary action | Brand color fill |
316
+ | secondary | Secondary action | Muted background |
317
+ | outline | Tertiary action | Border only |
318
+ | ghost | Minimal prominence | No border/bg |
319
+ | destructive | Dangerous action | Red/warning color |
320
+
321
+ ### Sizes
322
+
323
+ | Size | Padding | Font Size | Min Height |
324
+ | ---- | --------- | --------- | ---------- |
325
+ | sm | 8px 12px | 14px | 32px |
326
+ | md | 10px 16px | 14px | 40px |
327
+ | lg | 12px 24px | 16px | 48px |
328
+
329
+ ### States
330
+
331
+ - Default
332
+ - Hover (subtle lightening/darkening)
333
+ - Focus (ring outline)
334
+ - Active (pressed state)
335
+ - Disabled (reduced opacity, no pointer)
336
+ - Loading (spinner, disabled interaction)
337
+
338
+ ### Accessibility
339
+
340
+ - Keyboard: [Tab, Enter, Space behavior]
341
+ - ARIA: [Required attributes]
342
+ - Focus: [Visible ring, logical order]
343
+ - Contrast: [Minimum 4.5:1 for text]
344
+ ```
345
+
346
+ ### Code Output (shadcn/Tailwind pattern)
12
347
 
13
- **Quick design:** Provide actionable design recommendations.
348
+ ```tsx
349
+ import { cva, type VariantProps } from "class-variance-authority";
350
+ import { cn } from "@/lib/utils";
351
+
352
+ const buttonVariants = cva(
353
+ // Base styles
354
+ "inline-flex items-center justify-center gap-2 rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",
355
+ {
356
+ variants: {
357
+ variant: {
358
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
359
+ secondary:
360
+ "bg-secondary text-secondary-foreground hover:bg-secondary/80",
361
+ outline: "border border-input bg-background hover:bg-accent",
362
+ ghost: "hover:bg-accent hover:text-accent-foreground",
363
+ destructive:
364
+ "bg-destructive text-destructive-foreground hover:bg-destructive/90",
365
+ },
366
+ size: {
367
+ sm: "h-8 px-3 text-sm",
368
+ md: "h-10 px-4 text-sm",
369
+ lg: "h-12 px-6 text-base",
370
+ },
371
+ },
372
+ defaultVariants: {
373
+ variant: "default",
374
+ size: "md",
375
+ },
376
+ },
377
+ );
378
+
379
+ interface ButtonProps
380
+ extends
381
+ React.ButtonHTMLAttributes<HTMLButtonElement>,
382
+ VariantProps<typeof buttonVariants> {}
383
+
384
+ export function Button({ className, variant, size, ...props }: ButtonProps) {
385
+ return (
386
+ <button
387
+ className={cn(buttonVariants({ variant, size }), className)}
388
+ {...props}
389
+ />
390
+ );
391
+ }
392
+ ```
393
+
394
+ ---
395
+
396
+ ## Phase 7: Animation Approach
397
+
398
+ ### Recommended: Orchestrated Entrance
399
+
400
+ One coordinated animation beats scattered effects:
401
+
402
+ ```css
403
+ @keyframes revealUp {
404
+ from {
405
+ opacity: 0;
406
+ transform: translateY(20px);
407
+ }
408
+ to {
409
+ opacity: 1;
410
+ transform: translateY(0);
411
+ }
412
+ }
413
+
414
+ .hero > * {
415
+ animation: revealUp 600ms cubic-bezier(0.19, 1, 0.22, 1) both;
416
+ }
417
+
418
+ .hero > *:nth-child(1) {
419
+ animation-delay: 0ms;
420
+ }
421
+ .hero > *:nth-child(2) {
422
+ animation-delay: 80ms;
423
+ }
424
+ .hero > *:nth-child(3) {
425
+ animation-delay: 160ms;
426
+ }
427
+ .hero > *:nth-child(4) {
428
+ animation-delay: 240ms;
429
+ }
430
+ ```
431
+
432
+ ### Micro-interactions
433
+
434
+ ```css
435
+ /* Subtle hover lift */
436
+ .card {
437
+ transition:
438
+ transform 200ms ease,
439
+ box-shadow 200ms ease;
440
+ }
441
+ .card:hover {
442
+ transform: translateY(-2px);
443
+ box-shadow: 0 8px 16px -4px rgb(0 0 0 / 0.1);
444
+ }
445
+
446
+ /* Button press */
447
+ .button:active {
448
+ transform: scale(0.98);
449
+ }
450
+
451
+ /* Focus ring */
452
+ .interactive:focus-visible {
453
+ outline: none;
454
+ ring: 2px solid var(--ring);
455
+ ring-offset: 2px;
456
+ }
457
+ ```
458
+
459
+ ---
460
+
461
+ ## Phase 8: AI Slop Check (MANDATORY)
462
+
463
+ Before finalizing, verify design does NOT have ALL of these together:
464
+
465
+ ### AI Slop Signature (NEVER do all together)
466
+
467
+ | Element | Check |
468
+ | ------------------------------------------- | --------------- |
469
+ | Purple/blue gradient background | [ ] NOT present |
470
+ | Inter or system fonts only | [ ] NOT present |
471
+ | Centered hero with generic subheading | [ ] NOT present |
472
+ | 3-column feature cards with icons | [ ] NOT present |
473
+ | 16px rounded corners on everything | [ ] NOT present |
474
+ | Drop shadows on all cards | [ ] NOT present |
475
+ | "Modern, clean, simple" as only descriptors | [ ] NOT present |
476
+
477
+ **Rule:** Having 1-2 is fine. Having 5+ = AI slop. Redesign.
478
+
479
+ ### Quality Checklist
480
+
481
+ - [ ] Clear aesthetic point of view? (Can you name it?)
482
+ - [ ] Avoids AI slop signature?
483
+ - [ ] Would someone remember this tomorrow?
484
+ - [ ] Responsive design considered?
485
+ - [ ] Accessible (contrast, focus, keyboard)?
486
+ - [ ] Dark mode supported?
487
+ - [ ] Performance-friendly (minimal JS animations)?
488
+
489
+ ---
490
+
491
+ ## Phase 9: Output Format
492
+
493
+ ### For Component Design
494
+
495
+ ```markdown
496
+ ## Component Design: [Name]
497
+
498
+ ### Aesthetic Direction
499
+
500
+ [Direction + rationale]
501
+
502
+ ### Specification
503
+
504
+ [Variants, sizes, states table]
505
+
506
+ ### Code
507
+
508
+ [Full component code with cva/cn pattern]
509
+
510
+ ### Usage Examples
511
+
512
+ [3-4 usage examples]
513
+
514
+ ### Accessibility Notes
515
+
516
+ [Keyboard, ARIA, contrast requirements]
517
+ ```
518
+
519
+ ### For Page Design
520
+
521
+ ```markdown
522
+ ## Page Design: [Name]
523
+
524
+ ### Aesthetic Direction
525
+
526
+ [Direction + rationale]
527
+
528
+ ### Layout Structure
529
+
530
+ [ASCII diagram or section breakdown]
531
+
532
+ ### Sections
533
+
534
+ 1. [Section name] - [Purpose] - [Key elements]
535
+ 2. ...
536
+
537
+ ### Responsive Behavior
538
+
539
+ [How layout changes at breakpoints]
540
+
541
+ ### Code Structure
542
+
543
+ [Component composition, layout CSS]
544
+ ```
545
+
546
+ ### For System Design
547
+
548
+ ```markdown
549
+ ## Design System: [Name]
550
+
551
+ ### Aesthetic Direction
552
+
553
+ [Direction + rationale]
554
+
555
+ ### Tokens
556
+
557
+ [Full CSS variables: colors, typography, spacing]
558
+
559
+ ### Component Guidelines
560
+
561
+ [Patterns to follow, anti-patterns to avoid]
562
+
563
+ ### Tailwind Config
564
+
565
+ [Full tailwind.config.js extension]
566
+ ```
567
+
568
+ ---
569
+
570
+ ## Phase 10: Storage & Follow-up
571
+
572
+ ### Save to Memory
573
+
574
+ **Quick design:** Output inline, no save needed
575
+ **Full design:** Save to `.opencode/memory/design/specs/[YYYY-MM-DD]-[topic].md`
576
+
577
+ ### Create Implementation Tasks
578
+
579
+ For component/page designs:
580
+
581
+ ```
582
+ bd_add({
583
+ title: "Implement [component/page] design",
584
+ desc: "Build [name] per design spec at .opencode/memory/design/specs/[file].md",
585
+ type: "task",
586
+ pri: 2,
587
+ tags: ["frontend", "design"]
588
+ })
589
+ ```
590
+
591
+ ### Bead Integration
592
+
593
+ If bead exists in `$ARGUMENTS`, design within `.beads/artifacts/<bead-id>/spec.md` constraints.
594
+
595
+ ---
596
+
597
+ ## Examples
598
+
599
+ ```bash
600
+ # Design a component
601
+ /design component button --direction:neo-brutalist
602
+
603
+ # Design a page
604
+ /design page landing --direction:soft-minimalism+swiss --deep
605
+
606
+ # Create/extend design system
607
+ /design system --direction:editorial
608
+
609
+ # Review existing UI
610
+ /design review src/components/ --quick
611
+
612
+ # Quick design recommendation
613
+ /design component modal --quick
614
+ ```
615
+
616
+ ---
14
617
 
15
- **Full design:** Save to `.opencode/memory/research/YYYY-MM-DD-$ARGUMENTS-design.md`
618
+ ## Related Commands
16
619
 
17
- If bead exists, design within `.beads/artifacts/<bead-id>/spec.md` constraints.
620
+ | Need | Command |
621
+ | --------------------- | ---------------------- |
622
+ | Audit existing system | `/design-audit` |
623
+ | Analyze mockup | `/analyze-mockup` |
624
+ | Implement design | `/implement` |
625
+ | Check accessibility | `/accessibility-check` |
626
+ | Fix UI issues | `/fix-ui` |