feat(commands): add /essay-outline command
Some checks failed
CI / test (push) Has been cancelled

Transforms a brain dump into a story-structured essay outline.
Pressure tests for a real thesis, applies the Saunders framework
via story-lens skill to validate hook, escalation, and conclusion,
then writes a tight outline to file.

Also fixes stale skill count in README (22 → 24).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
John Lamb
2026-03-08 22:43:57 -05:00
parent e15cb6a869
commit 91bbee1a14
7 changed files with 239 additions and 6 deletions

View File

@@ -11,8 +11,8 @@
"plugins": [
{
"name": "compound-engineering",
"description": "AI-powered development tools that get smarter with every use. Make each unit of engineering work easier than the last. Includes 25 specialized agents, 23 commands, and 22 skills.",
"version": "2.36.0",
"description": "AI-powered development tools that get smarter with every use. Make each unit of engineering work easier than the last. Includes 25 specialized agents, 24 commands, and 24 skills.",
"version": "2.38.0",
"author": {
"name": "Kieran Klaassen",
"url": "https://github.com/kieranklaassen",

View File

@@ -1,7 +1,7 @@
{
"name": "compound-engineering",
"version": "2.36.0",
"description": "AI-powered development tools. 25 agents, 23 commands, 22 skills, 1 MCP server for code review, research, design, and workflow automation.",
"version": "2.38.0",
"description": "AI-powered development tools. 25 agents, 24 commands, 24 skills, 1 MCP server for code review, research, design, and workflow automation.",
"author": {
"name": "Kieran Klaassen",
"email": "kieran@every.to",

View File

@@ -5,6 +5,18 @@ All notable changes to the compound-engineering plugin will be documented in thi
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [2.38.0] - 2026-03-08
### Added
- **`/essay-outline` command** - Transform a brain dump into a story-structured essay outline. Pressure tests ideas for a real thesis and payoff, applies the Saunders storytelling framework (via `story-lens` skill) to validate hook, escalation, and conclusion, then produces a tight outline written to file.
## [2.37.0] - 2026-03-08
### Added
- **`story-lens` skill** - Evaluate prose quality using George Saunders's storytelling framework (beat causality, escalation, three E's, character accumulation, moral/technical unity)
## [2.36.0] - 2026-02-27
### Added

View File

@@ -7,8 +7,8 @@ AI-powered development tools that get smarter with every use. Make each unit of
| Component | Count |
|-----------|-------|
| Agents | 25 |
| Commands | 23 |
| Skills | 22 |
| Commands | 24 |
| Skills | 24 |
| MCP Servers | 1 |
## Agents
@@ -96,6 +96,7 @@ Core workflow commands use `workflows:` prefix to avoid collisions with built-in
| `/agent-native-audit` | Run comprehensive agent-native architecture review |
| `/deploy-docs` | Validate and prepare documentation for GitHub Pages |
| `/pr-comments-to-todos` | Fetch PR comments and convert to todo files |
| `/essay-outline` | Transform a brain dump into a story-structured essay outline |
## Skills
@@ -129,6 +130,7 @@ Core workflow commands use `workflows:` prefix to avoid collisions with built-in
| `john-voice` | Write content in John Lamb's authentic voice across all venues |
| `resolve-pr-parallel` | Resolve PR review comments in parallel |
| `setup` | Configure which review agents run for your project |
| `story-lens` | Evaluate prose quality using George Saunders's storytelling framework |
| `upstream-merge` | Incorporate upstream git changes while preserving local fork intent |
### Multi-Agent Orchestration

View File

@@ -0,0 +1,96 @@
---
name: essay-outline
description: Transform a brain dump into a story-structured essay outline. Pressure tests the idea, validates story structure using the Saunders framework, and produces a tight outline written to file.
argument-hint: "[brain dump — your raw ideas, however loose]"
---
# Essay Outline
Turn a brain dump into a story-structured essay outline.
## Brain Dump
<brain_dump> #$ARGUMENTS </brain_dump>
**If the brain dump above is empty, ask the user:** "What's the idea? Paste your brain dump — however raw or loose."
Do not proceed until you have a brain dump.
## Execution
### Phase 1: Idea Triage
Read the brain dump and locate the potential thesis — the single thing worth saying. Ask: would a smart, skeptical reader finish this essay and think "I needed that"?
Play devil's advocate. This is the primary job. Look for:
- **Weak thesis** — Is this a real insight, or just a topic? A topic is not a thesis. "Remote work is complicated" is a topic. "Remote work didn't fail the office — the office failed remote work" is a thesis.
- **Missing payoff** — What does the reader walk away with that they didn't have before? If there's no answer, say so.
- **Broken connective tissue** — Do the ideas connect causally ("and therefore") or just sequentially ("and another thing")? Sequential ideas are a list, not an essay.
- **Unsupported claims** — Use outside research to pressure-test assertions. If a claim doesn't hold up, flag it and explore whether it can be rescued.
**If nothing survives triage:** Say directly — "There's nothing here yet." Then ask one question aimed at finding a salvageable core. Do not produce an outline for an idea that hasn't earned one.
**If the idea survives but has weaknesses:** Identify the weakest link and collaboratively generate a fix before moving to Phase 2.
### Phase 2: Story Structure Check
Load the `story-lens` skill. Apply the Saunders framework to the *idea* — not prose. The essay may not involve characters. That's fine. Translate the framework as follows:
| Saunders diagnostic | Applied to essay ideas |
|---|---|
| Beat causality | Does each supporting point *cause* the reader to need the next one, or do they merely follow it? |
| Escalation | Does each beat raise the stakes of the thesis — moving the reader further from where they started? |
| Story-yet test | If the essay ended after the hook, would anything have changed for the reader? After the first supporting point? Each beat must earn its place. |
| Efficiency | Is every idea doing work? Cut anything that elaborates without advancing. |
| Expectation | Does each beat land at the right level — surprising but not absurd, inevitable in hindsight? |
| Moral/technical unity | If something feels off — a point that doesn't land, a conclusion that feels unearned — find the structural failure underneath. |
**The non-negotiables:**
- The hook must create a specific expectation that the essay then fulfills or subverts
- Supporting beats must escalate — each one should make the thesis harder to dismiss, not just add to it
- The conclusion must deliver irreversible change in the reader's understanding — they cannot un-think what the essay showed them
Flag any diagnostic failures. For each failure, propose a fix. If the structure cannot be made to escalate, say so.
### Phase 3: Outline Construction
Produce the outline only after the idea has survived Phases 1 and 2.
**Structure:**
- Hook — the opening move that sets an expectation
- Supporting beats — each one causal, each one escalating
- Conclusion — the irreversible change delivered to the reader
**Format rules:**
- Bullets and sub-bullets only
- Max 3 sub-bullets per bullet
- No sub-sub-bullets
- Each bullet is a *beat*, not a topic — it should imply forward motion
- Keep it short. A good outline is a skeleton, not a draft.
**Write the outline to file:**
```
docs/outlines/YYYY-MM-DD-[slug].md
```
Ensure `docs/outlines/` exists before writing. The slug should be 3-5 words derived from the thesis, hyphenated.
## Output Summary
When complete, display:
```
Outline complete.
File: docs/outlines/YYYY-MM-DD-[slug].md
Thesis: [one sentence]
Story verdict: [passes / passes with fixes / nothing here]
Key structural moves:
- [Hook strategy]
- [How the beats escalate]
- [What the conclusion delivers]
```

View File

@@ -0,0 +1,48 @@
---
name: story-lens
description: This skill should be used when evaluating whether a piece of prose constitutes a high-quality story. It applies George Saunders's craft framework — causality, escalation, efficiency, expectation, and character accumulation — as a structured diagnostic lens. Triggers on requests like "is this a good story?", "review this prose", "does this feel like a story or just an anecdote?", "critique this narrative", or any request to assess the craft quality of fiction or narrative nonfiction.
---
# Story Lens
A diagnostic skill for evaluating prose quality using George Saunders's storytelling framework. The framework operates on a single core insight: the difference between a story and an anecdote is causality plus irreversible change.
Load [saunders-framework.md](./references/saunders-framework.md) for the full framework, including all diagnostic questions and definitions.
## How to Apply the Skill
### 1. Read the Prose
Read the full piece before forming any judgments. Resist diagnosing on first pass.
### 2. Apply the Six Diagnostic Questions in Order
Each question builds on the previous.
**Beat Causality**
Map the beats. Does each beat cause the next? Or are they sequential — "and then... and then..."? Sequential beats = anecdote. Causal beats = story.
**Escalation**
Is the story moving up a staircase or running on a treadmill? Each step must be irrevocable. Once a character's condition has fundamentally changed, the story cannot re-enact that change or linger in elaboration. Look for sections that feel like they're holding still.
**The Story-Yet Test**
Stop at the end of each major section and ask: *if it ended here, would it be complete?* Something must have changed irreversibly. If nothing has changed, everything so far is setup — not story.
**Character Accumulation**
Track what the reader learns about the character, beat by beat. Is that knowledge growing? Does each beat confirm, complicate, or overturn prior understanding? Flat accumulation = underdeveloped character. Specificity accrues into care.
**The Three E's**
Check against the triad: Escalation (moving forward), Efficiency (nothing extraneous), Expectation (next beat is surprising but not absurd). Failure in any one of these is diagnosable.
**Moral/Technical Unity**
If something feels off emotionally or ethically — a character's choice that doesn't ring true, a resolution that feels unearned — look for the technical failure underneath. Saunders's claim: it is always there. Find the craft problem, and the moral problem dissolves.
### 3. Render a Verdict
After applying all six diagnostics, deliver a clear assessment:
- Is this a story, or still an anecdote?
- Which diagnostic reveals the primary weakness?
- What is the single most important structural fix?
Be direct. The framework produces precise, actionable diagnoses — not impressionistic feedback. Imprecise praise or vague encouragement is not useful here. The goal is to help the writer see exactly where the story is working and where it isn't.

View File

@@ -0,0 +1,75 @@
# The Saunders Storytelling Framework
A distillation of George Saunders's craft principles for evaluating whether prose constitutes a high-quality story.
---
## The Fundamental Unit: The Beat
Every moment in a story is a beat. Each beat must *cause* the next beat. Saunders calls causality "what melody is to a songwriter" — it's the invisible connective tissue the audience feels as the story's logic.
The test: are beats **causal** or merely **sequential**?
- Sequential (anecdote): "this happened, then this happened"
- Causal (story): "this happened, *therefore* this happened"
If beats are merely sequential, the work reads as anecdote, not story.
---
## What Transforms Anecdote into Story: Escalation
> "Always be escalating. That's all a story is, really: a continual system of escalation. A swath of prose earns its place in the story to the extent that it contributes to our sense that the story is still escalating."
Escalation isn't just raising stakes — it's **irrevocable change**. Once a story has moved forward through some fundamental change in a character's condition, you don't get to enact that change again, and you don't get to stay there elaborating on that state.
**The story is a staircase, not a treadmill.**
---
## The "Is This a Story Yet?" Diagnostic
Stop at any point and ask: *if it ended here, would it be complete?*
Early on, the answer is almost always no — because nothing has changed yet. The story only becomes a story at the moment something changes irreversibly.
**Precise test: change = story. No change = still just setup.**
---
## The "What Do We Know About This Character So Far?" Tool
Take inventory constantly. A reader's understanding of a character is always a running accumulation — and every beat should either **confirm**, **complicate**, or **overturn** that understanding.
The more we know about a person — their hopes, dreams, fears, and failures — the more compassionate we become toward them. This is how the empathy machine operates mechanically: **specificity accrues, and accrued specificity generates care.**
---
## The Three E's
Three words that capture the full framework:
1. **Escalation** — the story must continuously move forward through irrevocable change
2. **Efficiency** — ruthlessly exclude anything extraneous to the story's purposes
3. **Expectation** — what comes next must hit a Goldilocks level: not too obvious, not too absurd
---
## The Moral/Technical Unity
Any story that suffers from what seems like a **moral failing** will, with sufficient analytical attention, be found to be suffering from a **technical failing** — and if that failing is addressed, it will always become a better story.
This means: when a story feels wrong emotionally or ethically, look for the craft problem first. The fix is almost always structural.
---
## Summary: The Diagnostic Questions
Apply these in order to any piece of prose:
1. **Beat causality** — Does each beat cause the next, or are they merely sequential?
2. **Escalation** — Is the story continuously moving up the staircase, or running on a treadmill?
3. **Story-yet test** — If it ended here, would something have irreversibly changed?
4. **Character accumulation** — Is our understanding of the character growing richer with each beat?
5. **Three E's check** — Is it escalating, efficient, and pitched at the right level of expectation?
6. **Moral/technical unity** — If something feels off morally or emotionally, where is the technical failure?