ref-integrity-scan
Skill3 starsChanged 11 days agoMITView on GitHub
ファイル(スキル/ルール/フック/設定/ドキュメント)を削除・移動・改名する前後に、リポジトリ内の被参照(ダングリング参照)を全走査して修正候補を提示する。Use when: PlanGate 資産(4 配置 sync を持つスキル/ルール/コマンド)の削除・移動・改名時、git rm / git mv の前後、スキル・ルールのパス変更時、『削除前にチェックして』『参照切れを探して』。出典: growth-core deletion-reference-scan 由来(#798)。
In this repository75 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- .cursor/rules/plangate.mdcCursor rule
- acceptance-criteria-buildSkill
- acceptance-reviewSkill
- ai-dev-brainstormSkill
- ai-dev-execSkill
- ai-dev-planSkill
- ai-dev-verifySkill
- ai-loop-cycleSkill
- architecture-sketchSkill
- brainstormingSkill
- breakdown-gateSkill
- codex-multi-agentSkill
- codex-mvp-splitSkill
- context-loadSkill
- context-packagerSkill
- design-gateSkill
- diff-auditSkill
- edgecase-enumerationSkill
- evidence-ledgerSkill
- feature-implementSkill
- ho-apply-scriptSkill
- instruction-debt-auditSkill
- intent-classifierSkill
- known-issues-logSkill
- local-exec-handoffSkill
- manual-cloud-taskSkill
- nonfunctional-checkSkill
- plangate-setupSkill
- plan-normalizationSkill
- plan-review-gateSkill
- pr-decisionSkill
- requirement-gap-scanSkill
- review-gateSkill
- risk-assessmentSkill
- skill-creatorSkill
- skill-policy-routerSkill
- subagent-delegation-briefSkill
- subagent-dispatchSkill
- subagent-driven-developmentSkill
- subagent-team-designSkill
- systematic-debuggingSkill
- working-contextSkill
- acceptance-criteria-buildSkill
- acceptance-reviewSkill
- ai-loop-cycleSkill
- architecture-sketchSkill
- brainstormingSkill
- breakdown-gateSkill
- codex-multi-agentSkill
- context-loadSkill
- diff-auditSkill
- edgecase-enumerationSkill
- feature-implementSkill
- ho-apply-scriptSkill
- hypothesis-loggerSkill
- instruction-debt-auditSkill
- intent-classifierSkill
- known-issues-logSkill
- The first 60 shown.
The file
Files
Ref Integrity Scan
Provenance(出典・vendoring 規約): growth-core
deletion-reference-scan(upstream: Growth-Teams-Agent@5219642 / 2026-07-03 時点)を PlanGate 向けに 汎用化して取り込み(#798)。上流への自動追従はしない — 上流更新の反映は 意図的に diff をレビューして行う(provenance 追跡 + 意図的更新の vendoring 標準)。
ファイル・ディレクトリを削除・移動・改名する前後に、リポジトリ全体を対象に被参照(そのパスを指している箇所)を洗い出し、ダングリング参照を防ぐための手順スキル。
#691(check-stale-skill-refs.py)との相補関係
| スキル/スクリプト | 走査方向 | 検出対象 |
scripts/check-stale-skill-refs.py(#691) | outbound(発信) | スキル/コマンド/エージェントが参照している先が実在しない(stale) |
| 本スキル(ref-integrity-scan) | inbound(被参照) | 削除・移動・改名する対象への参照が他のどこかに残っている |
#691 は「自分が指している先が消えていないか」、本スキルは「自分を消したときに誰かが迷子にならないか」を確認する。両方向を揃えることで参照整合を守る。
実害事例(動機)
2026-07-10、self-review スキルを diff-audit へ改名した際(#796)、削除・改名前の被参照スキャンを行わなかったため、以下が事後検出になった:
acceptance-reviewからのリンク切れ(RiverReview レビューで major 指摘として検出).cursor配下の壊れた symlink(旧パスself-reviewを指したまま。Codex 側レビューで検出)
いずれも事前に inbound スキャンを行っていれば着手前に判明していた。本スキルはこの再発防止策として新設する。
When NOT to use
- コード内の import / require 参照の整合性チェック → 型チェッカー / linter を使う
- 外部サイトへのリンク切れ(http/https URL)のチェック → 対象外(本スキルはリポジトリ内参照のみ)
手順
Step 1: 対象パスの確認
削除・移動・改名する対象パスを列挙する(複数可)。例:
対象: .claude/skills/self-review/ (旧名)
対象: .claude/skills/self-review/SKILL.md移動・改名の場合は「旧パス」と「新パス」の両方を把握しておく(新パスは対象外、旧パスのみスキャン対象)。
Step 2: スキャン実行
フルパスとファイル名のみの 2 パターンで grep する。参照形式が ./ 省略・相対パス表記・単純なファイル名参照など様々なため、片方だけでは取りこぼす。
対象ディレクトリ・ファイル: docs/ .claude/ .agents/ .codex/ .cursor/ plugin/ bin/ scripts/ CLAUDE.md AGENTS.md README*.md
対象拡張子: *.md *.json *.sh *.yaml *.yml
TARGET_FULL="path/to/target" # フルパス(削除・移動対象)
TARGET_NAME="$(basename "$TARGET_FULL")" # ファイル名のみ
# プレースホルダのまま実行すると全行マッチで大量出力になるためガードする
if [ -z "$TARGET_FULL" ] || [ "$TARGET_FULL" = "path/to/target" ]; then
echo "Error: TARGET_FULL を実際の対象パスに設定してください" >&2
else
# git grep は .gitignore を尊重し高速。--untracked で未コミットの新規ファイルも対象に含める
# パターン1: フルパスでの参照
git grep -n -F --untracked -- "$TARGET_FULL" -- '*.md' '*.json' '*.sh' '*.yaml' '*.yml'
# パターン2: ファイル名のみでの参照(誤検出が出やすいので手動で絞り込む)
git grep -n -F --untracked -- "$TARGET_NAME" -- '*.md' '*.json' '*.sh' '*.yaml' '*.yml'
fi加えて symlink 走査を行う。macOS の xargs は空入力(一致ゼロ件)で待機してハングすることがあるため、find | xargs ではなく while-read 形式を使う:
if [ -n "$TARGET_NAME" ] && [ "$TARGET_NAME" != "target" ]; then
find . -type l 2>/dev/null | while IFS= read -r _link; do
_resolved="$(readlink "$_link")"
case "$_resolved" in
*"$TARGET_NAME"*) printf 'SYMLINK: %s -> %s\n' "$_link" "$_resolved" ;;
esac
done
fiStep 3: ヒットの分類
grep / symlink 走査で出たヒットを 3 種に分類する:
| 分類 | 内容 | 扱い |
| (a) 追従更新すべき参照 | 現行の手順・設定・リンクが対象パスを指している | 修正候補として提示、原則反映 |
| (b) 履歴として不変にすべきもの | CHANGELOG.md、docs/working/ 配下の過去記録、過去のレビューレポート等 | 機械置換しない(当時の記録を保存する) |
| (c) 概念の同名異義 | 例: 「C-1 セルフレビュー」という概念への言及と、self-review というスキル名への言及が同じ文字列でヒットする場合 | 文脈で判定し、機械置換しない |
(b) (c) を機械置換しないことを規約とする。 2026-07-10 の self-review → diff-audit 改名(#796)で、Codex のレビューにより誤って書き換えられた箇所が 4 件検出された教訓による。
Step 4: 修正候補の提示と再スキャン
- 分類 (a) について
file:line+ 具体的な置換案(before/after)を提示する - 実際の置換後、同じ Step 2 のスキャンを再実行し、ヒット 0 件(または (b)(c) のみ残存)であることを確認する
- 削除・移動を伴う commit には、再スキャン結果(0 件確認 or 残存理由)を明記する
関連
scripts/check-stale-skill-refs.py(#691・outbound: スキルが参照する先の stale 検出)diff-audit(Phase 5 残骸チェック。旧self-review)docs/ai/skill-collision-detection.md(名前衝突検出。本スキルは被参照検出で観点が異なる。配布対象外。上流リポジトリで作業する場合のみ解決する)
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

