Citation Anchoring
Documentscitation-anchoringCitation Anchoring is an Agent Skill for documents published in the WILLOSCAR/research-units-pipeline-skills repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.
Regression-check citation anchoring (citations stay in the same subsection) to prevent “polish drift” that breaks claim→evidence alignment. **Trigger**: citation anchoring, citation drift, regression, cite stability, 引用锚定, 引用漂移. **Use when**: after editing/polishing, you want to confirm citations did not migrate across `###` subsections. **Skip if**: you do not have a baseline anchor file yet. **Network**: none. **Guardrail**: analysis-only; do not edit content.
How to use this skill
Bring this guide into your coding agent with a prompt tailored to the tool you use.
- Open your project in Codex.
- Copy and paste the prompt below.
- Review files and risks before approving any action.
Inspect the Agent Skill at https://github.com/WILLOSCAR/research-units-pipeline-skills/blob/HEAD/.codex/skills/citation-anchoring/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/citation-anchoring, but wait for my approval before writing files or running scripts.
Copying this prompt does not install or run the skill. Review third-party files before use.
Citation Anchoring (regression)
Purpose: prevent a common failure mode: polishing rewrites text and accidentally moves citation markers into a different ### subsection, breaking claim→evidence alignment.
Inputs
output/DRAFT.mdoutput/citation_anchors.prepolish.jsonl(baseline; created bydraft-polisheron first run)
Outputs
output/CITATION_ANCHORING_REPORT.md(PASS/FAIL + drift examples)
Baseline policy
draft-polishercaptures a baseline once per run:output/citation_anchors.prepolish.jsonl.- Subsequent polish runs should keep per-H3 citation sets stable.
Workflow (analysis-only)
Role:
- Auditor: only checks and reports; does not edit.
Steps:
- Load the baseline anchors.
- Parse the current
output/DRAFT.mdinto###subsections and extract citation keys per subsection. - Compare current sets to baseline sets:
- keys added/removed within a subsection
- keys that migrated across subsections
- Write
output/CITATION_ANCHORING_REPORT.md:
- Status: PASSonly if no drift is detected- otherwise,
- Status: FAILwith a short diff table + examples
Notes
If you intentionally restructure across subsections:
- delete
output/citation_anchors.prepolish.jsonland regenerate a new baseline (then treat that as the new regression anchor).
Troubleshooting
Issue: baseline anchor file is missing
Fix:
- Run
draft-polisheronce to generateoutput/citation_anchors.prepolish.jsonl, then rerun the anchoring check.
Issue: citations intentionally moved across subsections
Fix:
- Delete
output/citation_anchors.prepolish.jsonland regenerate a new baseline (then treat that as the new regression anchor).