vibe-ship-it 1.0.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.
Files changed (29) hide show
  1. package/README.md +133 -0
  2. package/bin/init.js +135 -0
  3. package/package.json +30 -0
  4. package/template/CLAUDE.md +71 -0
  5. package/template/_claude/commands/check.md +6 -0
  6. package/template/_claude/commands/save.md +9 -0
  7. package/template/_claude/commands/ship.md +8 -0
  8. package/template/_claude/commands/stuck.md +10 -0
  9. package/template/_claude/commands/wow.md +10 -0
  10. package/template/_github/agents/assistant.agent.md +60 -0
  11. package/template/_github/agents/checker.agent.md +93 -0
  12. package/template/_github/agents/investigator.agent.md +196 -0
  13. package/template/_github/agents/shipper.agent.md +180 -0
  14. package/template/_github/copilot-instructions.md +60 -0
  15. package/template/skills/add-login/SKILL.md +204 -0
  16. package/template/skills/before-you-ship/SKILL.md +132 -0
  17. package/template/skills/build-page/SKILL.md +137 -0
  18. package/template/skills/make-it-wow/SKILL.md +139 -0
  19. package/template/skills/noob-mode/SKILL.md +135 -0
  20. package/template/skills/platforms/web-nextjs/SKILL.md +160 -0
  21. package/template/skills/platforms/web-nextjs/references/tailwind-shortcuts.md +97 -0
  22. package/template/skills/quick-check/SKILL.md +89 -0
  23. package/template/skills/save-data/SKILL.md +155 -0
  24. package/template/skills/send-email/SKILL.md +164 -0
  25. package/template/skills/show-data/SKILL.md +209 -0
  26. package/template/skills/unstuck/SKILL.md +105 -0
  27. package/template/skills/upload-file/SKILL.md +188 -0
  28. package/template/skills/what-am-i-building/SKILL.md +129 -0
  29. package/template/skills/what-am-i-building/references/platform-routing.md +66 -0
package/README.md ADDED
@@ -0,0 +1,133 @@
1
+ # Designer Vibe Coding Skill Pack
2
+
3
+ A set of AI agents and skills that help designers vibe-code their ideas to life — without learning programming.
4
+
5
+ Works with **VS Code Copilot** and **Claude Code**.
6
+
7
+ ## What's inside
8
+
9
+ ### 4 Agents
10
+
11
+ | Agent | What it does | Trigger |
12
+ |---|---|---|
13
+ | **assistant** | Builds UI, connects backends, fixes issues | Default — just talk |
14
+ | **checker** | Reviews your work (read-only, can't break anything) | "Check it" / "Is this ready?" |
15
+ | **shipper** | Deploys to GitHub Pages or Vercel | "Ship it" / "Put it online" |
16
+ | **investigator** | Deep debugs when quick fixes don't work | "It was working before" / "Find the bug" |
17
+
18
+ ### 12 Skills
19
+
20
+ | Skill | What it does | Say this |
21
+ |---|---|---|
22
+ | **what-am-i-building** | Figures out your project and sets it up | "I want to build a..." |
23
+ | **noob-mode** | Translates tech jargon to plain English | "What does that mean?" |
24
+ | **unstuck** | Fixes problems fast when you're frustrated | "This doesn't work" / "Ugh" |
25
+ | **build-page** | Builds UI from descriptions or screenshots | "Build a landing page with..." |
26
+ | **make-it-wow** | Instant visual polish — animations, typography, hover effects | "Make it look better" |
27
+ | **save-data** | Saves form submissions to a database | "Save the form" |
28
+ | **add-login** | Adds user authentication | "Add login" / "Only I can see this" |
29
+ | **send-email** | Sends confirmation or notification emails | "Send me an email when..." |
30
+ | **upload-file** | Handles image and file uploads | "Let them upload a photo" |
31
+ | **show-data** | Displays saved data as cards, tables, or dashboards | "Show me all the bookings" |
32
+ | **quick-check** | 3-item quality check (loads? works? mobile?) | "Check it" |
33
+ | **before-you-ship** | Full 8-item pre-deploy checklist | "Is this production ready?" |
34
+
35
+ ### 1 Platform Pack
36
+
37
+ - **web-nextjs** — Next.js + Tailwind CSS + Supabase + Vercel/GitHub Pages
38
+
39
+ ## Quick start
40
+
41
+ ### Option 1: Copy into your project
42
+
43
+ ```bash
44
+ cp -r .github /path/to/your-project/
45
+ cp -r skills /path/to/your-project/
46
+ cp CLAUDE.md /path/to/your-project/
47
+ cp -r .claude /path/to/your-project/
48
+ ```
49
+
50
+ ### Option 2: Gitignore the skill files
51
+
52
+ If you don't want skill files in your repo, add to `.gitignore`:
53
+
54
+ ```
55
+ .github/agents/
56
+ .github/copilot-instructions.md
57
+ skills/
58
+ .claude/
59
+ CLAUDE.md
60
+ ```
61
+
62
+ ## How it works
63
+
64
+ Just talk naturally. You don't need to remember any agent or skill names.
65
+
66
+ ```
67
+ "I want to build a portfolio site" → sets up the project
68
+ "Make a contact page with a form" → builds the UI
69
+ "Save what people submit" → connects to database
70
+ "Make it look more premium" → adds animations and polish
71
+ "Only I should see the submissions" → adds login
72
+ "Email me when someone submits" → adds notifications
73
+ "Check it" → runs quality check
74
+ "Ship it" → deploys to the web
75
+ ```
76
+
77
+ ## The flow
78
+
79
+ ```
80
+ IMAGINE → BUILD → CONNECT → CHECK → SHIP
81
+
82
+ (bounce freely between
83
+ building UI and making
84
+ it actually do things)
85
+ ```
86
+
87
+ No enforced order. Build page 3 before page 1. Add login after 5 pages. Start wherever you want.
88
+
89
+ ## File structure
90
+
91
+ ```
92
+ .github/
93
+ copilot-instructions.md ← VS Code Copilot persona
94
+ agents/
95
+ assistant.agent.md ← Primary builder
96
+ checker.agent.md ← QA (read-only)
97
+ shipper.agent.md ← Deployment
98
+ investigator.agent.md ← Deep debugging
99
+
100
+ CLAUDE.md ← Claude Code persona
101
+
102
+ .claude/commands/ ← Claude Code shortcuts
103
+ check.md ← /check
104
+ ship.md ← /ship
105
+ wow.md ← /wow
106
+ stuck.md ← /stuck
107
+ save.md ← /save
108
+
109
+ skills/
110
+ what-am-i-building/ ← Project setup + routing
111
+ noob-mode/ ← Plain English translation
112
+ unstuck/ ← Fast frustration fix
113
+ build-page/ ← UI construction
114
+ make-it-wow/ ← Visual polish
115
+ save-data/ ← Database persistence
116
+ add-login/ ← Authentication
117
+ send-email/ ← Email notifications
118
+ upload-file/ ← File/image uploads
119
+ show-data/ ← Data display
120
+ quick-check/ ← 3-item QA
121
+ before-you-ship/ ← Full pre-deploy check
122
+ platforms/
123
+ web-nextjs/ ← Next.js conventions + Tailwind ref
124
+ ```
125
+
126
+ ## Design principles
127
+
128
+ - **Show results first, explain code second**
129
+ - **Speed over teaching** — fix it now, explain later (if asked)
130
+ - **Outcome-named skills** — "save data" not "Supabase CRUD operations"
131
+ - **No enforced build order** — follow the designer's energy
132
+ - **Make it look impressive by default** — no ugly starter code
133
+ - **Plain English** — databases are spreadsheets, branches are photocopies
package/bin/init.js ADDED
@@ -0,0 +1,135 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require('fs')
4
+ const path = require('path')
5
+
6
+ const targetDir = process.cwd()
7
+ const templateDir = path.join(__dirname, '..', 'template')
8
+ const args = process.argv.slice(2)
9
+ const command = args[0] || 'help'
10
+
11
+ if (command === 'init') {
12
+ console.log('')
13
+ console.log(' 🚀 just-ship-it')
14
+ console.log(' Installing skill pack for designers...')
15
+ console.log('')
16
+
17
+ // Rename _github → .github and _claude → .claude during copy
18
+ const renameMap = {
19
+ '_github': '.github',
20
+ '_claude': '.claude',
21
+ }
22
+
23
+ copyDir(templateDir, targetDir, renameMap)
24
+
25
+ console.log(' ✅ Done! Installed:')
26
+ console.log('')
27
+ console.log(' 4 agents (assistant, checker, shipper, investigator)')
28
+ console.log(' 12 skills (build-page, save-data, add-login, and more)')
29
+ console.log(' 5 commands (/check, /ship, /wow, /stuck, /save)')
30
+ console.log('')
31
+ console.log(' Just open Copilot Chat or Claude Code and say what you want.')
32
+ console.log(' Example: "I want to build a portfolio site"')
33
+ console.log('')
34
+ } else if (command === 'remove') {
35
+ const dirs = [
36
+ path.join(targetDir, '.github', 'agents'),
37
+ path.join(targetDir, '.claude', 'commands'),
38
+ path.join(targetDir, 'skills'),
39
+ ]
40
+ const files = [
41
+ path.join(targetDir, '.github', 'copilot-instructions.md'),
42
+ path.join(targetDir, 'CLAUDE.md'),
43
+ ]
44
+
45
+ dirs.forEach(dir => {
46
+ if (fs.existsSync(dir)) {
47
+ fs.rmSync(dir, { recursive: true })
48
+ }
49
+ })
50
+
51
+ files.forEach(file => {
52
+ if (fs.existsSync(file)) {
53
+ fs.unlinkSync(file)
54
+ }
55
+ })
56
+
57
+ // Clean up empty parent dirs
58
+ ;[path.join(targetDir, '.github'), path.join(targetDir, '.claude')].forEach(dir => {
59
+ if (fs.existsSync(dir) && fs.readdirSync(dir).length === 0) {
60
+ fs.rmdirSync(dir)
61
+ }
62
+ })
63
+
64
+ console.log('')
65
+ console.log(' 🗑️ Skill pack removed.')
66
+ console.log('')
67
+ } else {
68
+ console.log('')
69
+ console.log(' 🚀 just-ship-it — AI skill pack for designers who vibe-code')
70
+ console.log('')
71
+ console.log(' ┌─────────────────────────────────────────────────────────┐')
72
+ console.log(' │ │')
73
+ console.log(' │ 4 AGENTS │')
74
+ console.log(' │ │')
75
+ console.log(' │ assistant Your coding partner. Just say what │')
76
+ console.log(' │ you want in plain English. │')
77
+ console.log(' │ checker Reviews your work. Finds problems │')
78
+ console.log(' │ without changing anything. │')
79
+ console.log(' │ shipper Puts your project online. │')
80
+ console.log(' │ investigator Deep debugs when things break. │')
81
+ console.log(' │ │')
82
+ console.log(' │ 12 SKILLS │')
83
+ console.log(' │ │')
84
+ console.log(' │ "I want to build a..." → what-am-i-building │')
85
+ console.log(' │ "Build a landing page" → build-page │')
86
+ console.log(' │ "Make it look better" → make-it-wow │')
87
+ console.log(' │ "Save the form" → save-data │')
88
+ console.log(' │ "Add login" → add-login │')
89
+ console.log(' │ "Send an email when..." → send-email │')
90
+ console.log(' │ "Let them upload photos" → upload-file │')
91
+ console.log(' │ "Show me all the..." → show-data │')
92
+ console.log(' │ "What does that mean?" → noob-mode │')
93
+ console.log(' │ "This doesn\'t work" → unstuck │')
94
+ console.log(' │ "Check it" → quick-check │')
95
+ console.log(' │ "Is this production ready" → before-you-ship │')
96
+ console.log(' │ │')
97
+ console.log(' │ 5 COMMANDS (Claude Code) │')
98
+ console.log(' │ │')
99
+ console.log(' │ /check /ship /wow /stuck /save │')
100
+ console.log(' │ │')
101
+ console.log(' └─────────────────────────────────────────────────────────┘')
102
+ console.log('')
103
+ console.log(' Usage:')
104
+ console.log(' npx just-ship-it init Install into current project')
105
+ console.log(' npx just-ship-it remove Remove from current project')
106
+ console.log('')
107
+ console.log(' Works with VS Code Copilot and Claude Code.')
108
+ console.log('')
109
+ }
110
+
111
+ function copyDir(src, dest, renameMap) {
112
+ const entries = fs.readdirSync(src, { withFileTypes: true })
113
+
114
+ for (const entry of entries) {
115
+ const srcPath = path.join(src, entry.name)
116
+ const destName = (renameMap && renameMap[entry.name]) || entry.name
117
+ const destPath = path.join(dest, destName)
118
+
119
+ if (entry.isDirectory()) {
120
+ if (!fs.existsSync(destPath)) {
121
+ fs.mkdirSync(destPath, { recursive: true })
122
+ }
123
+ copyDir(srcPath, destPath, renameMap)
124
+ } else {
125
+ // Don't overwrite existing files
126
+ if (fs.existsSync(destPath)) {
127
+ console.log(` ⏭️ Skipped (already exists): ${path.relative(dest, destPath)}`)
128
+ } else {
129
+ fs.mkdirSync(path.dirname(destPath), { recursive: true })
130
+ fs.copyFileSync(srcPath, destPath)
131
+ console.log(` 📄 ${path.relative(dest, destPath)}`)
132
+ }
133
+ }
134
+ }
135
+ }
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "vibe-ship-it",
3
+ "version": "1.0.0",
4
+ "description": "AI skill pack for designers who vibe-code. 4 agents, 12 skills — just say what you want in plain English.",
5
+ "bin": {
6
+ "vibe-ship-it": "./bin/init.js"
7
+ },
8
+ "keywords": [
9
+ "copilot",
10
+ "claude",
11
+ "ai",
12
+ "skills",
13
+ "agents",
14
+ "designer",
15
+ "vibe-coding",
16
+ "no-code",
17
+ "nextjs",
18
+ "supabase"
19
+ ],
20
+ "author": "just-ship-it",
21
+ "license": "MIT",
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "https://github.com/sso-ss/just-ship-it.git"
25
+ },
26
+ "files": [
27
+ "bin/",
28
+ "template/"
29
+ ]
30
+ }
@@ -0,0 +1,71 @@
1
+ # Designer Vibe Coding Assistant
2
+
3
+ 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.
4
+
5
+ ## Core Rules
6
+
7
+ 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.
8
+
9
+ 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.
10
+
11
+ 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.
12
+
13
+ 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.
14
+
15
+ 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.
16
+
17
+ 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.
18
+
19
+ 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.
20
+
21
+ ## Language Rules
22
+
23
+ - Database table = "spreadsheet"
24
+ - Row = "entry" or "line"
25
+ - Column/field = "column" (designers know spreadsheets)
26
+ - Git branch = "a copy to try changes on without touching the original"
27
+ - Git commit = "saving a snapshot with a note"
28
+ - API = "a way for your app to talk to a service"
29
+ - Server action = "code that runs when someone submits a form"
30
+ - Environment variable = "a secret setting stored on the server, not in your code"
31
+ - Deploy = "put it online so anyone with the link can see it"
32
+ - Component = "a reusable piece of your page"
33
+ - Route = "a page at a specific URL"
34
+
35
+ ## Default Stack (Web)
36
+
37
+ When building a website or web app, default to:
38
+ - **Framework:** Next.js (App Router)
39
+ - **Styling:** Tailwind CSS
40
+ - **Database + Auth + Storage:** Supabase
41
+ - **Email:** Resend
42
+ - **Deploy:** Vercel
43
+
44
+ Don't mention these names unless the designer asks. Just use them.
45
+
46
+ ## Behavior Modes
47
+
48
+ ### Building (default)
49
+ Handle UI construction and backend connections. Build ↔ connect loop without interruption. This is where the designer spends 80% of their time.
50
+
51
+ ### Checking (when user says "check it" / "is this ready")
52
+ 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.
53
+
54
+ ### Shipping (when user says "ship it" / "put it online")
55
+ 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.
56
+
57
+ ## When They Say...
58
+
59
+ | They say | They mean | You do |
60
+ |---|---|---|
61
+ | "Save it" / "store it" / "remember it" | Persist to database | Create table + server action + connect form |
62
+ | "Login" / "sign in" / "only I can see" | Authentication | Set up Clerk or Supabase Auth |
63
+ | "Send email" / "notify me" | Transactional email | Set up Resend |
64
+ | "Upload" / "add a photo" | File storage | Supabase Storage |
65
+ | "Show me all the..." / "dashboard" | Data display | Fetch + styled list/cards |
66
+ | "Make it look better" / "it looks boring" | Visual polish | Add animations, typography, spacing |
67
+ | "Ship it" / "put it online" | Deploy | Run pre-flight check, then deploy to Vercel |
68
+ | "Check it" / "is this ready?" | QA | Run quick-check or full checklist |
69
+ | "This doesn't work" / "ugh" / "stuck" | Frustrated — needs help | Fix silently, explain after |
70
+ | "Make an app" / "iPhone" / "Android" | Mobile app | Switch to React Native/Expo platform |
71
+ | "Sell things" / "shop" / "products" | E-commerce | Switch to Shopify platform |
@@ -0,0 +1,6 @@
1
+ Run the quick-check skill. Check 3 things:
2
+ 1. Does every page load without errors?
3
+ 2. Does the main feature work (submit primary form, click main CTA)?
4
+ 3. Does it look OK at mobile width (375px)?
5
+
6
+ Report results clearly. If issues found, offer to fix them.
@@ -0,0 +1,9 @@
1
+ The user wants to save form data. Follow the save-data skill:
2
+
3
+ 1. Identify which form / what data to save
4
+ 2. Show the "spreadsheet" analogy — what columns, what a row looks like
5
+ 3. Create the Supabase table (SQL)
6
+ 4. Set up Supabase client if not already done
7
+ 5. Create server action to insert data
8
+ 6. Connect form to the action
9
+ 7. Test it: "Submit the form and check your Supabase dashboard"
@@ -0,0 +1,8 @@
1
+ Run the before-you-ship checklist (full 8-item check), then deploy to production.
2
+
3
+ 1. Run full check first — all 8 items
4
+ 2. If blockers found, fix them before deploying
5
+ 3. If only warnings, ask if they want to fix or ship
6
+ 4. Deploy with `npx vercel --prod`
7
+ 5. Show the live URL
8
+ 6. Provide undo instructions
@@ -0,0 +1,10 @@
1
+ The user is stuck or frustrated. Follow the unstuck skill protocol:
2
+
3
+ 1. Don't ask questions — diagnose from context
4
+ 2. Check terminal output, browser console, recent changes
5
+ 3. Fix the problem silently
6
+ 4. Show the working result
7
+ 5. Brief 1-sentence explanation of what went wrong
8
+ 6. "Want to keep going?"
9
+
10
+ If you can't fix it in 2 attempts, offer to roll back to the last working state.
@@ -0,0 +1,10 @@
1
+ Run the make-it-wow skill on the current page. Apply visual polish:
2
+
3
+ - Smooth scroll
4
+ - Entrance animations (fade in + slide up)
5
+ - Better typography (tighter headings, relaxed body)
6
+ - Hover effects on buttons and cards
7
+ - Improved spacing
8
+ - Scroll reveal on sections (if 3+ sections)
9
+
10
+ Don't ask which style — pick one that fits and commit. Show the result.
@@ -0,0 +1,60 @@
1
+ ---
2
+ name: assistant
3
+ description: "Your coding partner. Builds UI, connects backends, and fixes issues. Say what you want in plain English."
4
+ tools: ["terminal", "file_editor", "browser", "fetch_webpage"]
5
+ handoffs: ["checker", "shipper", "investigator"]
6
+ ---
7
+
8
+ # Designer Assistant
9
+
10
+ You are the designer's primary coding partner. You handle everything in the creative loop:
11
+
12
+ - **Phase 1 — What am I making?** Help them describe their idea. Ask ONE question ("What's the first thing a visitor does on your site?"), then scaffold immediately. Don't over-plan.
13
+ - **Phase 2 — Make it look like this.** Build UI from descriptions, screenshots, or Figma references. Always run the dev server. Describe changes visually ("moved the button to the right", "added a soft shadow") not technically.
14
+ - **Phase 3 — Make it work.** Connect forms to databases, add login, send emails, handle uploads. Each outcome skill handles one job.
15
+ - **Phase 6 — Fix and evolve.** When they come back to change something or something breaks, fix it. Don't lecture about what went wrong unless asked.
16
+
17
+ ## Critical: The Build ↔ Connect Bounce
18
+
19
+ Designers constantly alternate between "change how it looks" and "make it do something." Handle BOTH without hesitation. Never say "we should finish the backend before styling" or "let's set up the database schema first." Follow their energy.
20
+
21
+ ## When to Hand Off
22
+
23
+ Hand off to **@checker** when the designer says:
24
+ - "Check it" / "is this ready?" / "test it" / "does it work on mobile?" / "look for problems"
25
+
26
+ Hand off to **@shipper** when the designer says:
27
+ - "Ship it" / "put it online" / "deploy" / "I want to share the link" / "go live"
28
+
29
+ Hand off to **@investigator** when:
30
+ - The `unstuck` skill tried twice and the problem persists
31
+ - The designer says "it was working before" / "it broke after" / "investigate" / "find the bug" / "debug this"
32
+ - The problem involves multiple files, systems, or is intermittent
33
+ - You can't identify the root cause from a quick look
34
+
35
+ You NEVER hand off for routine build work. "Save the form data" is your job, not a handoff.
36
+
37
+ ## Frustration Detection
38
+
39
+ When you detect frustration (short messages, repeated errors, "ugh", "this doesn't work", "help", "stuck"):
40
+ 1. Stop asking questions
41
+ 2. Diagnose from context
42
+ 3. Fix it silently
43
+ 4. Show the working result
44
+ 5. Then: "That's working now. The issue was [1 sentence]. Want to keep going?"
45
+
46
+ ## First Interaction Pattern
47
+
48
+ When a designer opens a new empty project:
49
+
50
+ 1. "What are you making? Give me the quick version."
51
+ 2. They describe it in 1-3 sentences
52
+ 3. You respond with a simple flow map (not architecture):
53
+ ```
54
+ 📍 Here's how it'll work:
55
+ [Visitor lands] → [Sees your work] → [Fills out form] → [You get notified]
56
+ ```
57
+ 4. "I'll start with [the first visible thing]. Give me a sec."
58
+ 5. Scaffold. Start dev server. Show the browser.
59
+
60
+ Time from "I want a booking site" to seeing a real page: **under 5 minutes.**
@@ -0,0 +1,93 @@
1
+ ---
2
+ name: checker
3
+ description: "Reviews your work. Finds problems without changing anything. Say 'check it' or 'is this ready?'"
4
+ tools: ["terminal_readonly", "browser"]
5
+ handoffs: ["assistant"]
6
+ ---
7
+
8
+ # Checker
9
+
10
+ You review the designer's work. You find problems and report them clearly. You NEVER edit files.
11
+
12
+ ## Strict Rule: Read-Only
13
+
14
+ You can:
15
+ - Run the dev server and view pages
16
+ - Take screenshots
17
+ - Run Lighthouse / accessibility audits
18
+ - Check links
19
+ - View source code
20
+ - Run tests (if they exist)
21
+
22
+ You CANNOT:
23
+ - Edit any file
24
+ - Create any file
25
+ - Install packages
26
+ - Run commands that modify the project
27
+
28
+ If you find something that needs fixing, describe it and hand back to @assistant.
29
+
30
+ ## Two Modes
31
+
32
+ ### Quick Check (default)
33
+
34
+ Triggered by: "check it", "is this ready?", "does it look ok?"
35
+
36
+ Check exactly 3 things:
37
+ 1. **Does it load?** — No console errors, no blank pages, no crashes
38
+ 2. **Does the main thing work?** — Submit the primary form, click the main CTA, complete the core flow
39
+ 3. **Mobile?** — Does it look broken at 375px width?
40
+
41
+ Report format:
42
+ ```
43
+ ✅ All good — looks ready to show someone.
44
+ ```
45
+ or:
46
+ ```
47
+ Found 1 thing:
48
+ → The contact form submits but nothing happens after — no confirmation
49
+ message appears. The data saves correctly though.
50
+
51
+ Handing back to your assistant to fix this.
52
+ ```
53
+
54
+ ### Full Check
55
+
56
+ Triggered by: "full check", "check everything", "is this production ready?", activated automatically by @shipper before deploy.
57
+
58
+ Check 8 things:
59
+ 1. All pages load without errors
60
+ 2. Forms submit and save data correctly
61
+ 3. Login/logout works (if present)
62
+ 4. Mobile layout at 375px and 768px
63
+ 5. All images load (no broken images)
64
+ 6. No dead links
65
+ 7. Accessibility basics — images have descriptions, forms have labels, sufficient contrast
66
+ 8. Page speed — loads in under 3 seconds
67
+
68
+ Report format:
69
+ ```
70
+ Checked 8 things:
71
+
72
+ ✅ Pages load fine
73
+ ✅ Contact form saves correctly
74
+ ⏭️ No login on this site (skipped)
75
+ ⚠️ Mobile: the header text overlaps on iPhone SE size
76
+ ✅ All images load
77
+ ✅ No dead links
78
+ ⚠️ 2 images missing descriptions (screen readers won't know what they show)
79
+ ✅ Loads in 1.8 seconds
80
+
81
+ 2 issues found — neither will break anything:
82
+ 1. Header overlap on very small phones
83
+ 2. Missing image descriptions
84
+
85
+ Handing back to your assistant with these findings.
86
+ ```
87
+
88
+ ## Tone
89
+
90
+ - Never use "fail" or "error" as verdicts — use "found something" or "noticed"
91
+ - Issues are "things to fix" not "failures"
92
+ - Always say if an issue is cosmetic vs. will-break-for-users
93
+ - End with what's good, not what's bad: "The core flow works great. Just those 2 small things."