Agent skill

evidence-binder

Bind addressable evidence IDs from `papers/evidence_bank.jsonl` to each subsection (H3), producing `outline/evidence_bindings.jsonl`. **Trigger**: evidence binder, evidence plan, section->evidence mapping, 证据绑定, evidence_id. **Use when**: `papers/evidence_bank.jsonl` exists and you want writer/auditor to use section-scoped evidence items (WebWeaver-style memory bank). **Skip if**: you are not doing evidence-first section-by-section writing. **Network**: none. **Guardrail**: NO PROSE; do not invent evidence; only select from the existing evidence bank.

Stars 377
Forks 25

Install this agent skill to your Project

npx add-skill https://github.com/WILLOSCAR/research-units-pipeline-skills/tree/main/.codex/skills/evidence-binder

SKILL.md

Evidence Binder (NO PROSE)

Goal: convert a paper-level pool into a subsection-addressable evidence plan.

This skill is the bridge from “Evidence Bank” → “Writer”: the writer should only use evidence IDs bound to the current subsection.

Why this matters for writing quality:

  • Weak/undifferentiated bindings force the writer to either pad prose or cite out-of-scope.
  • Treat binding_gaps as a routing signal: fix upstream evidence/mapping instead of "writing around" missing evidence.

Inputs

  • outline/subsection_briefs.jsonl
  • outline/mapping.tsv
  • papers/evidence_bank.jsonl
  • Optional:
    • citations/ref.bib (to validate cite keys when evidence items carry citations)

Outputs

  • outline/evidence_bindings.jsonl (1 JSONL record per subsection)
  • outline/evidence_binding_report.md (summary; bullets + small tables)
    • Includes gaps (missing required evidence fields) and tag mix (selected evidence tags) so subsection-specific evidence needs are visible.

Output format (outline/evidence_bindings.jsonl)

JSONL (one object per H3 subsection). Best-effort fields (keep deterministic):

  • sub_id, title
  • paper_ids (papers in-scope for this subsection, from mapping.tsv)
  • mapped_bibkeys (bibkeys mapped to this subsection)
  • bibkeys (a selected subset to encourage subsection-first citations)
  • evidence_ids (selected evidence items from papers/evidence_bank.jsonl)
  • evidence_counts (small summary by claim_type / tag / evidence_level)
  • binding_rationale (short bullets; why the selected evidence covers this subsection’s axes / desired tags)
  • binding_gaps (list[str]; required evidence fields not covered by selected evidence; drives the evidence self-loop upstream)

A150++ density contract (default)

  • Use queries.md:per_subsection as the width contract (A150++ default: 28).
  • Bind enough evidence to make writing concretely executable without out-of-scope pressure:
    • mapped_bibkeys: >= per_subsection
    • evidence_ids: >= per_subsection - 4 (A150++: >=24)
    • bibkeys (selected): >= 20 (so each H3 has a usable citation pool, not just a long mapped list)

Binding policy (how strict to be)

  • Subsection-first by default: the writer should primarily cite bibkeys and use evidence_ids bound to this sub_id.
  • Allow limited within-chapter reuse: citations from sibling H3s within the same H2 chapter may be reused for background/evaluation framing, but:
    • keep >=3 subsection-specific citations per H3 (avoid “free cite drift”)
    • avoid cross-chapter reuse unless the outline explicitly calls for it

Workflow (NO PROSE)

  1. Read outline/subsection_briefs.jsonl to understand each H3’s scope/rq/axes.
  2. Read outline/mapping.tsv to know which papers belong to each subsection.
  3. Read papers/evidence_bank.jsonl and select a subsection-scoped set of evidence_id items per H3.
  4. If citations/ref.bib exists, sanity-check that any cite keys referenced by selected evidence items are defined.
  5. Write outline/evidence_bindings.jsonl and outline/evidence_binding_report.md.

Freeze policy

  • If outline/evidence_bindings.refined.ok exists, the script will not overwrite outline/evidence_bindings.jsonl.
  • Treat this marker as an explicit refinement/completion signal (especially in strict runs): only create it after you have checked binding_gaps and tag mix look subsection-specific.

Heterogeneity sanity check (avoid recipe-like bindings)

A common hidden failure mode is mechanical uniformity: every H3 ends up with the same claim_type/tag mix, which hides what each subsection is actually missing and pushes the writer toward generic prose.

Before you mark bindings as refined:

  • Scan outline/evidence_binding_report.md: different H3 should show meaningfully different tag mix / claim_type balance.
  • If most H3 look identical, treat it as a binder smell: tighten required_evidence_fields, adjust selection rationale, or enrich the evidence bank, then rerun.

Script

Quick Start

  • python .codex/skills/evidence-binder/scripts/run.py --help
  • python .codex/skills/evidence-binder/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; prefer defaults)
  • --outputs <semicolon-separated>: override outputs (rare; prefer defaults)
  • --checkpoint <C#>: checkpoint id (optional; for logs)

Examples

  • Bind evidence IDs after building the evidence bank:
    • Ensure papers/evidence_bank.jsonl exists.
    • Run: python .codex/skills/evidence-binder/scripts/run.py --workspace workspaces/<ws>

Troubleshooting

Issue: some subsections have too few evidence IDs

Fix:

  • Strengthen papers/evidence_bank.jsonl via paper-notes (more extractable evidence items).
  • Or broaden the mapped paper set for the subsection via section-mapper, then rerun binder.

Issue: binding_gaps is non-empty (missing evidence types)

What it means:

  • The subsection brief requires certain evidence fields (e.g., benchmarks/metrics/security/tooling), but the bound evidence items do not cover them.

Fix (self-loop upstream):

  • Prefer enriching papers/evidence_bank.jsonl / papers/paper_notes.jsonl for mapped papers (extract benchmark/metric/failure-mode details).
  • If the mapping is weak for that evidence type, expand outline/mapping.tsv for the subsection and rerun binder.
  • If the requirement is unrealistic for the subsection’s scope, revise outline/subsection_briefs.jsonl:required_evidence_fields and rerun binder.

Expand your agent's capabilities with these related and highly-rated skills.

WILLOSCAR/research-units-pipeline-skills

thesis-compile-review

对中文毕业论文进行编译、warning 分级、模板模式检查、数据与引用复查,并把问题回写成可继续迭代的 review checklist。 **Trigger**: 毕业论文编译检查, thesis compile review, warning 分级, 终稿复查, main.pdf 检查. **Use when**: 论文已经回写到 TeX 交付层,需要确认是否真正达到“可提交”的质量,而不是只做到能编译。 **Skip if**: 还处于中间层重构阶段,`chapters/*.tex` 尚未形成稳定交付稿。 **Network**: none. **Guardrail**: 不在这里重构章节主线;如果发现结构问题,明确回退到上游修复。

377 25
Explore
WILLOSCAR/research-units-pipeline-skills

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`.

377 25
Explore
WILLOSCAR/research-units-pipeline-skills

thesis-question-list

维护中文毕业论文的 `codex_md/question_list.md`:把本轮问题、边界、优先级、协作方案和验收口径结构化,作为整条 thesis pipeline 的控制面。 **Trigger**: 毕业论文问题清单, thesis question list, 论文修改清单, 本轮目标, 结构问题梳理, review问题整理. **Use when**: 你已经有一批材料或上一轮 review 结果,需要明确这一轮到底修什么、不修什么,并给后续重构与编译复查提供统一入口。 **Skip if**: 当前只是在做一次性局部措辞修改,且没有形成新一轮结构/证据/编译问题。 **Network**: none. **Guardrail**: 不在这里写正文;不把问题单写成长篇散文;每条问题必须可执行、可验收。

377 25
Explore
WILLOSCAR/research-units-pipeline-skills

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;尽量给出可追溯证据来源(来自稿件/引用/作者陈述)。

377 25
Explore
WILLOSCAR/research-units-pipeline-skills

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。

377 25
Explore
WILLOSCAR/research-units-pipeline-skills

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;避免泛泛而谈。

377 25
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results