skills/writing-outline/SKILL.md
Internal skill for creating detailed section outlines. Called by /writing workflow after PRECIS and master OUTLINE are complete.
npx skillsauth add edwinhu/workflows writing-outlineInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Create a detailed outline for a specific section/part before drafting prose. This is Level 3 of the progressive expansion workflow.
.planning/PRECIS.md # Level 1: Thesis, claims, audience
↓
.planning/OUTLINE.md # Level 2: Master structure (sections, goals)
↓
outlines/Part I.md # Level 3: THIS STEP - Detailed section outline
↓
drafts/Part I.md # Level 4: Prose expansion
Never skip to prose drafting without a detailed outline first.
Auto-load all constraints matching applies-to: writing-outline:
!uv run python3 ${CLAUDE_SKILL_DIR}/../../scripts/load-constraints.py writing-outline
You MUST have these constraints loaded before proceeding. No claiming you "remember" them.
START (PRECIS + master OUTLINE exist)
│
├─ Step 1: Load context (PRECIS, OUTLINE, ACTIVE_WORKFLOW)
│
├─ Step 2: Select section (user choice or next unoutlined)
│
├─ Step 3: Gather structure/depth preferences
│
├─ Step 4: Create detailed outline
│ └─ For each subsection: POINT + EVIDENCE + LOGIC
│ Opening → Body (subsections with transitions) → Closing
│
├─ Step 5: Cross-reference with PRECIS claims
│ └─ Verify: advances claim, within scope, thesis thread
│
├─ Step 6: Update ACTIVE_WORKFLOW.md
│
└─ More sections remaining?
├─ YES → Loop to Step 2 (NO pause, NO "should I continue?")
└─ NO → GATE: Every OUTLINE section has outlines/ file?
├─ NO → Report missing, loop back
└─ YES → Outline Review Gate
└─ Dispatch writing-outline-reviewer subagent
├─ APPROVED → IMMEDIATELY load writing-draft (no pause)
└─ ISSUES_FOUND → fix outlines → re-dispatch (max 5)
If text and flowchart disagree, the flowchart wins.
<EXTREMELY-IMPORTANT> ## The Iron Law of Outline Before ProseNO PROSE WITHOUT OUTLINE. Never skip to prose drafting without a detailed outline in outlines/ first. This is not negotiable.
If you find yourself writing prose without a matching outline file:
Thin outlines produce thin drafts. Each outline must have POINT, EVIDENCE, and LOGIC for every subsection. </EXTREMELY-IMPORTANT>
Before starting, check for an existing handoff:
.planning/HANDOFF.md existsRead(".planning/ACTIVE_WORKFLOW.md")
Read(".planning/PRECIS.md")
Read(".planning/OUTLINE.md")
If master OUTLINE.md is missing, run writing-brainstorm first.
If not specified by user, present available sections:
AskUserQuestion(questions=[
{
"question": "Which section should I outline in detail?",
"header": "Section",
"options": [
{"label": "Part I / Introduction", "description": "Hook, thesis, roadmap"},
{"label": "Part II / Background", "description": "Context and precedents"},
{"label": "Part III / Argument", "description": "Main claims and evidence"},
{"label": "Part IV / Counterarguments", "description": "Objections and responses"}
],
"multiSelect": false
}
])
For the selected section, ask clarifying questions:
AskUserQuestion(questions=[
{
"question": "How should this section be structured?",
"header": "Structure",
"options": [
{"label": "Chronological", "description": "Events/developments in time order"},
{"label": "Thematic", "description": "Grouped by topic or concept"},
{"label": "Problem-Solution", "description": "Issue then resolution"},
{"label": "Comparative", "description": "Side-by-side analysis"}
],
"multiSelect": false
},
{
"question": "What level of detail do you want?",
"header": "Depth",
"options": [
{"label": "Paragraph-level", "description": "One bullet per paragraph"},
{"label": "Sentence-level", "description": "Key sentences mapped out"},
{"label": "Full skeleton", "description": "Nearly complete argument structure"}
],
"multiSelect": false
}
])
Create directory if needed and write the detailed outline:
mkdir -p outlines
Write to outlines/[Section Name] (Outline).md:
# [Section Name] - Detailed Outline
## Section Goal
[From master OUTLINE.md - what this section accomplishes]
## Claim Supported
[Which claim from PRECIS.md this section advances]
## Structure: [Chronological/Thematic/Problem-Solution/Comparative]
---
## Opening
**Lead sentence**: [Draft or TBD]
**Context needed**: [What reader must know]
**Transition from previous**: [How we got here]
---
## Body
### Subsection A: [Name]
**Point**: [Main argument of this subsection]
**Evidence**:
- [Source 1]: "[key quote or fact]"
- [Source 2]: "[key quote or fact]"
**Logic**: [How evidence supports point]
**Transition**: [Bridge to next subsection]
### Subsection B: [Name]
**Point**: [Main argument]
**Evidence**:
- [Source]: "[key quote or fact]"
**Logic**: [How evidence supports point]
**Anticipated objection**: [If applicable]
- Response: [How to address]
**Transition**: [Bridge to next]
### Subsection C: [Name]
[Continue pattern...]
---
## Closing
**Section summary**: [One sentence recap]
**Bridge to next section**: [How this leads to what follows]
**Thesis thread**: [How this connects to main thesis from PRECIS]
---
## Sources Used in This Section
- [Source 1] - used for [what]
- [Source 2] - used for [what]
## Open Questions
- [Anything unresolved before drafting]
## Estimated Length
[Paragraph count or word count target]
Verify the detailed outline against PRECIS.md:
Report any misalignments.
Update .planning/ACTIVE_WORKFLOW.md:
phase: outline
current_section: [section name]
outlines_complete:
- [list of completed outlines]
After completing a section outline, IMMEDIATELY start the next section. Do NOT:
Pausing between section outlines is procrastination disguised as courtesy.
When ALL sections from OUTLINE.md have detailed outlines in outlines/, proceed to the draft phase.
When outlining reveals unplanned issues, follow the deviation rules from constraints/deviation-rules.md:
Track deviations per section outline. Each section summary should include: Deviations: N auto-fixed (R1: X, R2: Y, R3: Z). R4 escalations: [list or "none"].
Before proceeding to draft phase (see constraints/gate-function-standard.md for the full 6-step gate including SUMMARY):
outlines/outlines/, compare against sections in OUTLINE.md${CLAUDE_SKILL_DIR}/../../skills/writing-outline-reviewer/SKILL.md, then Read() the output.
Follow the reviewer skill instructions: dispatch the subagent, handle APPROVED/ISSUES_FOUND, fix and re-review up to 5 times. Only proceed when APPROVED.human-verify — auto-advance to writing-draft..planning/PHASE_SUMMARY.md (see constraints/phase-summary-frontmatter.md):
Skipping the outline verification is NOT HELPFUL — the user drafts from a thin outline and rewrites every section. You must verify every outline exists and has real structure.
Proceeding to draft with a thin outline is NOT HELPFUL — every section will wander and require complete redrafting. The reviewer must confirm depth before drafting begins.
Before finalizing each outline, verify:
If 5+ iterations on the same section without meaningful progress, STOP and escalate to the user for scope adjustment.
Signs you are stuck:
When escalating, present:
Spinning without progress is anti-helpful. Recognizing when to ask for guidance is competence, not weakness.
| Problem | Fix | |---------|-----| | Outline is just topic list | Add POINT, EVIDENCE, LOGIC for each | | No sources mapped | Go back to research or brainstorm | | Section doesn't advance a claim | Rethink why it exists | | Too long for one section | Split into multiple sections | | Transitions missing | Add explicit bridges |
After all section outlines are complete:
Read ${CLAUDE_SKILL_DIR}/../../skills/writing-outline-reviewer/SKILL.md and follow its instructions.
Follow the outline reviewer's instructions:
After outline review APPROVED:
Read ${CLAUDE_SKILL_DIR}/../../skills/writing-draft/SKILL.md and follow its instructions.
Then follow its instructions immediately to expand outlines into prose.
tools
Use when "query Dewey Data", "deweydata.io", "SafeGraph places/patterns/spend", "Advan foot traffic", "POI / points of interest", "mobility data", "dataplor", "Veraset", "PassBy", "crypto/Bitcoin ATM locations", or any pull from the Dewey Data academic marketplace (UVA/NYU Platform Subscription) via the deweypy/deweydatapy client, DuckDB, or the Dewey MCP server.
development
Use when submitting jobs to UVA HPC (Rivanna/Afton), writing Slurm scripts (sbatch/srun/squeue), converting SGE to Slurm, running compute on any Slurm-managed cluster, or building WRDS data pipelines with polars on HPC. Triggers: 'submit to HPC', 'sbatch', 'squeue', 'slurm job', 'run on Rivanna', 'run on Afton', 'HPC array job', 'convert SGE to Slurm', 'polars on HPC', 'WRDS from HPC'.
testing
Internal skill for literature review and source materialization. Called after brainstorm, before setup. NOT user-facing.
development
This skill should be used when the user asks to "add paper", "paperpile add", "fetch PDF for", "find and add", "search paperpile", "find in paperpile", "paperpile search", "label paper", "trash paper", "download paper", "paperpile index", "edit paper metadata", "update paper title", "fix paper author", "paperpile edit", "find PDF online", "search google for PDF", "resolve PDF", "fetch PDF for citation", "get full-text for DOI", "resolve cite to PDF", or any request to manage their Paperpile library or resolve a citation to a local PDF.