@kennethsolomon/shipkit 3.19.0 → 3.21.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 (32) hide show
  1. package/README.md +36 -4
  2. package/package.json +1 -1
  3. package/skills/sk:brainstorming/SKILL.md +19 -128
  4. package/skills/sk:debug/SKILL.md +44 -111
  5. package/skills/sk:e2e/SKILL.md +45 -97
  6. package/skills/sk:features/SKILL.md +44 -99
  7. package/skills/sk:frontend-design/SKILL.md +16 -32
  8. package/skills/sk:laravel-init/SKILL.md +8 -7
  9. package/skills/sk:laravel-new/SKILL.md +1 -0
  10. package/skills/sk:lint/SKILL.md +42 -62
  11. package/skills/sk:mvp/SKILL.md +81 -134
  12. package/skills/sk:perf/SKILL.md +24 -43
  13. package/skills/sk:review/SKILL.md +57 -93
  14. package/skills/sk:security-check/SKILL.md +37 -43
  15. package/skills/sk:seo-audit/SKILL.md +75 -96
  16. package/skills/sk:setup-claude/SKILL.md +154 -0
  17. package/skills/sk:setup-claude/references/skill-profiles.md +223 -0
  18. package/skills/sk:setup-claude/scripts/__pycache__/apply_setup_claude.cpython-314.pyc +0 -0
  19. package/skills/sk:setup-claude/scripts/apply_setup_claude.py +110 -10
  20. package/skills/sk:setup-claude/templates/.claude/rules/laravel.md.template +14 -0
  21. package/skills/sk:setup-claude/templates/CLAUDE.md.template +102 -247
  22. package/skills/sk:setup-claude/templates/commands/brainstorm.md.template +1 -1
  23. package/skills/sk:setup-claude/templates/commands/execute-plan.md.template +1 -1
  24. package/skills/sk:setup-claude/templates/commands/finish-feature.md.template +1 -1
  25. package/skills/sk:setup-claude/templates/commands/security-check.md.template +1 -1
  26. package/skills/sk:setup-claude/templates/commands/write-plan.md.template +1 -1
  27. package/skills/sk:setup-claude/tests/__pycache__/test_apply_setup_claude.cpython-314.pyc +0 -0
  28. package/skills/sk:setup-claude/tests/test_apply_setup_claude.py +267 -0
  29. package/skills/sk:setup-optimizer/SKILL.md +101 -17
  30. package/skills/sk:skill-creator/SKILL.md +115 -226
  31. package/skills/sk:website/SKILL.md +81 -149
  32. package/skills/sk:write-tests/SKILL.md +44 -110
@@ -6,7 +6,7 @@ argument-hint: "[--revise] [URL or brief]"
6
6
 
7
7
  # /sk:website — Client Website Builder
8
8
 
9
- Turn a brief, URL, or one sentence into a production-ready multi-page marketing website with real copy, real SEO, and a full client handoff package. Runs autonomously from intake to delivery.
9
+ Turn a brief, URL, or one sentence into a production-ready multi-page marketing website with real copy, real SEO, and a full client handoff package.
10
10
 
11
11
  ## This is NOT sk:mvp
12
12
 
@@ -20,7 +20,7 @@ Turn a brief, URL, or one sentence into a production-ready multi-page marketing
20
20
 
21
21
  ## Hard Rules
22
22
 
23
- - **Real copy always** — never Lorem ipsum, never `[Your Headline Here]`. Extract real facts and write specific copy.
23
+ - **Real copy always** — never Lorem ipsum, never `[Your Headline Here]`. Extract real facts, write specific copy.
24
24
  - **Multi-page by default** — Home, About, Services/Menu, Contact + niche-specific extras.
25
25
  - **Default stack: Next.js + Tailwind** — always respect existing project stack.
26
26
  - **WhatsApp is default contact for local businesses in PH/SEA** — auto-detect and inject.
@@ -39,15 +39,13 @@ Turn a brief, URL, or one sentence into a production-ready multi-page marketing
39
39
  | `/sk:website --revise` | Revision mode (Steps R1–R6) |
40
40
  | `/sk:website --stack nuxt` | Full build mode using Nuxt 3 + Vue 3 |
41
41
  | `/sk:website --stack laravel` | Full build mode using Laravel 11 + Blade |
42
- | `/sk:website --deploy` | Full build mode + Step 8 (deploy to Vercel/Netlify after build) |
42
+ | `/sk:website --deploy` | Full build mode + Step 8 (deploy after build) |
43
43
  | Flags combine freely | e.g., `--stack nuxt --deploy`, `--stack laravel --revise` |
44
44
 
45
45
  ---
46
46
 
47
47
  ## Stack Detection
48
48
 
49
- Determines which stack reference file to load in Step 3.
50
-
51
49
  | Priority | Signal | Stack |
52
50
  |---|---|---|
53
51
  | 1 | `--stack nuxt` flag | Nuxt 3 + Vue 3 + Tailwind → `references/stacks/nuxt.md` |
@@ -67,20 +65,16 @@ Read the matched stack reference at the start of Step 3 before writing any code.
67
65
 
68
66
  Accept any input. Never block on a missing detail — infer and proceed.
69
67
 
70
- **Option A: URL input**
71
-
72
- Use WebFetch to extract facts from any URL the user provides:
73
- - **Google Maps URL**business name, category, address, phone, hours, rating count, description
74
- - **Existing website URL** → name, tagline, services list, contact details, current copy, page structure
75
- - **Facebook/Instagram business page** → name, description, contact, category
68
+ **Option A: URL input** — Use WebFetch to extract:
69
+ - Google Maps URL → business name, category, address, phone, hours, rating count, description
70
+ - Existing website URL name, tagline, services, contact details, copy, page structure
71
+ - Facebook/Instagram business page → name, description, contact, category
76
72
 
77
73
  If WebFetch fails (JS-only page, redirect, paywall): fall back to Option B immediately. Don't retry.
78
74
 
79
- **Option B: Plain text / one sentence**
75
+ **Option B: Plain text / one sentence** — Extract: business name, type, location, services, CTA intent. Infer reasonable defaults for anything missing.
80
76
 
81
- Extract: business name, type, location, services, CTA intent. Infer reasonable defaults for anything missing.
82
-
83
- **After extraction**, display a compact confirmation and auto-proceed:
77
+ **After extraction**, display and auto-proceed:
84
78
 
85
79
  ```
86
80
  [Business Name] — [Type], [Location]
@@ -93,49 +87,28 @@ Stack: [detected stack — Next.js / Nuxt 3 / Laravel]
93
87
  Building...
94
88
  ```
95
89
 
96
- Do NOT wait for approval — auto-advance unless extracted facts are clearly ambiguous or contradictory.
90
+ Auto-advance unless extracted facts are clearly ambiguous or contradictory.
97
91
 
98
92
  ---
99
93
 
100
94
  ### Step 2 — Parallel Research
101
95
 
102
- Launch 3 agents simultaneously using the Agent tool (all in a single message, `subagent_type="general-purpose"`):
96
+ Launch 3 agents simultaneously via Agent tool (all in one message, `subagent_type="general-purpose"`):
103
97
 
104
98
  **Agent 1 — Strategy Agent**
105
- - Detect niche from business type using the niche detection table at the bottom of this file.
106
- - Read `references/niche/[detected-niche].md`.
107
- - Plan: final page set, sitemap, per-page section structure, CTA flow across all pages, shared nav/footer structure.
108
- - Output a structured plan with all pages + section outlines.
99
+ - Detect niche using the niche detection table below. Read `references/niche/[detected-niche].md`.
100
+ - Output: final page set, sitemap, per-page section structure, CTA flow, shared nav/footer structure.
109
101
 
110
102
  **Agent 2 — Copy Agent**
111
- - Read `references/content-seo.md`.
112
- - Read `references/niche/[detected-niche].md` for industry-specific messaging rules.
113
- - Write real copy using ONLY facts from Step 1. Never invent:
114
- - Hero headline + subheadline (specific to this business)
115
- - About section copy
116
- - Services/offerings copy (use real service names from the brief)
117
- - CTA copy aligned with the primary action
118
- - Footer tagline
119
- - Page title tag + meta description for every page
120
- - H1 for every page
121
- - Output all copy ready to inject directly into the build.
103
+ - Read `references/content-seo.md` and `references/niche/[detected-niche].md`.
104
+ - Write real copy using ONLY facts from Step 1. Never invent.
105
+ - Output (ready to inject): hero headline + subheadline, about section, services copy, CTA copy, footer tagline, title tag + meta description + H1 for every page.
122
106
 
123
107
  **Agent 3 — Art Direction Agent**
124
108
  - Read `references/art-direction.md`.
125
- - Based on business type + location + tone keywords in the brief, determine:
126
- - Dominant aesthetic direction (one of 7 — see reference)
127
- - 2–4 signature design moves
128
- - Typography pairing (display + body, not system fonts)
129
- - Custom color palette (NOT default Tailwind palette colors)
130
- - Motion stance
131
- - Output a complete design spec for the build step.
132
-
133
- Each agent writes its output to a temp doc before returning:
134
- - Agent 1 → structured sitemap + per-page section outline (markdown)
135
- - Agent 2 → all copy, organized by page and section (markdown)
136
- - Agent 3 → aesthetic direction, signature moves, typography, palette hex codes, motion stance (markdown)
109
+ - Output: dominant aesthetic direction (one of 7), 2–4 signature design moves, typography pairing (display + body, not system fonts), custom color palette (NOT default Tailwind colors), motion stance.
137
110
 
138
- Collect all 3 agent outputs before proceeding to Step 3.
111
+ Each agent writes output to a temp doc. Collect all 3 before proceeding.
139
112
 
140
113
  ---
141
114
 
@@ -144,82 +117,70 @@ Collect all 3 agent outputs before proceeding to Step 3.
144
117
  Implement the full site using all 3 agent outputs as inputs.
145
118
 
146
119
  **3a. Project setup**
147
- - Run stack detection (see Stack Detection table above). Read the matched `references/stacks/[stack].md` file before writing any code.
148
- - Detect existing framework. If present, work within it and preserve conventions.
149
- - If no framework: scaffold using the detected stack reference (Next.js by default, or Nuxt/Laravel if flagged).
150
- - Apply the custom color palette from the art direction spec to `tailwind.config.js` / `tailwind.config.ts`.
151
- - Configure typography (Google Fonts — see stack reference for the correct import method per stack).
120
+ - Run stack detection (see table above). Read `references/stacks/[stack].md` before writing any code.
121
+ - If existing framework: work within it, preserve conventions.
122
+ - If no framework: scaffold using detected stack reference.
123
+ - Apply custom color palette to `tailwind.config.js` / `tailwind.config.ts`.
124
+ - Configure typography (Google Fonts — see stack reference for correct import method).
152
125
 
153
126
  **3b. Site configuration**
154
- - Create a typed site config file (`content/site.ts` or equivalent) with all pages, copy, and metadata from the research agents.
155
- - Organize for easy future editing — named fields, not magic strings.
127
+ - Create typed site config (`content/site.ts` or equivalent) with all pages, copy, and metadata from research agents. Named fields, not magic strings.
156
128
 
157
- **3c. Page generation**
158
- For each page in the sitemap:
159
- 1. Implement with semantic HTML (landmarks, heading hierarchy, descriptive links).
160
- 2. Inject real copy from the Copy Agent — no placeholders anywhere.
129
+ **3c. Page generation** — for each page in the sitemap:
130
+ 1. Semantic HTML (landmarks, heading hierarchy, descriptive links).
131
+ 2. Inject real copy from Copy Agent no placeholders.
161
132
  3. Apply visual system from Art Direction Agent (typography, palette, design moves).
162
- 4. Add per-page SEO: unique title tag, meta description, canonical, OG/Twitter tags.
163
- 5. Add structured data where appropriate (LocalBusiness, Organization, BreadcrumbList).
164
- 6. Ensure responsiveness: mobile, tablet, desktop.
133
+ 4. Per-page SEO: unique title tag, meta description, canonical, OG/Twitter tags.
134
+ 5. Structured data where appropriate (LocalBusiness, Organization, BreadcrumbList).
135
+ 6. Responsive: mobile, tablet, desktop.
165
136
 
166
137
  **3d. WhatsApp CTA injection**
167
- Read `references/whatsapp-cta.md`.
138
+ Read `references/whatsapp-cta.md`. Auto-detect SEA local business using the detection table below.
168
139
 
169
- Auto-detect SEA local business using the detection table at the bottom of this file.
170
-
171
- Conditions for injection (ANY of these):
172
- - Location explicitly in PH/SEA signals table AND business is local type
173
- - Business is local type AND location is unknown (default to inject with placeholder)
140
+ Inject when ANY of:
141
+ - Location in PH/SEA signals table AND business is local type
142
+ - Business is local type AND location is unknown (inject with placeholder)
174
143
  - User explicitly mentioned WhatsApp in the brief
175
144
 
176
- Implementation — use the stack-appropriate pattern:
177
-
178
145
  | Stack | Component pattern |
179
146
  |---|---|
180
- | Next.js | `components/WhatsAppButton.tsx` (React TSX `'use client'` component) — see `references/stacks/nextjs.md` |
181
- | Nuxt 3 | `components/WhatsAppButton.vue` (Vue SFC with `defineProps`) — see `references/stacks/nuxt.md` |
182
- | Laravel | `resources/views/components/whatsapp-button.blade.php` (Blade partial with `@props`) — see `references/stacks/laravel.md` |
183
-
184
- - Wire to extracted phone number (E.164 without `+`: e.g., `639171234567`), or use `[PHONE]` placeholder with a clear note for the client
185
- - Position: fixed bottom-right floating button
147
+ | Next.js | `components/WhatsAppButton.tsx` (`'use client'`) — see `references/stacks/nextjs.md` |
148
+ | Nuxt 3 | `components/WhatsAppButton.vue` (`defineProps`) — see `references/stacks/nuxt.md` |
149
+ | Laravel | `resources/views/components/whatsapp-button.blade.php` (`@props`) — see `references/stacks/laravel.md` |
186
150
 
187
- If Messenger is preferred (user mentioned it, or location is Philippines): implement Messenger alternative from reference.
151
+ - Wire to extracted phone (E.164 without `+`: e.g., `639171234567`), or use `[PHONE]` placeholder with client note.
152
+ - Position: fixed bottom-right floating button.
153
+ - If Messenger preferred (user mentioned it, or location is Philippines): implement Messenger alternative from reference.
188
154
 
189
155
  **3e. Contact handling**
190
156
 
191
- Choose based on business type:
192
- - **Local hospitality** (cafe, restaurant): WhatsApp button + simple reservation/inquiry form
193
- - **Service business**: inquiry form with honeypot protection + WhatsApp fallback
194
- - **Professional services**: consultation booking form
195
- - **SaaS/product**: contact form + optional demo CTA
196
- - **Portfolio**: minimal contact form or email link
157
+ | Business type | Contact implementation |
158
+ |---|---|
159
+ | Local hospitality (cafe, restaurant) | WhatsApp button + reservation/inquiry form |
160
+ | Service business | Inquiry form with honeypot + WhatsApp fallback |
161
+ | Professional services | Consultation booking form |
162
+ | SaaS/product | Contact form + optional demo CTA |
163
+ | Portfolio | Minimal contact form or email link |
197
164
 
198
165
  **3f. Sitemap + robots**
199
- Generate `sitemap.xml` and `robots.txt` where the framework supports it (Next.js: `app/sitemap.ts`, `app/robots.ts`).
166
+ Generate `sitemap.xml` and `robots.txt` (Next.js: `app/sitemap.ts`, `app/robots.ts`).
200
167
 
201
168
  ---
202
169
 
203
170
  ### Step 4 — Lighthouse Enforcement Loop
204
171
 
205
172
  **If Playwright MCP is available:**
206
- 1. Start the dev server.
207
- 2. Run Lighthouse on each page.
208
- 3. Target: Performance 90, Accessibility 90, SEO 90, Best Practices 90.
209
- 4. For any page failing:
210
- - Read the specific failing audit items.
211
- - Fix: image sizing, missing meta tags, contrast, heading order, font loading, etc.
212
- - Re-run Lighthouse on that page only.
213
- 5. Repeat until all pages pass all 4 categories.
214
- 6. Maximum 3 fix iterations per page. If still failing after 3: flag specific issues to the user and proceed.
215
-
216
- **If Playwright MCP is NOT available:**
217
- Run a static quality pass instead:
218
- - Every page has a unique title and meta description ✓
173
+ 1. Start dev server.
174
+ 2. Run Lighthouse on each page. Target: Performance ≥ 90, Accessibility ≥ 90, SEO ≥ 90, Best Practices ≥ 90.
175
+ 3. For any failing page: read failing audit items, fix (image sizing, missing meta, contrast, heading order, font loading), re-run that page only.
176
+ 4. Repeat until all pages pass all 4 categories. Max 3 fix iterations per page — if still failing, flag to user and proceed.
177
+
178
+ **If Playwright MCP is NOT available** static quality pass:
179
+ - Every page has unique title and meta description ✓
219
180
  - No duplicate H1s, no skipped heading levels ✓
220
181
  - All images have descriptive alt text ✓
221
- - Color contrast is not obviously broken (verify palette choices)
222
- - Sitemap + robots.txt are generated ✓
182
+ - Color contrast not obviously broken ✓
183
+ - Sitemap + robots.txt generated ✓
223
184
  - `next build` (or equivalent) passes without errors ✓
224
185
 
225
186
  Report: `Quality: [N] issues fixed. Build passing.`
@@ -228,9 +189,7 @@ Report: `Quality: [N] issues fixed. Build passing.`
228
189
 
229
190
  ### Step 5 — Launch Audit
230
191
 
231
- Read `references/launch-checklist.md`.
232
-
233
- Run through all 5 audit categories:
192
+ Read `references/launch-checklist.md`. Run all 5 audit categories:
234
193
  1. Search and metadata
235
194
  2. Conversion and content
236
195
  3. Accessibility and UX
@@ -243,24 +202,21 @@ Fix all blockers immediately. Log medium-priority and optional polish items for
243
202
 
244
203
  ### Step 6 — Handoff Package
245
204
 
246
- Read `references/handoff-template.md`.
247
-
248
- Generate 3 files at the project root using the templates:
205
+ Read `references/handoff-template.md`. Generate 3 files at project root:
249
206
 
250
- **`HANDOFF.md`** — Client-facing project summary:
207
+ **`HANDOFF.md`** — Client-facing:
251
208
  - What was built (pages, features, integrations)
252
209
  - What needs replacing (image placeholders, phone numbers, API keys)
253
210
  - How to make simple content edits with specific file paths
254
211
  - Contact for technical help
255
212
 
256
213
  **`DEPLOY.md`** — Deployment guide:
257
- - Vercel one-click deploy + CLI steps
258
- - Netlify as alternative
214
+ - Vercel one-click deploy + CLI steps; Netlify as alternative
259
215
  - Required environment variables with descriptions
260
216
  - Domain configuration steps
261
217
  - Estimated monthly cost (Vercel free tier, domain ~$12/yr)
262
218
 
263
- **`CONTENT-GUIDE.md`** — Non-technical editing guide (written FOR the client):
219
+ **`CONTENT-GUIDE.md`** — Non-technical editing (written FOR the client):
264
220
  - Plain language: "To change your opening hours, open `content/site.ts` and find `hours:`"
265
221
  - Covers: business name, tagline, contact details, services list, hours, social links
266
222
  - No developer jargon
@@ -294,22 +250,16 @@ Generate 3 files at the project root using the templates:
294
250
 
295
251
  ### Step 8 — Deploy (only when `--deploy` flag is provided)
296
252
 
297
- **Skip this step entirely if `--deploy` was NOT passed.** DEPLOY.md covers manual deploy for all cases.
253
+ Skip entirely if `--deploy` was NOT passed. DEPLOY.md covers manual deploy for all cases.
298
254
 
299
255
  **8a. Detect deploy tool**
300
-
301
- Check for Vercel CLI first, then Netlify CLI as fallback:
302
-
303
256
  ```
304
257
  vercel --version → if found: use Vercel
305
258
  netlify --version → if found: use Netlify
306
259
  neither found → skip deploy, instruct user (see 8c)
307
260
  ```
308
261
 
309
- **8b. Confirm before deploying**
310
-
311
- ALWAYS ask before running any deploy command — this is a visible external action:
312
-
262
+ **8b. Confirm before deploying** — ALWAYS ask before running any deploy command:
313
263
  ```
314
264
  Ready to deploy to [Vercel/Netlify]? (y/n)
315
265
 
@@ -318,39 +268,27 @@ This will push the site live. Make sure:
318
268
  - Environment variables are configured
319
269
  - The client has approved the build
320
270
  ```
321
-
322
- Wait for explicit `y`. Never auto-deploy without user confirmation.
271
+ Wait for explicit `y`. Never auto-deploy.
323
272
 
324
273
  **8c. If no CLI found**
325
-
326
274
  ```
327
275
  Vercel CLI not found. To deploy manually:
328
276
  1. Run: npm install -g vercel
329
277
  2. Run: vercel --prod
330
278
  (or follow DEPLOY.md for Netlify or other hosts)
331
-
332
- DEPLOY.md has been generated with full step-by-step instructions.
333
279
  ```
334
280
 
335
281
  **8d. Deploy**
336
-
337
- For Vercel:
338
282
  ```bash
339
- vercel --prod
283
+ vercel --prod # Vercel
284
+ netlify deploy --prod # Netlify
340
285
  ```
341
-
342
- For Netlify:
343
- ```bash
344
- netlify deploy --prod
345
- ```
346
-
347
- For Laravel (no Vercel/Netlify support): output the recommended hosts and point to DEPLOY.md.
286
+ For Laravel (no Vercel/Netlify support): output recommended hosts and point to DEPLOY.md.
348
287
 
349
288
  **8e. After successful deploy**
350
-
351
289
  1. Display the live URL.
352
- 2. Update `HANDOFF.md`: append a "Live URL" section with the URL and deploy date.
353
- 3. Update `DEPLOY.md`: mark step as "Deployed" with the live URL.
290
+ 2. Update `HANDOFF.md`: append "Live URL" section with URL and deploy date.
291
+ 3. Update `DEPLOY.md`: mark as "Deployed" with live URL.
354
292
 
355
293
  ```
356
294
  ## [Business Name] — Deployed
@@ -365,36 +303,30 @@ Update HANDOFF.md with the final custom domain once DNS is configured.
365
303
 
366
304
  ## Revision Mode (`--revise`)
367
305
 
368
- Use after the initial build when the client has feedback.
369
-
370
306
  ### Step R1 — Read current state
371
- - Read existing site files.
372
- - Read `HANDOFF.md` if it exists for context on what was built.
307
+ - Read existing site files and `HANDOFF.md` (if exists) for build context.
373
308
 
374
309
  ### Step R2 — Collect changes
375
-
376
- If not already provided in the invocation, ask:
310
+ If not provided in the invocation, ask:
377
311
  > **What changes does the client want?**
378
312
  > Plain language — e.g., "make the hero warmer", "add a gallery section", "update the CTA to Book a Table", "the mobile nav is broken"
379
313
 
380
314
  ### Step R3 — Classify and apply
381
315
 
382
- For each change, identify type and act:
383
-
384
316
  | Type | Examples | Action |
385
317
  |---|---|---|
386
318
  | Copy change | Updated headline, new CTA text, service names | Direct edit to config/content file |
387
319
  | Style change | Warmer colors, bigger fonts, more spacing | Targeted Tailwind/CSS edit only |
388
- | Structure change | New section, new page, reordering sections | Implement using existing component patterns |
320
+ | Structure change | New section, new page, reordering | Implement using existing component patterns |
389
321
  | Feature change | Gallery, new contact form, WhatsApp, map | Implement + update handoff docs |
390
322
 
391
- **Rule: never rebuild the whole site for targeted feedback.** Edit only what changed.
323
+ Never rebuild the whole site for targeted feedback. Edit only what changed.
392
324
 
393
325
  ### Step R4 — Quality re-check
394
- Run the same Lighthouse/quality checks from Step 4. Fix any regressions introduced by the changes.
326
+ Run same Lighthouse/quality checks from Step 4. Fix any regressions.
395
327
 
396
328
  ### Step R5 — Update handoff docs
397
- If the structure changed (new page, new section), update `HANDOFF.md` and `CONTENT-GUIDE.md` with new file references and editing instructions.
329
+ If structure changed (new page, new section), update `HANDOFF.md` and `CONTENT-GUIDE.md` with new file references and editing instructions.
398
330
 
399
331
  ### Step R6 — Summarize
400
332
  ```
@@ -411,7 +343,7 @@ If the structure changed (new page, new section), update `HANDOFF.md` and `CONTE
411
343
 
412
344
  ## Niche Detection
413
345
 
414
- Auto-detect from brief text. Read the matched reference file in Step 2.
346
+ Auto-detect from brief text. Read matched reference file in Step 2.
415
347
 
416
348
  | Business type signals | Reference file |
417
349
  |---|---|
@@ -435,10 +367,10 @@ Auto-detect from brief text. Read the matched reference file in Step 2.
435
367
 
436
368
  ## SEA Location Detection
437
369
 
438
- Used in Step 3d to determine WhatsApp CTA injection.
370
+ Used in Step 3d for WhatsApp CTA injection.
439
371
 
440
372
  Inject when ALL of:
441
- 1. Business is a local business (not SaaS, not portfolio, not ecommerce-only)
373
+ 1. Business is local (not SaaS, not portfolio, not ecommerce-only)
442
374
  2. Location matches any signal below OR location is unknown
443
375
 
444
376
  | Location signals | Region |
@@ -457,9 +389,9 @@ When location is unknown and business is local: inject with `+[PHONE]` placehold
457
389
 
458
390
  ## Model Routing
459
391
 
460
- Read `.shipkit/config.json` from the project root if it exists.
392
+ Read `.shipkit/config.json` from project root if it exists.
461
393
 
462
- - If `model_overrides["sk:website"]` is set, use that model — it takes precedence.
394
+ - If `model_overrides["sk:website"]` is set, use that model — takes precedence.
463
395
  - Otherwise use the `profile` field. Default: `balanced`.
464
396
 
465
397
  | Profile | Orchestrator | Research agents (Step 2) | Build agent (Step 3) |