skills/50-brycewang-aer-skills/skills/aer-paper-body/SKILL.md
Use when drafting or revising the body sections of an AER, AER:Insights, or AEJ manuscript — institutional background, data, empirical strategy, results, mechanisms, and conclusion. Covers equation conventions, results-paragraph narration, magnitude interpretation, and back-of-envelope policy calculations. Apply after the empirics are stable and before or alongside aer-introduction.
npx skillsauth add brycewang-stanford/Awesome-Agent-Skills-for-Empirical-Research aer-paper-bodyInstall 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.
The introduction decides whether the editor sends the paper out; the body sections decide what the referees write. Referees live in Data, Empirical Strategy, and Results, checking that the estimand is defined, the assumption stated, the magnitudes interpreted, and the prose matched to the tables. Draft the body before the introduction — the introduction summarizes a paper that already exists, and writing it first produces promises the body fails to keep.
aer-identification and aer-robustness)
and the manuscript needs full section draftsA full-length empirical AER paper, after the unlabeled introduction:
I. Background (or: Institutional Setting; Policy Context)
II. Data (sources, sample construction, measurement, summary stats)
III. Empirical Strategy (estimand, equation, identifying assumption, inference)
IV. Results (main estimates, dynamics, robustness pointers)
V. Mechanisms (or: Heterogeneity and Mechanisms; Interpretation)
VI. Conclusion
Variants: a conceptual framework goes between Background and Data (or replaces Background for theory-led papers); AER: Insights compresses to Data and Design → Results → Discussion; structural papers add Model and Estimation, where the rules below bind with more force, not less. One rule binds everywhere: every term, dataset, and design feature is defined before first use — referees read linearly on the first pass.
Give exactly the institutional detail needed to (a) locate the identifying variation and (b) believe the identifying assumption — nothing else.
Include one only if it generates a testable prediction the empirics then test, defines the estimand's welfare interpretation (a reduced-form coefficient as a sufficient statistic), or disciplines magnitudes (what effect size theory permits).
Referees check this section against the replication package line by line.
aer-replication).aer-consistency audits this); flag consequential restrictions the
robustness section relaxes.The section referees read most carefully. Four mandatory components, in order: estimand → equation → identifying assumption → inference.
Estimand first, one sentence before any equation: "Our object of interest is the average effect of [treatment] on [outcome] among [population], [horizon]." If the design recovers a local effect (LATE, effect at the cutoff, ATT for switchers), say so here, not in the conclusion's limitations paragraph.
Y_{ict} = \beta\, D_{ct} + \alpha_c + \gamma_t + X_{ict}'\delta + \varepsilon_{ict}
aer-identification.One paragraph per claim, not per table. Each results paragraph:
Column-by-column narration without a finding-first sentence is the most reliable marker of a weak results section.
Every headline coefficient gets three conversions: (1) native units —
log-outcome coefficients are log points; use the exact 100·(e^β − 1) whenever
|β| > 0.10, and never confuse percent with percentage points; (2)
relative to the sample — against the dependent variable's mean or SD; (3)
relative to the literature or a policy lever. Report the baseline rate next
to every binary marginal effect. If the implied magnitude is implausible, say
so and investigate before a referee does. Worked conversions:
examples/results-section-example.md; the percent/percentage-point table lives
in aer-consistency.
docs/style-guide.md.examples/results-section-example.md.The results section cites robustness, it does not contain it: one paragraph
summarizing the aer-robustness battery ("stable across clustering, sample,
and specification variants; Appendix B reports the full set") plus the single
most important check shown inline.
Organize by candidate explanation, not by table:
aer-identification).Short (half a page to one page), doing four things:
aer-consistency flags duplication).No new results, no new citations, no new caveats that belong in Results.
aer-consistency audits this before submission.docs/style-guide.md — finding-first sentences, no filler
transitions, no AI-pattern tics.Bundled with the installed skill, no repository checkout needed --- read it before the repo resources below:
references/section-skeletons.md --- per-section skeletons and conclusion-first results narration rulesLoad only the relevant resource:
examples/results-section-example.mddocs/style-guide.mddocs/methods-reference.mdexamples/intro-example.mdtemplates/stata/,
templates/r/, or templates/python/SECTIONS DRAFTED: <Background | Framework | Data | Strategy | Results | Mechanisms | Conclusion>
ESTIMAND STATED: <yes / no — sentence>
SAMPLE FUNNEL REPORTED: <yes / no>
HEADLINE MAGNITUDE CONVERSIONS: <log-points / percent / vs-mean / vs-literature>
BACK-OF-ENVELOPE CALCULATION: <present / not applicable>
MECHANISM CHANNELS: <favored + ruled-out list>
NEXT SKILL: <aer-introduction | aer-tables-figures | aer-consistency>
tools
Autonomous multi-round research review loop using MiniMax API. Use when you want to use MiniMax instead of Codex MCP for external review. Trigger with "auto review loop minimax" or "minimax review".
tools
Autonomous research review loop using any OpenAI-compatible LLM API. Configure via llm-chat MCP server or environment variables. Trigger with "auto review loop llm" or "llm review".
tools
Autonomous multi-round research review loop using MiniMax API. Use when you want to use MiniMax instead of Codex MCP for external review. Trigger with "auto review loop minimax" or "minimax review".
tools
Autonomous research review loop using any OpenAI-compatible LLM API. Configure via llm-chat MCP server or environment variables. Trigger with "auto review loop llm" or "llm review".