willoscar/evidence-selfloop
|
npx skills add https://github.com/WILLOSCAR/research-units-pipeline-skills --skill evidence-selfloop
Purpose: make the evidence-first pipeline converge without writing filler prose.
This skill reads the *intermediate evidence artifacts* (briefs/bindings/packs) and produces an actionable TODO list that answers:
outline/subsection_briefs.jsonloutline/evidence_bindings.jsonl (expects binding_gaps / binding_rationale if available)outline/evidence_drafts.jsonl (expects blocking_missing, comparisons, eval protocol, limitations)outline/evidence_binding_report.mdoutline/anchor_sheet.jsonlpapers/paper_notes.jsonlpapers/fulltext_index.jsonlqueries.mdoutput/EVIDENCE_SELFLOOP_TODO.md (report-class; always written)blocking_missing, treat it as a STOP signal: strengthen notes/fulltext/mapping, then regenerate packs.binding_gaps, treat it as a ROUTING signal: either enrich the evidence bank for the mapped papers, expand mapping coverage, or adjust required_evidence_fields if unrealistic.Recommended rerun chain (minimal):
pdf-text-extractor → paper-notes → evidence-binder → evidence-draft → anchor-sheet → writer-context-packsection-mapper → outline-refiner → (then rerun C3/C4 evidence skills)1) Read queries.md (if present)
2) Read outline/subsection_briefs.jsonl
sub_id, capture axes + required_evidence_fields (what evidence types this subsection expects).3) Read outline/evidence_bindings.jsonl
sub_id, surface binding_rationale and binding_gaps (what the binder could/could not cover from the evidence bank).4) (Optional) Read outline/evidence_binding_report.md
outline/evidence_bindings.jsonl, not a separate truth source.5) Read outline/evidence_drafts.jsonl
blocking_missing (STOP signals), and check for missing comparisons / eval protocol / limitations that would force hollow writing.6) (Optional) Read outline/anchor_sheet.jsonl
7) (Optional) Read papers/paper_notes.jsonl and papers/fulltext_index.jsonl
blocking_missing, with binding_gaps, and common failure reasons.This skill is the *prewrite router* for evidence quality. Treat its Status: line as the unblock contract:
PASS: no blocking_missing and no binding_gaps -> proceed to C5 writing (but still scan non-blocking writability smells: low comparisons/eval/anchors often predict hollow prose).OK: no blocking_missing, but some binding_gaps -> you may draft, but expect weaker specificity; prefer fixing gaps first.FAIL: missing inputs OR any blocking_missing -> do not write filler prose; fix upstream and rerun C3/C4.Use this as a *semantic routing table* (not a script checklist). The goal is to fix the earliest broken intermediate artifact.
| Symptom (where you see it) | Likely root cause | Inspect first | Smallest upstream fix chain |
|---|---|---|---|
| evidence_drafts.blocking_missing: no usable citation keys | mapped papers lack bibkey / bibkeys not in citations/ref.bib | papers/paper_notes.jsonl (bibkey fields), citations/ref.bib | C3 paper-notes (ensure bibkeys) -> C4 citation-verifier -> rerun evidence-binder -> rerun evidence-draft |
| blocking_missing: title-only evidence | retrieval/metadata lacks abstracts (or aggressive filtering) | papers/papers_raw.jsonl abstracts, papers/paper_notes.jsonl evidence_level | C1 literature-engineer (enrich metadata) OR C3 pdf-text-extractor (fulltext) -> rerun paper-notes |
| blocking_missing: no evidence snippets extractable | notes are too thin / evidence bank empty for mapped papers | papers/evidence_bank.jsonl (counts), papers/paper_notes.jsonl | C3 paper-notes (richer extraction; prefer fulltext when possible) -> rerun C4 packs |
| blocking_missing: no concrete evaluation tokens | notes/bank did not extract benchmarks/metrics/budgets | papers/paper_notes.jsonl (metrics/benchmarks fields), outline/anchor_sheet.jsonl | C3 paper-notes (extract eval anchors) -> rerun anchor-sheet + evidence-draft |
| evidence pack comparisons are sparse (signals: comparisons low) | clusters are not contrastable OR mapping coverage too weak | outline/subsection_briefs.jsonl (clusters), outline/mapping.tsv | C2 section-mapper (coverage) OR C3 subsection-briefs (better clusters) -> rerun evidence-draft |
| bindings.binding_gaps mentions benchmarks/metrics/protocol | binder cannot find evaluation-tagged evidence for this subsection | outline/evidence_binding_report.md (tag mix), papers/evidence_bank.jsonl tags | C3 paper-notes (tag/evidence extraction) OR C2 expand mapping for that subsection -> rerun evidence-binder |
| binding_gaps mentions security/threat model/attacks | mapped set lacks security-focused works or notes lack threat-model detail | outline/mapping.tsv, papers/paper_notes.jsonl | C2 expand mapping (+ C1 queries if needed) OR C3 enrich notes -> rerun binder/packs |
| binding report looks mechanically uniform across H3 (same mix, low tag variance) | binder selection too recipe-like OR evidence bank tags too coarse | outline/evidence_binding_report.md (tag mix), evidence bank tags | tighten required_evidence_fields + improve evidence bank tags, then rerun binder; avoid writing around non-specific bindings |
writer-selfloop is FAIL due to missing anchors/comparisons and the corresponding writer pack has pack_warnings, stop and run this evidence self-loop: the section is telling you the pack is not writeable.papers/*, outline/*, or sections/*.uv run python .codex/skills/evidence-selfloop/scripts/run.py --workspace <workspace>--workspace <dir>--unit-id <U###> (optional)--inputs <semicolon-separated> (optional override)--outputs <semicolon-separated> (optional override; default writes output/EVIDENCE_SELFLOOP_TODO.md)--checkpoint <C#> (optional)uv run python .codex/skills/evidence-selfloop/scripts/run.py --workspace <workspace>Take willoscar/evidence-selfloop 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.