Agent skill
writer-context-pack
Build per-H3 writer context packs (NO PROSE): merge briefs + evidence packs + anchor facts + allowed citations into a single deterministic JSONL, so drafting is less hollow and less brittle. **Trigger**: writer context pack, context pack, drafting pack, paragraph plan pack, 写作上下文包. **Use when**: `outline/subsection_briefs.jsonl` + `outline/evidence_drafts.jsonl` + `outline/anchor_sheet.jsonl` exist and you want to make C5 drafting easier/more consistent. **Skip if**: upstream evidence is missing or scaffolded (fix `paper-notes` / `evidence-binder` / `evidence-draft` / `anchor-sheet` first). **Network**: none. **Guardrail**: NO PROSE; do not invent facts/citations; only use citation keys present in `citations/ref.bib`.
Install this agent skill to your Project
npx add-skill https://github.com/WILLOSCAR/research-units-pipeline-skills/tree/main/.codex/skills/writer-context-pack
SKILL.md
Writer Context Pack (C4→C5 bridge) [NO PROSE]
Purpose: reduce C5 “hollow writing” by giving the writer a single, per-subsection context pack:
- the exact RQ/axes + paragraph plan (
subsection_briefs) - concrete comparison cards + evaluation protocol + limitations (
evidence_drafts) - numeric/eval/limitation anchors (
anchor_sheet) - allowed citation scope (subsection + chapter union) from
evidence_bindings
Inputs
outline/outline.ymloutline/subsection_briefs.jsonloutline/chapter_briefs.jsonloutline/evidence_drafts.jsonloutline/anchor_sheet.jsonloutline/evidence_bindings.jsonlcitations/ref.bib
Read as needed
references/source_text_hygiene.mdwhen bad source sentences or paper self-narration leak into writer packs
Machine-readable assets
assets/paper_voice_palette.jsonassets/source_text_hygiene.jsonassets/context_pack_policy.json
Outputs
outline/writer_context_packs.jsonl
Output format (outline/writer_context_packs.jsonl)
JSONL, one object per H3 subsection.
Required keys:
sub_id,title,section_id,section_titlerq,thesis,axes,paragraph_planclusters(copied from subsection briefs so writer-side evidence can still be assigned per route when comparison cards are sparse)tension_statement,evaluation_anchor_minimal(copied from subsection briefs; concrete tension + minimal eval context slots)opener_mode,opener_hint(paper-voice hint to vary subsection openers without template labels)bridge_terms,contrast_hook,required_evidence_fields(copied from subsection briefs; transition/evidence handles; NO NEW FACTS)chapter_synthesis_mode(copied from chapter briefs; helps avoid template-y “Taken together…” repeats)allowed_bibkeys_{selected,mapped,chapter,global}anchor_facts(trimmed)comparison_cards(trimmed)must_use(writer contract; minima derived from pack richness +draft_profile)do_not_repeat_phrases(rewrite triggers; high-signal generator stems to avoid repeating verbatim)pack_warnings(list; why this pack may still draft hollow if not fixed upstream)paper_voice_palette(positive paper-voice phrase palette + rewrite stems; avoids "generator voice" without brittle hard blocks)- Source: workspace override
outline/paper_voice_palette.json(if present), else repo default.codex/skills/writer-context-pack/assets/paper_voice_palette.json. - Includes
role_cards(section author / evidence steward / style harmonizer). Treat them as role cues and rewrite intentions, not sentence templates.
- Source: workspace override
pack_stats(object; raw/kept/dropped counts + trim policy so truncation/drop is not silent)
Trim policy:
- Packs trim long snippets to preserve concrete details while keeping JSONL readable (see
pack_stats.trim_policy). - Trimming does not add ellipsis markers (to reduce accidental leakage into prose).
Writer contract (how C5 should use this pack)
Treat each pack as an executable checklist, not optional context:
A150++ minima (defaults; used by gates and self-loops):
-
paragraph_plan: 10
-
anchor_facts: >=10
-
comparison_cards: >=4
-
limitation_hooks: >=3
-
allowed_bibkeys_mapped: >=28
-
Plan compliance: follow
paragraph_plan(don’t skip planned paragraphs; merge only if you keep the same contrasts/anchors). -
Connector intent: treat
paragraph_plan[].connector_phraseas semantic guidance, not copy-paste; paraphrase and vary; avoidNext, we ...narration. -
Anchors are must-use: include at least one
anchor_factsitem that matches your paragraph’s claim type (eval / numeric / limitation), when present. -
Comparisons are must-use: reuse
comparison_cardsto write explicit A-vs-B contrast sentences (avoid “A then B” separate summaries). -
comparison cards are only valid when both sides carry usable highlights; if a card becomes one-sided after hygiene, drop it and route the gap upstream instead of asking the writer to improvise the missing side
-
Thesis is must-use: the first paragraph should end with the
thesisstatement (or a faithful paraphrase with the same commitment level).- Prefer a content claim; avoid generator-like meta openers (
This subsection ...) and avoid repeating literal opener labels (e.g.,Key takeaway:) across many H3s.
- Prefer a content claim; avoid generator-like meta openers (
-
Opener mode (anti-template): use
opener_mode/opener_hintto vary how paragraph 1 frames the subsection (tension-first vs decision-first vs lens-first).- Do not copy labels into the prose; keep signposting light and content-bearing.
-
Anti-template: treat
do_not_repeat_phrasesas rewrite triggers (paper voice hygiene):- if a listed phrase appears, rewrite it into a content claim / argument bridge (no outline narration)
- avoid swapping in a new repeated stem; keep phrasing varied and paper-like
- exception: a phrase may appear once if it is truly subsection-specific (not a reusable stem)
-
Micro-structure: if prose starts drifting into flat summaries, apply
grad-paragraphrepeatedly (tension → contrast → evaluation anchor → limitation). -
Citation scope: prefer
allowed_bibkeys_selected(thenallowed_bibkeys_mapped, thenallowed_bibkeys_chapter).allowed_bibkeys_globalis reserved for cross-cutting works mapped across many subsections (foundations/benchmarks/surveys): use it sparingly and still keep >=3 subsection-specific citations per H3.
How this pack prevents common writer failures (use it proactively)
Treat the pack as a set of writing constraints + affordances.
Failure -> Pack handle -> Writing move
-
Narration opener ("This subsection ...", "In this subsection ...")
- Use:
tension_statement,opener_mode,opener_hint,thesis - Move: write a content-first paragraph 1: tension/decision/lens -> why it matters -> end with thesis.
- Use:
-
Topic listing (one paragraph per paper, no comparison)
- Use:
comparison_cards,axes - Move: write A-vs-B sentences with explicit contrast words (whereas / in contrast / unlike) and align them to one axis at a time.
- Use:
-
Missing evaluation context (claims float without protocol/metric)
- Use:
evaluation_anchor_minimal,evaluation_protocol - Move: state the minimum trio in the paragraph where you compare results: task type + metric + constraint (budget/tool access/cost).
- Treat benchmark inventories inside
evaluation_protocolas metadata only; do not replay raw benchmark-name lists as body prose.
- Use:
-
Limitation missing (reads overconfident)
- Use:
limitation_hooks,required_evidence_fields - Move: add one explicit caveat paragraph or clause tied to what the evidence does NOT show (protocol mismatch, missing ablations, unclear threat model).
- Use:
-
Disclaimer spam ("abstract-only evidence" repeated in every H3)
- Use:
pack_warnings(as a signal), not as copy - Move: keep evidence policy once in front matter; in H3, only add a short local caveat when it is subsection-specific.
- Use:
-
Citation drift / free-citing across the paper
- Use:
allowed_bibkeys_selected(thenmapped, thenchapter, rarelyglobal) - Move: if you cannot write without citing outside these sets, stop and fix upstream mapping/bindings instead of "making it work" in prose.
- Use:
Mini examples (do not copy verbatim; paraphrase)
Bad (narration opener):
This subsection surveys tool interfaces for agents ...
Better (content-first opener):
A central tension in tool interfaces is balancing expressive action spaces with verifiable execution; we argue that interface contracts largely determine what evaluation claims can be trusted.
Bad (meta guidance):
Therefore, survey comparisons should focus on ...
Better (literature-facing observation):
Across reported protocols, comparisons often hinge on whether tools are treated as deterministic APIs or as stochastic resources, which changes both cost and failure modes.
Script
Quick Start
python .codex/skills/writer-context-pack/scripts/run.py --helppython .codex/skills/writer-context-pack/scripts/run.py --workspace workspaces/<ws>
All Options
--workspace <dir>--unit-id <U###>--inputs <semicolon-separated>--outputs <semicolon-separated>--checkpoint <C#>
Examples
- Default IO:
python .codex/skills/writer-context-pack/scripts/run.py --workspace workspaces/<ws>
- Explicit IO:
python .codex/skills/writer-context-pack/scripts/run.py --workspace workspaces/<ws> --inputs "outline/outline.yml;outline/subsection_briefs.jsonl;outline/chapter_briefs.jsonl;outline/evidence_drafts.jsonl;outline/anchor_sheet.jsonl;outline/evidence_bindings.jsonl;citations/ref.bib" --outputs "outline/writer_context_packs.jsonl"
Refinement marker (recommended; prevents churn)
When you are satisfied with writer packs (and they are consistent with briefs/bindings), create:
outline/writer_context_packs.refined.ok
This is an explicit "I reviewed/refined this" signal:
- prevents scripts from regenerating and undoing your work
- (in strict runs) can be used as a completion signal before writing
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?