moicle 1.7.0 → 2.1.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 (53) hide show
  1. package/README.md +76 -27
  2. package/assets/architecture/_shared/severity-levels.md +34 -0
  3. package/assets/architecture/_shared/stack-detection.md +34 -0
  4. package/assets/commands/marketing.md +7 -7
  5. package/assets/skills/docs/sync/SKILL.md +245 -0
  6. package/assets/skills/docs/write/SKILL.md +274 -0
  7. package/assets/skills/feature/api/SKILL.md +277 -0
  8. package/assets/skills/feature/deprecate/SKILL.md +276 -0
  9. package/assets/skills/feature/new/SKILL.md +273 -0
  10. package/assets/skills/feature/refactor/SKILL.md +269 -0
  11. package/assets/skills/fix/hotfix/SKILL.md +233 -0
  12. package/assets/skills/fix/incident/SKILL.md +360 -0
  13. package/assets/skills/fix/pr-comment/SKILL.md +186 -0
  14. package/assets/skills/fix/root-cause/SKILL.md +276 -0
  15. package/assets/skills/marketing/content/SKILL.md +269 -0
  16. package/assets/skills/marketing/logo/SKILL.md +252 -0
  17. package/assets/skills/marketing/seo-blog/SKILL.md +367 -0
  18. package/assets/skills/marketing/video/SKILL.md +258 -0
  19. package/assets/skills/research/onboarding/SKILL.md +225 -0
  20. package/assets/skills/research/spike/SKILL.md +228 -0
  21. package/assets/skills/research/web/SKILL.md +204 -0
  22. package/assets/skills/review/architect/SKILL.md +274 -0
  23. package/assets/skills/review/branch/SKILL.md +277 -0
  24. package/assets/skills/review/pr/SKILL.md +231 -0
  25. package/assets/skills/review/tdd/SKILL.md +245 -0
  26. package/dist/commands/list.d.ts.map +1 -1
  27. package/dist/commands/list.js +2 -2
  28. package/dist/commands/list.js.map +1 -1
  29. package/dist/utils/symlink.d.ts +7 -0
  30. package/dist/utils/symlink.d.ts.map +1 -1
  31. package/dist/utils/symlink.js +82 -0
  32. package/dist/utils/symlink.js.map +1 -1
  33. package/package.json +1 -1
  34. package/assets/skills/api-integration/SKILL.md +0 -883
  35. package/assets/skills/architect-review/SKILL.md +0 -393
  36. package/assets/skills/content-writer/SKILL.md +0 -721
  37. package/assets/skills/deep-debug/SKILL.md +0 -114
  38. package/assets/skills/deprecation/SKILL.md +0 -923
  39. package/assets/skills/documentation/SKILL.md +0 -1333
  40. package/assets/skills/fix-pr-comment/SKILL.md +0 -283
  41. package/assets/skills/hotfix/SKILL.md +0 -397
  42. package/assets/skills/incident-response/SKILL.md +0 -946
  43. package/assets/skills/logo-design/SKILL.md +0 -477
  44. package/assets/skills/new-feature/SKILL.md +0 -297
  45. package/assets/skills/onboarding/SKILL.md +0 -607
  46. package/assets/skills/pr-review/SKILL.md +0 -620
  47. package/assets/skills/refactor/SKILL.md +0 -338
  48. package/assets/skills/research/SKILL.md +0 -124
  49. package/assets/skills/review-changes/SKILL.md +0 -312
  50. package/assets/skills/spike/SKILL.md +0 -535
  51. package/assets/skills/sync-docs/SKILL.md +0 -575
  52. package/assets/skills/tdd/SKILL.md +0 -828
  53. package/assets/skills/video-content/SKILL.md +0 -651
@@ -0,0 +1,252 @@
1
+ ---
2
+ name: marketing-logo
3
+ description: Generate comprehensive logo design specifications, brand identity guidelines, and visual concepts. Use when user says "design logo", "create logo", "brand identity", "logo concept", "visual identity".
4
+ ---
5
+
6
+ # Logo Design Skill
7
+
8
+ Produce a logo + brand identity **specification** that a designer can execute (or you can use as a direct prompt to a generative tool). Output is a brand guidelines doc, not finished art.
9
+
10
+ ## When to use this skill
11
+
12
+ - ✅ Brand new identity (no existing logo)
13
+ - ✅ Rebrand / refresh of an existing logo + guidelines
14
+ - ✅ Need a deliverable spec for a designer to execute
15
+ - ❌ Just need a quick icon variation → use a design tool directly
16
+ - ❌ Full marketing plan (logo + content + video) → use `/marketing`
17
+ - ❌ Video-specific visuals → use `/marketing:video`
18
+
19
+ ---
20
+
21
+ ## Workflow
22
+
23
+ ```
24
+ DISCOVER → CONCEPT → DESIGN → REFINE → DELIVER
25
+ ```
26
+
27
+ ---
28
+
29
+ ## Phase 1: DISCOVER (30 min)
30
+
31
+ **Goal:** capture brand intent before sketching.
32
+
33
+ ### Discovery brief
34
+
35
+ Ask the user (skip what's known):
36
+
37
+ | Field | Example |
38
+ |-------|---------|
39
+ | Name + tagline | "Acme — DevOps for indie teams" |
40
+ | 3-5 personality adjectives | "modern, technical, irreverent, sharp, friendly" |
41
+ | Primary audience | "Solo / small-team backend engineers" |
42
+ | Industry | "Developer tools / SaaS" |
43
+ | Competitors (3-5) | + 1 line each on what their logo says about them |
44
+ | Style direction (pick 1-2) | minimal / wordmark / monogram / abstract mark / illustrative / mascot |
45
+ | What to AVOID | "no cliché cloud icons, no gradients on the mark" |
46
+ | Where it lives | favicon + GitHub avatar + landing hero + dark / light themes + print |
47
+ | Color hints | "must work in single-color print + on dark UI" |
48
+ | Budget for the brand | "MVP — logo + 1 palette + 2 fonts" vs "full system" |
49
+
50
+ ### Gate
51
+ - [ ] Personality adjectives captured (forces concept differentiation)
52
+ - [ ] Competitor scan done (don't accidentally copy)
53
+ - [ ] Style direction narrowed to 1-2
54
+ - [ ] Avoid-list captured
55
+
56
+ ---
57
+
58
+ ## Phase 2: CONCEPT — propose 3 directions
59
+
60
+ **Goal:** present 3 *distinct* concepts. Same concept in 3 colors ≠ 3 concepts.
61
+
62
+ Each concept must have:
63
+
64
+ ```markdown
65
+ ## Concept {N}: {short name}
66
+
67
+ **Direction:** {wordmark / monogram / abstract mark / etc.}
68
+ **Rationale:** Why this matches the brand personality + audience. Cite 2-3 adjectives.
69
+ **Differentiation:** What competitor it does NOT look like, and why that matters.
70
+ **ASCII sketch** (rough — describes shape, not pixel-perfect):
71
+ ```
72
+ ___________
73
+ | A C M E |
74
+ |___________|
75
+ ```
76
+ **Inspiration:** 2-3 reference links (existing logos, styles)
77
+ **Risks:** What could go wrong (e.g., "monogram unreadable below 24px")
78
+ ```
79
+
80
+ ### Concept variety rules
81
+ - Different *form* (wordmark vs mark vs combination)
82
+ - Different *feel* (geometric vs hand-drawn vs typographic)
83
+ - Different *complexity* (minimal vs detailed)
84
+
85
+ ### Gate
86
+ - [ ] 3 concepts presented
87
+ - [ ] Each has rationale + differentiation + risk
88
+ - [ ] **User selected ONE** (or asked for hybrid — repeat phase)
89
+
90
+ ---
91
+
92
+ ## Phase 3: DESIGN — flesh out the chosen concept
93
+
94
+ **Goal:** produce specifications a designer can build.
95
+
96
+ ### 3.1 Logo construction
97
+
98
+ ```markdown
99
+ ### Logo: {name}
100
+
101
+ **Lockup**
102
+ - Primary: {wordmark / mark / mark + wordmark side-by-side / stacked}
103
+ - Secondary (when primary doesn't fit): {variant}
104
+ - Icon-only (favicon, avatar): {variant}
105
+
106
+ **Geometry**
107
+ - Grid: {e.g., "8-unit grid, mark fits in 8x8 square"}
108
+ - Proportions: {e.g., "wordmark cap-height = 5 units; mark = 8 units; gap = 2 units"}
109
+
110
+ **Clear space**
111
+ - Minimum: {e.g., "1 cap-height on all sides"}
112
+
113
+ **Minimum size**
114
+ - Digital: {e.g., "24px height"}
115
+ - Print: {e.g., "8mm height"}
116
+ ```
117
+
118
+ ### 3.2 Color palette
119
+
120
+ Pick a primary + secondary + neutrals. Provide every color in:
121
+ - HEX, RGB, HSL
122
+ - CMYK (for print)
123
+ - WCAG AA contrast against white and against black (note pass / fail)
124
+ - Tailwind variable name (if relevant)
125
+
126
+ ```markdown
127
+ | Token | HEX | RGB | HSL | Use |
128
+ |-------|-----|-----|-----|-----|
129
+ | `--brand-primary` | #0F172A | 15,23,42 | 222 47% 11% | logo, headlines |
130
+ | `--brand-accent` | #14B8A6 | 20,184,166 | 173 80% 40% | CTA, links |
131
+ | `--neutral-fg` | #1F2937 | 31,41,55 | 220 26% 14% | body text |
132
+ | `--neutral-bg` | #F8FAFC | 248,250,252 | 210 40% 98% | page bg |
133
+ ```
134
+
135
+ ### 3.3 Typography
136
+
137
+ Pick 1 display + 1 body font (or 1 font in 2 weights). Note:
138
+ - Family + fallback stack
139
+ - Weights used (display, body, light)
140
+ - Pairing rationale (1 line)
141
+ - License (open / Google Fonts / commercial)
142
+
143
+ ### 3.4 Voice
144
+ - 3 voice attributes (e.g., "direct, witty, never corporate-speak")
145
+ - 3 do / 3 don't examples (1 line each)
146
+
147
+ ### Gate
148
+ - [ ] All lockup variants specified
149
+ - [ ] Palette has WCAG contrast notes
150
+ - [ ] Typography choice has rationale + license
151
+ - [ ] Voice has do/don't examples
152
+
153
+ ---
154
+
155
+ ## Phase 4: REFINE
156
+
157
+ **Goal:** test the design against real use, iterate.
158
+
159
+ ### Test scenarios (write down result for each)
160
+ - [ ] Favicon at 16×16 — still recognizable?
161
+ - [ ] On dark background — does it still work?
162
+ - [ ] Single-color print (black-only fax test) — still readable?
163
+ - [ ] Next to 2-3 competitor logos — does it stand out?
164
+ - [ ] At 100% scale on hero — does it carry the page?
165
+
166
+ ### Feedback loop
167
+ - Present to user with each scenario
168
+ - Capture changes requested
169
+ - If >2 rounds of changes → consider re-concepting (Phase 2)
170
+
171
+ ### Gate
172
+ - [ ] All 5 scenarios tested
173
+ - [ ] User approved final version
174
+
175
+ ---
176
+
177
+ ## Phase 5: DELIVER — brand guidelines doc
178
+
179
+ **Goal:** ship a single doc + asset list a designer / dev can use.
180
+
181
+ ### `brand-guidelines.md` skeleton
182
+
183
+ ```markdown
184
+ # {Brand} Brand Guidelines
185
+
186
+ ## Logo
187
+ - {Primary, secondary, icon lockups as files: SVG + PNG}
188
+ - Clear space + min size rules
189
+ - Wrong uses (with examples: don't recolor, don't squish, don't add effects)
190
+
191
+ ## Color
192
+ - Token table from Phase 3.2
193
+ - Usage rules (when primary vs accent)
194
+ - Accessibility (contrast notes)
195
+
196
+ ## Typography
197
+ - Stack from Phase 3.3
198
+ - Hierarchy: H1/H2/H3/body sizes
199
+ - Web vs print
200
+
201
+ ## Voice
202
+ - From Phase 3.4
203
+ - Sample headline + body + CTA copy
204
+
205
+ ## Examples
206
+ - 1 hero, 1 card, 1 button shown with the brand applied
207
+ ```
208
+
209
+ ### Asset checklist (what to hand to designer / dev)
210
+
211
+ - [ ] `logo-primary.svg` + `logo-primary.png` (1x, 2x, 4x)
212
+ - [ ] `logo-secondary.svg` + `.png`
213
+ - [ ] `logo-mark.svg` + `.png`
214
+ - [ ] `favicon.ico` (16, 32, 48), `apple-touch-icon.png` (180×180), `og-image.png` (1200×630)
215
+ - [ ] Social avatars: square 400×400 + cover per platform (Twitter 1500×500, LinkedIn 1128×191, etc.)
216
+ - [ ] Color tokens: `colors.css` (CSS variables) + `tailwind.config.js` snippet (if Tailwind)
217
+ - [ ] Brand guidelines PDF or `.md`
218
+
219
+ ### Gate
220
+ - [ ] Guidelines doc written
221
+ - [ ] Asset checklist exists (even if generation is by a designer)
222
+ - [ ] Developer-ready tokens included (CSS / Tailwind)
223
+
224
+ ---
225
+
226
+ ## Hard Rules
227
+
228
+ - **3 *distinct* concepts in Phase 2** — same concept in 3 colors = lazy
229
+ - **WCAG AA contrast minimum** on text colors
230
+ - **Mark must read at 16px** — if it doesn't, redesign, don't compromise
231
+ - **No gradient on the primary mark** — gradients don't print, don't fax, don't embroider well
232
+ - **License-clean fonts only** — no "found on the internet" type
233
+
234
+ ---
235
+
236
+ ## Related Skills
237
+
238
+ | When | Use |
239
+ |------|-----|
240
+ | Full marketing plan (logo + content + video) | `/marketing` |
241
+ | Write content with the brand | `/marketing:content` |
242
+ | Create video with the brand | `/marketing:video` |
243
+ | Document brand guidelines as a doc | `/docs:write` |
244
+
245
+ ## Recommended Agents
246
+
247
+ | Phase | Agent | Purpose |
248
+ |-------|-------|---------|
249
+ | DISCOVER | `@docs-writer` | Capture brand brief |
250
+ | CONCEPT | `@clean-architect` | Structure the system |
251
+ | DESIGN | `@docs-writer` | Spec documents |
252
+ | DELIVER | `@docs-writer` | Brand guidelines doc |
@@ -0,0 +1,367 @@
1
+ ---
2
+ name: marketing-seo-blog
3
+ description: Write an evergreen blog post optimized for both Google Search AND AI tools (ChatGPT, Bing/Copilot, Perplexity). Answer-first, intent-classified, overlap-audited. Use when user says "write seo blog", "seo blog", "evergreen post", "compare post", "trust post", "glossary post", "blog for AI to recommend", "search + ai".
4
+ ---
5
+
6
+ # SEO + AI Blog Writer
7
+
8
+ Write **one** evergreen blog post that ranks on traditional search AND is easy for AI systems to cite or recommend. Intent-first, answer-first, overlap-audited.
9
+
10
+ ## When to use this skill
11
+
12
+ - ✅ Writing a single evergreen blog post (entity / trust / compare / glossary / use-case / FAQ)
13
+ - ✅ Updating an existing evergreen post that has drifted
14
+ - ✅ Replacing a thin / outdated post with a stronger version on the same intent
15
+ - ❌ Multi-post content plan / calendar / strategy → use `/marketing:content`
16
+ - ❌ Changelog / feature launch / release announcement → write manually or use a feature-blog template
17
+ - ❌ Time-sensitive news / event post → not evergreen, different rules
18
+
19
+ ---
20
+
21
+ ## Core principle
22
+
23
+ **Don't write a blog "to fill the calendar." Write the answer to a question users actually ask** on Search or to an AI.
24
+
25
+ - Every post must let an AI model answer at least one clear intent
26
+ - One strong intent = **one canonical post**. Don't write a second post on the same intent — update the first
27
+ - If existing post is stale → fix it; don't pile a new post on top
28
+
29
+ ---
30
+
31
+ ## Workflow
32
+
33
+ ```
34
+ 1 INTENT → 1.5 OVERLAP AUDIT → 2 RESEARCH → 3 FILE → 4 FRONTMATTER → 5 BODY → 6 PATTERN → 7 RULES → 8 LINKS → 9 VERIFY → 10 REPORT
35
+ ```
36
+
37
+ ---
38
+
39
+ ## Step 1: Classify intent
40
+
41
+ Pick **one** category. Don't write a hybrid — split into two posts if needed.
42
+
43
+ | # | Intent | Example queries |
44
+ |---|--------|-----------------|
45
+ | 1 | **Entity** | "What is {Brand}", "How does {Brand} work" |
46
+ | 2 | **Trust** | "Is {Brand} legit", "Why is {Brand} {claim}" |
47
+ | 3 | **Compare** | "{Brand} vs {Competitor}", "Best {category} apps in {region}" |
48
+ | 4 | **Glossary** | "What is {term}", "{term} explained" |
49
+ | 5 | **Use case** | "How to {action} with {Brand}", "How to {achieve outcome}" |
50
+ | 6 | **Problem / FAQ** | "Why is my {thing} not working", "Why did {unexpected outcome} happen" |
51
+
52
+ ---
53
+
54
+ ## Step 1.5: Overlap audit (mandatory)
55
+
56
+ **Before writing anything new**, inventory existing posts in the blog folder.
57
+
58
+ ```bash
59
+ # Adapt path to project — common: content/blog/, app/blog/, docs/blog/
60
+ find {blog_dir} -name "*.md" -maxdepth 2 | sort
61
+ ```
62
+
63
+ For each existing post, extract from frontmatter or first 30 lines:
64
+ - slug
65
+ - primary intent (which of the 6 above)
66
+ - funnel stage (awareness / consideration / decision)
67
+ - evergreen or seasonal
68
+ - any claims that are now stale or off-brand
69
+
70
+ Then compare your planned post against the inventory.
71
+
72
+ ### Decision rules
73
+
74
+ | Situation | Action |
75
+ |-----------|--------|
76
+ | New post overlaps >60% intent with existing post | **Do not create new.** Either update the existing one OR refocus both to clearly distinct intents |
77
+ | Existing post has stale claims (deprecated platform, old positioning, unsafe wording) | Update the existing post **first or in the same batch** — never pretend the issue isn't there |
78
+ | New intent is genuinely uncovered | Proceed to Step 2 |
79
+
80
+ ### Examples
81
+ ✅ Correct: `what-is-brand.md` (entity) + `how-to-use-brand.md` (how-to) — different intents.
82
+ ❌ Wrong: two posts both answering "What is {Brand}" — pick one as canonical, update it.
83
+
84
+ ### Gate
85
+ - [ ] Inventory of existing posts read
86
+ - [ ] No >60% overlap, OR plan to update existing instead of writing new
87
+ - [ ] Stale-claim audit done (or N/A noted)
88
+
89
+ ---
90
+
91
+ ## Step 2: Research (short but solid)
92
+
93
+ If the post mentions current facts, third parties, or specific numbers — **verify before writing**.
94
+
95
+ ### Verify
96
+ - Competitor / partner / third-party facts
97
+ - Stats, dates, policies (these go stale fast)
98
+ - App Store / Google Play / platform-specific claims
99
+ - Pricing, fees, rates
100
+
101
+ ### Source priority
102
+ 1. Official source from the project (in-repo docs, official site)
103
+ 2. Official source from the third party (their docs / site)
104
+ 3. Project marketing strategy docs (if any)
105
+ 4. Reputable third-party sources, recent (≤1 year for pricing/stats)
106
+
107
+ ### Hard rules
108
+ - **No invented benchmarks.** If you don't have a source, don't claim the number
109
+ - **No invented comparisons.** Compare only what's verifiable
110
+ - For evergreen posts, prefer durable claims over snapshot stats
111
+
112
+ ### Gate
113
+ - [ ] Every non-trivial factual claim has a source
114
+ - [ ] Sources noted (in draft comments) so reviewer can verify
115
+
116
+ ---
117
+
118
+ ## Step 3: File output
119
+
120
+ ```text
121
+ {blog_dir}/{slug}.md
122
+ ```
123
+
124
+ ### Slug rules
125
+ - Lowercase
126
+ - Hyphen-separated (no underscores, no spaces)
127
+ - For non-English projects: language convention (e.g., Vietnamese without diacritics, kebab-case)
128
+ - Slug must map to **intent**, not to a marketing campaign
129
+
130
+ ### Examples
131
+ - `what-is-{brand}.md` (entity)
132
+ - `is-{brand}-legit.md` (trust)
133
+ - `{brand}-vs-{competitor}.md` (compare)
134
+ - `why-is-my-order-not-tracked.md` (problem)
135
+
136
+ ---
137
+
138
+ ## Step 4: Frontmatter
139
+
140
+ ```yaml
141
+ ---
142
+ title: "Title that matches the real query"
143
+ description: "140-160 chars. Tell the reader what this post does for them — not marketing fluff."
144
+ date: "YYYY-MM-DD"
145
+ author: "{Brand} Team"
146
+ image: "/images/blog/{slug}.svg"
147
+ category: "<from project's category enum>"
148
+ tags: ["<brand>", "<topic>", "<intent>"]
149
+ ---
150
+ ```
151
+
152
+ ### Picking `category`
153
+ Use the project's existing category enum — never invent new ones. Common:
154
+ - `guide` / `tutorial` for entity, glossary, use-case, FAQ
155
+ - `tips` for optimization / case-based
156
+ - `compare` / `review` for comparison posts
157
+ - `changelog` only for product update posts (which this skill does NOT handle)
158
+
159
+ ---
160
+
161
+ ## Step 5: Body structure (answer-first)
162
+
163
+ ```markdown
164
+ {2-4 sentences directly answering the question in the title — no warm-up, no story}
165
+
166
+ ## TL;DR
167
+
168
+ - Key takeaway 1
169
+ - Key takeaway 2
170
+ - Key takeaway 3
171
+
172
+ ## {Primary heading 1 — the main answer expanded}
173
+
174
+ ...
175
+
176
+ ## {Primary heading 2 — supporting context}
177
+
178
+ ...
179
+
180
+ ## When to choose / use / consider {Brand}
181
+
182
+ ...
183
+
184
+ ## Important caveats
185
+
186
+ ...
187
+
188
+ ## FAQ
189
+
190
+ ### {Question 1 — phrased exactly as users ask}
191
+ {Direct answer, 2-4 sentences}
192
+
193
+ ### {Question 2}
194
+ {...}
195
+
196
+ ## Conclusion / Next step
197
+
198
+ ...
199
+ ```
200
+
201
+ **Why this structure works for AI systems:** TL;DR + direct answer + FAQ blocks are the highest-cited patterns. AI tools quote concise answers; long-winded intros get skipped.
202
+
203
+ ---
204
+
205
+ ## Step 6: Pattern per intent type
206
+
207
+ ### A. Entity / Trust
208
+ Must answer:
209
+ - What is {Brand}
210
+ - Who is it for
211
+ - Where does the {core value} come from (be specific — sources, business model, partnerships)
212
+ - Who is the company / team behind it
213
+ - Does it have support / app stores / community / public presence
214
+
215
+ ### B. Compare
216
+ Must include a real comparison table:
217
+
218
+ ```markdown
219
+ | Criterion | {Brand} | {Competitor A} | {Competitor B} |
220
+ |-----------|---------|---------------|---------------|
221
+ | Coverage | ... | ... | ... |
222
+ | Pricing / fees | ... | ... | ... |
223
+ | Strengths | ... | ... | ... |
224
+ | Best for | ... | ... | ... |
225
+ ```
226
+
227
+ Rules:
228
+ - **Fair** — no dunking without evidence
229
+ - State **when each option fits better** — not "we're best at everything"
230
+ - Verify every cell (Step 2)
231
+
232
+ ### C. Glossary
233
+ Must:
234
+ - Define the term in 1-2 sentences at the top
235
+ - Give a concrete example (not abstract)
236
+ - Use end-user language, not insider jargon
237
+ - Link out to a related use-case / guide post
238
+
239
+ ### D. Use case / How-to
240
+ Must:
241
+ - Numbered steps (≤7 main steps)
242
+ - Screenshots or visuals where relevant
243
+ - Prerequisites listed before the steps
244
+ - Expected outcome stated
245
+
246
+ ### E. Problem / FAQ
247
+ Must:
248
+ - Describe the symptom (so users searching the symptom land here)
249
+ - List common causes ordered by likelihood
250
+ - Provide a fix per cause
251
+ - State when to escalate to human support
252
+
253
+ ---
254
+
255
+ ## Step 7: SEO + AI optimization rules
256
+
257
+ - **H1 = the real query**, not a marketing headline
258
+ - **First paragraph answers directly** — no warm-up, no anecdote, no "in this article we will…"
259
+ - **Headings tell the story** — a reader who only scans H2s should understand the whole post
260
+ - **Tables and lists** beat paragraphs for scannable content
261
+ - **Internal links** to related posts and key product pages (next step)
262
+ - **One consistent positioning sentence** for the brand across all posts
263
+ - **No keyword stuffing** — write for humans first
264
+ - **No filler** — every paragraph earns its place
265
+ - **Sensitive claims need evidence** or safe wording (e.g., "may", "in some cases")
266
+
267
+ ---
268
+
269
+ ## Step 8: Internal link rules
270
+
271
+ Minimum **2-4 internal links** per post:
272
+
273
+ - 1 link to a core product / about page (`/about`, `/product`, `/guide`)
274
+ - 1 link to a support / help page (`/help`, `/faq`)
275
+ - 1-2 links to related foundational blog posts
276
+
277
+ Anchor text:
278
+ - Natural, descriptive
279
+ - Vary phrasing — don't repeat exact-match anchors
280
+
281
+ ---
282
+
283
+ ## Step 9: Verify (pre-publish checklist)
284
+
285
+ - [ ] Primary intent clearly distinct from existing posts (Step 1.5)
286
+ - [ ] Title matches the real query users would search
287
+ - [ ] First paragraph answers directly (no warm-up)
288
+ - [ ] Has table / FAQ / numbered steps where the intent calls for them
289
+ - [ ] ≥2 internal links, with natural anchor text
290
+ - [ ] No unverified claims left in (no "studies show" without a study)
291
+ - [ ] Frontmatter `category` matches the project's existing enum
292
+ - [ ] Sitemap updated (if project requires)
293
+ - [ ] Image / OG image referenced and exists
294
+ - [ ] Reading level reasonable for the audience (run through Hemingway / similar)
295
+
296
+ Quick checks:
297
+ ```bash
298
+ ls {blog_dir}/{slug}.md
299
+ head -30 {blog_dir}/{slug}.md
300
+ {linter for markdown / mdx if project has one}
301
+ ```
302
+
303
+ ---
304
+
305
+ ## Step 10: Report
306
+
307
+ ```markdown
308
+ ## SEO Blog Post: {title}
309
+
310
+ ### File
311
+ - `{blog_dir}/{slug}.md`
312
+
313
+ ### Intent
314
+ - Category: {entity / trust / compare / glossary / use-case / problem}
315
+ - Primary query: "{the search query this targets}"
316
+
317
+ ### Frontmatter
318
+ - title: ...
319
+ - category: ...
320
+ - tags: [...]
321
+
322
+ ### Key internal links
323
+ - {anchor → /path}
324
+ - {anchor → /path}
325
+
326
+ ### Overlap audit
327
+ - Checked: {N existing posts}
328
+ - Decision: {NEW / UPDATED `existing-slug` / REFOCUSED}
329
+
330
+ ### Items needing user review
331
+ - {claim X — verify source}
332
+ - {comparison cell Y — confirm with product team}
333
+ ```
334
+
335
+ ---
336
+
337
+ ## Hard Rules
338
+
339
+ - **One canonical post per intent** — never write a duplicate, always update the existing one
340
+ - **Overlap audit before writing** — Step 1.5 is not optional
341
+ - **Answer-first structure** — TL;DR + direct answer in the first paragraph
342
+ - **No invented facts / benchmarks / comparisons** — verify or omit
343
+ - **Stale-claim audit** — if you find an outdated existing post, fix it in the same batch
344
+ - **Slug = intent**, not campaign or date
345
+ - **Update sitemap** when adding new posts (if project requires it)
346
+
347
+ ---
348
+
349
+ ## Related Skills
350
+
351
+ | When | Use |
352
+ |------|-----|
353
+ | Multi-post content plan / calendar / strategy | `/marketing:content` |
354
+ | Brand voice / visual identity setup first | `/marketing:logo` |
355
+ | Video / shorts version of the post | `/marketing:video` |
356
+ | Full go-to-market plan (logo + content + video) | `/marketing` command |
357
+ | Writing technical project docs (not blog) | `/docs:write` |
358
+
359
+ ## Recommended Agents
360
+
361
+ | Step | Agent | Purpose |
362
+ |------|-------|---------|
363
+ | 1.5 OVERLAP | `@docs-writer` | Inventory + cluster analysis |
364
+ | 2 RESEARCH | `@docs-writer` | Source verification |
365
+ | 5 BODY | `@docs-writer` | Drafting + structure |
366
+ | 7 SEO + AI | `@docs-writer` | Optimization pass |
367
+ | 9 VERIFY | `@code-reviewer` | Link + frontmatter sanity check |