opencodekit 0.16.14 → 0.16.17

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