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,276 @@
1
+ ---
2
+ name: fix-root-cause
3
+ description: Deep bug investigation workflow for hard-to-trace errors. Systematic root cause analysis — no guessing, no blind fixes. Use when user says "deep debug", "deep-debug", "trace bug", "find root cause", "hard bug", "investigate bug".
4
+ ---
5
+
6
+ # Deep Bug Investigation
7
+
8
+ For bugs that have been "fixed" multiple times and keep coming back, intermittent bugs, or errors deep inside vendor code. **Do not guess** — trace step by step.
9
+
10
+ ## When to use this skill
11
+
12
+ - ✅ Same bug returns after multiple "fixes"
13
+ - ✅ "Sometimes works, sometimes doesn't" — likely hidden state
14
+ - ✅ Error inside vendor / framework internals
15
+ - ✅ Local vs production behavior differs
16
+ - ✅ Race condition / concurrency suspected
17
+ - ❌ Bug is well understood, just needs a fix → `/fix:hotfix`
18
+ - ❌ Production is down with user impact → `/fix:incident` first, then this skill
19
+
20
+ ---
21
+
22
+ ## Workflow
23
+
24
+ ```
25
+ COLLECT → VERIFY → TRACE → ROOT CAUSE → CHECK HIDDEN STATE → FIX → VERIFY
26
+ ```
27
+
28
+ **Time budget:** if you've traced for >2 hours with no convergence → stop, write down what you know, ask a teammate. Rabbit holes are real.
29
+
30
+ ---
31
+
32
+ ## Step 1: COLLECT — capture evidence exactly
33
+
34
+ Record **verbatim**, do not interpret:
35
+
36
+ - Exact error message (copy-paste, don't paraphrase)
37
+ - Stack trace: file, line, full call chain
38
+ - Affected environment (prod / staging / local)
39
+ - Frequency: always / intermittent / specific input / specific user
40
+ - Timing: started exactly when? aligns with a deploy / cron / data change?
41
+
42
+ ### Gate
43
+ - [ ] Error captured verbatim
44
+ - [ ] Stack trace captured (or noted absent)
45
+ - [ ] Frequency known
46
+ - [ ] Timing noted (helps narrow "what changed")
47
+
48
+ ---
49
+
50
+ ## Step 2: VERIFY — running code = local code?
51
+
52
+ Do NOT assume prod = local.
53
+
54
+ - Identify the deployed commit
55
+ - `git diff` deployed vs local
56
+ - If they differ → read the deployed version before reasoning further
57
+ - Container / image involved? Verify the image tag, not just the source
58
+
59
+ ### Gate
60
+ - [ ] Deployed commit identified
61
+ - [ ] Local checkout matches OR differences understood
62
+
63
+ ---
64
+
65
+ ## Step 3: TRACE — entry to failure, every step
66
+
67
+ The single most important step. Skip nothing.
68
+
69
+ ### 3a. Entry → error line
70
+ - Where does the request / event / job enter? (route, listener, cron, queue handler)
71
+ - Which function calls which? Follow stack trace exactly
72
+ - How does data flow between layers?
73
+
74
+ ### 3b. Where does faulty data come from?
75
+ - Created locally or loaded from DB / API / cache / session?
76
+ - Goes through serialize / deserialize?
77
+ - Goes through any transform / map / cast?
78
+
79
+ ### 3c. Type + state at the moment of failure
80
+ - Actual runtime type (use a debugger or log)
81
+ - Expected type
82
+ - Why do they differ?
83
+
84
+ ### 3d. Vendor / framework internals
85
+ - Open the vendor source at the EXACT line from the stack trace
86
+ - Trace backwards: who calls this method, with what args?
87
+ - What condition routes execution into the failing branch?
88
+
89
+ ### Debugging tools
90
+
91
+ Use the right tool, not just `console.log`:
92
+
93
+ | Tool | When |
94
+ |------|------|
95
+ | **Debugger breakpoint** | Step through suspect code, inspect locals |
96
+ | **Conditional breakpoint** | Stop only when `x == nil` / `id == 42` |
97
+ | **Logpoint** (debugger) | Inject log without modifying source — useful in prod-like envs |
98
+ | **Memory / heap profiler** | Suspected memory leak or unbounded growth |
99
+ | **CPU profiler** | Slow path / hot loop |
100
+ | **Network trace** (Wireshark, browser devtools) | Wire-level issue with external API |
101
+ | **strace / dtruss** | Syscall-level (file, network) on Unix |
102
+ | **Time-travel debugger** (rr, Replay) | Hard non-determinism, race conditions |
103
+ | **Distributed tracing** (OpenTelemetry, Jaeger) | Cross-service latency or error origin |
104
+
105
+ ### Gate
106
+ - [ ] Full call chain documented
107
+ - [ ] Source of faulty data identified
108
+ - [ ] Actual vs expected type / state recorded
109
+
110
+ ---
111
+
112
+ ## Step 4: ROOT CAUSE — answer 3 questions
113
+
114
+ 1. **Why does it fail?** — the specific technical cause
115
+ 2. **Why didn't it fail before?** — what changed (deploy, dep, data shape, config, traffic)
116
+ 3. **Reproduction conditions?** — exact inputs / state that trigger it
117
+
118
+ If you cannot answer all 3 → return to Step 3.
119
+
120
+ ### Gate
121
+ - [ ] All 3 questions answered with **evidence**, not speculation
122
+
123
+ ---
124
+
125
+ ## Step 5: HIDDEN STATE — check 6 sources
126
+
127
+ "Sometimes works, sometimes doesn't" bugs live here.
128
+
129
+ ### 5a. Cache / serialization
130
+ - Cached object lost transient fields / lazy-loaded properties?
131
+ - Stale cache has OLD shape; new code expects NEW shape?
132
+ - Serialize / deserialize changes types? (int↔float, null handling, enum↔string, date timezone)
133
+
134
+ ### 5b. Database / storage
135
+ - Collation / encoding affecting comparisons (e.g., case-insensitive collation hiding duplicates)?
136
+ - DB default values mismatch with code expectations (null vs empty string)?
137
+ - Schema on prod vs schema in code (migration not applied)?
138
+ - **Read replica lag** — write to primary, read from replica returns stale data?
139
+
140
+ ### 5c. Concurrency / async
141
+ - **Race condition** — two requests modifying shared state simultaneously
142
+ - **Deadlock / livelock** — lock acquired but never released
143
+ - **Goroutine / async leak** — handler returned but background work continues
144
+ - **Request context cancelled** while async work depended on it
145
+ - **Channel / queue overflow** — messages dropped silently
146
+ - Use logs with nanosecond timestamps + request IDs to reconstruct the timeline
147
+
148
+ ### 5d. Runtime / compiled cache
149
+ - OPcache / bytecode cache serving old file
150
+ - Compiled config / routes / views not cleared after deploy
151
+ - CDN / proxy cache serving stale asset
152
+ - Browser cache / service worker
153
+
154
+ ### 5e. Environment
155
+ - Env vars on prod correct + complete?
156
+ - Runtime version (Node 20 vs 18, Go 1.22 vs 1.21) differs from local?
157
+ - Dependency versions differ (lockfile drift, transitive update)?
158
+
159
+ ### 5f. Multi-tenancy (SaaS-specific)
160
+ - **Tenant ID leak** — query missing `WHERE tenant_id = ?`
161
+ - Cache key missing tenant prefix → tenant A sees tenant B's data
162
+ - Background job inherits wrong tenant context
163
+ - Connection pool reused across tenants without reset
164
+
165
+ ### Gate
166
+ - [ ] All 6 categories considered (write N/A if not applicable)
167
+ - [ ] At least one category identified as the hidden state source (or explicitly ruled out)
168
+
169
+ ---
170
+
171
+ ## Step 6: FIX
172
+
173
+ Only after Step 4 is answered. The fix MUST:
174
+
175
+ - Address **root cause**, not symptom
176
+ - Be defensive at **trust boundaries** (cache, DB, external API, user input) — NOT in internal logic
177
+ - Handle the specific edge case found, without breaking the normal path
178
+ - Be small + reviewable
179
+ - Land in the correct layer (per `~/.claude/architecture/ddd-architecture.md`)
180
+
181
+ ### Boundary defense pattern
182
+ For data-shape bugs from external sources: validate / coerce at the adapter, not inside business logic.
183
+
184
+ ### Gate
185
+ - [ ] Fix targets root cause
186
+ - [ ] Defended at the boundary
187
+ - [ ] Normal code path not regressed
188
+
189
+ ---
190
+
191
+ ## Step 7: VERIFY
192
+
193
+ - Reproduce the Step 4 conditions → confirm fix works
194
+ - Normal code path still works
195
+ - Cache-related → test fresh load AND cached load
196
+ - Concurrency-related → reproduce under **load test** (10-100x normal concurrency)
197
+ - Verify against the deployed version (repeat Step 2)
198
+ - Add a **regression test** in the appropriate layer
199
+
200
+ ### Gate
201
+ - [ ] Original failure no longer reproducible
202
+ - [ ] Normal flow works
203
+ - [ ] Cached / serialized paths both work (if applicable)
204
+ - [ ] Load-tested if concurrency-related
205
+ - [ ] Regression test added
206
+
207
+ ---
208
+
209
+ ## Final Report
210
+
211
+ ```markdown
212
+ ## Bug: {short description}
213
+
214
+ ### Root Cause
215
+ {Specific technical cause from Step 4 Q1}
216
+
217
+ ### Why it didn't fail before
218
+ {What changed: deploy / dependency / data shape / config / traffic / runtime}
219
+
220
+ ### Reproduction
221
+ {Exact steps + data + environment}
222
+
223
+ ### Hidden state source
224
+ {Cache / DB / Concurrency / Runtime / Env / Multi-tenant — or "none"}
225
+
226
+ ### Fix
227
+ - File: `path/to/file:line`
228
+ - Layer: {handler / usecase / infra adapter}
229
+ - Approach: {boundary defense / type coercion / locking / cache invalidation / etc.}
230
+ - Why this is root-cause, not symptom: {explanation}
231
+
232
+ ### Regression test
233
+ - File: `path/to/test:line`
234
+ - Reproduces the original failure when fix removed
235
+
236
+ ### Verification
237
+ - [x] Original failure no longer reproducible
238
+ - [x] Normal path works
239
+ - [x] Cached path works (if applicable)
240
+ - [x] Load tested (if concurrency-related)
241
+ ```
242
+
243
+ ---
244
+
245
+ ## Hard Rules
246
+
247
+ - **DO NOT GUESS** — trace evidence, never infer from variable names
248
+ - **DO NOT FIX BEFORE UNDERSTANDING** — premature fix = new bug
249
+ - **VERIFY DEPLOYED CODE** — never assume prod = local
250
+ - **CHECK CACHE FIRST** for intermittent bugs
251
+ - **CHECK MULTI-TENANCY** if SaaS-style
252
+ - **ONE ROOT CAUSE per bug** — if multiple possibilities remain, trace further
253
+ - **TIME-BOX investigation** — if >2 h without convergence, ask for help
254
+ - **REGRESSION TEST required** — fix without test = bug returns
255
+
256
+ ---
257
+
258
+ ## Related Skills
259
+
260
+ | When | Use |
261
+ |------|-----|
262
+ | Bug is understood, just needs a fix | `/fix:hotfix` |
263
+ | Production is down | `/fix:incident` (then this skill after mitigation) |
264
+ | Write regression test after fix | `/review:tdd` |
265
+ | Research how others solved similar bugs | `/research:web` |
266
+
267
+ ## Recommended Agents
268
+
269
+ | Phase | Agent | Purpose |
270
+ |-------|-------|---------|
271
+ | Trace | `@code-reviewer` | Independent reading of call chain |
272
+ | Hidden state — DB | `@db-designer` | Schema, indexes, collation, replication |
273
+ | Hidden state — concurrency | `@perf-optimizer` | Race, deadlock, async leak |
274
+ | Hidden state — security/tenancy | `@security-audit` | Tenant isolation, auth context |
275
+ | Fix | Stack-specific dev agent | Boundary-defensive fix |
276
+ | Verify | `@test-writer` | Regression test |
@@ -0,0 +1,269 @@
1
+ ---
2
+ name: marketing-content
3
+ description: Create content writing strategy including blog posts, social media, newsletters, and SEO content plans. Use when user says "write content", "content strategy", "blog post", "social media content", "content plan", "seo content", "newsletter".
4
+ ---
5
+
6
+ # Content Writer
7
+
8
+ Workflow for creating content strategy: audience research, content pillars, SEO blog posts, social media plans, newsletters.
9
+
10
+ ## When to use this skill
11
+
12
+ - ✅ Building a content strategy from scratch (pillars, calendar, channels)
13
+ - ✅ Writing one specific piece (blog post, newsletter, social thread)
14
+ - ✅ Repurposing one piece into multi-channel content
15
+ - ❌ Writing API / project documentation → use `/docs:write` or `/docs:sync`
16
+ - ❌ Writing release notes / changelog → use git history + manual
17
+ - ❌ Designing a video → use `/marketing:video`
18
+
19
+ ---
20
+
21
+ ## Workflow
22
+
23
+ ```
24
+ RESEARCH → PLAN → WRITE → OPTIMIZE → DISTRIBUTE
25
+ ```
26
+
27
+ ---
28
+
29
+ ## Phase 1: RESEARCH
30
+
31
+ **Goal:** understand audience, competitors, and SEO landscape.
32
+
33
+ ### Gather brief
34
+ Ask the user for (skip what's already known):
35
+
36
+ | Field | Example |
37
+ |-------|---------|
38
+ | Brand / Product | "Acme — DevOps platform for indie teams" |
39
+ | Voice / Tone | "Casual but technical, no marketing fluff" |
40
+ | Primary audience | "Solo / small-team DevOps engineers" |
41
+ | Pain points | "Too many tools, none integrate well" |
42
+ | Goals (pick ≤2) | SEO traffic, lead gen, brand awareness, education, community, thought leadership |
43
+ | Current channels | Blog / X / LinkedIn / Dev.to / YouTube / Newsletter / Discord |
44
+ | Competitors | 3–5 names + what they do well |
45
+
46
+ ### Audience & SEO research
47
+ - **Search intent** for the topic (informational / navigational / transactional / commercial)
48
+ - **Top 10 SERP** results for 3–5 target keywords — what content ranks?
49
+ - **Gaps** competitors miss (more depth, better examples, fresher data)
50
+ - **Keyword set** — primary + 2–5 long-tails per piece
51
+
52
+ ### Gate
53
+ - [ ] Brief captured (skip fields already covered in conversation)
54
+ - [ ] Target keywords with search intent identified
55
+ - [ ] Competitor gap identified
56
+
57
+ ---
58
+
59
+ ## Phase 2: PLAN
60
+
61
+ **Goal:** define content pillars + calendar.
62
+
63
+ ### Content pillars
64
+ Pick 3–5 themes that ladder up to the brand's positioning. Each pillar gets a mix of formats.
65
+
66
+ | Pillar | Why it matters to audience | Formats |
67
+ |--------|---------------------------|---------|
68
+ | {pillar 1} | {pain → outcome} | blog, social, newsletter |
69
+ | {pillar 2} | ... | ... |
70
+
71
+ ### Calendar template
72
+ Plan 4–6 weeks ahead. Use a consistent cadence.
73
+
74
+ | Week | Blog (long-form) | Social (short-form) | Newsletter |
75
+ |------|------------------|---------------------|------------|
76
+ | W1 | {title} | 3 posts (1 educational, 1 hot take, 1 personal) | {topic} |
77
+ | W2 | ... | ... | ... |
78
+
79
+ ### Content mix rule (per channel)
80
+ - **80/20:** 80% value (educate / entertain), 20% promote
81
+ - **Don't post when you have nothing to say** — skip a slot rather than post filler
82
+
83
+ ### Gate
84
+ - [ ] 3–5 pillars defined with audience rationale
85
+ - [ ] Calendar drafted for ≥4 weeks
86
+ - [ ] Channels matched to audience habits
87
+
88
+ ---
89
+
90
+ ## Phase 3: WRITE
91
+
92
+ **Goal:** draft the actual content. One format at a time.
93
+
94
+ ### Blog post structure (long-form, SEO)
95
+
96
+ ```
97
+ TITLE (≤60 chars, includes primary keyword)
98
+ META DESCRIPTION (≤155 chars, includes primary keyword + CTA)
99
+
100
+ H1 (matches title or close variant)
101
+
102
+ HOOK (2–3 sentences: the problem the reader has)
103
+
104
+ TL;DR (3 bullets: the answer up front)
105
+
106
+ H2: Problem context — why this matters now
107
+ H2: The solution — your main argument / approach
108
+ H3: Step 1 / Aspect 1
109
+ H3: Step 2
110
+ H3: Step 3
111
+ H2: Common pitfalls — what NOT to do
112
+ H2: Real example — actual code / screenshot / case
113
+ H2: Next steps — what to do today
114
+
115
+ CTA (1 line: try the product / subscribe / share)
116
+ ```
117
+
118
+ Target length: 1200–2500 words for SEO; 500–1000 for opinion pieces.
119
+
120
+ ### Social thread (X / LinkedIn)
121
+
122
+ ```
123
+ HOOK (1–2 lines — must work alone in the feed)
124
+
125
+ 3–7 posts each ≤280 chars
126
+ - Each post stands alone if shared
127
+ - One idea per post
128
+ - Use line breaks
129
+
130
+ CTA (link to blog / signup)
131
+ ```
132
+
133
+ ### Newsletter
134
+
135
+ ```
136
+ SUBJECT (≤50 chars, curiosity > clickbait)
137
+ PREVIEW TEXT (≤90 chars, complements subject)
138
+
139
+ GREETING (personal, 1–2 lines)
140
+
141
+ MAIN STORY (1 idea, 200–400 words)
142
+
143
+ LINKS (3–5 curated, with 1-line why-it-matters)
144
+
145
+ CTA (one ask only)
146
+
147
+ SIGNATURE
148
+ ```
149
+
150
+ ### Writing rules
151
+ - **One idea per paragraph** (≤4 lines)
152
+ - **Active voice** ("the API returns" not "is returned by the API")
153
+ - **Concrete > abstract** (numbers, code, screenshots, names)
154
+ - **Cut filler:** "in order to" → "to", "due to the fact that" → "because", "very important" → "critical"
155
+ - **Read aloud** before publishing — if you stumble, rewrite
156
+
157
+ ### Gate
158
+ - [ ] Draft matches the format's structure
159
+ - [ ] Primary keyword in title + H1 + first 100 words (blog)
160
+ - [ ] Read aloud — no stumbles
161
+ - [ ] At least 1 concrete example (number, code, screenshot, name)
162
+
163
+ ---
164
+
165
+ ## Phase 4: OPTIMIZE
166
+
167
+ **Goal:** make the content perform.
168
+
169
+ ### Combined checklist (SEO + quality)
170
+ - [ ] Title ≤60 chars, includes primary keyword
171
+ - [ ] Meta description ≤155 chars
172
+ - [ ] H1 matches search intent
173
+ - [ ] H2/H3 use related keywords naturally
174
+ - [ ] Alt text on all images
175
+ - [ ] Internal links to ≥2 related posts
176
+ - [ ] External links to ≥1 authoritative source per major claim
177
+ - [ ] No keyword stuffing (read naturally)
178
+ - [ ] Mobile-friendly: short paragraphs, clear hierarchy
179
+ - [ ] Reading level appropriate for audience (Hemingway grade ≤10 for general)
180
+ - [ ] No typos (run a checker)
181
+
182
+ ### Gate
183
+ - [ ] All checklist items pass (or explicit waiver)
184
+
185
+ ---
186
+
187
+ ## Phase 5: DISTRIBUTE
188
+
189
+ **Goal:** get the content in front of the right people.
190
+
191
+ ### Per-channel adaptation
192
+
193
+ | Channel | Adaptation |
194
+ |---------|------------|
195
+ | Blog | Full piece, optimized for search |
196
+ | X | Thread of 3–7 posts pulling key insights + link to blog |
197
+ | LinkedIn | 1 long-form post (200–500 words), no link in body (link in comments) |
198
+ | Dev.to / Hashnode | Republish blog with canonical link to original |
199
+ | Reddit | Comment in relevant thread first, then share post only if community allows |
200
+ | Newsletter | Featured story or short blurb + link |
201
+ | YouTube Shorts / TikTok | 30–60 sec extract of key insight |
202
+
203
+ ### Tracking
204
+ - UTM tags per channel: `?utm_source=X&utm_medium=social&utm_campaign={pillar}`
205
+ - Track per piece: views, time-on-page, scroll depth, conversions
206
+ - Iterate: double down on what works, kill what doesn't after 3 attempts
207
+
208
+ ### Gate
209
+ - [ ] Adapted for each chosen channel
210
+ - [ ] UTM tags applied
211
+ - [ ] Tracking in place
212
+
213
+ ---
214
+
215
+ ## Final Report
216
+
217
+ ```markdown
218
+ ## Content Plan: {brand / campaign}
219
+
220
+ ### Strategy
221
+ - Pillars: {list}
222
+ - Audience: {one line}
223
+ - Goal: {primary}
224
+
225
+ ### Calendar (next 4 weeks)
226
+ {table}
227
+
228
+ ### Pieces Drafted
229
+ | Title | Format | Status | Channel |
230
+ |-------|--------|--------|---------|
231
+ | ... | blog | published | site + X + LinkedIn |
232
+
233
+ ### Metrics to Watch
234
+ - {KPI 1, baseline → target}
235
+ - {KPI 2}
236
+ ```
237
+
238
+ ---
239
+
240
+ ## Hard Rules
241
+
242
+ - **One idea per piece** — if you have two, write two pieces
243
+ - **No filler** — every paragraph earns its place
244
+ - **No keyword stuffing** — write for humans first, search engines second
245
+ - **Skip a slot rather than post filler**
246
+ - **Iterate based on data** — kill what doesn't work after 3 attempts
247
+
248
+ ---
249
+
250
+ ## Related Skills
251
+
252
+ | When | Use |
253
+ |------|-----|
254
+ | Building brand identity (logo + colors) | `/marketing:logo` |
255
+ | Creating video scripts / storyboards | `/marketing:video` |
256
+ | Building a full marketing plan | `/marketing` (combines all three) |
257
+ | Writing project documentation | `/docs:write` |
258
+
259
+ ---
260
+
261
+ ## Recommended Agents
262
+
263
+ | Phase | Agent | Purpose |
264
+ |-------|-------|---------|
265
+ | RESEARCH | `@docs-writer` | Document research findings |
266
+ | PLAN | `@clean-architect` | Structure pillars and calendar |
267
+ | WRITE | `@docs-writer` | Draft pieces |
268
+ | OPTIMIZE | `@security-audit` | Check for sensitive content / claims |
269
+ | DISTRIBUTE | `@docs-writer` | Channel adaptations |