Agent skill
post-merge-voice-gate
Post-merge paper-voice gate: detect planner-talk / axis-label artifacts introduced during merge (especially from `outline/transitions.md`), then route fixes back to the earliest source. **Trigger**: post-merge voice gate, merge voice gate, transition leakage, planner talk, 合并后口吻门, 过渡句污染. **Use when**: `section-merger` has produced `output/DRAFT.md` and you want to ensure merge-injected text won't drag the draft into generator voice before polishing. **Skip if**: you are still pre-merge (no `output/DRAFT.md`) or you plan to rework structure upstream first. **Network**: none. **Guardrail**: analysis-only; do not edit `output/DRAFT.md`; do not invent facts/citations; write only the report + routing.
Install this agent skill to your Project
npx add-skill https://github.com/WILLOSCAR/research-units-pipeline-skills/tree/main/.codex/skills/post-merge-voice-gate
SKILL.md
Post-merge Voice Gate (treat transitions as injected prose)
Purpose: catch the highest-impact "automation tells" that appear after merge.
Why this exists:
outline/transitions.mdis injected verbatim intooutput/DRAFT.md.- Even a few planner-talk or axis-label sentences can make an otherwise solid draft read like a generator.
- Fixes should land at the earliest responsible artifact (usually
outline/transitions.md), not as ad-hoc edits in the merged draft.
This skill is a gate:
- It writes a report (
output/POST_MERGE_VOICE_REPORT.md). - If FAIL, it also appends to
output/QUALITY_GATE.mdso the workspace remains debuggable.
Role prompt: Voice Gatekeeper (paper voice, no new facts)
You are the post-merge voice gatekeeper for a survey draft.
Your job is to detect high-signal generator voice that entered the draft via merge injection:
- planner-talk transitions ("To keep the chapter...", "The remaining uncertainty is...")
- slide/navigation narration ("Next, we move...", "We now turn...")
- axis-label slash lists (A / B / C; planning/memory) used as prose
Rules:
- do not change the draft directly; route fixes to the source file
- do not invent facts or citations
- keep fixes minimal and content-bearing (argument bridges, not navigation)
Output:
- a short PASS/FAIL report with a routing plan
Inputs
output/DRAFT.mdoutline/transitions.md
Output
output/POST_MERGE_VOICE_REPORT.md(always written)
What this gate checks (high-signal only)
- Planner-talk transition stems (construction notes that read like comments in the paper body)
- Slash-list axis markers in injected transitions (A / B / C)
- Slide/navigation narration that should be argument bridges
Rewrite triggers (if you see these, FAIL and route)
These stems are high-signal generator voice once injected into the draft body:
- "To keep ..." / "To keep the chapter..."
- "The remaining uncertainty is ..."
- "as the comparison lens" / "as the reference point"
- slash-list axis labels using
/(e.g., "retrieval / index / write policy")
Routing rules (earliest responsible artifact)
- If the offending phrase appears in
outline/transitions.md:- Fix: rerun
transition-weaver(or hand-editoutline/transitions.md), then rerunsection-merger.
- Fix: rerun
- Otherwise (phrase only appears in the draft body):
- Fix: route to
writer-selfloop/subsection-polisher/draft-polisherdepending on where it occurs.
- Fix: route to
Mini rewrite examples (do not copy verbatim)
Bad (planner talk, reads like a build note):
To keep the chapter's comparison lens explicit, we now turn to ...
Better (argument bridge, content-bearing):
Once interface contracts fix what actions are executable, the next bottleneck is how agents choose among those actions under uncertainty and budget constraints.
Bad (axis-label slash list):
... under mechanism/architecture/data trade-offs ...
Better (natural prose):
... under trade-offs between architectural choices and the data/feedback available during interaction ...
Script (optional; deterministic gate)
Quick Start
python .codex/skills/post-merge-voice-gate/scripts/run.py --workspace workspaces/<ws>
All Options
--workspace <dir>: workspace root--unit-id <U###>: unit id (optional; for logs)--inputs <semicolon-separated>: override inputs (rare; default:output/DRAFT.md;outline/transitions.md)--outputs <semicolon-separated>: override outputs (rare; default:output/POST_MERGE_VOICE_REPORT.md)--checkpoint <C#>: checkpoint id (optional; for logs)
Examples
- Run right after
section-merger(recommended):python .codex/skills/post-merge-voice-gate/scripts/run.py --workspace workspaces/<ws>
Notes
- The script is analysis-only; it never edits content.
- On FAIL it writes
output/POST_MERGE_VOICE_REPORT.mdand appends a short record tooutput/QUALITY_GATE.md.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
thesis-compile-review
对中文毕业论文进行编译、warning 分级、模板模式检查、数据与引用复查,并把问题回写成可继续迭代的 review checklist。 **Trigger**: 毕业论文编译检查, thesis compile review, warning 分级, 终稿复查, main.pdf 检查. **Use when**: 论文已经回写到 TeX 交付层,需要确认是否真正达到“可提交”的质量,而不是只做到能编译。 **Skip if**: 还处于中间层重构阶段,`chapters/*.tex` 尚未形成稳定交付稿。 **Network**: none. **Guardrail**: 不在这里重构章节主线;如果发现结构问题,明确回退到上游修复。
front-matter-writer
Write the survey's front matter files (Abstract, Introduction, Related Work, Discussion, Conclusion) in paper voice, with high citation density and a single evidence-policy paragraph. **Trigger**: front matter writer, introduction writer, related work writer, abstract writer, discussion writer, conclusion writer, 引言, 相关工作, 摘要, 讨论, 结论. **Use when**: you are in C5 (prose allowed) and need the paper-like shell to stop the draft reading like stitched subsections. **Skip if**: `Approve C2` is missing in `DECISIONS.md`, or `citations/ref.bib` is missing. **Network**: none. **Guardrail**: no invented facts/citations; no pipeline jargon in final prose; no repeated evidence disclaimers; only use keys present in `citations/ref.bib`.
thesis-question-list
维护中文毕业论文的 `codex_md/question_list.md`:把本轮问题、边界、优先级、协作方案和验收口径结构化,作为整条 thesis pipeline 的控制面。 **Trigger**: 毕业论文问题清单, thesis question list, 论文修改清单, 本轮目标, 结构问题梳理, review问题整理. **Use when**: 你已经有一批材料或上一轮 review 结果,需要明确这一轮到底修什么、不修什么,并给后续重构与编译复查提供统一入口。 **Skip if**: 当前只是在做一次性局部措辞修改,且没有形成新一轮结构/证据/编译问题。 **Network**: none. **Guardrail**: 不在这里写正文;不把问题单写成长篇散文;每条问题必须可执行、可验收。
novelty-matrix
Create a novelty/prior-work matrix comparing the submission’s contributions against related work (overlaps vs deltas). **Trigger**: novelty matrix, prior-work matrix, overlap/delta, 相关工作对比, 新颖性矩阵. **Use when**: peer review 中评估 novelty/positioning,需要把贡献与相关工作逐项对齐并写出差异点证据。 **Skip if**: 缺少 claims(先跑 `claims-extractor`)或你不打算做新颖性定位分析。 **Network**: none (retrieval of additional related work is out-of-scope unless provided). **Guardrail**: 明确 overlap 与 delta;尽量给出可追溯证据来源(来自稿件/引用/作者陈述)。
protocol-writer
Write a systematic review protocol into `output/PROTOCOL.md` (databases, queries, inclusion/exclusion, time window, extraction fields). **Trigger**: protocol, PRISMA, systematic review, inclusion/exclusion, 检索式, 纳入排除. **Use when**: systematic review pipeline 的起点(C1),需要先锁定 protocol 再开始 screening/extraction。 **Skip if**: 不是做 systematic review(或 protocol 已经锁定且不允许修改)。 **Network**: none. **Guardrail**: protocol 必须包含可执行的检索与筛选规则;需要 HUMAN 签字后才能进入 screening。
rubric-writer
Write a rubric-based peer review report (`output/REVIEW.md`) using extracted claims and evidence gaps (novelty/soundness/clarity/impact). **Trigger**: rubric review, referee report, peer review write-up, 审稿报告, REVIEW.md. **Use when**: peer-review pipeline 的最后阶段(C3),已有 `output/CLAIMS.md` + `output/MISSING_EVIDENCE.md`(以及可选 novelty matrix)。 **Skip if**: 上游产物未就绪(claims/evidence gaps 缺失)或你不打算输出完整审稿报告。 **Network**: none. **Guardrail**: 给可执行建议(actionable feedback),并覆盖 novelty/soundness/clarity/impact;避免泛泛而谈。
Didn't find tool you were looking for?