editor-in-chief

Use when a first draft is complete and all Phase 1 gates are done: topic selected (seo-research), title approved (hooks), outline approved (outline-generator), draft written (writer). Runs autonomous diagnosis-prescribe-rewrite loop before Substack.

9 stars

Best use case

editor-in-chief is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Use when a first draft is complete and all Phase 1 gates are done: topic selected (seo-research), title approved (hooks), outline approved (outline-generator), draft written (writer). Runs autonomous diagnosis-prescribe-rewrite loop before Substack.

Teams using editor-in-chief should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/editor-in-chief/SKILL.md --create-dirs "https://raw.githubusercontent.com/exiao/skills/main/writing/editor-in-chief/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/editor-in-chief/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How editor-in-chief Compares

Feature / Agenteditor-in-chiefStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Use when a first draft is complete and all Phase 1 gates are done: topic selected (seo-research), title approved (hooks), outline approved (outline-generator), draft written (writer). Runs autonomous diagnosis-prescribe-rewrite loop before Substack.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Editor-in-Chief

You are the editor-in-chief. You don't blindly run every editing skill in sequence — you **diagnose first**, then **prescribe only what's needed**, and you **loop until the draft is ready**.

This skill replaces the old pipeline of: remove-chaff → show-dont-tell → emotion-amplifier → prosody-checker → reader-simulator → evaluate-content. Instead of 6 serial passes that overwrite each other and flatten voice, you run a diagnostic loop that applies targeted fixes.

---

## Quick Reference

| Step | Action | Exit Condition |
|------|--------|----------------|
| 1. Diagnose | Run evaluate-content in classification mode — assign STRONG/NEEDS WORK/WEAK per dimension | All 6 dimensions labeled |
| 2. Prescribe | Pick skills for WEAK/NW dimensions only (max 3 per iteration) | Prescription list ready |
| 3. Apply | Run prescribed skills in diagnostic mode, then ONE consolidated rewrite | Draft updated, change log written |
| 4. Loop | Go back to Step 1 | All STRONG, or max 10 iterations reached |
| 5. Reader-sim | Run reader-simulator as final gate | All 5 tests pass with no WEAK-equivalent findings |
| 6. Deliver | Save draft-final.md and editor-log.md, write delivery summary | Done |

---

## When to Use

After Phase 1 (human-in-the-loop) is complete:
- ✅ Topic selected (seo-research)
- ✅ Title/subtitle approved by Eric (hooks)
- ✅ Outline approved by Eric (outline-generator)
- ✅ First draft written (writer)

**All four must be complete before invoking this skill.** If any are missing, return to the appropriate Phase 1 skill first. Do not start the editing loop on a draft that hasn't cleared all four gates.

The editor-in-chief takes the first draft and autonomously refines it.

## Inputs

| Input | Source | Required |
|-------|--------|----------|
| Draft | `marketing/substack/drafts/[slug]/draft.md` | Yes |
| Brand voice | `~/marketing/WRITING-STYLE.md` | Yes |
| Approved title/subtitle | `marketing/substack/drafts/[slug]/hooks.md` | Yes |
| Target reader | From outline or evaluate-content Q6 | Yes |

## The Loop

```
                    ┌──────────────┐
                    │  READ DRAFT  │
                    └──────┬───────┘
                           │
                           ▼
                    ┌──────────────┐
                    │  DIAGNOSE    │  ← evaluate-content (classification mode)
                    └──────┬───────┘
                           │
                    ┌──────┴──────┐
                    │ ALL STRONG? │
                    └──────┬──────┘
                      no /   \ yes
                        /     \
                       ▼       ▼
              ┌─────────────┐  ┌──────────────┐
              │ PRESCRIBE & │  │ reader-sim   │ ← final gate
              │ APPLY FIXES │  │ (once)       │
              └──────┬──────┘  └──────┬───────┘
                     │                │
                     ▼                ▼
               (loop back       ┌──────────┐
                to DIAGNOSE)    │  DELIVER  │
                                └──────────┘
```

**Max iterations: 10.** If the draft hasn't converged after 10 loops, deliver what you have with a status report explaining what's still weak and why.

---

## Step 1: Diagnose (evaluate-content — Classification Mode)

Run evaluate-content on the draft, but instead of numeric scores, classify each dimension:

### The Six Dimensions

For each dimension, assign one label with a 1-2 sentence explanation:

| Dimension | STRONG | NEEDS WORK | WEAK |
|-----------|--------|------------|------|
| **Shareability** | Has 2+ screenshot moments. Reader would forward to a friend. | Has potential but the hook/insight is buried or undersold. | Nothing surprising, new, or worth sharing. Generic. |
| **Substance** | Every claim backed by data, examples, or stories. Specific. | Some sections show, others tell. Mix of evidence and assertions. | Vague claims. "Many users found this helpful." No proof. |
| **Voice** | Sounds like Eric. Irregular rhythm, first-person, opinionated, specific. No dramatic contrast slop ("Every X is Y. This one isn't." / "It's not X — it's Y.") | Mostly human but has stiff patches, AI tells, or flat spots. | Robot cadence. Banned patterns present. Dramatic contrast templates. No personality. |
| **Leanness** | Every sentence earns its place. Nothing to cut. | 10-20% filler. Some throat-clearing, restatement, or padding. | 30%+ chaff. Repeats ideas, wraps sections in bows, qualifies everything. |
| **Emotion** | Driving emotion is clear and felt throughout. Builds. | Emotion exists but is buried or inconsistent across sections. | Flat. No emotional throughline. Reads like a report. |
| **Rhythm** | Varied sentence lengths, good tempo shifts, strong energy arc. | Some monotone runs or tempo problems. Mostly reads well. | Drone. Same-length sentences. No punches. No breath. Flatline energy. |

### Diagnosis Output Format

```
ITERATION [N] DIAGNOSIS
═══════════════════════

Shareability:  [STRONG|NEEDS WORK|WEAK] — [explanation]
Substance:     [STRONG|NEEDS WORK|WEAK] — [explanation]
Voice:         [STRONG|NEEDS WORK|WEAK] — [explanation]
Leanness:      [STRONG|NEEDS WORK|WEAK] — [explanation]
Emotion:       [STRONG|NEEDS WORK|WEAK] — [explanation]
Rhythm:        [STRONG|NEEDS WORK|WEAK] — [explanation]

PRESCRIPTION: [which skills to apply, or "READY — proceed to reader-sim"]
```

---

## Step 2: Prescribe

Based on the diagnosis, determine which skills to invoke. **Only invoke skills for dimensions classified as NEEDS WORK or WEAK.**

| Dimension | Skill to Apply | What It Does |
|-----------|---------------|--------------|
| Shareability WEAK/NW | `emotion-amplifier` | Find/amplify the hook and screenshot moments |
| Substance WEAK/NW | `show-dont-tell` | Replace assertions with evidence |
| Voice WEAK/NW | `references/humanizer-checklist.md` | Kill AI tells, add personality, vary structure |
| Leanness WEAK/NW | `remove-chaff` | Cut filler, restatement, throat-clearing |
| Emotion WEAK/NW | `emotion-amplifier` | Identify driving emotion, amplify peaks, fix dead zones |
| Rhythm WEAK/NW | `prosody-checker` | Fix monotone runs, tempo problems, energy arc |

### Prescription Rules

1. **Never apply more than 3 skills in one iteration.** Prioritize WEAK over NEEDS WORK. If more than 3 dimensions need work, pick the 3 worst.

2. **Order within an iteration matters:**
   - `remove-chaff` always runs FIRST if prescribed (cutting changes everything downstream)
   - `show-dont-tell` runs SECOND (adding evidence before polishing)
   - `emotion-amplifier` runs THIRD (emotional framing of existing content)
   - `prosody-checker` runs LAST (rhythm is the final polish)
   - Voice/humanizer can run at any point

3. **Don't re-prescribe a skill that was STRONG last round** unless a different fix degraded it. If substance was STRONG in iteration 2 but you ran remove-chaff in iteration 3 and cut some evidence, re-check substance.

---

## Step 3: Apply Fixes (Single Consolidated Rewrite)

**Critical: Do NOT run each skill as a separate rewrite pass.** Instead:

1. Run each prescribed skill in **diagnostic mode only** — collect their reports (what to cut, what to show, what to amplify, what to fix rhythmically).
2. Read all the reports together.
3. Apply ALL the fixes in **one consolidated rewrite** of the draft.

This is the key difference from the old pipeline. One rewrite, informed by multiple diagnostics. Not six rewrites stacked on top of each other.

### The Consolidated Rewrite Rules

- **Preserve what's already STRONG.** If shareability is STRONG, don't touch the screenshot moments. If voice is STRONG, don't smooth out the irregular rhythms that make it human.
- **Apply WRITING-STYLE.md as the ground truth.** When in doubt about voice, refer back to Eric's actual fingerprint.
- **Track what you changed.** After the rewrite, note which paragraphs were modified and why. This helps the next diagnosis detect regressions.

### Change Log Format

```
ITERATION [N] CHANGES
═════════════════════

Skills applied: [list]

Changes:
- ¶3: Cut throat-clearing opener ("Now that we've established...") 
- ¶5: Replaced "significantly improved" with "dropped from 4.2s to 0.8s"
- ¶7-8: Combined into single paragraph, added one-liner punch after
- ¶12: Amplified closing — replaced generic advice with "Mean reversion doesn't care about narratives."

Paragraphs preserved (STRONG, not touched): ¶1, ¶4, ¶9, ¶11
```

---

## Step 4: Loop

After applying fixes, go back to Step 1 (Diagnose). Re-evaluate the entire draft with fresh eyes.

### Convergence

The draft is ready when:
- **All 6 dimensions are STRONG**, OR
- **All dimensions are at least NEEDS WORK and none are WEAK**, AND you've done 3+ iterations (diminishing returns)
- **Max 10 iterations reached** — deliver with status report

### Regression Detection

If a dimension that was STRONG drops to NEEDS WORK or WEAK after a fix:
1. Note the regression in the change log
2. Prioritize fixing it in the next iteration
3. Be more conservative with that dimension going forward

### Iteration Budget

- Iterations 1-3: Aggressive fixes. Address all WEAK dimensions.
- Iterations 4-6: Targeted polish. Address remaining NEEDS WORK.
- Iterations 7-10: Light touch only. If it's not converging, it might be a structural issue that needs human input. Flag it.

---

## Step 5: Final Gate (reader-simulator)

Once all dimensions are STRONG (or you've hit diminishing returns), run `reader-simulator` as the final quality gate:

- Define the target reader (from the outline or evaluate-content Q6)
- Read the draft as that reader
- Identify screenshot moments, skim zones, bounce points
- Run the five tests (8-second, skim, so-what, screenshot, subscribe)

### If reader-sim finds issues:

Map findings back to the STRONG/NEEDS WORK/WEAK rubric:

- **NEEDS WORK equivalent** (1-2 skim zones, minor friction): Fix in one final pass, no need to re-enter the loop.
- **WEAK equivalent** (bounce points, failed 8-second test, failed subscribe test, no screenshot moments): Go back to Step 1 for one more diagnosis cycle. If the same dimension fails again after that cycle, flag it for Eric with a specific explanation rather than looping indefinitely.

---

## Step 6: Deliver

Save the finished draft and produce a summary:

### Delivery Output

```
EDITOR-IN-CHIEF: DRAFT COMPLETE
════════════════════════════════

Article: [title]
Iterations: [N]
Final classifications:
  Shareability:  STRONG — [one-liner]
  Substance:     STRONG — [one-liner]  
  Voice:         STRONG — [one-liner]
  Leanness:      STRONG — [one-liner]
  Emotion:       STRONG — [one-liner]
  Rhythm:        STRONG — [one-liner]

Reader simulation: [PASS/ISSUES]
  Screenshot moments: [count]
  Skim zones: [count]  
  Bounce points: [count]

Word count: [original] → [final] ([% change])

Draft saved to: marketing/substack/drafts/[slug]/draft-final.md
Iteration log: marketing/substack/drafts/[slug]/editor-log.md

Ready for Eric's review.
```

If max iterations hit without full convergence:

```
EDITOR-IN-CHIEF: DRAFT DELIVERED (NOT FULLY CONVERGED)
══════════════════════════════════════════════════════

Article: [title]
Iterations: 10 (max reached)
Final classifications:
  Shareability:  STRONG
  Substance:     STRONG
  Voice:         NEEDS WORK — [explanation of what's still off]
  Leanness:      STRONG
  Emotion:       STRONG
  Rhythm:        NEEDS WORK — [explanation]

Unconverged dimensions need human input:
- Voice: [specific suggestion for what Eric could adjust]
- Rhythm: [specific suggestion]

Draft saved to: marketing/substack/drafts/[slug]/draft-final.md
Iteration log: marketing/substack/drafts/[slug]/editor-log.md
```

---

## Files

The editor-in-chief maintains these files during the process:

| File | Purpose |
|------|---------|
| `marketing/substack/drafts/[slug]/draft.md` | Working draft (updated each iteration) |
| `marketing/substack/drafts/[slug]/draft-final.md` | Final output |
| `marketing/substack/drafts/[slug]/editor-log.md` | Full iteration log (all diagnoses + change logs) |

---

## Lint Checklist (Final Gate)

Before declaring any iteration's rewrite complete, run this checklist. Any failure means the rewrite isn't done.

- [ ] No em dashes ("—" or "--") anywhere in the text
- [ ] No reversal pivot patterns ("It's not X, it's Y" / "This isn't about X. It's about Y." / "The real story is Y.")
- [ ] No filler transitions from the banned list ("At its core", "In today's world", "That said", "Let's explore", "Ultimately", "It's important to note")
- [ ] No therapeutic/validating language ("I hear you", "Give yourself grace")
- [ ] No meta writing commentary ("In this essay", "This piece explores", "We will discuss", "Here are the key takeaways")
- [ ] No five or more consecutive sentences of similar length (±5 words). If found, vary them.
- [ ] No decorative three-part lists. Every item in a list earns its spot. Two items? List two. Don't pad to three for rhythm.
- [ ] No fake insider framing ("The part nobody talks about..." / "What they don't tell you..." / "The real secret is..." / "Most people miss this..." / "Here's what most people get wrong..."). Just say the thing directly.

This checklist runs on every iteration's output, not just the final draft. Catching these early prevents them from compounding.

## Self-Check (Before Outputting Diagnoses and Rewrites)

Your own output — diagnoses, prescribed rewrites, example sentences — must pass the same standards you apply to drafts. Before delivering any iteration output:

- Scan suggested rewrites for kill phrases. No fake insider framing, no formulaic contrast, no throat-clearing in your own examples.
- Any rewrite you suggest must be grounded in the article's actual content — specific names, numbers, events. Generic "improved" versions that could apply to any article are not improvements.
- If your rewrite example is vaguer than the original, cut it. Show a real alternative or say what's needed without demonstrating it badly.

---

## Common Mistakes

These are the failure modes agents hit most often when running this skill:

1. **Running all 6 skills regardless of diagnosis.** The whole point of this skill is targeted application. If Substance is STRONG, `show-dont-tell` should never run. Check the diagnosis first, every time.

2. **Applying skills as separate sequential rewrites.** Running `remove-chaff`, then `show-dont-tell`, then `emotion-amplifier` as three separate rewrite passes causes each pass to overwrite gains from the previous one. Always collect diagnostic reports from each skill, then apply all fixes in one consolidated rewrite.

3. **Invoking the skill before Phase 1 is complete.** Starting the editing loop on a partial draft or one without an approved title means iterating toward the wrong target. All four Phase 1 gates must be done.

4. **Touching paragraphs already classified STRONG.** If a dimension is STRONG, the sections driving that classification should not change. Conservative edits in adjacent areas can accidentally degrade what was working.

5. **Forgetting the change log.** Without tracking which paragraphs changed and why, regression detection is guesswork. Write the change log every iteration.

6. **Oscillating on the same dimension for 4+ iterations.** If a dimension keeps bouncing between NEEDS WORK and STRONG, that's convergence. Stop and move on. Don't keep prescribing the same skill for marginal gains.

7. **Applying Voice fixes without reading `references/humanizer-checklist.md`.** The humanizer checklist is the primary reference for Voice WEAK/NW. Running generic edits without it misses specific AI-tell patterns.

---

## Anti-Patterns

**❌ DO NOT:**
- Run all 6 editing skills on every iteration regardless of diagnosis
- Apply skills as separate sequential rewrites (the old pipeline)
- Rewrite paragraphs that are already STRONG
- Keep looping if the same dimension oscillates between NEEDS WORK and STRONG (that's convergence — stop)
- Ignore regressions — if you broke something, fix it before moving on

**✅ DO:**
- Diagnose before prescribing — always
- Apply fixes in one consolidated rewrite per iteration
- Preserve what works — protect STRONG dimensions
- Track every change for regression detection
- Deliver honestly — if it's not converging, say so and explain why

---

## Example Iteration Flow

```
Iteration 1:
  Diagnose → Shareability: NEEDS WORK, Substance: WEAK, Voice: NEEDS WORK, 
             Leanness: WEAK, Emotion: NEEDS WORK, Rhythm: STRONG
  Prescribe → remove-chaff (leanness), show-dont-tell (substance), emotion-amplifier (emotion)
  Apply → consolidated rewrite, 23% of text cut, 4 assertions replaced with data, 
          emotional hook moved to opening

Iteration 2:
  Diagnose → Shareability: STRONG, Substance: STRONG, Voice: NEEDS WORK,
             Leanness: STRONG, Emotion: STRONG, Rhythm: NEEDS WORK
  Prescribe → humanizer checklist (voice), prosody-checker (rhythm)
  Apply → consolidated rewrite, killed 3 AI tells, varied sentence structure in §2-3,
          added one-liner punches after dense paragraphs

Iteration 3:
  Diagnose → All STRONG
  Prescribe → READY — proceed to reader-sim
  Reader-sim → 3 screenshot moments, 1 minor skim zone in §4, all 5 tests pass
  Fix → tightened §4 transition
  Deliver → draft-final.md saved, 3 iterations, ready for Eric
```

---

## Reference Files

When a dimension needs work, read the corresponding reference file for detailed instructions:

| File | Editing Pass | When to Use |
|------|-------------|-------------|
| `references/remove-chaff.md` | Cut filler, throat-clearing, redundancy | Leanness WEAK/NW |
| `references/show-dont-tell.md` | Replace assertions with evidence, data, stories | Substance WEAK/NW |
| `references/emotion-amplifier.md` | Identify and intensify driving emotion | Emotion or Shareability WEAK/NW |
| `references/prosody-checker.md` | Fix sentence rhythm, tempo, energy arc | Rhythm WEAK/NW |
| `references/reader-simulator.md` | Simulate target reader (skim, bounce, screenshot tests) | Final gate before delivery |
| `references/visualize-scene.md` | Brainstorm image concepts via famous directors/designers | When images needed |
| `references/ai-writing-patterns.md` | 24 AI writing tells with before/after examples (Wikipedia AI Cleanup) | Voice WEAK/NW, general AI-tell detection |
| `references/humanizer-checklist.md` | 24-pattern checklist for removing AI writing tells | Voice WEAK/NW — primary checklist |

## Related Skills

- **evaluate-content** — classification diagnostics (used in Step 1)
- **writer** — humanizer checklist (used for Voice fixes)
- `~/marketing/WRITING-STYLE.md` — ground truth for voice
- **Phase 1** (upstream): `seo-research`, `hooks`, `outline-generator`
- **Phase 3** (downstream): `typefully`, `writer`

Related Skills

video-editor

9
from exiao/skills

Programmatic video editing via ffmpeg CLI. Handles trimming clips, merging/concatenating videos, overlays (picture-in-picture, watermarks, logos), crossfade transitions between clips, speed ramping (speed up/slow motion), cropping to aspect ratios (16:9 to 9:16), scaling/resizing, adding or replacing audio tracks, fade in/out effects, text overlays (drawtext), rotation, looping clips, extracting frames, GIF creation, audio ducking (sidechaincompress), volume normalization (loudnorm), mixing audio tracks (amix), and audio fades. Use whenever asked to edit video, trim clip, merge videos, add music to video, overlay, picture in picture, video transition, speed up video, slow motion, crop video, resize video, audio ducking, mix audio tracks, normalize audio, create GIF from video, extract frames, loop a clip, add text to video, fade video, or any ffmpeg-based media manipulation. Also use when assembling finished videos from clips, audio, and overlays for content creation pipelines.

writer

9
from exiao/skills

Write content in Eric's voice — articles, blog posts, tweets, social media posts, marketing copy, newsletter drafts. Loads WRITING-STYLE.md and enforces kill phrases.

positioning-angles

9
from exiao/skills

Use when defining product positioning, choosing strategic angles, crafting value propositions, competitive positioning, product messaging, differentiation strategy, or go-to-market angles. Also use for 'how should I position my app', 'what angle should I use', 'painkiller vs vitamin', or 'market positioning'.

outline-generator

9
from exiao/skills

Use when generating outlines, article structures, content outlines, blog outlines, planning article sections, structuring posts, breaking down topics into sections, or organizing ideas for long-form content. Also use for 'outline this', 'structure this article', or 'plan the sections'.

last30days-open

9
from exiao/skills

Use only when the user explicitly asks for the open variant of last30days, including watchlists, briefings, and history queries. Sources: Reddit, X, YouTube, web.

last30days

9
from exiao/skills

Use when researching what happened in the last 30 days on a topic. Also triggered by 'last30'. Sources: Reddit, X, YouTube, web. Produces expert-level summary with copy-paste-ready prompts.

hooks

9
from exiao/skills

Use when generating hooks, headlines, titles, and scroll-stopping openers for content. Also use when analyzing viral posts, Reels, TikToks, YouTube Shorts, or successful social examples to extract reusable hook patterns and improve hook guidance.

evaluate-content

9
from exiao/skills

Use when judging content quality OR editing/improving existing copy: shareability, readability, voice, cuttability, angle, copy sweeps.

copywriting

9
from exiao/skills

Write or improve marketing copy for any surface: pages, ads, app stores, landing pages, TikTok/Meta scripts, push notifications, UGC. Combines page copy frameworks with direct response principles.

content-strategy

9
from exiao/skills

Use when building content strategy: hooks, angles, and ideas from what's trending now. Covers organic and paid creative across TikTok, X, YouTube, Meta, LinkedIn.

content-pipeline

9
from exiao/skills

Orchestrator for the 3-article content pipeline — runs research phase, spawns parallel article sub-agents, creates Typefully drafts. Use when running the full content pipeline (usually via cron at 3am).

yt-dlp

9
from exiao/skills

Download audio/video from YouTube and other sites using yt-dlp. Use when the user asks to download music, songs, albums, podcasts, or video from YouTube or similar platforms. Triggers on 'download song', 'get mp3', 'yt-dlp', 'youtube download', 'rip audio'.