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.
Scanned 2/12/2026
Install to Claude Code
npx -y skills add WILLOSCAR/research-units-pipeline-skills --skill citation-anchoring --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Citation Anchoring?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/willoscar-citation-anchoring)More formats (shields.io, HTML) on the badges page.
---
name: citation-anchoring
description: |
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.
---
# 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.md`
- `output/citation_anchors.prepolish.jsonl` (baseline; created by `draft-polisher` on first run)
## Outputs
- `output/CITATION_ANCHORING_REPORT.md` (PASS/FAIL + drift examples)
## Baseline policy
- `draft-polisher` captures 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:
1) Load the baseline anchors.
2) Parse the current `output/DRAFT.md` into `###` subsections and extract citation keys per subsection.
3) Compare current sets to baseline sets:
- keys added/removed within a subsection
- keys that migrated across subsections
4) Write `output/CITATION_ANCHORING_REPORT.md`:
- `- Status: PASS` only if no drift is detected
- otherwise, `- Status: FAIL` with a short diff table + examples
## Notes
If you intentionally restructure across subsections:
- delete `output/citation_anchors.prepolish.jsonl` and regenerate a new baseline (then treat that as the new regression anchor).
## Troubleshooting
### Issue: baseline anchor file is missing
Fix:
- Run `draft-polisher` once to generate `output/citation_anchors.prepolish.jsonl`, then rerun the anchoring check.
### Issue: citations intentionally moved across subsections
Fix:
- Delete `output/citation_anchors.prepolish.jsonl` and regenerate a new baseline (then treat that as the new regression anchor).
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!