/preregister — 预注册文档生成器
生成一份可直接提交注册的预注册文档。用户负责将其上传到真实的注册中心(OSF / AsPredicted / AEA RCT Registry)——本技能负责撰写行文和结构,不负责提交。
为何要进行预注册
预注册是你在看到数据之前(或对于观察性分析,在分析已实现的结果之前)对你的假设、设计和分析计划做出的书面承诺。它将验证性测试与探索性测试区分开来,保护你免受 p-hacking、HARKing 和 forking-paths 的影响。不同领域使用不同的注册中心:
- 政治学、心理学、广义社会科学 → OSF (osf.io/registries) 是默认选择。AsPredicted (aspredicted.org) 是实验常用的简洁格式。
- 经济学现场实验 → AEA RCT Registry (socialscienceregistry.org) 自 2018 年起是 AEA 期刊投稿的强制要求。
- 公共卫生 / 临床试验 → ClinicalTrials.gov 或 ISRCTN(本技能不涵盖——请使用试验注册中心自身的模板)。
何时使用
- 在启动实验(实验室、现场或调查)之前。
- 在收集特定研究问题的目标人群观察数据之前。
- 在分析你已有访问权限但尚未针对主要假设进行检验的数据之前。
- 在修订与回复期间,当审稿人要求提供书面预分析计划时。
何时不要使用
- 在您已经看到了已实现的结果并想“追溯预注册”时——这不叫预注册。如果输入描述中包含结果,本技能将拒绝执行。
- 对于探索性分析——这些不需要预注册;它们需要透明的标签。
- 对于元分析——请直接使用 PROSPERO,而不是此模板。
工作流程
阶段 1 — 读取输入
两种输入模式:
--input <路径>— 由/interview-me生成的研究规范(保存在quality_reports/specs/下)或任何结构化的 Markdown 文件。读取规范并提取:研究问题、假设(方向性!)、数据来源、设计、样本、分析方法。如果规范记录了论文类型(/interview-me会在**Paper type:**行中写入,例如survey-experiment),则使用它来偏向风格选择。- 无
--input— 提示用户提供 1-3 段关于研究内容的描述,然后继续。如果描述中缺少方向性假设,询问一次。不要编造。
拒绝条件(必须在任何草拟之前检查):
- 描述包含已实现的结果("we found"、"the estimate is"、"p =")→ 拒绝,并提示:“预注册是面向未来的;此描述包含结果。您的意思是使用
/respond-to-referees还是撰写方法部分?” - 描述完全没有可检验的假设(纯粹的探索性框架)→ 标记并询问用户是否想要 OSF 模板的 探索性分析 版本(仍然有用,但不是注册的验证性测试)。
阶段 2 — 选择风格
未给定 --style 时的默认风格(按领域):
| 领域信号 | 默认风格 |
|---|---|
**Paper type:** survey-experiment 或政治学/心理学背景 | osf |
| 经济学中的现场实验 / 标记为 "RCT" / IRB 批准的随机干预 | aea-rct |
| 9 题快速表格询问、实验室心理学实验、时间紧迫 | aspredicted |
| 其他情况 | osf |
用户可以通过 --style osf|aspredicted|aea-rct 覆盖。
阶段 3 — 生成文档
读取 templates/preregistration-template.md。该模板包含三个风格部分;只使用与所选风格匹配的部分(不要合并——注册中心各不相同)。
所有风格的通用内容,文档必须包含:
- 标题和作者。
- 日期和版本。
- 指向原始规范的指针(如果给定
--input),以保证可追溯性。
各风格特有的部分:
osf— 假设(方向性、编号)· 设计 · 抽样计划 · 变量 · 分析计划 · 推断标准 · 数据排除 · 缺失数据处理 · 探索性分析(明确标注为探索性)· 其他。aspredicted— 按照 AsPredicted 格式的 9 个编号字段:(1) 数据收集状态,(2) 假设,(3) 关键因变量,(4) 条件,(5) 分析,(6) 异常值/排除,(7) 样本量 + 停止规则,(8) 其他任何内容,(9) 名称(研究名称而非论文名称)。aea-rct— 干预 · 结果(主要、次要)· 主要假设 · 样本(目标 N、资格、随机化单位、随机化方法)· IRB 批准 · 试验日期 · 功效计算 · 预分析计划附件 · 状态(尚未启动 / 进行中 / 已完成)。
为每个部分标注以下之一:
- MUST — 注册中心要求此项;缺少它文档无法提交。
- SHOULD — 强烈建议;审稿人期望它。
- MAY — 可选;如果相关则包含。
重用 templates/requirements-spec.md 中的 MUST/SHOULD/MAY 框架。对于输入未提供的每个 MUST 项,写入 [CLARIFY: <具体问题>] 而不是编造内容。
阶段 4 — 交叉检查(写入磁盘之前)
如果下列任何一项检查失败,则拒绝将文档标记为“就绪”:
- 假设方向性。 每个假设必须包含方向("higher than"、"increases"、"negatively predicts"、“无效应”在等价性检验下可作为方向性主张接受)。拒绝没有符号的 "is associated with"。
- 估计量命名。 分析计划需要命名一个特定的估计量(OLS、logit、fixest::feols、lme4::lmer、ATT 均值差……)以及一个主要结果变量。仅 "Regression" 是不够的。
- 样本计划数值化。 出现目标 N、停止规则或功效计算目标。“尽可能多”不是样本计划。对于 RCT 和前瞻性设计,请遵循
/power-analysis的SKILL.md(读取它——该技能仅由用户调用,因此不能在此处调用),以生成 MDE/所需 N 以及一个可直接粘贴的该领域功效段落。 - 事前排除。 异常值和排除规则必须在看到数据之前说明(“我们将排除完成时间 < 1 分钟的观测”)。模糊的“我们会处理异常值”未通过。
- 内部一致性。 如果设计是随机的,则随机化单位必须与分析单位匹配,或者分析计划必须处理聚类。如果是观察性研究,则必须说明识别策略。
对于每次失败,文档会得到一个 [CLARIFY: …] 占位符;文档会写入磁盘,但在输出摘要中被标记为“不完整 — N 个 MUST 项未解决”。
阶段 5 — 后期验证
如果文档在理论依据部分引用了先前文献(例如,“基于 Hainmueller et al. 2014,我们预期……”),则通过 Agent 工具调用 /verify-claims 来事实核查这些引用。传递草稿路径和显式引用列表。claim-verifier 代理(全新上下文,从未见过草稿)会为每个引用返回 PASS / PARTIAL / FAIL。在输出摘要中展示任何 FAIL/PARTIAL 的结果。
在以下情况下跳过后期验证:
- 文档中没有先前文献引用。
- 用户传递了
--no-verify(继承自/lit-review和/research-ideation后期验证的标志)。
阶段 6 — 输出
写入 quality_reports/preregistrations/YYYY-MM-DD_<slug>.md(被 gitignore 忽略——预注册文档应该是带时间戳并上传到外部的,而不是随代码一起提交)。
在聊天中打印:
✓ 预注册草稿已保存:quality_reports/preregistrations/<文件>.md
风格:<osf|aspredicted|aea-rct>
章节数:<总数> — <完整> 完成,<待澄清> 带有 [CLARIFY:] 占位符
引用验证:<PASS>/<PARTIAL>/<FAIL>(或“无需验证的引用”)
下一步:审查 [CLARIFY:] 占位符,填写,然后上传至 <注册中心URL>
包含注册中心 URL:OSF → osf.io/registries,AsPredicted → aspredicted.org,AEA RCT → socialscienceregistry.org。
交叉引用
templates/preregistration-template.md— 本技能使用的三个风格模板。templates/requirements-spec.md— 此处重用的 MUST/SHOULD/MAY 注释语言。.claude/skills/interview-me/SKILL.md— 生成本技能通过--input使用的规范。.claude/skills/power-analysis/SKILL.md— 遵循(而非调用)以为样本计划字段(RCT)提供 MDE/所需 N + 功效段落。.claude/skills/verify-claims/SKILL.md— 阶段 5 调用以进行引用后期验证。.claude/references/discipline-cards.md— 驱动--style选择的领域默认值。.claude/rules/replication-protocol.md— 预注册是前瞻性承诺;复制协议是追溯性契约。
示例
示例 1 — 基于规范的政治学调查实验
用户说: “预注册这项研究”(使用 --input quality_reports/specs/2026-04-15_priming-effects.md)
操作:
- 读取规范;
**Paper type:** survey-experiment→ 默认风格osf。 - 提取 2 个方向性假设、MTurk N=1,200、带有处理虚拟变量的 OLS。
- 生成 OSF 文档,所有 MUST 部分均已填写,1 个 MAY 留空。
- 规范之外没有引用先前文献——跳过后期验证。
结果: 保存至
quality_reports/preregistrations/2026-04-15_priming-effects.md。用户上传到 OSF。
示例 2 — 经济学现场实验,AEA RCT Registry
用户说: “为现金转移试点起草一份 AEA RCT 预注册”(使用 --style aea-rct --input quality_reports/specs/2026-03-10_ct-pilot.md)
操作:
- 读取规范;随机化单位 = 村庄,主要结果 = 消费。
- 生成 AEA RCT 字段。规范中缺少 IRB 编号 →
[CLARIFY: IRB 批准号]。 - 交叉检查:估计量(聚类稳健 OLS)、主要结果已说明、排除规则(意向性治疗)已说明。通过。
- 无引用先前文献——跳过后期验证。 结果: 文档已写入。输出摘要标记了 1 个 [CLARIFY:] 项,需在提交 AEA 之前填写。
示例 3 — 自由格式描述,AsPredicted 短格式
用户说: “预注册我的下一个启动实验,使用 AsPredicted 风格”(无 --input)
操作:
- 提示输入 1-3 段描述。
- 用户提供一段;假设缺少方向 → 询问一次:“方向?”
- 用户澄清;填充 9 个 AsPredicted 字段。
- 样本量停止规则未提供 →
[CLARIFY: 目标 N 或停止规则]。 结果: 短格式已写入;一个 MUST [CLARIFY:] 被标记;告知用户在粘贴到 AsPredicted 之前填写。
故障排除
“描述包含结果” — 这是设计使然。将结果移入方法+结果文稿中;预注册是面向未来的。
引用后期验证失败并返回 FAIL — claim-verifier 无法在 WebSearch/语料库中找到引用的论文。要么引用是真的但验证器遗漏了(对于非常近期的/付费墙后的工作很常见——请使用 URL 显式引用),要么引用是幻觉化的。在上传前手动检查。
不同注册中心要求不同内容 — 如果本技能的映射过于粗略,请使用注册中心自己的模板。这三种风格涵盖了约 90% 的社会科学预注册;边缘情况(PROSPERO、ClinicalTrials.gov、ISRCTN)需要使用注册中心的原生表格。
输出目录不存在 — quality_reports/preregistrations/.gitkeep 应该在新的复刻中存在;如果缺失,本技能会在写入前创建该目录。