moicle 2.0.0 → 2.2.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 (43) hide show
  1. package/README.md +20 -9
  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 +159 -519
  6. package/assets/skills/docs/write/SKILL.md +89 -186
  7. package/assets/skills/feature/new/SKILL.md +152 -192
  8. package/assets/skills/feature/refactor/SKILL.md +152 -233
  9. package/assets/skills/fix/hotfix/SKILL.md +139 -305
  10. package/assets/skills/fix/incident/SKILL.md +107 -19
  11. package/assets/skills/fix/pr-comment/SKILL.md +98 -224
  12. package/assets/skills/fix/root-cause/SKILL.md +161 -104
  13. package/assets/skills/{docs → marketing}/content/SKILL.md +4 -4
  14. package/assets/skills/marketing/logo/SKILL.md +252 -0
  15. package/assets/skills/marketing/seo-blog/SKILL.md +367 -0
  16. package/assets/skills/marketing/video/SKILL.md +258 -0
  17. package/assets/skills/research/onboarding/SKILL.md +127 -510
  18. package/assets/skills/research/spike/SKILL.md +128 -436
  19. package/assets/skills/research/web/SKILL.md +124 -83
  20. package/assets/skills/review/architect/SKILL.md +157 -306
  21. package/assets/skills/review/branch/SKILL.md +153 -208
  22. package/assets/skills/review/pr/SKILL.md +129 -519
  23. package/assets/skills/review/tdd/SKILL.md +108 -69
  24. package/bin/cli.js +2 -2
  25. package/dist/commands/install.d.ts.map +1 -1
  26. package/dist/commands/install.js +176 -8
  27. package/dist/commands/install.js.map +1 -1
  28. package/dist/commands/list.d.ts.map +1 -1
  29. package/dist/commands/list.js +31 -1
  30. package/dist/commands/list.js.map +1 -1
  31. package/dist/commands/status.d.ts.map +1 -1
  32. package/dist/commands/status.js +30 -1
  33. package/dist/commands/status.js.map +1 -1
  34. package/dist/commands/uninstall.d.ts.map +1 -1
  35. package/dist/commands/uninstall.js +64 -8
  36. package/dist/commands/uninstall.js.map +1 -1
  37. package/dist/utils/symlink.d.ts +1 -0
  38. package/dist/utils/symlink.d.ts.map +1 -1
  39. package/dist/utils/symlink.js +8 -6
  40. package/dist/utils/symlink.js.map +1 -1
  41. package/package.json +1 -1
  42. package/assets/skills/docs/logo/SKILL.md +0 -492
  43. package/assets/skills/docs/video/SKILL.md +0 -666
@@ -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 |
@@ -0,0 +1,258 @@
1
+ ---
2
+ name: marketing-video
3
+ description: Plan and produce video content strategy including scripts, storyboards, and production specs. Use when user says "create video", "video content", "video script", "video strategy", "youtube content", "video plan".
4
+ ---
5
+
6
+ # Video Content Skill
7
+
8
+ Plan video content end-to-end: strategy, script, storyboard, production spec, publishing schedule.
9
+
10
+ ## When to use this skill
11
+
12
+ - ✅ Planning a video series or campaign (multi-video)
13
+ - ✅ Need a script + storyboard + production spec for a single video
14
+ - ✅ Repurposing existing long-form into shorts / clips
15
+ - ❌ Just need ideas, not a plan → use `brainstorm`
16
+ - ❌ Want full marketing plan (logo + content + video) → use `/marketing`
17
+ - ❌ Writing a blog post or thread → use `/marketing:content`
18
+
19
+ ---
20
+
21
+ ## Workflow
22
+
23
+ ```
24
+ STRATEGY → SCRIPT → STORYBOARD → PRODUCTION → PUBLISH
25
+ ```
26
+
27
+ ---
28
+
29
+ ## Phase 1: STRATEGY
30
+
31
+ **Goal:** lock the audience, goal, channels, and series plan.
32
+
33
+ ### Gather brief
34
+
35
+ Ask the user (skip what's already known):
36
+
37
+ | Field | Example |
38
+ |-------|---------|
39
+ | Primary goal (pick 1) | brand awareness / tutorial / lead gen / community / thought leadership |
40
+ | Audience | "Senior backend engineers evaluating Postgres tooling" |
41
+ | Channels (pick ≤3) | YouTube long / YouTube Shorts / TikTok / Reels / LinkedIn / X / Twitch |
42
+ | Cadence | "1 long video / week + 3 shorts" |
43
+ | Series concept | "From-zero series: build a SaaS in 10 episodes" |
44
+ | Tone | "Casual, technical, no fluff" |
45
+ | Existing assets | brand kit URL, prior videos, channel stats |
46
+
47
+ ### Output: 1-page strategy
48
+
49
+ ```markdown
50
+ ## Video Strategy: {brand}
51
+ - Goal: {one line}
52
+ - Audience: {one line}
53
+ - Channels: {list, with primary marked}
54
+ - Cadence: {long-form + shorts schedule}
55
+ - Series: {2-4 series, each with theme + episode count target}
56
+ - Brand: {voice, colors, logo lockup}
57
+ ```
58
+
59
+ ### Gate
60
+ - [ ] Goal + audience confirmed by user
61
+ - [ ] Channels matched to where audience watches
62
+ - [ ] At least 1 series concept defined
63
+
64
+ ---
65
+
66
+ ## Phase 2: SCRIPT
67
+
68
+ **Goal:** write a script that holds attention from frame 1.
69
+
70
+ ### Universal structure
71
+
72
+ ```
73
+ HOOK (≤10 sec, ≤30 sec for long-form)
74
+ - one of: contrarian claim / surprising number / pain question / curiosity gap
75
+ INTRO (≤15 sec)
76
+ - what they'll get + why this person/channel
77
+ BODY
78
+ - one idea per segment, each ≤90 sec for long-form, ≤15 sec for shorts
79
+ - pattern interrupt every 30-45 sec (cut, b-roll, on-screen text)
80
+ PAYOFF
81
+ - the answer / the demo / the result
82
+ CTA (≤10 sec)
83
+ - one ask: subscribe, link, comment with X
84
+ ```
85
+
86
+ ### Hook examples (pick a type, write 3 variants)
87
+
88
+ | Type | Example |
89
+ |------|---------|
90
+ | Contrarian | "Everyone tells you to write tests first. Here's why I stopped." |
91
+ | Number | "I shipped 47 features last quarter with 1 engineer. Here's how." |
92
+ | Pain question | "Your DB is slow at 100k rows? That's a config issue, not a Postgres limit." |
93
+ | Curiosity gap | "There's a feature in Go that nobody uses but it solves your timeout bug." |
94
+
95
+ ### Script length budget
96
+
97
+ | Format | Total | Hook | Body | CTA |
98
+ |--------|-------|------|------|-----|
99
+ | YouTube long | 8-15 min | 10-30 s | 7-13 min | 10-30 s |
100
+ | YouTube Short / Reel / TikTok | 30-60 s | ≤3 s | 25-50 s | ≤5 s |
101
+ | LinkedIn native | 1-3 min | ≤5 s | 50 s - 2 min 30 s | ≤10 s |
102
+
103
+ ### Gate
104
+ - [ ] Hook tested by reading frame 1 aloud — would you keep watching?
105
+ - [ ] One idea per segment (no parallel threads)
106
+ - [ ] Pattern interrupt every ≤45 sec (long-form)
107
+ - [ ] CTA is one ask, not three
108
+
109
+ ---
110
+
111
+ ## Phase 3: STORYBOARD
112
+
113
+ **Goal:** visual plan that the editor / camera-op can execute without asking questions.
114
+
115
+ ### Scene table (one row per cut)
116
+
117
+ | # | Time | Visual | Audio | Text overlay | Asset needed |
118
+ |---|------|--------|-------|--------------|--------------|
119
+ | 1 | 0:00-0:08 | Talking head, medium shot | Hook line | (none) | — |
120
+ | 2 | 0:08-0:25 | Screen recording: IDE | VO | "Step 1: install" | terminal recording |
121
+ | 3 | 0:25-0:40 | B-roll: server rack | VO | (none) | stock or own footage |
122
+
123
+ ### Visual rules (project-wide)
124
+
125
+ - Aspect ratio: 16:9 (YouTube long) / 9:16 (shorts, Reels, TikTok) / 1:1 (LinkedIn native fallback)
126
+ - Captions ALWAYS burned in for shorts (most viewers watch muted)
127
+ - Brand bug in bottom-right (long-form only) for first 5 sec + last 10 sec
128
+ - Max 2 fonts (display + body)
129
+ - Stick to brand palette (link to logo guidelines if available)
130
+
131
+ ### Gate
132
+ - [ ] One row per cut
133
+ - [ ] All assets listed and sourced (or "to record")
134
+ - [ ] Captions plan in place for muted viewing
135
+ - [ ] Aspect ratio matches the channel
136
+
137
+ ---
138
+
139
+ ## Phase 4: PRODUCTION
140
+
141
+ **Goal:** ship a production-ready file the publisher can upload without rework.
142
+
143
+ ### Tech spec per channel
144
+
145
+ | Channel | Resolution | FPS | Codec | Max length | Notes |
146
+ |---------|-----------|-----|-------|-----------|-------|
147
+ | YouTube long | 1080p or 4K | 30 / 60 | H.264 | 12 h | Chapters required for >5 min |
148
+ | YouTube Shorts | 1080×1920 | 30 / 60 | H.264 | 60 s | Vertical |
149
+ | TikTok | 1080×1920 | 30 / 60 | H.264 | 10 min | Caption per scene |
150
+ | Instagram Reels | 1080×1920 | 30 | H.264 | 90 s | First frame = thumbnail |
151
+ | LinkedIn native | 1920×1080 / 1080×1080 | 30 | H.264 | 10 min | Captions burned in |
152
+ | X (Twitter) | 1280×720+ | 30 / 60 | H.264 | 2 min 20 s | Add caption file |
153
+
154
+ ### Audio
155
+ - Voice: -3 dBFS peak, -16 LUFS integrated
156
+ - Music bed: -20 dBFS under voice, royalty-cleared (Epidemic, Artlist, or licensed)
157
+ - Cuts: trim every breath / um / "so" — tight pacing matters
158
+
159
+ ### Pre-publish checklist
160
+ - [ ] Color graded (consistent across cuts)
161
+ - [ ] Audio levels normalized
162
+ - [ ] Captions / subtitles burned in (where required) and SRT file for accessibility
163
+ - [ ] Thumbnail designed (3 variants for A/B if YouTube)
164
+ - [ ] Title written (≤60 chars, includes primary keyword)
165
+ - [ ] Description with timestamps, CTAs, links
166
+
167
+ ### Gate
168
+ - [ ] Tech spec matches target channel
169
+ - [ ] Thumbnail tested at small size (mobile feed)
170
+ - [ ] First 3 sec works without sound
171
+
172
+ ---
173
+
174
+ ## Phase 5: PUBLISH
175
+
176
+ **Goal:** get the video in front of the audience and measure.
177
+
178
+ ### Per-channel adaptation
179
+
180
+ - **YouTube long:** publish + immediately pin a comment with key timestamps + first-hour engagement push
181
+ - **Shorts:** publish 3-5x/week for algorithm; don't link in description (kills reach)
182
+ - **TikTok:** publish in batches at 7 PM local; respond to first 10 comments within 1 hour
183
+ - **LinkedIn:** native upload (don't link YouTube); post in first hour of work day
184
+ - **X:** native video; thread = video + 3-5 text takeaways
185
+
186
+ ### Cross-posting
187
+ - Cut shorts from long-form (3-5 per long video)
188
+ - Convert key insight into LinkedIn carousel + X thread
189
+ - Embed in blog post (boosts both)
190
+
191
+ ### Tracking
192
+ - UTM tags on all description links: `?utm_source=youtube&utm_medium=video&utm_campaign={series}`
193
+ - Watch: average view duration, retention curve (cliff = where to cut next time), CTR on thumbnail
194
+ - Iterate: kill formats with <30% retention after 3 attempts
195
+
196
+ ### Gate
197
+ - [ ] Adapted per channel (no copy-paste)
198
+ - [ ] UTMs applied
199
+ - [ ] Tracking dashboard updated
200
+
201
+ ---
202
+
203
+ ## Final Report
204
+
205
+ ```markdown
206
+ ## Video Plan: {brand / series}
207
+
208
+ ### Strategy
209
+ - Goal: {one line}
210
+ - Audience: {one line}
211
+ - Channels: {primary + secondary}
212
+
213
+ ### Videos Planned (next 4 weeks)
214
+ | # | Title | Format | Channel | Status |
215
+ |---|-------|--------|---------|--------|
216
+ | 1 | ... | long | YouTube | scripted |
217
+ | 2 | ... | short | Reels + TikTok + Shorts | storyboard |
218
+
219
+ ### Production Backlog
220
+ - {script ready, awaiting recording}
221
+ - {recording done, awaiting edit}
222
+
223
+ ### Metrics
224
+ - Baseline → Target per video and per series
225
+ ```
226
+
227
+ ---
228
+
229
+ ## Hard Rules
230
+
231
+ - **Hook decides everything** — if first 3 sec doesn't work, nothing after matters
232
+ - **Captions for muted viewing** — most feed views are sound-off
233
+ - **One ask in the CTA** — multiple CTAs = zero conversions
234
+ - **Vertical for mobile-first channels** — never reupload 16:9 to TikTok / Shorts
235
+ - **Kill what doesn't work after 3 attempts** — don't keep producing for an audience that isn't there
236
+
237
+ ---
238
+
239
+ ## Related Skills
240
+
241
+ | When | Use |
242
+ |------|-----|
243
+ | Full marketing plan (logo + content + video) | `/marketing` |
244
+ | Need brand visuals first | `/marketing:logo` |
245
+ | Repurpose video → blog / threads | `/marketing:content` |
246
+ | Brainstorm video topics | `brainstorm` |
247
+
248
+ ---
249
+
250
+ ## Recommended Agents
251
+
252
+ | Phase | Agent | Purpose |
253
+ |-------|-------|---------|
254
+ | STRATEGY | `@docs-writer` | Document the strategy brief |
255
+ | SCRIPT | `@docs-writer` | Draft and tighten scripts |
256
+ | STORYBOARD | `@docs-writer` | Scene descriptions |
257
+ | PRODUCTION | `@devops` | Tech specs + encoding |
258
+ | PUBLISH | `@docs-writer` | Channel adaptations + tracking |