Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,12 @@ scribe/
- Anti-patterns at repo root (not nested in skills/) because many agents read them
- Specialists use Haiku (fast, cheap, constrained output)
- Implementation agents use Sonnet (code generation)
- Conductor, voice-critic, and critique-synthesizer use Opus 4.8 (complex judgment, synthesis)
- Conductor, voice-critic, and critique-synthesizer use Opus (complex judgment, synthesis)
- Conductor never writes or critiques - only coordinates

## Adding a New Agent

1. Create `agents/your-agent.md` with YAML frontmatter (name, model, description)
1. Create `agents/your-agent.md` with YAML frontmatter (name, model, description). Set `model` to a tier alias (`haiku`, `sonnet`, `opus`), never a pinned model ID
2. Reference files using `${CLAUDE_PLUGIN_ROOT}/path/to/file`
3. Define clear inputs, outputs, and constraints
4. If the agent participates in the pipeline, update `skills/scribe/references/orchestration/pipeline.md`
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,8 @@ Scribe ships with anti-patterns across three files:
### Critics (parallel ensemble)
`rhythm-critic` `voice-critic` `cliche-detector` `ai-ism-critic` `pacing-critic`

### Orchestration (Opus 4.8)
`conductor` `anti-pattern-selector` `critique-synthesizer`
### Orchestration
`conductor` `critique-synthesizer` (Opus), `anti-pattern-selector` (Sonnet)

## Contributing

Expand Down
2 changes: 1 addition & 1 deletion agents/ai-ism-critic.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: ai-ism-critic
model: claude-haiku-4-5
model: haiku
description: Detects the specific lexical and structural fingerprints of AI-generated prose. The most direct AI-default detection critic. Reads only assigned subset slice tagged ai-isms/ai-tell/ai-canary. Produces a 0-25 score and an itemized list of fingerprint hits.
---

Expand Down
2 changes: 1 addition & 1 deletion agents/anti-pattern-selector.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: anti-pattern-selector
model: claude-sonnet-4-6
model: sonnet
description: Selects a varied subset of anti-patterns for the current scribe run. Reads the manifest plus brief-specific signals (persona, surface, audience, voice signature), excludes the previous run's subset to enforce rotation, weights ai-ism patterns higher, and appends an audit record to state/draws.jsonl. Spawned first in every pipeline. Never writes or critiques. Output is the subset that downstream agents must use.
---

Expand Down
2 changes: 1 addition & 1 deletion agents/cliche-detector.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: cliche-detector
model: claude-haiku-4-5
model: haiku
description: Detects cliches, manufactured aphorisms, dead metaphors, and content-marketing-blog phrasings. Reads only assigned subset slice tagged aphorism/rhetoric/opener/closer. Produces a 0-25 score and findings with replacement suggestions.
---

Expand Down
2 changes: 1 addition & 1 deletion agents/conductor.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: conductor
model: claude-opus-4-8
model: opus
description: Pipeline orchestrator for scribe writing workflows. Manages the 6-phase pipeline (draw, plan, interview, draft, review, present), spawns the anti-pattern-selector first to pick a varied subset, threads that subset through all specialists and critics, runs a parallel critic ensemble plus synthesizer in REVIEW, and enforces quality gates with targeted rework. Does NOT write, edit, or critique. Coordinates only.
---

Expand Down
2 changes: 1 addition & 1 deletion agents/critique-synthesizer.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: critique-synthesizer
model: claude-opus-4-8
model: opus
description: Merges parallel critic outputs (rhythm, voice, cliche, ai-ism, pacing) into a single consensus report with a 0-100 Sameness Score. Deduplicates findings across critics. Routes targeted rework to the right specialist. Does NOT critique on its own — synthesizes only.
---

Expand Down
2 changes: 1 addition & 1 deletion agents/cross-persona-audit.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: cross-persona-audit
model: claude-sonnet-4-6
model: sonnet
description: Audits the 5 scribe persona definitions for structural divergence. Detects dimensions where two or more personas would produce indistinguishable prose. Flags overlap, produces a pairwise divergence matrix. Run when persona files are modified or when a new persona is added.
---

Expand Down
2 changes: 1 addition & 1 deletion agents/dialogue-specialist.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: dialogue-specialist
model: claude-haiku-4-5
model: haiku
description: Plans dialogue beats — speech rhythm, dialogue tag discipline, register per character. Only spawned when the surface is `dialogue` or when the structure-specialist's skeleton includes dialogue beats. Outputs a dialogue spec the draft-implementer follows.
---

Expand Down
2 changes: 1 addition & 1 deletion agents/draft-implementer.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: draft-implementer
model: claude-sonnet-4-6
model: sonnet
description: The first writer in the pipeline. Takes specialist specs (rhythm, voice, vocabulary, structure, optionally dialogue) and the persona file, and produces a first draft. Reads only the assigned subset of anti-patterns. Does NOT critique. Does NOT revise its own output.
---

Expand Down
2 changes: 1 addition & 1 deletion agents/external-judge.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: external-judge
model: claude-sonnet-4-6
model: sonnet
description: Independent Sameness scorer for prose. Reads prose only — no access to specialists' outputs, the synthesizer's findings, or the critic ensemble's reasoning. Used when an external validation harness needs an unbiased second opinion. Outputs JSON with score and indicators_hit.
---

Expand Down
2 changes: 1 addition & 1 deletion agents/pacing-critic.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: pacing-critic
model: claude-haiku-4-5
model: haiku
description: Audits chapter and essay pacing — how the passage opens, how it transitions between scenes, where the thesis lands, how it closes. Detects predictable section sequences, three-anecdote montages, recap discipline failures. Only spawned for chapter/essay surfaces (not blurbs or single paragraphs). 0-25 score.
---

Expand Down
2 changes: 1 addition & 1 deletion agents/research-scout.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: research-scout
model: claude-sonnet-4-6
model: sonnet
description: Mines Reddit, Hacker News, X/Twitter, Substack, writing communities, and editor blogs for emerging AI-default writing patterns. Requires 2+ independent complaints per pattern. Files dated, kebab-case patterns to anti-patterns/sourced-from-research/. Opens PRs only — never pushes to main.
---

Expand Down
2 changes: 1 addition & 1 deletion agents/rhythm-critic.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: rhythm-critic
model: claude-haiku-4-5
model: haiku
description: Audits prose rhythm — sentence-length variance, paragraph-length variance, em-dash density, tricolon usage, single-sentence-paragraph presence. Reads only the assigned subset slice tagged rhythm/paragraph/pacing. Produces a per-dimension score (0-25) and specific findings.
---

Expand Down
2 changes: 1 addition & 1 deletion agents/rhythm-specialist.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: rhythm-specialist
model: claude-haiku-4-5
model: haiku
description: Defines the sentence-length distribution, paragraph rhythm, and pacing targets for a scribe writing run. Reads the persona file and the user's brief; outputs a rhythm spec the draft-implementer must hit. Does NOT write prose. Does NOT read outside the assigned subset.
---

Expand Down
2 changes: 1 addition & 1 deletion agents/structure-specialist.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: structure-specialist
model: claude-haiku-4-5
model: haiku
description: Plans the macro-structure of the passage — paragraph order, section breaks, how the surface opens and closes. Reads the rhythm/voice/vocabulary specialists' outputs and the persona file. Outputs a paragraph-by-paragraph skeleton the draft-implementer fills in.
---

Expand Down
2 changes: 1 addition & 1 deletion agents/vocabulary-specialist.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: vocabulary-specialist
model: claude-haiku-4-5
model: haiku
description: Builds the vocabulary register list for a scribe writing run — required vocabulary categories, banned words, target specificity. Reads persona file and brief; outputs a vocabulary spec the draft-implementer must hit.
---

Expand Down
2 changes: 1 addition & 1 deletion agents/voice-critic.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: voice-critic
model: claude-opus-4-8
model: opus
description: Audits voice consistency, register, point-of-view discipline, and authorial stance. Detects when the voice drifts toward a different persona's register mid-passage. Reads only the assigned subset slice tagged voice/register/vocabulary. Produces a 0-25 score and findings.
---

Expand Down
2 changes: 1 addition & 1 deletion agents/voice-implementer.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: voice-implementer
model: claude-sonnet-4-6
model: sonnet
description: Second-pass writer. Takes the draft-implementer's output and revises for voice consistency, rhythm precision, and removal of any AI-default phrases that slipped through. Does NOT critique scores. Outputs revised prose only.
---

Expand Down
2 changes: 1 addition & 1 deletion agents/voice-specialist.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: voice-specialist
model: claude-haiku-4-5
model: haiku
description: Defines the voice register, tense, point-of-view, and authorial stance for a scribe writing run. Reads the persona file and any voice signature in the user's brief; outputs a voice spec the draft-implementer must follow. Does NOT write prose.
---

Expand Down
6 changes: 3 additions & 3 deletions skills/scribe/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,9 @@ The `anti-pattern-selector` agent enforces all four. Runs first in every command

| Agent | Model | Role |
|---|---|---|
| `conductor` | Opus 4.8 | Pipeline orchestrator. Manages state, spawns specialists, enforces quality gates. |
| `conductor` | Opus | Pipeline orchestrator. Manages state, spawns specialists, enforces quality gates. |
| `anti-pattern-selector` | Sonnet | Picks the varied subset for this run, writes the audit log. Runs first in every pipeline. |
| `critique-synthesizer` | Opus 4.8 | Merges parallel critic outputs, deduplicates, computes consensus 0-100 Sameness Score. |
| `critique-synthesizer` | Opus | Merges parallel critic outputs, deduplicates, computes consensus 0-100 Sameness Score. |

### Planning Specialists (read-only, produce specs)

Expand All @@ -101,7 +101,7 @@ The `anti-pattern-selector` agent enforces all four. Runs first in every command
| Agent | Model | Role |
|---|---|---|
| `rhythm-critic` | Haiku | Sentence/paragraph variance, em-dash density, tricolons. 0-25 |
| `voice-critic` | Opus 4.8 | Voice consistency, vocabulary register, marketing-verb detection. 0-25 |
| `voice-critic` | Opus | Voice consistency, vocabulary register, marketing-verb detection. 0-25 |
| `cliche-detector` | Haiku | Universal aphorisms, dead metaphors, content-marketing openers. 0-25 |
| `ai-ism-critic` | Haiku | Direct lexical and structural AI-fingerprint detection. 0-25 |
| `pacing-critic` | Haiku | Chapter/essay-level pacing — only for those surfaces. 0-25 |
Expand Down
4 changes: 4 additions & 0 deletions tools/validate_plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,10 @@ def validate_agents_and_commands() -> None:
for key in ["name", "model", "description"]:
if not fm.get(key):
fail(f"{path.relative_to(ROOT)} missing frontmatter field {key}")
# Tier aliases resolve to the newest model in that tier, so agents never pin a
# model ID that a later release makes obsolete.
if fm["model"] not in {"haiku", "sonnet", "opus", "inherit"}:
fail(f"{path.relative_to(ROOT)} model must be a tier alias (haiku, sonnet, opus, inherit), not {fm['model']}")
if fm["name"] in names:
fail(f"duplicate agent name {fm['name']}")
names.add(fm["name"])
Expand Down
Loading