citation-synclisted
Install: claude install-skill shimo4228/claude-harness
# Citation Sync
研究 repo が外部文献を引用するとき、その引用は 3 つの層に現れる。層はそれぞれ別の audience に向けて伝播するため、**どれか 1 つに書いて終えると残りの層では引用が存在しないことになる**。本 skill はこの 3 層の divergence を検出し、下層から順に揃える。
| 層 | 担体 | 伝播先 | 実装 skill |
|---|---|---|---|
| 1. docs | ADR / glossary / empirical / README 内の引用 | 人間 + LLM crawler | (執筆時に発生) |
| 2. zenodo | `.zenodo.json` `related_identifiers` (`relation: references`) | DataCite → OpenAIRE / Scholix (次 release 時) | `release-doi` |
| 3. graph | `graph.jsonld` の `ExternalReference` ノード | LLM ingest / HF mirror / knowledge-graph crawler | `jsonld-knowledge-graph` |
| ~~4. wikidata~~ | ~~repo item の P2860 (cites work)~~ | **RETIRED 2026-07** — governance revocation で全 item 削除 (ADR-0021)。監査・同期対象外、`--skip-wikidata` を常用 | (retired) |
**docs 層が source of truth**。上の層は docs に実在する引用だけを carry する (捏造辺の禁止)。逆に docs に引用を足したら、上 3 層への反映はこの skill の同期で行う — 「repo markdown に引用を書くだけでは citation graph に不可視」というのが authorship-strategy の citation-graph federation tactic の出発点。
## Phase 0: Audit (read-only)
```bash
python3 ~/.claude/skills/citation-sync/scripts/citation_audit.py REPO_DIR [REPO_DIR ...]
# --skip-wikidata retired 層 (旧層 4) の探索を省略。常に付ける
# --json OUT.json 機械可読の結果も保存
# exit 0 = 全 repo converged, 1 = divergence あり, 2 = fatal
```
repo ごとに identifier × 層のマトリクスを出す (docs / zenodo / graph の 3 層)。
**先に audit、議論はそれから。** どの層が欠けているかを推測で語らない — 今日の層別カバレッジは repo ごとに本当にバラバラで、直感は外れる (実例: ある repo は zenodo refs が空、別の repo は graph と zenodo が互いに素の集合を指していた)��
## Phase 1: Curate (判断層)
audit が出した do