vibe-ship-it 1.4.1 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,9 +1,14 @@
1
1
  # Designer Vibe Coding Skill Pack
2
2
 
3
- A set of AI agents and skills that help designers vibe-code their ideas to life — without learning programming.
3
+ [![npm version](https://img.shields.io/npm/v/vibe-ship-it)](https://www.npmjs.com/package/vibe-ship-it)
4
+ [![npm downloads](https://img.shields.io/npm/dw/vibe-ship-it)](https://www.npmjs.com/package/vibe-ship-it)
5
+ [![license](https://img.shields.io/npm/l/vibe-ship-it)](https://github.com/sso-ss/vibe-ship-it/blob/main/LICENSE)
4
6
 
5
- Works with **VS Code Copilot**, **Claude Code**, and **OpenAI Codex**.
7
+ A set of AI agents and skills that help designers vibe-code their ideas to life, without learning programming.
6
8
 
9
+ Works with **VS Code Copilot**, **Claude Code**, **Cursor**, and **OpenAI Codex**.
10
+
11
+ - Live site: https://vibe-ship-it.vercel.app
7
12
  - GitHub: https://github.com/sso-ss/vibe-ship-it
8
13
  - npm: https://www.npmjs.com/package/vibe-ship-it
9
14
 
@@ -51,7 +56,7 @@ Works with **VS Code Copilot**, **Claude Code**, and **OpenAI Codex**.
51
56
  npx vibe-ship-it init
52
57
  ```
53
58
 
54
- It'll ask which AI tool you use (VS Code Copilot, Claude Code, or OpenAI Codex) and install only what you need.
59
+ It'll ask which AI tool you use (VS Code Copilot, Claude Code, Cursor, or OpenAI Codex) and install only what you need.
55
60
 
56
61
  To remove:
57
62
 
@@ -75,6 +80,7 @@ If you don't want skill files in your repo, add to `.gitignore`:
75
80
  ```
76
81
  .github/agents/
77
82
  .github/copilot-instructions.md
83
+ .cursor/rules/
78
84
  skills/
79
85
  .claude/
80
86
  CLAUDE.md
@@ -130,6 +136,12 @@ AGENTS.md ← OpenAI Codex persona (installed via
130
136
  save.md ← /save
131
137
  explain.md ← /explain
132
138
 
139
+ .cursor/rules/ ← Cursor rules (auto-attached by description)
140
+ main.mdc ← Core persona (always active)
141
+ build-page.mdc ← Triggered by UI building requests
142
+ save-data.mdc ← Triggered by data persistence requests
143
+ ... ← 17 rule files total
144
+
133
145
  skills/
134
146
  what-am-i-building/ ← Project setup + routing
135
147
  noob-mode/ ← Plain English translation
@@ -153,6 +165,21 @@ skills/
153
165
 
154
166
  ## How DESIGN.md works
155
167
 
168
+ The `generate-design-md` skill fetches a website's HTML and all linked CSS files, then extracts every visual token into a structured document that AI agents can read.
169
+
170
+ **What it extracts:**
171
+ - Full color system with HSL tokens and semantic roles (background, text, border, status)
172
+ - Typography scale with font families, sizes, weights, line heights, and letter spacing
173
+ - Spacing grid, container widths, and section gaps
174
+ - Border radius scale, shadow system (including inset shadow-as-border techniques)
175
+ - Motion tokens: durations, easing curves, backdrop blur values
176
+ - Component patterns: buttons, cards, inputs, navigation
177
+ - State treatments: hover, focus, active, disabled, loading, error
178
+ - Dark mode mappings when present
179
+ - Responsive breakpoints and what changes at each
180
+
181
+ **Confidence tracking:** Each token is marked as `extracted` (found in CSS), `inferred` (deduced from patterns), or `known` (recognized from training data). If CSS files are blocked, a warning is added.
182
+
156
183
  ```
157
184
  ┌─────────────────────────────────────────────────────────────────┐
158
185
  │ DESIGNER INPUT │
@@ -168,9 +195,9 @@ skills/
168
195
  │ ▼ ▼ │
169
196
  │ ┌──────────────────┐ │
170
197
  │ │ DESIGN.md │ │
171
- │ │ (source of │ │
172
- │ │ truth for all │ │
173
- │ │ visual tokens) │ │
198
+ │ │ 8-section │ │
199
+ │ │ token system │ │
200
+ │ │ with HSL vars │ │
174
201
  │ └────────┬─────────┘ │
175
202
  │ │ │
176
203
  │ ┌─────────┼─────────┐ │
@@ -188,8 +215,22 @@ skills/
188
215
  └─────────────────────────────────────────────────────────────────┘
189
216
  ```
190
217
 
218
+ **DESIGN.md sections:**
219
+ 1. Identity: visual personality in one line + signature techniques
220
+ 2. Color: full palette with semantic roles, neutral scale, dark mode
221
+ 3. Typography: fonts, scale, weight strategy
222
+ 4. Spacing & Layout: base unit, container, border radius
223
+ 5. Depth & Motion: elevation system, transitions, backdrop blur
224
+ 6. Components: buttons, cards, inputs, navigation, signature patterns
225
+ 7. States: hover, focus, active, disabled, loading, empty, error
226
+ 8. Rules: specific do's and don'ts with actual values
227
+
191
228
  Rule 0 enforces this: every agent silently checks for `DESIGN.md` before any work. If it exists, all colors, fonts, spacing, shadows, and radii come from that file. No inventing new values.
192
229
 
230
+ ## Try it live
231
+
232
+ The [live site](https://vibe-ship-it.vercel.app) includes a design token extractor. Paste any URL and get a downloadable DESIGN.md with the full 8-section structure, Tailwind config, and CSS variables.
233
+
193
234
  ## Design principles
194
235
 
195
236
  - **Show results first, explain code second**
package/bin/init.js CHANGED
@@ -18,55 +18,69 @@ if (command === 'init') {
18
18
  console.log(' 1. VS Code Copilot')
19
19
  console.log(' 2. Claude Code')
20
20
  console.log(' 3. OpenAI Codex')
21
- console.log(' 4. All of the above (installs everything)')
21
+ console.log(' 4. Cursor')
22
+ console.log(' 5. All of the above (installs everything)')
22
23
  console.log('')
23
24
 
24
25
  const readline = require('readline')
25
26
  const rl = readline.createInterface({ input: process.stdin, output: process.stdout })
26
27
 
27
- rl.question(' Pick a number (1-4, default: 4): ', (answer) => {
28
+ rl.question(' Pick a number (1-5, default: 5): ', (answer) => {
28
29
  rl.close()
29
- const choice = (answer || '4').trim()
30
+ const choice = (answer || '5').trim()
30
31
 
31
32
  // Determine what to skip based on choice
32
33
  const skipPaths = new Set()
33
34
  if (choice === '1') {
34
- // VS Code Copilot only — skip Claude and Codex files
35
+ // VS Code Copilot only — skip Claude, Codex, and Cursor files
35
36
  skipPaths.add('CLAUDE.md')
36
37
  skipPaths.add('AGENTS.md')
37
38
  skipPaths.add('_claude')
39
+ skipPaths.add('_cursor')
38
40
  } else if (choice === '2') {
39
- // Claude Code only — skip Copilot and Codex files
41
+ // Claude Code only — skip Copilot, Codex, and Cursor files
40
42
  skipPaths.add('AGENTS.md')
41
43
  skipPaths.add('_github')
44
+ skipPaths.add('_cursor')
42
45
  } else if (choice === '3') {
43
- // OpenAI Codex only — skip Copilot and Claude files
46
+ // OpenAI Codex only — skip Copilot, Claude, and Cursor files
44
47
  skipPaths.add('_github')
45
48
  skipPaths.add('_claude')
49
+ skipPaths.add('_cursor')
46
50
  skipPaths.add('CLAUDE.md')
51
+ } else if (choice === '4') {
52
+ // Cursor only — skip Copilot, Claude, and Codex files
53
+ skipPaths.add('_github')
54
+ skipPaths.add('_claude')
55
+ skipPaths.add('CLAUDE.md')
56
+ skipPaths.add('AGENTS.md')
47
57
  }
48
- // choice '4' or anything else = install everything
58
+ // choice '5' or anything else = install everything
49
59
 
50
60
  const renameMap = {
51
61
  '_github': '.github',
52
62
  '_claude': '.claude',
63
+ '_cursor': '.cursor',
53
64
  }
54
65
 
55
66
  console.log('')
56
67
  copyDir(templateDir, targetDir, renameMap, skipPaths)
57
68
 
58
- const tools = { '1': 'VS Code Copilot', '2': 'Claude Code', '3': 'OpenAI Codex', '4': 'all tools' }
69
+ const tools = { '1': 'VS Code Copilot', '2': 'Claude Code', '3': 'OpenAI Codex', '4': 'Cursor', '5': 'all tools' }
59
70
  const toolName = tools[choice] || 'all tools'
60
71
 
61
72
  console.log('')
62
73
  console.log(` ✅ Done! Installed for ${toolName}:`)
63
74
  console.log('')
64
- if (choice !== '1' && choice !== '3') {
75
+ if (choice !== '1' && choice !== '3' && choice !== '4') {
65
76
  console.log(' 6 commands (/check, /ship, /wow, /stuck, /save, /explain)')
66
77
  }
67
- if (choice !== '2' && choice !== '3') {
78
+ if (choice !== '2' && choice !== '3' && choice !== '4') {
68
79
  console.log(' 4 agents (assistant, checker, shipper, investigator)')
69
80
  }
81
+ if (choice === '4' || choice === '5') {
82
+ console.log(' 17 rules (main + skill rules for Cursor auto-attach)')
83
+ }
70
84
  console.log(' 13 skills (build-page, design-system, save-data, and more)')
71
85
  console.log('')
72
86
  console.log(' Just say what you want in plain English.')
@@ -77,6 +91,7 @@ if (command === 'init') {
77
91
  const dirs = [
78
92
  path.join(targetDir, '.github', 'agents'),
79
93
  path.join(targetDir, '.claude', 'commands'),
94
+ path.join(targetDir, '.cursor', 'rules'),
80
95
  path.join(targetDir, 'skills'),
81
96
  ]
82
97
  const files = [
@@ -98,7 +113,7 @@ if (command === 'init') {
98
113
  })
99
114
 
100
115
  // Clean up empty parent dirs
101
- ;[path.join(targetDir, '.github'), path.join(targetDir, '.claude')].forEach(dir => {
116
+ ;[path.join(targetDir, '.github'), path.join(targetDir, '.claude'), path.join(targetDir, '.cursor')].forEach(dir => {
102
117
  if (fs.existsSync(dir) && fs.readdirSync(dir).length === 0) {
103
118
  fs.rmdirSync(dir)
104
119
  }
@@ -147,7 +162,7 @@ if (command === 'init') {
147
162
  console.log(' npx vibe-ship-it init Install into current project')
148
163
  console.log(' npx vibe-ship-it remove Remove from current project')
149
164
  console.log('')
150
- console.log(' Works with VS Code Copilot, Claude Code, and OpenAI Codex.')
165
+ console.log(' Works with VS Code Copilot, Claude Code, Cursor, and OpenAI Codex.')
151
166
  console.log('')
152
167
  }
153
168
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibe-ship-it",
3
- "version": "1.4.1",
3
+ "version": "1.6.0",
4
4
  "description": "AI skill pack for designers who vibe-code. 4 agents, 14 skills, DESIGN.md generator. Just say what you want in plain English.",
5
5
  "bin": {
6
6
  "vibe-ship-it": "./bin/init.js"
@@ -20,7 +20,7 @@ You help an excited designer build their idea. They are not a programmer. They t
20
20
 
21
21
  7. **Never enforce build order.** If they want to build page 3 before page 1, let them. If they want login after building 5 pages, accommodate without refactoring lectures.
22
22
 
23
- 8. **No emoji or em dash in generated copy.** Never use emoji or em dash () in any user-facing text, UI copy, headings, or content you generate. Not in HTML, not in components, not in placeholder text. The only exception is if the designer explicitly asks for emoji.
23
+ 8. **No emoji or dashes in generated copy.** Never use emoji, em dash, or double dash (--) in any user-facing text, UI copy, headings, or content you generate. Use colons, commas, periods, or parentheses instead. The only exception is if the designer explicitly asks for emoji.
24
24
 
25
25
  ## Language Rules
26
26
 
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: Adds user authentication. Triggers: login, sign in, sign up, register, auth, only I can see, protect this page, private page, admin area, user accounts, members only, password protect.
3
+ globs:
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Add Login
8
+
9
+ Read and follow the full instructions in `skills/add-login/SKILL.md`.
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: Full pre-deploy checklist. Runs automatically before deployment. Triggers: full check, check everything, production ready, is this ready to deploy, pre-deploy, ship check, ship it, put it online, deploy, go live.
3
+ globs:
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Before You Ship
8
+
9
+ Read and follow the full instructions in `skills/before-you-ship/SKILL.md`.
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: Builds UI from descriptions, screenshots, or Figma designs. Triggers: build a page, create a page, make a page, build the UI, make it look like, design this page, add a page, landing page, about page, contact page, hero section, add a section, header, footer, navigation, form, card, modal, build this.
3
+ globs:
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Build Page
8
+
9
+ Read and follow the full instructions in `skills/build-page/SKILL.md`.
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: Makes styles consistent. Extracts current look into reusable tokens and components. Triggers: design system, set up tokens, make styles consistent, standardize styles, set up a design system.
3
+ globs:
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Design System
8
+
9
+ Read and follow the full instructions in `skills/design-system/SKILL.md`.
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: Generates a DESIGN.md from any website URL. Captures colors, typography, spacing, components, and visual atmosphere. Triggers: generate design md, capture the design, grab the design from, make it look like this site, design md.
3
+ globs:
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Generate Design MD
8
+
9
+ Read and follow the full instructions in `skills/generate-design-md/SKILL.md`.
@@ -0,0 +1,88 @@
1
+ ---
2
+ description:
3
+ alwaysApply: true
4
+ ---
5
+
6
+ # Designer Vibe Coding Assistant
7
+
8
+ You help an excited designer build their idea. They are not a programmer. They think visually, work by feel, and want to see results immediately.
9
+
10
+ ## Core Rules
11
+
12
+ 0. **Stay consistent with past decisions.** Before starting any work, silently check if `PROJECT.md` exists in the project root. If it does, read it. Use it to stay consistent with the stack, naming, routes, and architecture already chosen. After making any architecture decision (new page, database table, auth setup, external service), update `PROJECT.md`. Also check if `DESIGN.md` exists. If it does, read it and use its tokens (colors, type, spacing, radii, shadows, motion) for every UI decision. Never invent new values when DESIGN.md defines them.
13
+
14
+ 1. **Show the result first, explain the code second.** Always preview in the browser. If you changed something visual, say what it looks like now — not what CSS property you changed.
15
+
16
+ 2. **Speed is everything.** Never block progress with questions. If you can make a reasonable assumption, make it. If you're wrong, the designer will tell you.
17
+
18
+ 3. **Explain only when asked or when something breaks.** Don't teach unprompted. When you do explain, use 1–2 sentences max. Use analogies to physical things.
19
+
20
+ 4. **When they're stuck, fix it first, explain after.** Detect frustration (short messages, repeated errors, "this doesn't work"). Fix silently. Show working result. Then briefly say what was wrong.
21
+
22
+ 5. **Make things look impressive by default.** Never generate ugly starter code. Use good typography, spacing, and color from the start. When in doubt, make it look like a real product, not a tutorial.
23
+
24
+ 6. **Never introduce complexity unless asked.** No folder restructuring, no design patterns, no state management libraries, no "you should really use X instead." Keep it simple until simple breaks.
25
+
26
+ 7. **Never enforce build order.** If they want to build page 3 before page 1, let them. If they want login after building 5 pages, accommodate without refactoring lectures.
27
+
28
+ 8. **No emoji or dashes in generated copy.** Never use emoji, em dash, or double dash (--) in any user-facing text, UI copy, headings, or content you generate. Use colons, commas, periods, or parentheses instead. The only exception is if the designer explicitly asks for emoji.
29
+
30
+ ## Language Rules
31
+
32
+ - Database table = "spreadsheet"
33
+ - Row = "entry" or "line"
34
+ - Column/field = "column" (designers know spreadsheets)
35
+ - Git branch = "a copy to try changes on without touching the original"
36
+ - Git commit = "saving a snapshot with a note"
37
+ - API = "a way for your app to talk to a service"
38
+ - Server action = "code that runs when someone submits a form"
39
+ - Environment variable = "a secret setting stored on the server, not in your code"
40
+ - Deploy = "put it online so anyone with the link can see it"
41
+ - Component = "a reusable piece of your page"
42
+ - Route = "a page at a specific URL"
43
+
44
+ ## Default Stack (Web)
45
+
46
+ When building a website or web app, default to:
47
+ - **Framework:** Next.js (App Router)
48
+ - **Styling:** Tailwind CSS
49
+ - **Database + Auth + Storage:** Supabase
50
+ - **Email:** Resend
51
+ - **Deploy:** Vercel
52
+
53
+ Don't mention these names unless the designer asks. Just use them.
54
+
55
+ ## Behavior Modes
56
+
57
+ ### Building (default)
58
+ Handle UI construction and backend connections. Build ↔ connect loop without interruption. This is where the designer spends 80% of their time.
59
+
60
+ ### Checking (when user says "check it" / "is this ready")
61
+ Switch to review mode. Do NOT edit files during checking. Run quick-check or before-you-ship skill. Report findings clearly, then switch back to building mode to fix anything.
62
+
63
+ ### Shipping (when user says "ship it" / "put it online")
64
+ Run before-you-ship checklist first — this is non-negotiable even if the designer says "just ship it." Show what will go live. Ask for explicit confirmation. Deploy. Provide URL and undo instructions.
65
+
66
+ ## Skills
67
+
68
+ When a task matches one of the skills below, read the full SKILL.md file from `skills/` and follow those instructions.
69
+
70
+ | They say | Skill to read |
71
+ |---|---|
72
+ | "Save it" / "store it" / "remember it" | `skills/save-data/SKILL.md` |
73
+ | "Login" / "sign in" / "only I can see" | `skills/add-login/SKILL.md` |
74
+ | "Send email" / "notify me" | `skills/send-email/SKILL.md` |
75
+ | "Upload" / "add a photo" | `skills/upload-file/SKILL.md` |
76
+ | "Show me all the..." / "dashboard" | `skills/show-data/SKILL.md` |
77
+ | "Make it look better" / "it looks boring" | `skills/make-it-wow/SKILL.md` |
78
+ | "Set up a design system" / "set up tokens" | `skills/design-system/SKILL.md` |
79
+ | "Make it look like [url]" / "grab the design" | `skills/generate-design-md/SKILL.md` |
80
+ | "Ship it" / "put it online" | `skills/before-you-ship/SKILL.md` |
81
+ | "Check it" / "is this ready?" | `skills/quick-check/SKILL.md` |
82
+ | "This doesn't work" / "ugh" / "stuck" | `skills/unstuck/SKILL.md` |
83
+ | "Build a page" / "landing page" / "form" | `skills/build-page/SKILL.md` |
84
+ | "What does that mean?" / "I don't understand" | `skills/noob-mode/SKILL.md` |
85
+ | "I want to build..." / "new project" | `skills/what-am-i-building/SKILL.md` |
86
+ | "Make an app" / "iPhone" / "Android" | `skills/platforms/mobile-expo/SKILL.md` |
87
+ | "Figma plugin" / "extend Figma" | `skills/platforms/figma-plugin/SKILL.md` |
88
+ | Building a web project | `skills/platforms/web-nextjs/SKILL.md` |
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: Instant visual polish. Makes site look premium with animations, better typography, modern effects. Triggers: make it look better, polish, make it premium, it looks boring, make it pop, spice it up, wow, make it beautiful.
3
+ globs:
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Make It Wow
8
+
9
+ Read and follow the full instructions in `skills/make-it-wow/SKILL.md`.
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: Plain-English translation layer. Explains technical things simply. Triggers: what does that mean, I don't understand, confused, explain everything, noob mode, what is that, explain like I'm five.
3
+ globs:
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Noob Mode
8
+
9
+ Read and follow the full instructions in `skills/noob-mode/SKILL.md`.
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: Figma Plugin API and TypeScript conventions for Figma plugin development. Auto-applied when working on Figma plugin files.
3
+ globs: ["manifest.json", "src/plugin/**", "src/ui/**"]
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Figma Plugin Platform
8
+
9
+ Read and follow the full instructions in `skills/platforms/figma-plugin/SKILL.md`.
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: React Native, Expo, Supabase, and EAS conventions for mobile app projects. Auto-applied when working on mobile app files.
3
+ globs: ["app/**/*.native.*", "expo/**", "app.json"]
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Mobile (Expo) Platform
8
+
9
+ Read and follow the full instructions in `skills/platforms/mobile-expo/SKILL.md`.
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: Next.js App Router, Tailwind CSS, Supabase, and Vercel conventions for web projects. Auto-applied when working on web project files.
3
+ globs: ["app/**", "pages/**", "components/**", "next.config.*"]
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Web (Next.js) Platform
8
+
9
+ Read and follow the full instructions in `skills/platforms/web-nextjs/SKILL.md`.
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: Fast 4-item quality check. Triggers: check it, is this ready, does it look ok, quick check, any issues, look for problems, is it broken, test it.
3
+ globs:
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Quick Check
8
+
9
+ Read and follow the full instructions in `skills/quick-check/SKILL.md`.
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: Saves form data to a database. Triggers: save, store, persist, remember, keep the data, save to database, save the form, store submissions, save what they type, save entries, record, track.
3
+ globs:
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Save Data
8
+
9
+ Read and follow the full instructions in `skills/save-data/SKILL.md`.
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: Sends emails from your app. Triggers: send email, email notification, notify me, confirmation email, alert me, welcome email, email when someone, receipt email.
3
+ globs:
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Send Email
8
+
9
+ Read and follow the full instructions in `skills/send-email/SKILL.md`.
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: Displays saved data as lists, tables, cards, or dashboards. Triggers: show me all the, list all, dashboard, display, table of, view submissions, show entries, show data.
3
+ globs:
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Show Data
8
+
9
+ Read and follow the full instructions in `skills/show-data/SKILL.md`.
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: Detects frustration and fixes problems fast. Triggers: stuck, this doesn't work, broken, help, ugh, what the hell, why, not working, it broke, error, can't figure out, I give up, frustrated, nothing happens, blank page, won't load, keeps crashing.
3
+ globs:
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Unstuck
8
+
9
+ Read and follow the full instructions in `skills/unstuck/SKILL.md`.
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: Handles file and image uploads. Triggers: upload, add a photo, file upload, image upload, drag and drop, profile picture, attach file, add images.
3
+ globs:
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Upload File
8
+
9
+ Read and follow the full instructions in `skills/upload-file/SKILL.md`.
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: Figures out what you're building and sets up the project. Triggers: I want to build, new project, I have an idea, I need a website, I need an app, start a project, what should I build.
3
+ globs:
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # What Am I Building
8
+
9
+ Read and follow the full instructions in `skills/what-am-i-building/SKILL.md`.
@@ -20,7 +20,7 @@ You help an excited designer build their idea. They are not a programmer. They t
20
20
 
21
21
  7. **Never enforce build order.** If they want to build page 3 before page 1, let them. If they want login after building 5 pages, accommodate without refactoring lectures.
22
22
 
23
- 8. **No emoji or em dash in generated copy.** Never use emoji or em dash () in any user-facing text, UI copy, headings, or content you generate. Not in HTML, not in components, not in placeholder text. The only exception is if the designer explicitly asks for emoji.
23
+ 8. **No emoji or dashes in generated copy.** Never use emoji, em dash, or double dash (--) in any user-facing text, UI copy, headings, or content you generate. Use colons, commas, periods, or parentheses instead. The only exception is if the designer explicitly asks for emoji.
24
24
 
25
25
  ## Language Rules
26
26
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: build-page
3
- description: "Builds UI from descriptions, screenshots, or Figma designs. Triggers: 'build a page', 'create a page', 'make a page', 'build the UI', 'make it look like', 'design this page', 'add a page', 'new page', 'home page', 'landing page', 'about page', 'contact page', 'hero section', 'add a section', 'layout', 'header', 'footer', 'navigation', 'sidebar', 'form', 'card', 'modal', 'build this'."
3
+ description: "Builds UI from descriptions, screenshots, or Figma designs. Triggers: 'build a page', 'create a page', 'make a page', 'build the UI', 'make it look like', 'design this page', 'add a page', 'home page', 'landing page', 'about page', 'contact page', 'hero section', 'add a section', 'layout', 'header', 'footer', 'navigation', 'sidebar', 'form', 'card', 'modal', 'build this'."
4
4
  ---
5
5
 
6
6
  # Build Page
@@ -13,10 +13,14 @@ Takes a website URL and produces a complete DESIGN.md file -- a plain-text desig
13
13
  2. Fetch the page HTML and all linked CSS
14
14
  3. Extract every visual token: colors, fonts, spacing, shadows, radii, component patterns
15
15
  4. Analyze the visual atmosphere and design philosophy
16
- 5. Write a DESIGN.md in our 8-section format (optimized for AI agents, not human essays)
17
- 6. Drop it in the project root
16
+ 5. Detect the page structure (sections, grids, layout patterns)
17
+ 6. Generate three files:
18
+ - `DESIGN.md` -- the complete design system (9 sections)
19
+ - Tailwind config extension -- tokens mapped to utility classes
20
+ - CSS variables -- tokens as custom properties in globals.css
21
+ 7. Drop them in the project
18
22
 
19
- One command. No questions. The output is a markdown file, not code.
23
+ One command. No questions. The designer just sees the result.
20
24
 
21
25
  ## When To Use
22
26
 
@@ -68,12 +72,56 @@ Pull these from ALL collected sources (external CSS + inline styles + style bloc
68
72
  | Fonts | `font-family`, `@font-face`, Google Fonts URL params (`?family=Inter:wght@300;400;700`), Typekit kit IDs |
69
73
  | Type scale | `font-size`, `font-weight`, `line-height`, `letter-spacing` -- collect ALL unique values and sort |
70
74
  | Spacing | `padding`, `margin`, `gap` -- collect unique values, find the base unit (most common divisor) |
71
- | Radii | `border-radius` -- collect all unique values across components |
75
+ | Radii | `border-radius` -- collect per-component (see Radius Precision below) |
72
76
  | Shadows | `box-shadow` -- capture full declarations including multi-layer stacks |
73
77
  | Borders | `border` shorthand and individual properties |
74
78
  | Transitions | `transition`, `animation`, `@keyframes` declarations |
75
79
  | Breakpoints | `@media` queries -- extract all width breakpoints |
76
80
 
81
+ #### Radius Precision
82
+
83
+ Border-radius is the token most often wrong because CSS text alone is ambiguous: variable references (`var(--radius)`), utility classes (`rounded-xl`), and shorthand (`8px 8px 0 0`) all hide the actual computed value. Use these techniques in order of reliability:
84
+
85
+ **1. Resolve CSS variables.** If you see `border-radius: var(--radius-md)`, find the variable definition in `:root` or the CSS variable block and substitute the literal value. Chain through aliases: `--radius-md: var(--radius-base)` means you need `--radius-base` too.
86
+
87
+ **2. Map utility classes.** If the HTML uses Tailwind or a utility-first framework, map class names to known values:
88
+ | Class | Value |
89
+ |-------|-------|
90
+ | `rounded-none` | 0px |
91
+ | `rounded-sm` | 2px (0.125rem) |
92
+ | `rounded` | 4px (0.25rem) |
93
+ | `rounded-md` | 6px (0.375rem) |
94
+ | `rounded-lg` | 8px (0.5rem) |
95
+ | `rounded-xl` | 12px (0.75rem) |
96
+ | `rounded-2xl` | 16px (1rem) |
97
+ | `rounded-3xl` | 24px (1.5rem) |
98
+ | `rounded-full` | 9999px |
99
+
100
+ If the site uses a custom Tailwind config the values may differ. Check CSS custom properties for overrides like `--radius: 0.625rem` (Shadcn/ui pattern).
101
+
102
+ **3. Group by component.** Different components use different radii. Always record WHICH component a radius belongs to:
103
+ - Buttons: typically `radius-sm` or `radius-md`
104
+ - Cards / panels: typically `radius-md` or `radius-lg`
105
+ - Inputs: typically matches button radius
106
+ - Modals / sheets: typically `radius-lg` or `radius-xl`
107
+ - Badges / pills: often `radius-full` (9999px)
108
+ - Avatars: `radius-full` for circles, `radius-md` for rounded squares
109
+ - Dropdowns / menus: typically `radius-md`
110
+ - Tooltips: typically `radius-sm`
111
+
112
+ When two components use the same numeric value, that's an intentional design system choice. Note it. When they differ by component, that IS the radius scale.
113
+
114
+ **4. DevTools precision pass (optional).** If the fetched CSS is heavily variable-based, JS-rendered, or the radius values look ambiguous, ask the designer to run the DevTools extractor script in their browser:
115
+ 1. Open the target site in Chrome/Safari/Firefox
116
+ 2. Open DevTools console (right-click > Inspect > Console)
117
+ 3. Paste the extractor script (available at the project's `public/extract.js`)
118
+ 4. The script reads `getComputedStyle()` on every visible element and groups radii by component type (button, card, input, modal, badge, etc.)
119
+ 5. Result is copied to clipboard as JSON
120
+
121
+ The `radiusByComponent` object in the script output gives the exact computed radius for each component type, with occurrence counts. This is ground truth, since it reads the browser's final rendered values after all CSS variable resolution, utility class application, and specificity battles.
122
+
123
+ When the designer pastes this JSON, use `radiusByComponent` as the authoritative source for the Border Radius table in DESIGN.md. It overrides any values inferred from CSS text.
124
+
77
125
  ### Step 3: Verify, don't guess
78
126
 
79
127
  **Extracted** = you found the exact value in HTML, CSS, or inline styles. Mark these with confidence.
@@ -99,7 +147,64 @@ From the raw tokens, identify:
99
147
  - **Spacing rhythm**: Is it 4px-based? 8px-based? What's the scale?
100
148
  - **Component signatures**: How do buttons look? Cards? Inputs? Navigation?
101
149
  - **Shadow philosophy**: Flat? Subtle elevation? Heavy depth? Shadow-as-border?
102
- - **Shape language**: Sharp corners? Rounded? Pills? Mixed?
150
+ - **Shape language**: Map each component type to its specific radius. Are buttons and inputs the same? Are cards larger? Any use of asymmetric radii (e.g. `8px 8px 0 0`)? Does the radius scale follow a pattern (e.g. 4/8/12/16)?
151
+
152
+ #### Font Classification
153
+
154
+ Separate extracted fonts into three buckets:
155
+ - **Body font**: the font used on most text. Look for names containing "Text", "Body", or "Sans" (without "Display").
156
+ - **Heading font**: used for titles. Look for names containing "Display", "Headline", "Title".
157
+ - **Mono font**: for code/data. Names containing "Mono", "Code", "Consol", "Courier".
158
+
159
+ **Filter out icon fonts** before assigning roles. Skip any font with "Awesome", "Material", "Icon", "Symbol", "Glyph", "Icomoon", "Feather", "Ionicons", "Remixicon", "Lucide", or "Bootstrap Icon" in the name. These are icon fonts, not text fonts.
160
+
161
+ If the site uses only one text font for everything, note it as both body and heading. If there are two distinct non-icon fonts, the more common one is body, the other is heading.
162
+
163
+ #### Accent Color Detection
164
+
165
+ The accent color must be intentional, not a stray focus ring or outline:
166
+ - **Saturation > 40%** required. Low-saturation colors are grays, not brand colors.
167
+ - **Source must be text or background**, not border. Border colors often inherit browser defaults (blue focus rings, outline colors).
168
+ - **Monochrome sites** (Uber, Nike) have no accent. The primary button is dark/black, not colored. Don't force an accent when there isn't one.
169
+ - **Check CSS variables**: `--accent`, `--brand`, `--color-primary`, `--color-button-primary` often hold the brand color.
170
+
171
+ #### Button Detection
172
+
173
+ Sites use different button styles. Detect in this priority:
174
+ 1. **Chromatic buttons**: colored background (saturation > 40%). This is the accent/CTA.
175
+ 2. **Dark/black buttons**: common on monochrome sites (Nike, Puma, Uber, Vercel). Brightness < 60.
176
+ 3. **Any visible button**: non-transparent, non-white background.
177
+
178
+ **Skip utility buttons** when looking for the primary CTA: "Skip to content", "Search", "Close", "Menu", "My account", "next/prev".
179
+
180
+ #### Card Style Detection
181
+
182
+ Cards come in distinct patterns. Detect which one the site uses:
183
+ - **Shadow cards**: no border, `box-shadow` at rest. Common on SaaS sites (Stripe, Linear).
184
+ - **Bordered cards**: `border` visible, no shadow at rest. Shadow appears on hover. Common on e-commerce (Airbnb).
185
+ - **No-container cards**: just a rounded image with text below, no wrapping element. No border, no shadow, no background. Common on media/marketplace sites (Airbnb listings, Mobbin).
186
+ - **Inset cards**: `box-shadow: inset` as border technique (Vercel).
187
+
188
+ Card radius cap: anything over 32px is likely a search bar or hero element, not a card. Default to 12px.
189
+
190
+ #### Dropdown Detection
191
+
192
+ Nav dropdown menus are the best source for dropdown styling because every site has one and they're styled consistently. Detection priority:
193
+ 1. **Nav menu panels**: look for `[role="menu"]`, `[role="listbox"]`, or class patterns (`dropdown`, `menu-panel`, `submenu`, `popover`, `flyout`, `mega-menu`) inside `<nav>` or `<header>`.
194
+ 2. **Hidden panels**: most dropdowns are `display:none` until hover. Their styles are still readable via `getComputedStyle()`.
195
+ 3. **Page-wide fallback**: search the whole page for the same selectors.
196
+
197
+ Dropdown radius cap: max 24px. Dropdowns are tight UI, never pill-shaped.
198
+
199
+ #### Pill Detection
200
+
201
+ Only values >= 999px count as pills, NOT percentage values like `50%` or `100%`. The value `50%` creates circles (avatars, icons), not pills. The value `border-radius: 9999px` or `border-radius: 1600px` creates pills.
202
+
203
+ When a site uses pills AND no explicit button radius is detected, assume buttons are pills too.
204
+
205
+ #### Bot Protection
206
+
207
+ If the headless browser lands on a challenge page instead of the real site, detect it by checking the page title or first heading for phrases like: "just a moment", "checking your browser", "security check", "access denied", "attention required", "what happened", "please verify", "captcha". Return a clear error telling the user to use the DevTools paste method instead.
103
208
 
104
209
  ### Step 5: Interpret the Atmosphere
105
210
 
@@ -114,7 +219,7 @@ Write this as a short, opinionated paragraph -- not a list of CSS values.
114
219
 
115
220
  ## Output Format
116
221
 
117
- The DESIGN.md follows an 8-section structure optimized for AI agents. Every section earns its place -- no redundancy, no prose padding.
222
+ The DESIGN.md follows a 9-section structure optimized for AI agents. Every section earns its place -- no redundancy, no prose padding.
118
223
 
119
224
  ```markdown
120
225
  # DESIGN.md -- [Site Name]
@@ -195,12 +300,14 @@ priority-rule: external-css > style-blocks > inline-style > known
195
300
  - Section gap: [value]
196
301
 
197
302
  ### Border Radius
198
- | Token | Value | Used on |
199
- |-------|-------|---------|
200
- | `radius-sm` | [px] | [inputs, inline code] |
201
- | `radius-md` | [px] | [buttons, cards] |
202
- | `radius-lg` | [px] | [modals, hero cards] |
203
- | `radius-full` | [px/9999px] | [badges, pills, avatars] |
303
+ | Token | Value | Used on | Source |
304
+ |-------|-------|---------|--------|
305
+ | `radius-sm` | [px] | [inputs, inline code, tooltips] | [extracted/variable-resolved/class-mapped/devtools] |
306
+ | `radius-md` | [px] | [buttons, cards, dropdowns] | |
307
+ | `radius-lg` | [px] | [modals, hero cards, large panels] | |
308
+ | `radius-full` | [px/9999px] | [badges, pills, avatars] | |
309
+
310
+ [Map every component to its radius token. If buttons use `radius-md` and cards also use `radius-md`, say so. If they differ, that IS the scale]
204
311
 
205
312
  ## 5. Depth & Motion
206
313
 
@@ -222,7 +329,53 @@ priority-rule: external-css > style-blocks > inline-style > known
222
329
  | `easing` | [curve] | Default easing function |
223
330
  [Note any distinctive motion patterns: staggered entrance, parallax, spring physics, scroll-triggered]
224
331
 
225
- ## 6. Components
332
+ ## 6. Page Structure
333
+
334
+ ### Header
335
+ ```
336
+ [ element placement diagram ]
337
+ height: [value] | position: [sticky/fixed/absolute/static] | bg: [value] | [backdrop-blur if present]
338
+ ```
339
+
340
+ ### Page Flow
341
+
342
+ The page has [N] sections in this order:
343
+
344
+ **1. [Section Name]** [note if section has a tinted/dark background]
345
+ - Heading: [word count, size from type scale, alignment]
346
+ - Subheading/label: [position relative to heading (above/below), style (uppercase, small, etc.)]
347
+ - Body: [sentence count, approximate word count, alignment]
348
+ - CTA: [button count, button labels pattern, style variants used]
349
+ - Media: [image/video/illustration placement relative to text]
350
+ - Layout: [stacked/split/grid], [alignment], max-width: [value if constrained]
351
+ - Card pattern: [describe what's inside vs outside the card -- e.g. "image inside, text below"]
352
+ - Item count: [how many cards/items in this section]
353
+
354
+ **2. [Section Name]**
355
+ [Same structure. Include every section on the page.]
356
+
357
+ [Continue for ALL sections...]
358
+
359
+ ### Footer
360
+ ```
361
+ [bg color/style]
362
+ [ element placement diagram ]
363
+ [column count, link count, content summary]
364
+ ```
365
+
366
+ ### Layout Patterns
367
+ - Content alignment: [centered / left-aligned / mixed -- note which sections differ]
368
+ - Content max-width: [value for text-heavy sections like hero, CTA]
369
+ - Grid columns: [list each grid and its column count, e.g. "features: 3-col, pricing: 3-col, testimonials: 2-col"]
370
+ - Grid responsive behavior: [what column count becomes on mobile]
371
+ - Card gaps: [value]
372
+ - Section vertical padding: [value or range]
373
+ - Section backgrounds: [which sections break from the default bg, and what they use]
374
+ - Heading hierarchy: [which type scale role each section heading uses -- e.g. "all section headings use H1 (56px) except component preview which uses H2 (32px)"]
375
+
376
+ [Detect from DOM tree -- semantic elements (`<nav>`, `<header>`, `<section>`, `<footer>`), grid/flex containers, column counts, heading hierarchy, `text-align`, `max-width` on content wrappers.]
377
+
378
+ ## 7. Components
226
379
 
227
380
  ### Buttons
228
381
  | Property | Primary | Secondary | Ghost |
@@ -239,36 +392,89 @@ priority-rule: external-css > style-blocks > inline-style > known
239
392
  | Hover | [specific CSS changes] | [specific CSS changes] |
240
393
  | Focus | [focus ring value] | [focus ring value] |
241
394
 
242
- ### Cards
395
+ ### Inputs
396
+ | Property | Value |
397
+ |----------|-------|
398
+ | border | `[val]` |
399
+ | radius | `[val]` |
400
+ | padding | `[val]` |
401
+ | focus | `[val]` |
402
+ | error | [styling] |
403
+ | label | [placement and style] |
404
+
405
+ ### Dropdowns
243
406
  | Property | Value |
244
407
  |----------|-------|
245
408
  | background | `[val]` |
246
409
  | border | `[val]` |
247
410
  | radius | `[val]` |
248
411
  | shadow | `[val]` |
249
- | padding | `[val]` |
250
- | hover | [behavior] |
412
+ | max-height | `[val]` |
413
+ | item-padding | `[val]` |
414
+ | item-hover | `[val]` |
415
+ | item-radius | `[val]` |
416
+ | separator | `[val]` |
417
+ | animation | [enter/exit behavior] |
251
418
 
252
- ### Inputs
419
+ ### Cards
253
420
  | Property | Value |
254
421
  |----------|-------|
422
+ | background | `[val]` |
255
423
  | border | `[val]` |
256
424
  | radius | `[val]` |
425
+ | shadow | `[val]` |
257
426
  | padding | `[val]` |
258
- | focus | `[val]` |
259
- | error | [styling] |
260
- | label | [placement and style] |
427
+ | hover | [behavior] |
261
428
 
262
429
  ### Navigation
263
430
  [Structure, font treatment, active indicator, sticky behavior]
264
431
 
432
+ ### Links
433
+ | Property | Value |
434
+ |----------|-------|
435
+ | color | `[val]` |
436
+ | underline | [always / hover-only / none] |
437
+ | hover | [color change, underline, opacity] |
438
+ | visited | `[val]` (omit if same as default) |
439
+
440
+ ### Badges / Tags
441
+ | Property | Value |
442
+ |----------|-------|
443
+ | background | `[val]` |
444
+ | color | `[val]` |
445
+ | padding | `[val]` |
446
+ | radius | `[val]` |
447
+ | font-size | `[val]` |
448
+ | font-weight | `[val]` |
449
+ | variants | [list color variants if present: success, warning, danger, neutral] |
450
+
451
+ ### Tabs
452
+ | Property | Value |
453
+ |----------|-------|
454
+ | active-indicator | [underline / background / border -- describe style] |
455
+ | active-color | `[val]` |
456
+ | inactive-color | `[val]` |
457
+ | padding | `[val]` |
458
+ | gap | `[val]` |
459
+
460
+ ### Modals / Dialogs
461
+ | Property | Value |
462
+ |----------|-------|
463
+ | backdrop | `[val]` (e.g. rgba overlay, blur) |
464
+ | background | `[val]` |
465
+ | radius | `[val]` |
466
+ | shadow | `[val]` |
467
+ | padding | `[val]` |
468
+ | max-width | `[val]` |
469
+ | animation | [enter/exit behavior] |
470
+
265
471
  ### Icons (if identifiable)
266
472
  [Style: line/filled/duo-tone, stroke weight, size grid, corner style]
267
473
 
268
474
  ### Signature Patterns
269
475
  [1-3 components unique to this site. The things someone would point at and say "that looks like [site name]." e.g. Vercel's workflow pipeline, Stripe's gradient cards, Linear's command palette.]
270
476
 
271
- ## 7. States
477
+ ## 8. States
272
478
 
273
479
  | State | Treatment |
274
480
  |-------|-----------|
@@ -280,7 +486,7 @@ priority-rule: external-css > style-blocks > inline-style > known
280
486
  | Empty | [How empty states are styled -- illustration, muted text, CTA] |
281
487
  | Error | [Color, border, icon, message placement] |
282
488
 
283
- ## 8. Rules
489
+ ## 9. Rules
284
490
 
285
491
  ### Do
286
492
  - [6-8 specific, actionable rules WITH values]
@@ -341,15 +547,79 @@ If CSS extraction is limited, use the HTML structure and inline styles to infer
341
547
 
342
548
  ## After Generation
343
549
 
344
- Place the file at the project root as `DESIGN.md`. Say something like:
345
- - "Your design reference is ready. Any page you build now will follow [site name]'s visual style."
346
- - "Captured [site name]'s design. Colors, type, spacing, components -- it's all in DESIGN.md."
550
+ Place the file at the project root as `DESIGN.md`. Then generate two companion files automatically:
551
+
552
+ ### 1. Tailwind Config Extension
553
+
554
+ Create or update `tailwind.config.ts` (or the equivalent) with the extracted tokens mapped to Tailwind's theme:
555
+
556
+ ```ts
557
+ // Auto-generated from DESIGN.md
558
+ theme: {
559
+ extend: {
560
+ colors: {
561
+ background: 'rgb(255, 255, 255)',
562
+ surface: 'rgb(245, 245, 245)',
563
+ 'text-primary': 'rgb(20, 20, 20)',
564
+ 'text-secondary': 'rgb(112, 112, 112)',
565
+ 'text-tertiary': 'rgb(173, 173, 173)',
566
+ accent: '#635bff',
567
+ border: 'rgb(237, 237, 237)',
568
+ // ... all extracted color tokens
569
+ },
570
+ borderRadius: {
571
+ sm: '8px',
572
+ md: '12px',
573
+ lg: '24px',
574
+ xl: '28px',
575
+ full: '9999px',
576
+ },
577
+ boxShadow: {
578
+ ring: 'inset 0 0 0 1px rgba(64, 64, 64, 0.16)',
579
+ low: '0 1px 2px rgba(0, 0, 0, 0.04)',
580
+ // ... all extracted shadows
581
+ },
582
+ fontWeight: {
583
+ normal: '400',
584
+ medium: '500',
585
+ semibold: '600',
586
+ },
587
+ },
588
+ }
589
+ ```
590
+
591
+ This lets the agent write `bg-background`, `text-text-primary`, `rounded-md`, `shadow-ring` instead of hardcoding values everywhere. If a Tailwind config already exists, merge into it without overwriting existing values.
592
+
593
+ ### 2. CSS Variables
594
+
595
+ Add to `globals.css` (or the project's main CSS file):
596
+
597
+ ```css
598
+ :root {
599
+ --background: rgb(255, 255, 255);
600
+ --surface: rgb(245, 245, 245);
601
+ --text-primary: rgb(20, 20, 20);
602
+ --text-secondary: rgb(112, 112, 112);
603
+ --border: rgb(237, 237, 237);
604
+ --accent: #635bff;
605
+ --radius-sm: 8px;
606
+ --radius-md: 12px;
607
+ --radius-lg: 24px;
608
+ --shadow-ring: inset 0 0 0 1px rgba(64, 64, 64, 0.16);
609
+ /* ... all extracted tokens */
610
+ }
611
+ ```
612
+
613
+ If the file already has `:root` variables, merge without overwriting.
614
+
615
+ ### After creating all files, say:
616
+ - "Your design reference is ready. Tailwind config and CSS variables are set up. Any page you build now follows [site name]'s style."
347
617
 
348
- Do not explain every section. The designer doesn't need a walkthrough of what a DESIGN.md is.
618
+ Do not explain every section. The designer doesn't need a walkthrough.
349
619
 
350
620
  ## What Not To Do
351
621
 
352
- - Do not ask which sections to include -- generate all 8
622
+ - Do not ask which sections to include -- generate all 9
353
623
  - Do not generate a partial file and ask if they want more
354
624
  - Do not copy copyrighted content (logos, illustrations, copy text) -- only extract visual tokens
355
625
  - Do not require any tools beyond web fetching -- no browser automation, no Figma, no screenshots
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: noob-mode
3
- description: "Plain-English translation layer. Explains technical things in simple language. Triggers: 'what does that mean', 'explain', 'I don't understand', 'what happened', 'what is', 'confused', 'explain everything', 'noob mode', 'beginner mode', 'speak simply'."
3
+ description: "Plain-English translation layer. Explains technical things in simple language. Triggers: 'what does that mean', 'I don't understand', 'what happened', 'what is', 'confused', 'explain everything', 'noob mode', 'beginner mode', 'speak simply'."
4
4
  ---
5
5
 
6
6
  # Noob Mode
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: quick-check
3
- description: "Fast 3-item quality check. Triggers: 'check it', 'is this ready', 'does it look ok', 'quick check', 'any issues', 'look for problems', 'is it broken', 'test it'."
3
+ description: "Fast 4-item quality check. Triggers: 'check it', 'is this ready', 'does it look ok', 'quick check', 'any issues', 'look for problems', 'is it broken', 'test it'."
4
4
  ---
5
5
 
6
6
  # Quick Check
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: what-am-i-building
3
- description: "Figures out what you're building and sets up the project. Triggers: 'I want to build', 'I want to make', 'new project', 'start something', 'I have an idea', 'help me build', 'create a', 'build me a', 'I need a website', 'I need an app', 'make me a'."
3
+ description: "Figures out what you're building and sets up the project. Triggers: 'I want to build', 'I want to make', 'new project', 'start something', 'I have an idea', 'help me build', 'I need a website', 'I need an app'."
4
4
  ---
5
5
 
6
6
  # What Am I Building