project-index
npx skills add https://github.com/mksteady/mkskills --skill project-index
Agent 安装分布
Skill 文档
Project Index – Layered CLAUDE.md System
èªå¨çæåç»´æ¤å¤§å项ç®ç屿¬¡å CLAUDE.md ç´¢å¼ç³»ç»ã
ð æ¨èä½¿ç¨ pi-cli
project-index å pi-cli åè½å·²ç»ä¸ãæ¨èä½¿ç¨ pi CLI ä½ä¸ºç»ä¸å
¥å£ï¼
# çæå½ä»¤å¯¹ç
§
node scripts/module-analyzer.js --stale â pi module analyze --llm --stale
node scripts/test-fix.js â pi test fix --llm
node scripts/dashboard.js --open â pi ui
è¯¦è§ pi-cli SKILL.md
â ä¸¥ç¦æä½ (CRITICAL – å¿ è¯»)
2026-01-22 äºæ è®°å½ï¼æ§è¡
git checkout HEAD -- tests/ågit checkout HEAD -- js/ï¼å¯¼è´ç¨æ·ä¸æ´å¤©çæå¨å·¥ä½ï¼100+ æä»¶ï¼æ°¸ä¹ ä¸¢å¤±ï¼æ æ³æ¢å¤ã
以䏿ä½å¿ é¡»å 询é®ç¨æ·ç¡®è®¤ï¼å¦åç»å¯¹ç¦æ¢æ§è¡ï¼
git checkout HEAD --/git checkout -- <path>â 伿°¸ä¹ 䏢弿ªæäº¤ä¿®æ¹git reset --hardâ 伿°¸ä¹ ä¸¢å¼æææªæäº¤ä¿®æ¹git clean -fdâ 伿°¸ä¹ å 餿ªè·è¸ªæä»¶git stash drop/git stash clearâ 伿°¸ä¹ å é¤ stash- 任使¹éå 餿件çæä½ (
rm -rf,find -deleteç)
æ¹éä»»å¡è¿åº¦ä¿æ¤ï¼æ¯å®æä¸æ¹ä»»å¡åï¼å¿ é¡»æäº¤ææéç¨æ·æäº¤ã
åè½æ¸ å
| åè½ | èæ¬ | 说æ |
|---|---|---|
| ææ¡£çæ | generate.js |
çæ/æ´æ° CLAUDE.md |
| 代ç 审计 | code-audit.js |
çæ AUDIT.mdï¼æ£æµå®å ¨é®é¢ |
| è¿ææ£æµ | check-stale.js |
æ£æµææ¡£/审计/æµè¯æ¯å¦è¿æ |
| ä¾èµå¾æå»º | dependency-graph.js |
æå»ºæä»¶çº§ä¾èµå¾ï¼æ£æµå¾ªç¯ä¾èµ |
| å½±ååæ | impact-analyzer.js |
åæåæ´æä»¶ç䏿¸¸å½±åèå´ |
| stale ä¼ æ | stale-propagate.js |
ä¾èµä¼ æ stale ç¶æ + æµè¯éè·å表 |
| æµè¯ä¼å 级 | test-prioritize.js |
æºè½æåºï¼root cause ä¼å + å¹¶è¡æ¹æ¬¡ |
| æºè½æµè¯ | test-affected.js |
åªè¿è¡ååæ´å½±åçæµè¯ |
| æµè¯æ å° | test-mapper.js |
æºç âæµè¯æ å°ï¼çæ .test-map.json |
| æµè¯çæ | test-generator.js |
æ¹éçæç¼ºå¤±æµè¯ |
| æµè¯ä¿®å¤ | test-fix.js |
å¹¶åä¿®å¤æµè¯é误 |
| å®¡è®¡ä¿®å¤ | audit-fix.js |
å¹¶åä¿®å¤å®¡è®¡é®é¢ |
| éªæ¶é¨ç¦ | acceptance-gate.js |
DAG åç»éªè¯ git åæ´ï¼ä» æäº¤éè¿æä»¶ |
| Dashboard | dashboard.js |
Web UI (http://localhost:3008) |
AI äº¤äºæå¼
主å¨è¯¢é®
宿æ¹éä»»å¡åï¼åºä¸»å¨è¯¢é®ç¨æ·ï¼
ä»»å¡å®æãæ¯å¦æå¼ Dashboard æ¥ç详ç»ç¶æï¼
â è¿è¡: node scripts/dashboard.js --open
â 访é®: http://localhost:3008
ä»»å¡åæ£æ¥
æ§è¡ææ¡£/æµè¯ä»»å¡åï¼å æ£æ¥ç¶æï¼
node scripts/check-stale.js --stale-only --json
æ ¹æ®è¾åºå³å®å¤çèå´ã
触ååºæ¯
- æ°é¡¹ç®å ¥é©» â ç¨æ·è¯´”帮æåæè¿ä¸ªé¡¹ç®”ã”çæææ¡£”
- éç项ç®çè§£ â ç¨æ·è¯´”è¿ä¸ªä»£ç åºæä¹ç»ç»ç”
- 代ç ä¿®æ¹å â æ£æµå°æ ¸å¿æ¨¡ååæ´ï¼æéæ´æ°ææ¡£
- æµè¯ç»´æ¤ â ç¨æ·è¯´”çææµè¯”ã”ä¿®å¤æµè¯”
- å®¡è®¡éæ± â ç¨æ·è¯´”æ£æ¥å®å ¨é®é¢”ã”代ç 审计”
- æäº¤åéªæ¶ â ç¨æ·è¯´”éªæ¶é¨ç¦”ã”æ£æ¥åæ´”ã”æäº¤éªè¯”
åç½®ä¾èµ
| ä¾èµ | ç±»å | ç¨é |
|---|---|---|
| codeagent-wrapper | å¿ é | LLM è°ç¨ |
| kanban | å¯é | 审计任å¡èªå¨å建 |
æ ¸å¿æ¦å¿µ
ä¸å±æ¶æ
project/CLAUDE.md # Layer 1: æ¦è§ + 模åç´¢å¼
â
src/modules/auth/CLAUDE.md # Layer 2: 模å详æ
+ 忍¡åç´¢å¼
â
src/modules/auth/jwt/CLAUDE.md # Layer 3: å®ç°ç»è
æºè½è¦ççç¥
䏿¯æ¯ä¸ªç®å½é½éè¦ç¬ç« CLAUDE.mdï¼
- 大ç®å½ (â¥5 æä»¶æ â¥200 è¡) â å¿ é¡»æç¬ç« CLAUDE.md
- å°ç®å½ + ç¶ç®å½æ CLAUDE.md â ç±ç¶ç®å½è¦ç
- å°ç®å½ + ç¶ç®å½æ CLAUDE.md â å¤å¿ï¼éå ³æ³¨
è¯¦è§ docs/coverage.md
å±çº§ä¾èµæåº
æ¹éçææ¶æç®å½æ·±åº¦ä»æ·±å°æµ å¤çï¼
js/agents/core/sandbox/system â å
çæ
js/agents/core/sandbox â åçæ
js/agents/core â åå
js/agents â æå
ç¡®ä¿ç¶ç®å½çææ¶å¯å¼ç¨åç®å½ç CLAUDE.mdã
AUDIT.md åçç¥
代ç 审计 (code-audit.js) éç¨ç¸åçç¥ï¼
- 大ç®å½çæç¬ç« AUDIT.md
- å°ç®å½ç±ç¶ç®å½å®¡è®¡è¦ç
- 审计æç¤ºè¯å 嫿ªç¬ç«å®¡è®¡çå°åç®å½ä»£ç
å¿«éå¼å§
# 1. æ«æé¡¹ç®
node scripts/scan.js
# 2. çæ CLAUDE.md
node scripts/generate.js --auto
# 3. å®è£
hooks
node scripts/hook.js init
# 4. å¯å¨ Dashboard
node scripts/dashboard.js --open
常ç¨å½ä»¤
è¯¦è§ docs/commands.md
å¿«éåèï¼
node scripts/module-analyzer.js # æ¥å¸¸ç»´æ¤
node scripts/module-analyzer.js --all # å
¨éå¤ç
node scripts/check-stale.js --stale-only # è¿ææ£æµ
node scripts/test-fix.js # ä¿®å¤æµè¯é误
node scripts/dashboard.js --open # Web UI
工使µ
æ°é¡¹ç®
hook.js init– å®è£ hooks + å建é ç½®scan.js– åæç»ægenerate.js --auto– çæææ¡£- å¼å§å¼å
éç项ç®
scan.js– çè§£ç»æhook.js init– å®è£ é ç½®generate.js --auto– çæææ¡£module-analyzer.js– åå§å®¡è®¡- æéè°æ´
代ç ä¿®æ¹å
ä¿®æ¹æ¨¡å代ç åï¼å¿
é¡»æ£æ¥å¹¶æ´æ°å¯¹åºç CLAUDE.md å AUDIT.mdï¼
-
æ£æ¥ CLAUDE.md
- å 容éè¦æ´æ° â ä¿®æ¹ææ¡£å 容
- å
容ä»ç¶åç¡® â
touch CLAUDE.mdæ´æ°æ¶é´æ³
-
æ£æ¥ AUDIT.md
- æ°å¢å®å ¨é®é¢ â è¡¥å å° Issues å表
- é®é¢å·²ä¿®å¤ â 使ç¨
audit-archive.js彿¡£ - å
容ä»ç¶åç¡® â
touch AUDIT.mdæ´æ°æ¶é´æ³
-
éªè¯ç¶æ
node scripts/check-stale.js <module-path> --stale-only node scripts/audit-status.js <module-path>
éè¦ï¼å³ä½¿æ²¡æå®è´¨æ§æ¹å¨ï¼ä¹å¿ é¡» touch æä»¶ä»¥æ´æ°æ¶é´æ³ï¼å¦å stale æ£æµä¼æç»æ¥å该模åè¿æã
è¯¦ç»ææ¡£
| ææ¡£ | å 容 |
|---|---|
| docs/commands.md | 常ç¨å½ä»¤è¯¦è§£ |
| docs/coverage.md | æºè½è¦çççç¥ãæ¹éä»»å¡åç° |
| docs/dashboard.md | Web UI 仪表ç详解 |
| docs/scripts.md | ææèæ¬åè |
| docs/config.md | é ç½®æä»¶è¯´æ |
| docs/testing.md | æµè¯å·¥å ·é¾è¯¦è§£ |
| docs/anti-patterns.md | â ï¸ ç¦æ¢çéè¯¯æ¨¡å¼ |
| docs/dag-scheduling.md | DAG ä¾èµè°åº¦ï¼ç®å½å±çº§å¤çï¼ |
| docs/batch-best-practices.md | æ¹é任塿佳å®è·µ |
硬约æï¼MUST READï¼
æ§è¡ä»¥ä¸åè½åï¼å¿ é¡»å 读å对åºçæä½³å®è·µææ¡£ï¼
| åè½ | å¿ è¯»ææ¡£ | 说æ |
|---|---|---|
| test-fix, test-generator | docs/testing.md, docs/anti-patterns.md | æµè¯ä¿®å¤åçæçæä½³å®è·µä¸ç¦æ¢æ¨¡å¼ |
| audit-fix, code-audit | docs/audit-best-practices.md | å®¡è®¡ä¿®å¤æµç¨ãé®é¢åç±»ã彿¡£è§è |
| module-analyzer –llm | docs/batch-best-practices.md | æ¹é LLM ä»»å¡çå¹¶å设置ãcheckpointãrate limit å¤ç |
| dependency-graph, impact-analyzer, stale-propagate, test-prioritize | docs/dependency-best-practices.md | ä¾èµåæãå½±åèå´ãstale ä¼ æãæµè¯ä¼å 级æåº |
约æçº§å«ï¼
- â MUST READ – æ§è¡åè½åå¿ é¡»è¯»åå¯¹åºææ¡£
- â MUST FOLLOW – å¿ é¡»éµå¾ªææ¡£ä¸ç硬约æè§åï¼MUST/MUST NOTï¼
- â ï¸ è¿ååæ – å¯è½å¯¼è´æ°æ®ä¸¢å¤±ãæµè¯å¤±è´¥ã审计é®é¢éæ¼
AI æ§è¡æ£æ¥æ¸ åï¼
- è¯å«ç¨æ·è¯·æ±çåè½ç±»å
- æ£æ¥æ¯å¦æå¯¹åºçå¿ è¯»ææ¡£
- 读åå¹¶çè§£ææ¡£ä¸ç硬约æè§å
- æ§è¡åè½æ¶ä¸¥æ ¼éµå¾ªçº¦æ
- 宿åéªè¯æ¯å¦ç¬¦åæä½³å®è·µ
é ç½®
å建 .stale-config.jsonï¼
{
"include": ["js/agents/**"],
"ignore": ["tests/**", "docs/**"],
"features": { "doc": true, "audit": true, "kanban": true, "testAnalysis": true },
"concurrency": 6
}
æµè¯è¿½è¸ª
æµè¯ç¶æä¸ CLAUDE.md/AUDIT.md ç»ä¸è¿½è¸ªï¼
# æ£æ¥æµè¯è¦çç¶æ
node scripts/check-stale.js --type=test --stale-only
# æ£æ¥ææç±»åï¼doc + audit + testï¼
node scripts/check-stale.js --type=all --stale-only
# å·æ°æµè¯æ å°
node scripts/test-mapper.js
# æ¥çæ¨¡åæµè¯è¯¦æ
node scripts/test-view.js js/agents/core
æµè¯ç¶æç±»åï¼
- missing – æ¨¡åæ æµè¯è¦ç
- stale – æºç 已修æ¹ä½æµè¯æªæ´æ°
- fresh – æµè¯ä¸æºç 忥
è¯¦è§ docs/testing.md
ä¸ Codex éæ
æ´æ°ç¶ç®å½æ¶æ³¨å ¥å°åç®å½ä¸ä¸æï¼
context=$(node generate.js --prompt-context --module js/agents/ingest)
codex-wrapper - <<EOF
æ´æ° js/agents/ingest/CLAUDE.md
$context
EOF
Kanban API
审计任å¡èªå¨åå»ºå° Kanbanï¼
export KANBAN_URL=http://127.0.0.1:3007/api/v1
æªè¿è¡ Kanban æå¡æ¶éé»è·³è¿ã
ä¾èµåæç³»ç»
æå»ºæä»¶çº§ä¾èµå¾ï¼æ¯æå½±ååæå stale ä¼ æã
ä¾èµå¾æå»º
# æ«æ js/agents æå»ºä¾èµå¾
node scripts/dependency-graph.js --module js/agents
# æ¥è¯¢åæä»¶ä¾èµ
node scripts/dependency-graph.js --check shared/index.js
# JSON è¾åº
node scripts/dependency-graph.js --json
è¾åºæä»¶ï¼.dep-graph.json
å½±ååæ
åæåæ´æä»¶ç䏿¸¸å½±åèå´ï¼
# 忿宿件
node scripts/impact-analyzer.js shared/utils/logger.js core/event-bus.js
# åæ git åæ´
node scripts/impact-analyzer.js --since HEAD~5
node scripts/impact-analyzer.js --staged
# JSON è¾åº
node scripts/impact-analyzer.js --since HEAD~3 --json
Stale ä¼ æ
å° stale ç¶ææ²¿ä¾èµå¾å䏿¸¸ä¼ æï¼
# èªå¨æ£æµ + ä¼ æ
node scripts/stale-propagate.js
# æå®åæ´æä»¶
node scripts/stale-propagate.js --changed core/event-bus.js
# å
嫿µè¯éè·å表
node scripts/stale-propagate.js --changed core/event-bus.js --tests
# è°æ´ä¼ ææ·±åº¦ï¼é»è®¤ 2ï¼
node scripts/stale-propagate.js --depth 3
è¾åºç¤ºä¾ï¼
Direct stale: 2 files
Propagated stale: 45 files (L1: 12, L2: 33)
Tests to re-run: 40 files
å ¸å工使µ
# 1. æå»º/æ´æ°ä¾èµå¾
node scripts/dependency-graph.js --module js/agents
# 2. 代ç ä¿®æ¹åï¼åæå½±å
node scripts/impact-analyzer.js --staged
# 3. æ£æ¥ stale ä¼ æ
node scripts/stale-propagate.js --tests
# 4. è¿è¡åå½±åçæµè¯
node scripts/test-affected.js --staged
æºè½æµè¯ä¿®å¤ï¼100+ éè¯¯åºæ¯ï¼
彿大鿵è¯å¤±è´¥æ¶ï¼æºè½æåºä¿®å¤é¡ºåºï¼
# åæå¤±è´¥æµè¯çä¼å
级
node scripts/test-prioritize.js --from-file test-results.json
# è¾åºï¼
# Phase 1 - Root causes: shared/utils/logger.js (261 ä¾èµ)
# Phase 2 - Independent: å¯å¹¶è¡ä¿®å¤çæ¹æ¬¡
# Phase 3 - Leaf nodes: æåä¿®å¤
ä¿®å¤çç¥ï¼
- å ä¿® root cause â 被ä¾èµæå¤çæä»¶ï¼ä¸ä¸ªä¿®å¤è§£å³å¤ä¸ªé误
- å¹¶è¡ä¿®ç¬ç«é â æ ä¾èµå ³ç³»çæä»¶å¯ä»¥ 60 å¼å¹¶å
- æåä¿®å¶åèç¹ â ä¾èµé¾æ«ç«¯çæä»¶
# æä¼å
级è¿è¡æµè¯
node scripts/test-affected.js --staged --prioritized
éªæ¶é¨ç¦
æäº¤åéªè¯ git åæ´ï¼ç¡®ä¿ä»£ç è´¨éã
éªè¯æµç¨
- æ«æåæ´ â è·å git diff ä¸ç JS/TS æä»¶
- DAG åç» â æä¾èµå¾åç»ï¼ç¸å ³æä»¶ä¸èµ·éªè¯
- å¹¶åéªè¯ â åç»´æ£æ¥ï¼lintãæµè¯è¦çãåè½æµè¯ãå®å ¨å®¡è®¡
- ç»ææ±æ» â æ è®°éè¿/失败æä»¶
- éæ©æ§æäº¤ â ä» æäº¤éè¿éªè¯çæä»¶
ä½¿ç¨æ¹å¼
# é¢è§åæ´æä»¶åç»
node scripts/acceptance-gate.js --dry-run
# è¿è¡éªè¯
node scripts/acceptance-gate.js
# éªè¯å¹¶èªå¨æäº¤éè¿çæä»¶
node scripts/acceptance-gate.js --commit
# è·³è¿é¨åæ£æ¥
node scripts/acceptance-gate.js --skip-lint --skip-security
# è°æ´å¹¶å
node scripts/acceptance-gate.js --concurrency=8
å®å ¨çº¦æ
- ç¦æ¢
git checkoutãgit resetçå±é©æä½ - ä» æäº¤éè¿éªè¯çæä»¶
- 失败æä»¶åªæ è®°ï¼ä¸èªå¨ä¿®æ¹
â ï¸ ç¦æ¢çé误模å¼
æµè¯ä¿®å¤å代ç çææ¶å¿ é¡»é¿å ç忍¡å¼ã
è¯¦è§ docs/anti-patterns.md