outlining

Installation
SKILL.md

Outlining — IMRAD Structure and Claim Stubs

This is the spec phase for a research paper. Output of outlining is the input to writing-plans and drafting. Nothing gets written as manuscript prose here. The deliverables are three files:

  1. .writing/outline.md — IMRAD structure with 3-7 key claims per section.
  2. .writing/claims/section_<NN>_<slug>.md — one file per manuscript section, each containing a YAML list of claim stubs that prose will later bind to.
  3. .writing/metadata.yaml — author, preregistration, data/code availability, reporting-guideline fields filled out.

Filename-stem contract (load-bearing). The PreToolUse claim-first hook at hooks/enforce-claims.py matches slug-ending: any manuscript file whose stem ends in _<slug> for slug ∈ UNPROTECTED_SLUGS (abstract, references, acknowledgments) is exempt from claim-tag enforcement. Concretely 00_abstract.tex, 09_references.tex, and 10_acknowledgments.tex all pass through without paragraph tags. Every other section filename MUST contain real prose tagged with % claim: id or the write is blocked. If you introduce a new unnumbered section (e.g. a data-availability block) whose content should be exempt, add its slug to UNPROTECTED_SLUGS in hooks/enforce-claims.py. The hook only intercepts .tex files; .md files under manuscript/ pass through unenforced.

Abstract is citation-free (load-bearing). Any stem ending in _abstract additionally belongs to CITATION_FREE_SLUGS in the hook. Writes to such files that contain any LaTeX citation command (\cite{}, \citep{}, \citet{}, \nocite{}, \parencite{}, or any \*cite* variant) or a % claim: id tag are blocked. The abstract summarizes the paper's own claims in prose; it cites nothing. BPMRC structural tags (% bpmrc: B, % bpmrc: P, etc.) are still required — they are not citations. Do NOT create a claims/section_00_abstract.md file; drafting would try to bind abstract paragraphs to it and the hook would reject those writes.

Optional: term-definition-before-use protocol. A second PreToolUse hook at hooks/enforce-terms.sh enforces that load-bearing terminology is defined before it is used. This feature is opt-in: activate by copying templates/glossary.md to .writing/glossary.md and listing entries of the form {id, term, definition, defined_in: <section_stem>}. Once active, any % define: <id> comment in manuscript/NN_<slug>.tex must match glossary[id].defined_in, and any % use: <id> must appear in a section whose numeric prefix is ≥ the define section. Abstracts and references/acknowledgments sections are exempt (abstracts legitimately reference terms defined later in the body). When adding a new term during outlining, append its glossary entry at the same time you add the claim stub — it is cheaper than chasing % use: blocks later during drafting.

All three must be complete before handing off to superpower-writing:writing-plans. Incomplete metadata blocks claim-verification later — fix it now while context is fresh.

When to Use

Trigger this skill when:

Installs
3
GitHub Stars
2
First Seen
Jun 13, 2026
outlining — sipengxie2024/superpower-writing