@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.
- package/bin/cli.js +11 -4
- package/package.json +2 -2
- package/src/template/agent-os/commands/export-product/export-product.md +24 -0
- package/src/template/agent-os/commands/initialize-design/initialize-design.md +10 -1
- package/src/template/control-center/backend/index.js +9 -3
- package/src/template/control-center/frontend/src/App.tsx +34 -1
- package/src/template/design-system/{.claude → .gemini}/commands/design-os/design-shell.md +95 -69
- package/src/template/design-system/.gemini/commands/design-os/design-tokens.md +211 -0
- package/src/template/design-system/.gemini/commands/impeccable/WORKFLOW.md +163 -0
- package/src/template/design-system/.gemini/commands/impeccable/adapt.md +189 -0
- package/src/template/design-system/.gemini/commands/impeccable/animate.md +184 -0
- package/src/template/design-system/.gemini/commands/impeccable/audit.md +123 -0
- package/src/template/design-system/.gemini/commands/impeccable/bolder.md +126 -0
- package/src/template/design-system/.gemini/commands/impeccable/clarify.md +173 -0
- package/src/template/design-system/.gemini/commands/impeccable/colorize.md +152 -0
- package/src/template/design-system/.gemini/commands/impeccable/critique.md +112 -0
- package/src/template/design-system/.gemini/commands/impeccable/delight.md +311 -0
- package/src/template/design-system/.gemini/commands/impeccable/extract.md +88 -0
- package/src/template/design-system/.gemini/commands/impeccable/harden.md +351 -0
- package/src/template/design-system/.gemini/commands/impeccable/normalize.md +61 -0
- package/src/template/design-system/.gemini/commands/impeccable/onboard.md +236 -0
- package/src/template/design-system/.gemini/commands/impeccable/optimize.md +262 -0
- package/src/template/design-system/.gemini/commands/impeccable/polish.md +196 -0
- package/src/template/design-system/.gemini/commands/impeccable/quieter.md +112 -0
- package/src/template/design-system/.gemini/commands/impeccable/simplify.md +131 -0
- package/src/template/design-system/.gemini/commands/impeccable/teach-impeccable.md +67 -0
- package/src/template/design-system/.gemini/skills/frontend-design/SKILL.md +126 -0
- package/src/template/design-system/.gemini/skills/frontend-design/reference/color-and-contrast.md +132 -0
- package/src/template/design-system/.gemini/skills/frontend-design/reference/interaction-design.md +123 -0
- package/src/template/design-system/.gemini/skills/frontend-design/reference/motion-design.md +99 -0
- package/src/template/design-system/.gemini/skills/frontend-design/reference/responsive-design.md +114 -0
- package/src/template/design-system/.gemini/skills/frontend-design/reference/spatial-design.md +100 -0
- package/src/template/design-system/.gemini/skills/frontend-design/reference/typography.md +131 -0
- package/src/template/design-system/.gemini/skills/frontend-design/reference/ux-writing.md +107 -0
- package/src/template/design-system/src/components/DesignPage.tsx +104 -0
- package/src/template/package-lock.json +10308 -0
- package/src/template/design-system/.claude/commands/design-os/design-tokens.md +0 -166
- package/src/template/design-system/.claude/skills/frontend-design/SKILL.md +0 -42
- /package/src/template/design-system/{.claude → .gemini}/commands/design-os/data-model.md +0 -0
- /package/src/template/design-system/{.claude → .gemini}/commands/design-os/design-screen.md +0 -0
- /package/src/template/design-system/{.claude → .gemini}/commands/design-os/export-product.md +0 -0
- /package/src/template/design-system/{.claude → .gemini}/commands/design-os/product-roadmap.md +0 -0
- /package/src/template/design-system/{.claude → .gemini}/commands/design-os/product-vision.md +0 -0
- /package/src/template/design-system/{.claude → .gemini}/commands/design-os/sample-data.md +0 -0
- /package/src/template/design-system/{.claude → .gemini}/commands/design-os/screenshot-design.md +0 -0
- /package/src/template/design-system/{.claude → .gemini}/commands/design-os/shape-section.md +0 -0
- /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
|
-
|
|
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'),
|
|
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'),
|
|
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'),
|
|
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
|
+
"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:
|
|
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
|
-
|
|
129
|
-
//
|
|
130
|
-
|
|
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
|
-
|
|
30
|
+
Review the roadmap sections and consult Impeccable principles for the layout.
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
35
|
+
Common patterns:
|
|
36
36
|
|
|
37
|
-
**A. Sidebar
|
|
38
|
-
|
|
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
|
|
41
|
-
|
|
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
|
|
44
|
-
|
|
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
|
|
56
|
-
- "Any additional items in the navigation?
|
|
57
|
-
- "What should the
|
|
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
|
-
|
|
70
|
-
- [Nav Item 3] → [Section]
|
|
71
|
-
- [Additional items like Settings, Help]
|
|
69
|
+
...
|
|
72
70
|
|
|
73
|
-
**
|
|
74
|
-
-
|
|
75
|
-
-
|
|
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
|
-
|
|
97
|
-
- [Nav Item 2] → [Section 2]
|
|
98
|
-
- [Nav Item 3] → [Section 3]
|
|
99
|
-
- [Any additional nav items]
|
|
95
|
+
...
|
|
100
96
|
|
|
101
|
-
##
|
|
102
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
131
|
+
The navigation component.
|
|
135
132
|
|
|
136
133
|
### UserMenu.tsx
|
|
137
|
-
The user menu
|
|
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
|
-
|
|
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
|
-
<
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
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`
|
|
212
|
-
- `src/shell/components
|
|
213
|
-
- `src/shell/
|
|
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
|
-
**
|
|
211
|
+
**Impeccable Features:**
|
|
212
|
+
- **Navigation**: Clean, accessible, spacious.
|
|
213
|
+
- **Aesthetics**: Using your custom palette and fonts.
|
|
214
|
+
- **Motion**: Smooth transitions.
|
|
226
215
|
|
|
227
|
-
|
|
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
|
+
```
|