willoscar/evidence-binder
| Bind addressable evidence IDs from `papers/evidence_bank.jsonl` to each subsection (H3), producing `outline/evidence_bindings.jsonl`.
npx skills add https://github.com/WILLOSCAR/research-units-pipeline-skills --skill evidence-binder
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:
binding_gaps as a routing signal: fix upstream evidence/mapping instead of "writing around" missing evidence.outline/subsection_briefs.jsonloutline/mapping.tsvpapers/evidence_bank.jsonlcitations/ref.bib (to validate cite keys when evidence items carry citations)outline/evidence_bindings.jsonl (1 JSONL record per subsection)outline/evidence_binding_report.md (summary; bullets + small tables)gaps (missing required evidence fields) and tag mix (selected evidence tags) so subsection-specific evidence needs are visible.outline/evidence_bindings.jsonl)JSONL (one object per H3 subsection). Best-effort fields (keep deterministic):
sub_id, titlepaper_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)queries.md:per_subsection as the width contract (A150++ default: 28).mapped_bibkeys: >= per_subsectionevidence_ids: >= per_subsection - 4 (A150++: >=24)bibkeys (selected): >= 20 (so each H3 has a usable citation pool, not just a long mapped list)For draft_profile=course_paper, retain the same traceability shape at compact
density: 8 mapped bibkeys, at least 6 selected bibkeys, and at least 6 evidence
IDs from at least 4 papers per H3.
bibkeys and use evidence_ids bound to this sub_id.outline/subsection_briefs.jsonl to understand each H3’s scope/rq/axes.outline/mapping.tsv to know which papers belong to each subsection.papers/evidence_bank.jsonl and select a subsection-scoped set of evidence_id items per H3.citations/ref.bib exists, sanity-check that any cite keys referenced by selected evidence items are defined.outline/evidence_bindings.jsonl and outline/evidence_binding_report.md.outline/evidence_bindings.refined.ok exists, the script will not overwrite outline/evidence_bindings.jsonl.binding_gaps and tag mix look subsection-specific.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:
outline/evidence_binding_report.md: different H3 should show meaningfully different tag mix / claim_type balance.required_evidence_fields, adjust selection rationale, or enrich the evidence bank, then rerun.uv run python .codex/skills/evidence-binder/scripts/run.py --helpuv run python .codex/skills/evidence-binder/scripts/run.py --workspace <workspace>--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)papers/evidence_bank.jsonl exists.uv run python .codex/skills/evidence-binder/scripts/run.py --workspace <workspace>Fix:
papers/evidence_bank.jsonl via paper-notes (more extractable evidence items).section-mapper, then rerun binder.binding_gaps is non-empty (missing evidence types)What it means:
Fix (self-loop upstream):
papers/evidence_bank.jsonl / papers/paper_notes.jsonl for mapped papers (extract benchmark/metric/failure-mode details).outline/mapping.tsv for the subsection and rerun binder.outline/subsection_briefs.jsonl:required_evidence_fields and rerun binder.Take willoscar/evidence-binder from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.