追溯矩陣(使用指南)
traceability.js 腳本一步步:讀什麼、產什麼、如何接 CI、如何讀結果矩陣。
讀取範圍
預設掃這些目錄下有 doc_id front-matter 的 markdown:
docs/prds/
docs/specs/
docs/plans/
docs/requirements/
docs/handoff/
.claude/plans/
改 SCAN_DIRS(在 scripts/traceability.js)加減路徑。
指令
# 產生矩陣
npm run traceability:matrix
# 全量驗證
npm run traceability:check
# 指定檔案驗證(pre-commit 用)
node scripts/traceability.js check docs/prds/2026-Q3-example.md
# 對 sub-repo 驗證(新功能)
node scripts/traceability.js matrix --cwd=examples/acme-ads
矩陣五段
跑完後開 docs/traceability-matrix.md:
1. Summary
依類型、edge 類型的總數。
2. Flat table
每個 primary doc 一列。欄位:doc_id、title、status、各類 related ref、路徑。
3. Dependency graph
Mermaid graph LR,依類型上色。Primary 是方框;virtual 節點(被引用但自身未追蹤,典型為 ADR、module、architecture 路徑)是圓角矩形。
GitHub / GitLab / Docusaurus / Obsidian / VS Code preview 都能直接渲染。
4. Reverse lookup(反向引用)
每個有 incoming ref 的 target 列出誰指過來、透過哪個 related.* key。
這是回答「若我 deprecate ADR-0011,誰會壞?」的地方。
5. Orphans & isolation
兩個列表:
- 無 outgoing ref:不引用任何上游。對 standalone retrospective 可接受;對應該引用需求的 PRD 是 suspicious
- Primary-to-primary 引用比例:追蹤的文件中有多少比例以 doc_id 引用另一份 tracked doc。若為零、圖完全流進 virtual 節點 — 初期正常、隨著更多跨文件引用而改善
CI 整合
kit 提供 .github/workflows/traceability-check.yml:
- PR 改到
docs/prds/**、docs/specs/**、docs/plans/**、.claude/plans/**或腳本時觸發 - 對變更檔跑
npm run traceability:check - 重生矩陣、若 committed 版本過期則 fail
「過期矩陣」這招是關鍵 — 強制貢獻者新增追蹤文件時重生矩陣。
本機 pre-commit hook(選配)
# .husky/pre-commit
changed=$(git diff --cached --name-only --diff-filter=ACM | grep -E '\.md$' || true)
if [ -n "$changed" ]; then
node scripts/traceability.js check $changed
fi
在 CI 擋下之前先在本機 fail。