preregister · diff

git:20260515.605c1c3 to git:20260727.37a3f77

209 added, 127 removed. Audit A to A.

---
name: preregister
- description: Draft a structured preregistration document (AsPredicted, OSF, or AEA RCT Registry style) from a study spec or free-form description, annotated with MUST / SHOULD / MAY clarity flags. Use when the user says "preregister", "draft a preregistration", "OSF preregistration", "AsPredicted form", "AEA RCT registry", "PAP", "preanalysis plan", or before launching an online experiment, conjoint, vignette study, eye-tracking session, or any data collection / confirmatory analysis they have not yet seen. Output is a LaTeX (`.tex`) or Markdown file the user uploads to OSF / AsPredicted / AEA themselves — this skill writes structure and prose, it does not submit. Designed for quant-marketing experiments (online vignettes, MTurk / Prolific, conjoint, lab eye-tracking, livestreaming field tests) targeting MKSCI / JMR / JCR / MS.
- argument-hint: "[--style aspredicted|osf|aea-rct] [--input <spec-path>] [--format tex|md] [--no-verify]"
- allowed-tools: ["Read", "Write", "Task", "WebFetch"]
+ description: Draft a registry-ready preregistration or preanalysis plan (AsPredicted, OSF, or AEA RCT Registry) from a study spec or a free-form description, with MUST/SHOULD/MAY flags on every field, [CLARIFY:] placeholders instead of invented content, a stated target N with power basis and stopping rule, and an explicit falsification criterion. TRIGGER on "preregister", "draft a preregistration", "AsPredicted form", "OSF prereg", "AEA RCT registry", "PAP", "preanalysis plan", or before launching a vignette, conjoint, eye-tracking, MTurk/Prolific, or field experiment. Refuses to write a preregistration for analyses already run on data already seen. Writes Markdown for pasting into the web forms, .tex on request.
---
- # /preregister — Preregistration Document Generator
+ # Preregistration
- > **Source.** This skill is adapted from [`pedrohcgs/claude-code-my-workflow`](https://github.com/pedrohcgs/claude-code-my-workflow). The three-registry structure (OSF / AsPredicted / AEA RCT), the MUST / SHOULD / MAY clarity-flag taxonomy, and the retrospective-preregistration refusal gate are Pedro H.C. Sant'Anna's; this fork tunes the experiment templates for quantitative-marketing designs (online vignettes, MTurk / Prolific, conjoint, lab eye-tracking, livestreaming field tests).
+ A preregistration is a written commitment to hypotheses, design, and analysis made before the data
+ exist or before the realized focal outcome has been seen. It separates confirmatory from
+ exploratory work and closes off p-hacking, HARKing, and forking paths. This skill writes the
+ document; the user submits it. To critique a preregistration that already exists, use the
+ council skill; this one drafts.
- Produce a registry-ready preregistration document. The user uploads the result to a real registry (OSF / AsPredicted / AEA RCT Registry) — this skill writes the prose and structure, it does not submit anywhere.
+ Structure and the MUST/SHOULD/MAY taxonomy adapted from `pedrohcgs/claude-code-my-workflow`.
- ## Why preregister
+ ## The refusal gate
- Preregistration is a written commitment to your hypotheses, design, and analysis plan **before** you see the data (or, for observational analyses, before you analyse the realised focal outcome). It separates confirmatory tests from exploratory tests and protects against p-hacking, HARKing, and forking paths. Marketing's top journals (MKSCI, JMR, JCR, MS) increasingly expect preregistration for experimental work; AEA-style field experiments require it.
+ Check this before reading anything else, and check it again if new information arrives mid-draft.
- Marketing fits each registry roughly as follows:
+ Refuse if the description contains realized results: "we found", "the estimate is", "p =", "the
+ effect was significant", "condition A scored higher", a coefficient, a sample mean, or a figure
+ of results. Say plainly that a preregistration is forward-looking, that writing one now would
+ misrepresent the analysis order, and offer instead to write it up as an exploratory analysis or a
+ methods section, clearly labeled as such.
- - **Online experiments, vignettes, conjoint, eye-tracking** -> **AsPredicted** is the default short form. **OSF** when more structure is needed (multiple DVs, complex sampling).
- - **Field experiments / RCTs** -> **AEA RCT Registry** is the standard (and is required for AEA-journal submission since 2018; MKSCI and MS-Marketing accept either OSF or AEA).
- - **Observational confirmatory analyses** on data not yet seen for the focal outcome -> **OSF** preanalysis-plan template.
+ Refuse in the same way if the user has run the focal analysis on data they hold, even without
+ stating the numbers. The gate is about analysis order, not about whether numbers appear in the
+ prompt. Ask directly: has the focal outcome been analyzed on these data yet? If the answer is yes
+ or evasive, do not write a preregistration.
- Clinical trials (ClinicalTrials.gov, ISRCTN) and meta-analyses (PROSPERO) are out of scope — use those registries' own templates.
+ Two things are not refusals. Preregistering a new confirmatory test on data the user holds but
+ has not examined for that outcome is legitimate; say so in the document under existing data, and
+ state what has already been seen. And a purely exploratory study does not need a preregistration
+ at all, it needs honest labeling, so offer the OSF exploratory variant instead.
- ## When to use
+ ## Arguments
- - Before launching a lab, field, or online experiment.
- - Before collecting observational data on a target population for a specific RQ.
- - Before analysing data the user has access to but has not yet examined for the focal hypothesis.
- - During an R&R when a referee asks for a written preanalysis plan (Marketing Science increasingly requests one for experimental papers at R1).
+ - `--style aspredicted|osf|aea-rct`: override the registry choice.
+ - `--input <path>`: a study spec to read (Markdown draft, Notion export, planning doc section).
+ - `--format md|tex`: output format, default `md`.
+ - `--no-verify`: skip the citation checks in phase 5.
- ## When NOT to use
+ ## Phase 1. Read the inputs
- - After the user has already seen the realised outcomes and wants to "preregister retrospectively" — that is not preregistration. The skill will refuse if the input description contains results.
- - For purely exploratory analyses — those do not need preregistration; they need transparent labelling.
- - For clinical trials or meta-analyses (wrong registry).
+ With `--input`, read the spec and pull out: research question, hypotheses, data source, design,
+ conditions, sample, primary analysis, any stated `paper_type`.
- ## Workflow
+ Without it, ask for a one-to-three paragraph description of the study. If no description comes
+ back, stop and ask again. Do not write a document made entirely of placeholders.
- ### PHASE 1 — Read inputs
+ If the description has no directional hypothesis, ask once. Do not invent a direction.
- Two input modes:
+ ## Phase 2. Pick the registry
- 1. **`--input <path>`** — a study spec (e.g., a Markdown draft from `/evaluate-idea-marketing`, a Notion export, or a section pulled from a project planning doc). Read the spec and extract: research question, hypotheses (must be directional), data source, design, sample, primary analysis. If the spec lists `paper_type: survey-experiment` / `field-experiment` / `conjoint` / `eye-tracking` / `observational`, use that to bias the style choice.
- 2. **No `--input`** — prompt for a 1-3 paragraph description of the study, then proceed. If the description omits a directional hypothesis, ask once. Do not fabricate.
+ | Signal | Style |
+ |---|---|
+ | Online vignette, MTurk or Prolific study, short lab experiment, 1 to 3 DVs | `aspredicted` |
+ | Conjoint, eye-tracking, multi-DV survey experiment, complex or stratified sampling | `osf` |
+ | Field experiment or RCT (livestream pilot, retailer pilot, app A/B test) | `aea-rct` |
+ | Observational confirmatory analysis | `osf`, preanalysis-plan variant |
+ | Ambiguous | `aspredicted` |
- Refusal conditions (checked before any drafting):
+ AEA RCT registration is required for field experiments at AEA journals (lab experiments are
+ exempt) and accepted by Marketing Science and Management Science; either OSF or AEA works for
+ the marketing journals. Clinical trials (ClinicalTrials.gov, ISRCTN) belong in their own
+ registries and are out of scope here. PROSPERO takes only reviews with health outcomes, so it is
+ not a destination for a marketing meta-analysis.
- - Description contains realised results ("we found", "the estimate is", "p =", "respondents in condition A scored higher") -> refuse with: "Preregistration is forward-looking; this description includes results. Did you mean `/draft` for a methods or results section?"
- - Description has no testable hypothesis at all (pure exploratory framing) -> ask whether to use the OSF *exploratory analysis* template (still useful, but not a registered confirmatory test).
+ ## Phase 3. Write the document
- ### PHASE 2 — Pick the style
+ Every field gets one flag:
- Default style table (used when `--style` is not given):
+ - MUST, the registry will not accept the submission without it
+ - SHOULD, reviewers and editors expect it even though the form does not force it
+ - MAY, include when relevant
- | Signal in spec / description | Default style |
- |---|---|
- | Online vignette / MTurk / Prolific / quick lab experiment, 1-3 DVs | `aspredicted` |
- | Conjoint, eye-tracking, multi-DV survey experiment, complex sampling | `osf` |
- | Field experiment / RCT (livestream pilot, retailer pilot, app A/B) | `aea-rct` |
- | Observational confirmatory study | `osf` (preanalysis plan variant) |
- | Anything else / ambiguous | `aspredicted` |
+ For any MUST the input did not supply, write `[CLARIFY: <specific question>]`. Never fill a MUST
+ with plausible-sounding invention.
- Override with `--style aspredicted|osf|aea-rct`.
+ Common header for all three styles: title, authors, date, version (`v0.1` draft, `v1.0` at
+ upload), target journal, and a pointer back to the source spec if `--input` was given.
- ### PHASE 3 — Generate the document
+ ### AsPredicted, the nine questions
- Produce the document in the chosen style. **Do not merge style sections** — the three registries differ in what they require.
+ 1. Have any data been collected for this study already? (MUST, and answer it honestly)
+ 2. What is the main question or hypothesis? (MUST, directional)
+ 3. Key dependent variable(s) and exactly how they are measured (MUST)
+ 4. How many and which conditions participants are assigned to (MUST)
+ 5. Exactly which analyses will test the main hypothesis (MUST, name the estimator)
+ 6. Outliers and exclusions, decided now (MUST)
+ 7. Sample size and stopping rule (MUST, see below)
+ 8. Anything else (SHOULD, put the falsification criterion and power basis here)
+ 9. Name of the study, not the paper (MUST)
- Common to all styles, the document MUST include:
+ ### OSF preregistration
- - Title and authors.
- - Date and version (semantic: `v0.1` for draft, `v1.0` when uploaded).
- - Pointer back to the source spec (if `--input` was given) so traceability survives.
- - Target journal (e.g., MKSCI, JMR, JCR, MS) so reviewers know the confirmatory bar.
+ Study information (title, description, numbered directional hypotheses) · Design plan (study
+ type, blinding, design, randomization) · Sampling plan (existing data and what has been seen of
+ it, collection procedure, sample size, sample size rationale, stopping rule) · Variables
+ (manipulated, measured, indices, manipulation checks) · Analysis plan (statistical models,
+ transformations, inference criteria, data exclusion, missing data, exploratory analyses labeled
+ as exploratory) · Other. All MUST except blinding, indices, and transformations, which are SHOULD
+ where they apply.
- Style-specific sections:
+ ### AEA RCT Registry
- - **`aspredicted`** — 9 numbered fields per the AsPredicted form: (1) data collection status, (2) hypothesis, (3) key dependent variable, (4) conditions, (5) analyses, (6) outliers / exclusions, (7) sample size + stopping rule, (8) anything else, (9) name (study not paper).
- - **`osf`** — Hypotheses (directional, numbered) - Design - Sampling Plan - Variables (independent, dependent, controls, manipulation checks) - Analysis Plan (estimator, software, package versions) - Inference Criteria - Data Exclusions - Missing Data Handling - Exploratory Analyses (clearly labelled as such) - Other.
- - **`aea-rct`** — Intervention - Outcomes (primary, secondary) - Primary hypotheses - Sample (target N, eligibility, randomization unit, randomization method) - IRB approval - Trial dates - Power calculation - Pre-analysis plan attachment - Status (not yet on the air / ongoing / completed).
+ Title and abstract · Status (In development, Ongoing, Completed, Withdrawn) · Trial and
+ intervention start and end dates · Public intervention description (SHOULD; the form does not
+ star it) · Primary outcomes with how each is constructed · Secondary outcomes · Experimental
+ design and details · Randomization method and randomization unit · Whether treatment is
+ clustered · Planned number of clusters, planned number of observations, planned observations per
+ arm · Power calculation with the minimum detectable effect size for the main outcomes (SHOULD;
+ the form marks it optional, but the sample-size section below applies regardless) · IRB name,
+ approval date, approval number (conditional: the form requires them only when the IRB-approval
+ answer says one exists) · Analysis plan attachment (MAY, and it can be embargoed). Everything
+ not marked otherwise is MUST.
- Annotate each section with one of:
+ Do not merge sections across styles. The registries ask for different things.
- - **MUST** — the registry requires this; the document cannot be submitted without it.
- - **SHOULD** — strongly recommended; reviewers and editors expect it.
- - **MAY** — optional; include if relevant.
+ ### Sample size, power, and stopping rule
- For each MUST that the input did not supply, write `[CLARIFY: <specific question>]` rather than fabricating content.
+ A preregistration without a number here is not binding, so this field is MUST in every style.
+ Record all of:
- ### PHASE 4 — Cross-checks (before writing to disk)
+ - the effect size assumed, and where it comes from: a pilot, a prior study with a citation, or
+ the smallest effect size of interest. Do not power off a published point estimate without
+ saying so, since significance filtering inflates published estimates (Gelman and Carlin 2014 on
+ Type S and Type M errors).
+ - alpha, target power, and the test being powered
+ - the resulting target N, per cell for experiments, and cluster N plus within-cluster N for field
+ designs
+ - the tool: `pwr` or `simr` in R, `statsmodels.stats.power` in Python, or simulation. Simulate
+ rather than use a closed form for clustered or multilevel designs, and carry the ICC and design
+ effect.
+ - the stopping rule, stated so that it does not depend on the data: a fixed N, a fixed calendar
+ window, or a quota. Optional stopping is allowed only with a sequential design and its
+ correction, named here.
- Refuse to mark the document "ready" if any of these fails:
+ Flag it when the target is an interaction. Data Colada 17 (Simonsohn 2014) gives per-cell
+ multipliers relative to the two-cell study powered for the simple effect: a fully attenuated
+ interaction needs 2x the participants per cell, which across four cells is 4x the total N; a 70%
+ attenuation needs about 4x per cell; a crossover interaction needs only about 1.3-1.5x per cell.
+ Interactions need far more N than people expect, crossovers are the cheapest case, and an
+ attenuated interaction powered at main-effect N is underpowered, so preregistering that N locks
+ in the underpowering.
- - **Hypothesis directionality.** Each hypothesis must contain a direction ("higher than", "increases", "negatively predicts"; "no effect" is acceptable under an equivalence-test frame). Reject "is associated with" without a sign.
- - **Estimator named.** The analysis plan names a specific estimator with software — e.g., `lm()` / `lme4::lmer()` / `fixest::feols()` / `brms::brm()` in R, or `statsmodels.OLS` / `linearmodels.PanelOLS` / `pymer4` / `pymc` in Python — plus the primary outcome variable. "Regression" alone is insufficient. **Stata is not supported by this skill** — analyses are expected to run in R or Python.
- - **Sample plan numeric.** Target N, stopping rule, or power-calc target appears. "As many as we can recruit" is not a sample plan. For Prolific / MTurk, state the platform and screening criteria. For field experiments, state cluster N and within-cluster N.
- - **Exclusions ex ante.** Outlier and exclusion rules are stated *before* the data is seen (e.g., "we will exclude observations with completion time under 60 seconds or who fail the attention check"). Vague "we'll deal with outliers" fails.
- - **Internal consistency.** If the design is randomised, the unit of randomisation matches the unit of analysis OR the analysis plan addresses clustering. If observational, the identification strategy is stated.
- - **Manipulation checks.** For experiments, at least one manipulation check is named (top marketing journals push back hard on this).
+ ### What would falsify this
- For each failure, the document gets a `[CLARIFY: ...]` placeholder; the document is written to disk but flagged in the output summary as "INCOMPLETE — N MUST items unresolved".
+ MUST in every style, written as its own field even though only OSF has an obvious slot for it.
+ For each hypothesis, state the pattern of data that would count against it: the sign, the
+ confidence interval excluding the region of interest, the manipulation check failing, the
+ predicted moderation not appearing. For any hypothesis predicting no effect, give equivalence
+ bounds and a TOST test (Lakens 2017), because a non-significant test is not evidence of absence.
- ### PHASE 5 — Post-flight verification
+ Writing this field usually exposes a hypothesis that cannot lose. Say so when it happens.
- If the document cites prior literature in the rationale section, invoke a citation check via `Task` (a forked `claim-verifier` agent that never sees the draft). Pass the draft path and a list of explicit citations. The verifier returns PASS / PARTIAL / FAIL per citation. Surface any FAIL / PARTIAL in the output summary.
+ ## Phase 4. Cross-checks
- Skip post-flight if:
+ Run all of these before writing to disk. Each failure becomes a `[CLARIFY:]` in place, and the
+ document still gets written but is reported as INCOMPLETE with the count of unresolved MUSTs.
- - No prior-literature citations in the document.
- - The user passes `--no-verify`.
+ - Directionality. Every hypothesis carries a sign: "higher than", "increases", "negatively
+ predicts". "Is associated with" fails. "No effect" passes only with equivalence bounds.
+ - Estimator named. The analysis plan names a specific estimator, the software, and the outcome
+ variable: `fixest::feols()`, `lme4::lmer()`, `brms::brm()`, `lm()`, `statsmodels.OLS`,
+ `linearmodels.PanelOLS`, or a Stata command. "Regression" alone fails.
+ - Standard errors specified. State the clustering level and why, or state that classical errors
+ are appropriate. Follow Abadie, Athey, Imbens and Wooldridge (2023 QJE): cluster where the
+ sampling or the treatment assignment is clustered, not by reflex.
+ - Sample plan numeric, per the section above. "As many as we can recruit" fails.
+ - Exclusions decided ex ante and stated concretely: attention check failures, completion time
+ under a named threshold, duplicate IPs, incomplete responses. "We will deal with outliers"
+ fails.
+ - Internal consistency. If randomized, the unit of randomization matches the unit of analysis or
+ the analysis plan handles the clustering. If observational, the identification strategy is
+ named.
+ - Manipulation checks. At least one is named for any experiment, and the plan says whether
+ failing participants are excluded (decided now, not later).
+ - Exploratory analyses are in their own section and labeled as exploratory.
- ### PHASE 6 — Output
+ ## Phase 5. Verify the citations
- Write to `<project>/preregistration_<study-slug>_<YYYYMMDD>.<ext>`:
+ If the document cites prior literature, and `--no-verify` was not passed, spawn a general-purpose
+ subagent with the Agent tool and this prompt. Pass the citation strings and the claim each one
+ supports, not the draft, so the verifier judges the citation independently.
- - Default extension: `.tex` (papers and PAPs live in LaTeX under `<OVERLEAF_ROOT>/<PROJECT_SUBDIR>/`). Use a minimal preamble compatible with an existing `.tex` workflow (`article` class, `natbib`, `\Cref` cross-references, `\emph` over `\textit`).
- - Override with `--format md` for OSF web-form pasting.
+ Two checks run on every citation, each with its own verdict line.
- Print to chat:
+ Metadata verification: does the cited paper exist, with these authors, year, and venue? This is
+ the same check `bibcheck` runs, at prereg scale (a handful of citations against a `.bib` of
+ hundreds), and it uses bibcheck's verdict vocabulary: PASS/WARN/FAIL. For a full `.bib` audit, use
+ the `bibcheck` skill.
+ Claim support: does the cited paper actually support the sentence citing it? This check lives
+ here; bibcheck declares it out of scope, since bibcheck verifies metadata only.
+
```
- Preregistration draft saved: <project>/preregistration_<study-slug>_<YYYYMMDD>.tex
- Style: <aspredicted|osf|aea-rct>
- Target journal: <MKSCI|JMR|JCR|MS|...>
- Sections: <count> total — <complete> complete, <clarify> with [CLARIFY:] placeholders
- Citations verified: <PASS>/<PARTIAL>/<FAIL> (or "no citations to verify")
- Next: review the [CLARIFY:] placeholders, fill in, then upload to <registry-url>
+ Verify these citations independently. For each one, run:
+
+ ~/.claude/skills/reading-papers/scripts/paper.py resolve "<citation>" --json
+
+ (The script is a uv self-contained script; run the path directly, it handles its own deps.)
+
+ Return two rows per citation.
+
+ Metadata row: citation | PASS/WARN/FAIL | DOI | note.
+ PASS a record resolves and title, authors, year, and venue all match as written
+ WARN the paper exists but a field drifts (year, venue, author spelling or truncation)
+ FAIL nothing resolves, or the record is a different paper
+
+ Claim-support row: citation | SUPPORTED/UNCLEAR/UNSUPPORTED | note, judged from the resolved
+ record's title and abstract against the claim attached to the citation.
+ SUPPORTED the abstract is consistent with the claim
+ UNCLEAR the abstract does not settle it; say what would (reading the paper, a named
+ section or table)
+ UNSUPPORTED the abstract contradicts the claim, or the paper is about something else
+ Skip this row for a metadata FAIL; there is no paper to judge.
+
+ Do not read or edit any preregistration draft. Report only what resolve returned.
+
+ Citations and the claim each supports:
+ <list>
```
- Registry URLs:
+ Surface every WARN, FAIL, UNCLEAR, and UNSUPPORTED in the final report with the offending
+ citation. Do not silently drop one. A metadata FAIL is either a hallucinated cite or a paper the
+ resolver could not reach, and the user has to look at it either way.
- - AsPredicted -> `aspredicted.org`
- - OSF -> `osf.io/registries`
- - AEA RCT -> `socialscienceregistry.org`
+ ## Phase 6. Output
- ## Examples
+ Default file: `<project>/prereg_<study-slug>_<YYYYMMDD>.md`. Markdown is the default because
+ AsPredicted, OSF, and AEA are all web forms the user pastes into, so the field headings should
+ survive a copy and paste. Use `--format tex` when the preregistration is going into a paper
+ appendix; then keep the preamble minimal and match whatever the target project already does.
- ### Example 1 — AsPredicted form for a vignette study
- **User says:** "preregister a vignette study testing whether attribute X increases booking intent" (no `--input`)
- **Actions:**
- 1. Prompt for the 1-3 paragraph description.
- 2. Default style -> `aspredicted` (short online experiment).
- 3. Populate the 9 AsPredicted fields. Estimator: `lm(booking_intent ~ attribute_x * gender + age + ...)`. Stopping rule: N = 800 on Prolific, recruit until quota.
- 4. No prior-lit cites in the form -> skip post-flight.
- **Result:** Saved to `<project>/preregistration_attribute-x-vignette_<YYYYMMDD>.tex`. The user pastes into AsPredicted.
+ Pick `<project>` by globbing `~/Library/CloudStorage/Dropbox*/Apps/Overleaf/*/` (this setup
+ assumes Overleaf projects sync there via Dropbox; adjust to your machine) and matching the study to a
+ directory. If nothing matches, ask where it should go rather than hiding it in a cache directory.
- ### Example 2 — OSF preanalysis plan for an observational panel
- **User says:** "preregister my panel analysis before I see the sales data" (with `--input ideas/panel-spec.md`)
- **Actions:**
- 1. Read spec; observational confirmatory -> default `osf`.
- 2. Two directional hypotheses on feature X -> log(sales). Estimator: `fixest::feols()` with author and genre-week FEs, clustered SEs at author.
- 3. Cross-checks pass; one `[CLARIFY: minimum within-author observations]` placeholder.
- 4. Lit cites verified.
- **Result:** Saved to `<project>/preregistration_panel-analysis_<YYYYMMDD>.tex`. The user reviews the one [CLARIFY:] and uploads to OSF.
+ Report to chat:
- ### Example 3 — AEA RCT registration for a field experiment
- **User says:** "draft an AEA RCT preregistration for the field pilot" (with `--style aea-rct --input ideas/field-pilot.md`)
- **Actions:**
- 1. Read spec; randomization unit = unit-day, primary outcome = engagement-minutes.
- 2. Generate AEA RCT fields. IRB number missing -> `[CLARIFY: IRB approval number]`.
- 3. Cross-checks: cluster-robust OLS estimator named, primary outcome stated, ITT exclusion rule stated. Pass.
- **Result:** Document written. Output summary flags 1 [CLARIFY:] item to fill before AEA submission.
+ ```
+ Preregistration draft: <path>
+ Style: <aspredicted|osf|aea-rct> Target journal: <...>
+ Status: READY | INCOMPLETE (<n> MUST items unresolved)
+ [CLARIFY:] placeholders: <n> -> <list them>
+ Cross-checks failed: <list, or none>
+ Citation metadata: <n> PASS, <n> WARN, <n> FAIL (or "none to verify")
+ Claim support: <n> SUPPORTED, <n> UNCLEAR, <n> UNSUPPORTED
+ Upload to: aspredicted.org | osf.io/registries | socialscienceregistry.org
+ ```
## Failure modes
- - **Description contains results.** Refuse, point at `/draft` for methods / results writing.
- - **No testable directional hypothesis.** Ask once; if the user declines, switch to the OSF *exploratory analysis* variant and flag prominently in the document header.
- - **OSF / AsPredicted web template fetch unavailable.** The skill ships with the three style scaffolds embedded — if WebFetch to the registry homepage fails, proceed offline using the embedded scaffold and flag in the summary so the user can verify against the live form before upload.
- - **No `--input` and the user does not respond with a description in chat.** Do not write a placeholder document; abort and ask once.
- - **Citation post-flight returns FAIL / PARTIAL.** Surface the offending citations; do not silently drop them. Likely a recent / paywalled paper the verifier missed, or a hallucinated cite — the user must inspect.
- - **Output directory does not exist.** Create `<project>/` if missing; if the project root is not yet under the Overleaf root, fall back to `~/.claude/cache/preregistrations/`.
+ - Description contains results, or the focal analysis has already been run. Refuse, per the gate.
+ - No testable directional hypothesis and the user declines to give one. Switch to the OSF
+ exploratory variant and say in the document header that it is not a confirmatory registration.
+ - The user wants to amend a preregistration already submitted. Registries handle this through
+ formal amendments with a timestamped trail; out of scope.
+ - The user asks for the power calculation itself to be run. That is a separate job (an R or Python
+ script); this skill records the inputs and the resulting N, it does not compute them silently.
+ - Pilot data exists and is being used for the effect size. Say so explicitly in the document and
+ state that the pilot data will be excluded from the confirmatory sample.
## Out of scope
- - **Submitting to a registry.** This skill writes the document; the user uploads it.
- - **Clinical trial registries** (ClinicalTrials.gov, ISRCTN) — use those registries' own forms.
- - **Meta-analysis preregistration** — use PROSPERO directly.
- - **Power-calculation arithmetic.** The skill records the target N and the assumed effect size supplied; it does not run `pwr::pwr.t.test()` itself (use `/draft` plus an R chunk, or a separate `Bash` call to `Rscript`).
- - **Editing already-submitted preregistrations.** Registries require formal amendments — out of scope here.
- - **Notion logging.** To track the registration in the Notion Tasks DB, run `mcp__notion__notion-create-pages` separately after the document is written.
-
- ## Cross-references
+ Submitting to any registry, clinical trial and meta-analysis registries, editing an already
+ submitted preregistration, and running the analysis itself.
- - `/evaluate-idea-marketing` — upstream; produces the spec this skill often consumes via `--input`.
- - `/review-pap` — downstream; runs a 6-agent adversarial review of the resulting PAP before upload.
- - `/draft` — for the methods section that mirrors the preregistration once data come in.
- - `/cite` — to add cited works to Zotero / `.bib` before / after this skill runs.
+ Related: the `reading-papers` skill resolves and reads any paper cited here; `compile-latex`
+ builds the `.tex` output if `--format tex` was used.