@theproductguy/create-mission-control 1.0.3 → 1.0.4

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/bin/cli.js +11 -4
  2. package/package.json +2 -2
  3. package/src/template/agent-os/commands/export-product/export-product.md +24 -0
  4. package/src/template/agent-os/commands/initialize-design/initialize-design.md +10 -1
  5. package/src/template/control-center/backend/index.js +9 -3
  6. package/src/template/control-center/frontend/src/App.tsx +34 -1
  7. package/src/template/design-system/{.claude → .gemini}/commands/design-os/design-shell.md +95 -69
  8. package/src/template/design-system/.gemini/commands/design-os/design-tokens.md +211 -0
  9. package/src/template/design-system/.gemini/commands/impeccable/WORKFLOW.md +163 -0
  10. package/src/template/design-system/.gemini/commands/impeccable/adapt.md +189 -0
  11. package/src/template/design-system/.gemini/commands/impeccable/animate.md +184 -0
  12. package/src/template/design-system/.gemini/commands/impeccable/audit.md +123 -0
  13. package/src/template/design-system/.gemini/commands/impeccable/bolder.md +126 -0
  14. package/src/template/design-system/.gemini/commands/impeccable/clarify.md +173 -0
  15. package/src/template/design-system/.gemini/commands/impeccable/colorize.md +152 -0
  16. package/src/template/design-system/.gemini/commands/impeccable/critique.md +112 -0
  17. package/src/template/design-system/.gemini/commands/impeccable/delight.md +311 -0
  18. package/src/template/design-system/.gemini/commands/impeccable/extract.md +88 -0
  19. package/src/template/design-system/.gemini/commands/impeccable/harden.md +351 -0
  20. package/src/template/design-system/.gemini/commands/impeccable/normalize.md +61 -0
  21. package/src/template/design-system/.gemini/commands/impeccable/onboard.md +236 -0
  22. package/src/template/design-system/.gemini/commands/impeccable/optimize.md +262 -0
  23. package/src/template/design-system/.gemini/commands/impeccable/polish.md +196 -0
  24. package/src/template/design-system/.gemini/commands/impeccable/quieter.md +112 -0
  25. package/src/template/design-system/.gemini/commands/impeccable/simplify.md +131 -0
  26. package/src/template/design-system/.gemini/commands/impeccable/teach-impeccable.md +67 -0
  27. package/src/template/design-system/.gemini/skills/frontend-design/SKILL.md +126 -0
  28. package/src/template/design-system/.gemini/skills/frontend-design/reference/color-and-contrast.md +132 -0
  29. package/src/template/design-system/.gemini/skills/frontend-design/reference/interaction-design.md +123 -0
  30. package/src/template/design-system/.gemini/skills/frontend-design/reference/motion-design.md +99 -0
  31. package/src/template/design-system/.gemini/skills/frontend-design/reference/responsive-design.md +114 -0
  32. package/src/template/design-system/.gemini/skills/frontend-design/reference/spatial-design.md +100 -0
  33. package/src/template/design-system/.gemini/skills/frontend-design/reference/typography.md +131 -0
  34. package/src/template/design-system/.gemini/skills/frontend-design/reference/ux-writing.md +107 -0
  35. package/src/template/design-system/src/components/DesignPage.tsx +104 -0
  36. package/src/template/package-lock.json +10308 -0
  37. package/src/template/design-system/.claude/commands/design-os/design-tokens.md +0 -166
  38. package/src/template/design-system/.claude/skills/frontend-design/SKILL.md +0 -42
  39. /package/src/template/design-system/{.claude → .gemini}/commands/design-os/data-model.md +0 -0
  40. /package/src/template/design-system/{.claude → .gemini}/commands/design-os/design-screen.md +0 -0
  41. /package/src/template/design-system/{.claude → .gemini}/commands/design-os/export-product.md +0 -0
  42. /package/src/template/design-system/{.claude → .gemini}/commands/design-os/product-roadmap.md +0 -0
  43. /package/src/template/design-system/{.claude → .gemini}/commands/design-os/product-vision.md +0 -0
  44. /package/src/template/design-system/{.claude → .gemini}/commands/design-os/sample-data.md +0 -0
  45. /package/src/template/design-system/{.claude → .gemini}/commands/design-os/screenshot-design.md +0 -0
  46. /package/src/template/design-system/{.claude → .gemini}/commands/design-os/shape-section.md +0 -0
  47. /package/src/template/design-system/{claude.md → gemini.md} +0 -0
package/bin/cli.js CHANGED
@@ -87,16 +87,23 @@ async function init() {
87
87
  const templateDir = path.resolve(__dirname, '../src/template');
88
88
 
89
89
  // Copy Control Center
90
- fs.cpSync(path.join(templateDir, 'control-center'), path.join(root, 'control-center'), { recursive: true });
90
+ // Copy helper to exclude node_modules
91
+ const copyOptions = {
92
+ recursive: true,
93
+ filter: (src) => !src.includes('node_modules')
94
+ };
95
+
96
+ // Copy Control Center
97
+ fs.cpSync(path.join(templateDir, 'control-center'), path.join(root, 'control-center'), copyOptions);
91
98
 
92
99
  // Copy Design System
93
- fs.cpSync(path.join(templateDir, 'design-system'), path.join(root, 'design-system'), { recursive: true });
100
+ fs.cpSync(path.join(templateDir, 'design-system'), path.join(root, 'design-system'), copyOptions);
94
101
 
95
102
  // Copy Agent OS Docs
96
- fs.cpSync(path.join(templateDir, 'agent-os'), path.join(root, 'agent-os'), { recursive: true });
103
+ fs.cpSync(path.join(templateDir, 'agent-os'), path.join(root, 'agent-os'), copyOptions);
97
104
 
98
105
  // Copy Agent OS UI Package (for local workspace support)
99
- fs.cpSync(path.join(templateDir, 'agent-os-ui'), path.join(root, 'agent-os-ui'), { recursive: true });
106
+ fs.cpSync(path.join(templateDir, 'agent-os-ui'), path.join(root, 'agent-os-ui'), copyOptions);
100
107
 
101
108
  // 3. Configure Workspace
102
109
  console.log(cyan('\n3. Configuring Workspace...'));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theproductguy/create-mission-control",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "Scaffolding tool for Agent OS applications",
5
5
  "type": "module",
6
6
  "bin": {
@@ -41,4 +41,4 @@
41
41
  "typescript": "^5.3.3",
42
42
  "vite": "^5.0.10"
43
43
  }
44
- }
44
+ }
@@ -19,6 +19,30 @@ Verify the minimum requirements exist:
19
19
 
20
20
  If required files are missing, stop and ask the user to complete them first.
21
21
 
22
+ ## Step 1.5: Impeccable Quality Check (Pre-Export)
23
+
24
+ Before exporting, run a quick quality assessment:
25
+
26
+ **Check for QA Reports:**
27
+ 1. Look for `design-system/QA/audit-report.md` — Has a full audit been run?
28
+ 2. Look for `design-system/QA/tokens-audit.md` — Were design tokens audited?
29
+ 3. Look for `design-system/QA/shell-audit.md` — Was the shell audited?
30
+
31
+ **If no audit reports exist:**
32
+ "⚠️ **Impeccable Warning**: No quality audits found. I recommend running `/audit` before exporting to ensure your design meets quality standards and avoids 'AI Slop'.
33
+
34
+ Would you like me to:
35
+ 1. Run `/audit` now (recommended)
36
+ 2. Proceed with export anyway"
37
+
38
+ **If audits exist but have failures:**
39
+ "⚠️ **Impeccable Warning**: Previous audit found issues that may not have been addressed. Consider running the suggested fix commands (`/normalize`, `/harden`, etc.) before exporting.
40
+
41
+ Proceed with export?"
42
+
43
+ **If audits pass or user confirms:**
44
+ Continue to Step 2.
45
+
22
46
  ## Step 2: Create Export Directory Structure
23
47
 
24
48
  Create the `product-plan/` directory in the project root with this structure:
@@ -64,4 +64,13 @@ Create a draft data model file:
64
64
  ### Step 3: Verification
65
65
  - Check that `design-system/product/product-overview.md` exists.
66
66
  - Check that `design-system/product/product-roadmap.md` exists.
67
- - Output a confirmation message: "Design OS initialized! You can now open http://localhost:3000 to begin designing."
67
+ - Output a confirmation message:
68
+
69
+ "Design OS initialized! You can now open http://localhost:5400 to begin designing.
70
+
71
+ **Recommended Next Steps:**
72
+ 1. Run `/teach-impeccable` — One-time setup to establish design context for this project.
73
+ 2. Run `/design-tokens` — Define your colors and typography.
74
+ 3. Run `/design-shell` — Design your navigation and layout.
75
+
76
+ The Impeccable command system will guide you toward distinctive, AI-slop-free designs."
@@ -125,9 +125,11 @@ app.get('/api/status', async (req, res) => {
125
125
 
126
126
  // Check for Design OS export and steps
127
127
  const designDir = path.join(PROJECT_ROOT, 'design-system');
128
- // Note: In dev, these files are in design/public/product. In prod, injected elsewhere.
129
- // But for this local dev setup, we check where the initialize-design command puts them?
130
- // Actually, initialize-design puts them in `design/public/product`.
128
+
129
+ // QA Check
130
+ const qaDir = path.join(designDir, 'QA');
131
+ const auditReport = path.join(qaDir, 'audit-report.md');
132
+ const polishReport = path.join(qaDir, 'polish-report.md');
131
133
 
132
134
  const hasDesignExport = fs.existsSync(path.join(PROJECT_ROOT, 'product-plan'));
133
135
  const hasDesignInit = fs.existsSync(path.join(designDir, 'product/product-overview.md'));
@@ -146,6 +148,10 @@ app.get('/api/status', async (req, res) => {
146
148
  exportPrompts: {
147
149
  oneShot: fs.existsSync(path.join(PROJECT_ROOT, 'product-plan/prompts/one-shot-prompt.md')),
148
150
  section: fs.existsSync(path.join(PROJECT_ROOT, 'product-plan/prompts/section-prompt.md'))
151
+ },
152
+ qa: {
153
+ audit: fs.existsSync(auditReport),
154
+ polish: fs.existsSync(polishReport)
149
155
  }
150
156
  },
151
157
  implementation: {
@@ -39,6 +39,10 @@ interface ProjectState {
39
39
  oneShot: boolean;
40
40
  section: boolean;
41
41
  };
42
+ qa?: {
43
+ audit: boolean;
44
+ polish: boolean;
45
+ };
42
46
  };
43
47
  implementation: {
44
48
  scaffolded: boolean;
@@ -646,6 +650,17 @@ function App() {
646
650
  </div>
647
651
  </div>
648
652
 
653
+ <div className="grid grid-cols-2 gap-2">
654
+ <div className={`p-2 rounded-lg border text-center ${state?.design?.qa?.audit ? 'bg-emerald-50/50 border-emerald-200 text-emerald-700 dark:bg-emerald-900/20 dark:border-emerald-800 dark:text-emerald-300' : 'bg-secondary/20 border-border/50 text-muted-foreground'}`}>
655
+ <span className="text-xs font-medium block mb-1">Audit</span>
656
+ {state?.design?.qa?.audit ? <CheckSquare size={14} className="mx-auto" /> : <span className="block w-2 h-2 rounded-full bg-stone-300 mx-auto mt-1" />}
657
+ </div>
658
+ <div className={`p-2 rounded-lg border text-center ${state?.design?.qa?.polish ? 'bg-emerald-50/50 border-emerald-200 text-emerald-700 dark:bg-emerald-900/20 dark:border-emerald-800 dark:text-emerald-300' : 'bg-secondary/20 border-border/50 text-muted-foreground'}`}>
659
+ <span className="text-xs font-medium block mb-1">Polish</span>
660
+ {state?.design?.qa?.polish ? <CheckSquare size={14} className="mx-auto" /> : <span className="block w-2 h-2 rounded-full bg-stone-300 mx-auto mt-1" />}
661
+ </div>
662
+ </div>
663
+
649
664
  <div className="flex items-center justify-between p-3 bg-secondary/30 rounded-lg border border-border/50">
650
665
  <span className="text-foreground font-medium text-sm flex items-center gap-2"><ArrowRight size={16} className="text-muted-foreground" /> Export</span>
651
666
  {state?.design?.exported ? (
@@ -658,7 +673,7 @@ function App() {
658
673
  </div>
659
674
  </div>
660
675
 
661
- <div className="mt-6 flex gap-2">
676
+ <div className="mt-6 flex flex-col gap-2">
662
677
  {!state?.design?.initialized && (
663
678
  <PromptButton
664
679
  label="Sync Data"
@@ -667,6 +682,22 @@ function App() {
667
682
  primary
668
683
  />
669
684
  )}
685
+ {state?.design?.initialized && !state?.design?.exported && (
686
+ <div className="flex gap-2">
687
+ <PromptButton
688
+ label="Run Audit"
689
+ prompt="Antigravity, run an audit on the design system. Read 'design-system/.gemini/commands/impeccable/audit.md'."
690
+ onClick={copyToClipboard}
691
+ small
692
+ />
693
+ <PromptButton
694
+ label="Run Polish"
695
+ prompt="Antigravity, run a polish pass. Read 'design-system/.gemini/commands/impeccable/polish.md'."
696
+ onClick={copyToClipboard}
697
+ small
698
+ />
699
+ </div>
700
+ )}
670
701
  </div>
671
702
  </section>
672
703
 
@@ -835,6 +866,8 @@ function App() {
835
866
 
836
867
  </div>
837
868
  </section>
869
+
870
+
838
871
  </main>
839
872
  </div>
840
873
  </div>
@@ -2,6 +2,9 @@
2
2
 
3
3
  You are helping the user design the application shell — the persistent navigation and layout that wraps all sections. This is a screen design, not implementation code.
4
4
 
5
+ **CRITICAL: Consult the `frontend-design` skill (Impeccable) for spatial design and layout.**
6
+ You must avoid "AI Slop" layouts (e.g., everything inside a card, unnecessary glassmorphism, generic dashboards).
7
+
5
8
  ## Step 1: Check Prerequisites
6
9
 
7
10
  First, verify prerequisites exist:
@@ -22,26 +25,23 @@ If design tokens are missing, show a warning but continue:
22
25
 
23
26
  "Note: Design tokens haven't been defined yet. I'll proceed with default styling, but you may want to run `/design-tokens` first for consistent colors and typography."
24
27
 
25
- ## Step 2: Analyze Product Structure
26
-
27
- Review the roadmap sections and present navigation options:
28
+ ## Step 2: Analyze Product Structure and Aesthetics
28
29
 
29
- "I'm designing the shell for **[Product Name]**. Based on your roadmap, you have [N] sections:
30
+ Review the roadmap sections and consult Impeccable principles for the layout.
30
31
 
31
- 1. **[Section 1]** [Description]
32
- 2. **[Section 2]** [Description]
33
- 3. **[Section 3]** — [Description]
32
+ "I'm designing the shell for **[Product Name]**. Based on your roadmap, you have [N] sections.
33
+ Using **Impeccable** design principles, let's aim for a layout that uses space and rhythm effectively (avoiding the generic 'everything in a card' trap).
34
34
 
35
- Let's decide on the shell layout. Common patterns:
35
+ Common patterns:
36
36
 
37
- **A. Sidebar Navigation** — Vertical nav on the left, content on the right
38
- Best for: Apps with many sections, dashboard-style tools, admin panels
37
+ **A. Modern Sidebar** — Vertical nav on the left.
38
+ *Impeccable Tip:* Don't box the content area. Let the content breathe on the right.
39
39
 
40
- **B. Top Navigation** — Horizontal nav at top, content below
41
- Best for: Simpler apps, marketing-style products, fewer sections
40
+ **B. Refined Top Nav** — Horizontal nav at top.
41
+ *Impeccable Tip:* Great for marketing-heavy or simpler apps. Use generous whitespace.
42
42
 
43
- **C. Minimal Header** — Just logo + user menu, sections accessed differently
44
- Best for: Single-purpose tools, wizard-style flows
43
+ **C. Minimal/Focus** — Just logo + user menu.
44
+ *Impeccable Tip:* Radical simplicity.
45
45
 
46
46
  Which pattern fits **[Product Name]** best?"
47
47
 
@@ -52,9 +52,9 @@ Wait for their response.
52
52
  Use AskUserQuestion to clarify:
53
53
 
54
54
  - "Where should the user menu (avatar, logout) appear?"
55
- - "Do you want the sidebar collapsible on mobile, or should it become a hamburger menu?"
56
- - "Any additional items in the navigation? (Settings, Help, etc.)"
57
- - "What should the 'home' or default view be when the app loads?"
55
+ - "Do you want the sidebar collapsible?"
56
+ - "Any additional items in the navigation?"
57
+ - "What vibe should the shell have? (e.g., Transparency/Glass (use sparingly), Solid/Grounded, or Floating/Detached?)"
58
58
 
59
59
  ## Step 4: Present Shell Specification
60
60
 
@@ -66,13 +66,12 @@ Once you understand their preferences:
66
66
 
67
67
  **Navigation Structure:**
68
68
  - [Nav Item 1] → [Section]
69
- - [Nav Item 2] → [Section]
70
- - [Nav Item 3] → [Section]
71
- - [Additional items like Settings, Help]
69
+ ...
72
70
 
73
- **User Menu:**
74
- - Location: [Top right / Bottom of sidebar]
75
- - Contents: Avatar, user name, logout
71
+ **Aesthetic Decisions (Impeccable):**
72
+ - **Background:** [e.g., Subtle tint of primary color, NOT pure white/gray]
73
+ - **Spacing:** [e.g., Generous padding, fluid layout]
74
+ - **Borders:** [e.g., Delicate or None; avoiding thick borders]
76
75
 
77
76
  **Responsive Behavior:**
78
77
  - Desktop: [How it looks]
@@ -93,32 +92,30 @@ Create `/product/shell/spec.md`:
93
92
  [Description of the shell design and its purpose]
94
93
 
95
94
  ## Navigation Structure
96
- - [Nav Item 1] → [Section 1]
97
- - [Nav Item 2] → [Section 2]
98
- - [Nav Item 3] → [Section 3]
99
- - [Any additional nav items]
95
+ ...
100
96
 
101
- ## User Menu
102
- [Description of user menu location and contents]
97
+ ## Impeccable Design Choices
98
+ - **Layout Philosophy:** [e.g., Unboxed content, asymmetric grid]
99
+ - **Visuals:** [e.g., No drop shadows on cards, use flat clean lines]
103
100
 
104
101
  ## Layout Pattern
105
102
  [Description of the layout — sidebar, top nav, etc.]
106
103
 
107
104
  ## Responsive Behavior
108
- - **Desktop:** [Behavior]
109
- - **Tablet:** [Behavior]
110
- - **Mobile:** [Behavior]
111
-
112
- ## Design Notes
113
- [Any additional design decisions or notes]
105
+ ...
114
106
  ```
115
107
 
116
108
  ## Step 6: Create Shell Components
117
109
 
118
- Create the shell components at `src/shell/components/`:
110
+ Create the shell components at `src/shell/components/`.
111
+
112
+ **Impeccable Code Rules:**
113
+ - **No Pure Black/White**: Use `bg-stone-50` or `text-zinc-900`.
114
+ - **Motion**: Use `transition-all duration-300 ease-out-expo` (if configured) or custom bezier. Avoid default `ease-in-out`.
115
+ - **Touch Targets**: Ensure minimum 44px for clickable areas.
119
116
 
120
117
  ### AppShell.tsx
121
- The main wrapper component that accepts children and provides the layout structure.
118
+ The main wrapper component.
122
119
 
123
120
  ```tsx
124
121
  interface AppShellProps {
@@ -131,22 +128,14 @@ interface AppShellProps {
131
128
  ```
132
129
 
133
130
  ### MainNav.tsx
134
- The navigation component (sidebar or top nav based on the chosen pattern).
131
+ The navigation component.
135
132
 
136
133
  ### UserMenu.tsx
137
- The user menu with avatar and dropdown.
134
+ The user menu.
138
135
 
139
136
  ### index.ts
140
137
  Export all components.
141
138
 
142
- **Component Requirements:**
143
- - Use props for all data and callbacks (portable)
144
- - Apply design tokens if they exist (colors, fonts)
145
- - Support light and dark mode with `dark:` variants
146
- - Be mobile responsive
147
- - Use Tailwind CSS for styling
148
- - Use lucide-react for icons
149
-
150
139
  ## Step 7: Create Shell Preview
151
140
 
152
141
  Create `src/shell/ShellPreview.tsx` — a preview wrapper for viewing the shell in Design OS:
@@ -158,8 +147,7 @@ import { AppShell } from './components/AppShell'
158
147
  export default function ShellPreview() {
159
148
  const navigationItems = [
160
149
  { label: '[Section 1]', href: '/section-1', isActive: true },
161
- { label: '[Section 2]', href: '/section-2' },
162
- { label: '[Section 3]', href: '/section-3' },
150
+ // ...
163
151
  ]
164
152
 
165
153
  const user = {
@@ -175,10 +163,18 @@ export default function ShellPreview() {
175
163
  onLogout={() => console.log('Logout')}
176
164
  >
177
165
  <div className="p-8">
178
- <h1 className="text-2xl font-bold mb-4">Content Area</h1>
179
- <p className="text-stone-600 dark:text-stone-400">
180
- Section content will render here.
181
- </p>
166
+ <div className="mb-8">
167
+ <h1 className="text-4xl font-display font-bold mb-4 text-foreground tracking-tight">Content Area</h1>
168
+ <p className="text-xl text-muted-foreground leading-relaxed max-w-2xl">
169
+ Section content will render here. Notice the typography and spacing (Impeccable).
170
+ </p>
171
+ </div>
172
+ {/* Example Grid to show Rhythm */}
173
+ <div className="grid grid-cols-1 md:grid-cols-3 gap-6">
174
+ <div className="h-32 bg-secondary/30 rounded-xl border border-border/50"></div>
175
+ <div className="h-32 bg-secondary/30 rounded-xl border border-border/50"></div>
176
+ <div className="h-32 bg-primary/5 rounded-xl border border-primary/10"></div>
177
+ </div>
182
178
  </div>
183
179
  </AppShell>
184
180
  )
@@ -208,31 +204,61 @@ Let the user know:
208
204
  "I've designed the application shell for **[Product Name]**:
209
205
 
210
206
  **Created files:**
211
- - `/product/shell/spec.md` — Shell specification
212
- - `src/shell/components/AppShell.tsx` — Main shell wrapper
213
- - `src/shell/components/MainNav.tsx` — Navigation component
214
- - `src/shell/components/UserMenu.tsx` — User menu component
215
- - `src/shell/components/index.ts` — Component exports
216
- - `src/shell/ShellPreview.tsx` — Preview wrapper
217
-
218
- **Shell features:**
219
- - [Layout pattern] layout
220
- - Navigation for all [N] sections
221
- - User menu with avatar and logout
222
- - Mobile responsive design
223
- - Light/dark mode support
207
+ - `/product/shell/spec.md`
208
+ - `src/shell/components/...`
209
+ - `src/shell/ShellPreview.tsx`
224
210
 
225
- **Important:** Restart your dev server to see the changes.
211
+ **Impeccable Features:**
212
+ - **Navigation**: Clean, accessible, spacious.
213
+ - **Aesthetics**: Using your custom palette and fonts.
214
+ - **Motion**: Smooth transitions.
226
215
 
227
- When you design section screens with `/design-screen`, they will render inside this shell, showing the full app experience.
216
+ **Important:** Restart your dev server to see the changes.
228
217
 
229
218
  Next: Run `/shape-section` to start designing your first section."
230
219
 
231
220
  ## Important Notes
232
221
 
222
+ - **Aesthetics First**: The shell sets the tone. Make it high quality.
233
223
  - The shell is a screen design — it demonstrates the navigation and layout design
234
224
  - Components are props-based and portable to the user's codebase
235
225
  - The preview wrapper is for Design OS only — not exported
236
226
  - Apply design tokens when available for consistent styling
237
- - Keep the shell focused on navigation chrome — no authentication UI
238
227
  - Section screen designs will render inside the shell's content area
228
+
229
+ ## Step 10: Auto-Audit (Impeccable QA)
230
+
231
+ Before completing, perform a self-audit against Impeccable layout principles.
232
+
233
+ **Check:**
234
+ 1. Is everything wrapped in cards? (Nested cards, card grids) → Fail
235
+ 2. Is glassmorphism used for decoration rather than function? → Fail
236
+ 3. Is the layout symmetric and predictable (centered everything)? → Warn
237
+ 4. Are there "hero metrics" layouts (big number, small label)? → Fail
238
+ 5. Is spacing varied (rhythm) or uniform (monotonous)? → Pass/Fail
239
+ 6. Are touch targets ≥ 44x44px? → Pass/Fail
240
+
241
+ **If any checks fail:**
242
+ "⚠️ **Impeccable Audit Warning**: [Issue]. This layout may appear AI-generated. Consider revising."
243
+
244
+ **If all checks pass:**
245
+ "✅ **Impeccable Audit Passed**: Shell design meets quality standards."
246
+
247
+ Save this audit result to `design-system/QA/shell-audit.md`:
248
+ ```markdown
249
+ # Shell Design Audit
250
+
251
+ **Date**: [timestamp]
252
+ **Status**: [Pass/Fail]
253
+
254
+ ## Checks
255
+ - [x] No nested cards
256
+ - [x] Glassmorphism used purposefully (or not at all)
257
+ - [x] Asymmetric/intentional layout
258
+ - [x] No hero metric templates
259
+ - [x] Visual rhythm in spacing
260
+ - [x] Touch targets adequate
261
+
262
+ ## Notes
263
+ [Any observations]
264
+ ```
@@ -0,0 +1,211 @@
1
+ # Design Tokens
2
+
3
+ You are helping the user choose colors and typography for their product. These design tokens will be used consistently across all screen designs and the application shell.
4
+
5
+ **CRITICAL: Consult the `frontend-design` skill (Impeccable) for all aesthetics.**
6
+ You must avoid "AI Slop" (generic choices like Inter, plain Tailwind colors, and predictable pairings).
7
+
8
+ ## Step 1: Check Prerequisites
9
+
10
+ First, verify that the product overview exists:
11
+
12
+ Read `/product/product-overview.md` to understand what the product is.
13
+
14
+ If it doesn't exist:
15
+
16
+ "Before defining your design system, you'll need to establish your product vision. Please run `/product-vision` first."
17
+
18
+ Stop here if the prerequisite is missing.
19
+
20
+ ## Step 2: Explain the Process
21
+
22
+ "Let's define the visual identity for **[Product Name]**. We will use the **Impeccable** design methodology to ensure a distinctive, premium feel.
23
+
24
+ I'll help you choose:
25
+ 1. **Colors** — A primary accent, secondary accent, and neutral palette (using `oklch` or wide-gamut principles where possible, mapped to Tailwind).
26
+ 2. **Typography** — Distinctive fonts that give your product character (no generic defaults).
27
+
28
+ These will be applied consistently across all your screen designs and the application shell.
29
+
30
+ Do you have any existing brand colors or fonts in mind, or would you like suggestions?"
31
+
32
+ Wait for their response.
33
+
34
+ ## Step 3: Choose Colors
35
+
36
+ Help the user select from Tailwind's built-in color palette, but choose **Opinionated** combinations.
37
+ *Impeccable Rule:* Dominant colors with sharp accents outperform timid, evenly-distributed palettes.
38
+
39
+ "For colors, we'll pick from Tailwind's palette. I recommend avoiding the standard 'safe' blues and grays unless they are tinted or paired dramatically.
40
+
41
+ **Primary color** (main accent, buttons, links):
42
+ *Aim for character:* `violet`, `rose`, `amber`, `emerald`, `indigo` (avoid generic `blue` unless styled heavily)
43
+
44
+ **Secondary color** (complementary accent, tags, highlights):
45
+ Should support the primary—consider a split-complementary or analog.
46
+
47
+ **Neutral color** (backgrounds, text, borders):
48
+ *Impeccable Rule:* Never use pure gray. Tint your neutrals towards the primary hue.
49
+ Options: `slate` (cool), `zinc` (tech), `stone` (warm/earthy), `neutral`
50
+
51
+ Based on [Product Name], I'd suggest:
52
+ - **Primary:** [suggestion] — [why it fits the 'Impeccable' vibe]
53
+ - **Secondary:** [suggestion] — [why it complements]
54
+ - **Neutral:** [suggestion] — [why it works]
55
+
56
+ What feels right for your product?"
57
+
58
+ Use AskUserQuestion to gather their preferences if they're unsure:
59
+
60
+ - "What vibe are you going for? Brutalist, Organic, Minimalist, Cyber?"
61
+ - "Any colors you definitely want to avoid?"
62
+ - "Light mode, dark mode, or both?"
63
+
64
+ ## Step 4: Choose Typography
65
+
66
+ Help the user select Google Fonts.
67
+ **Impeccable Rule:** Avoid `Inter`, `Roboto`, `Open Sans`, `Arial`, `Lato`. They are "AI Slop" markers.
68
+ Choose fonts with personality.
69
+
70
+ "For typography, we'll use Google Fonts. We will avoid generic defaults to ensure your app stands out.
71
+
72
+ **Heading font** (titles, section headers):
73
+ *Distinctive Choices:* `Outfit`, `Manrope`, `Space Grotesk`, `Syne`, `Epilogue`, `DM Serif Display`, `Playfair Display`
74
+
75
+ **Body font** (paragraphs, UI text):
76
+ *Readable but refined:* `Plus Jakarta Sans`, `DM Sans`, `Satoshi` (if avail), `Urbanist`
77
+ *Avoid:* Inter, Roboto (too generic)
78
+
79
+ **Mono font** (code, technical content):
80
+ Options: `JetBrains Mono`, `IBM Plex Mono`, `Fira Code`, `Space Mono`
81
+
82
+ My suggestions for [Product Name]:
83
+ - **Heading:** [suggestion] — [why]
84
+ - **Body:** [suggestion] — [why]
85
+ - **Mono:** [suggestion] — [why]
86
+
87
+ What do you prefer?"
88
+
89
+ ## Step 5: Present Final Choices
90
+
91
+ Once they've made decisions:
92
+
93
+ "Here's your design system:
94
+
95
+ **Colors:**
96
+ - Primary: `[color]`
97
+ - Secondary: `[color]`
98
+ - Neutral: `[color]`
99
+
100
+ **Typography:**
101
+ - Heading: [Font Name]
102
+ - Body: [Font Name]
103
+ - Mono: [Font Name]
104
+
105
+ Does this look good? Ready to save it?"
106
+
107
+ ## Step 6: Create the Files
108
+
109
+ Once approved, create two files:
110
+
111
+ **File 1:** `/product/design-system/colors.json`
112
+ ```json
113
+ {
114
+ "primary": "[color]",
115
+ "secondary": "[color]",
116
+ "neutral": "[color]"
117
+ }
118
+ ```
119
+
120
+ **File 2:** `/product/design-system/typography.json`
121
+ ```json
122
+ {
123
+ "heading": "[Font Name]",
124
+ "body": "[Font Name]",
125
+ "mono": "[Font Name]"
126
+ }
127
+ ```
128
+
129
+ ## Step 7: Implement Changes in Code
130
+
131
+ Now, apply these choices to the running application:
132
+
133
+ 1. **Update Fonts**:
134
+ - Modify `index.html`.
135
+ - Replace the existing Google Fonts `<link>` with the new selection.
136
+ - Ensure you include weights 400, 500, 700 for non-mono, and 400 for mono.
137
+
138
+ 2. **Update Colors**:
139
+ - Modify `src/index.css`.
140
+ - Replace the CSS variables in `:root` and `.dark` with the `oklch` values of the chosen Tailwind colors (you can approximate or use a converter if needed, or mapped hex values if `oklch` is too complex, but Impeccable prefers `oklch`).
141
+ - Ensure `--font-display`, `--font-body`, and `--font-mono` in `src/index.css` or `tailwind.config.js` match the new font names.
142
+
143
+ ## Step 8: Confirm Completion
144
+
145
+ Let the user know:
146
+
147
+ "I've saved AND applied your design tokens:
148
+ - **Files**: `colors.json`, `typography.json`
149
+ - **Code**: Updated `index.html` and `src/index.css`
150
+
151
+ **Your palette:**
152
+ - Primary: `[color]`
153
+ - Secondary: `[color]`
154
+ - Neutral: `[color]`
155
+
156
+ **Your fonts:**
157
+ - [Heading Font]
158
+ - [Body Font]
159
+ - [Mono Font]
160
+
161
+ The application now reflects your Impeccable aesthetic.
162
+
163
+ Next step: Run `/design-shell` to design your application's navigation and layout."
164
+
165
+ ## Reference: Impeccable Font Pairings
166
+
167
+ - **Modern & Characterful:** DM Sans + Plus Jakarta Sans + JetBrains Mono
168
+ - **Bold & Technical:** Space Grotesk + Manrope + Space Mono
169
+ - **Refined Editorial:** Playfair Display + Urbanist + IBM Plex Mono
170
+ - **Soft & Organic:** Nunito (Rounded) + Quicksand + Fira Code
171
+ - **Brutalist:** Syne + Epilogue + JetBrains Mono
172
+
173
+ ## Important Notes
174
+
175
+ - Colors should be Tailwind palette names (not hex codes)
176
+ - Fonts should be exact Google Fonts names
177
+ - **Keep it distinct**: If the user suggests "Inter", suggest "Plus Jakarta Sans" or "Manrope" as a more modern alternative.
178
+ - Design tokens apply to screen designs only — the Design OS app keeps its own aesthetic
179
+
180
+ ## Step 9: Auto-Audit (Impeccable QA)
181
+
182
+ Before completing, perform a quick self-audit against Impeccable principles.
183
+
184
+ **Check:**
185
+ 1. Are any "AI Slop" fonts used? (Inter, Roboto, Open Sans, Arial) → Fail
186
+ 2. Are colors tinted (not pure gray)? → Pass/Fail
187
+ 3. Is there a clear dominant + accent hierarchy? → Pass/Fail
188
+ 4. Are `oklch` or wide-gamut values preferred over hex where possible? → Pass/Fail
189
+
190
+ **If any checks fail:**
191
+ "⚠️ **Impeccable Audit Warning**: [Issue]. Recommend revising before proceeding."
192
+
193
+ **If all checks pass:**
194
+ "✅ **Impeccable Audit Passed**: Design tokens meet quality standards."
195
+
196
+ Save this audit result to `design-system/QA/tokens-audit.md`:
197
+ ```markdown
198
+ # Design Tokens Audit
199
+
200
+ **Date**: [timestamp]
201
+ **Status**: [Pass/Fail]
202
+
203
+ ## Checks
204
+ - [x] No AI Slop fonts
205
+ - [x] Tinted neutrals
206
+ - [x] Dominant + accent hierarchy
207
+ - [x] Modern color format (oklch)
208
+
209
+ ## Notes
210
+ [Any observations]
211
+ ```