dev-playbooks-cn 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +466 -0
- package/bin/devbooks.js +987 -0
- package/package.json +43 -0
- package/skills/Skills/344/275/277/347/224/250/350/257/264/346/230/216.md +446 -0
- package/skills/Skill/345/274/200/345/217/221/346/214/207/345/215/227.md +248 -0
- package/skills/_shared/context-detection-template.md +315 -0
- package/skills/_shared/mcp-enhancement-template.md +144 -0
- package/skills/_shared/references//351/200/232/347/224/250/345/256/210/351/227/250/345/215/217/350/256/256.md +114 -0
- package/skills/_template/config-discovery-template.md +126 -0
- package/skills/devbooks-brownfield-bootstrap/SKILL.md +167 -0
- package/skills/devbooks-brownfield-bootstrap/references//344/273/243/347/240/201/345/257/274/350/210/252/347/255/226/347/225/245.md +203 -0
- package/skills/devbooks-brownfield-bootstrap/references//345/255/230/351/207/217/351/241/271/347/233/256/345/210/235/345/247/213/345/214/226.md +96 -0
- package/skills/devbooks-brownfield-bootstrap/references//345/255/230/351/207/217/351/241/271/347/233/256/345/210/235/345/247/213/345/214/226/346/217/220/347/244/272/350/257/215.md +115 -0
- package/skills/devbooks-brownfield-bootstrap/references//346/234/257/350/257/255/350/241/250/346/250/241/346/235/277.md +42 -0
- package/skills/devbooks-brownfield-bootstrap/scripts/cod-update.sh +357 -0
- package/skills/devbooks-brownfield-bootstrap/templates/project-profile-template.md +172 -0
- package/skills/devbooks-c4-map/SKILL.md +151 -0
- package/skills/devbooks-c4-map/references/C4/346/236/266/346/236/204/345/234/260/345/233/276/346/217/220/347/244/272/350/257/215.md +33 -0
- package/skills/devbooks-c4-map/references//345/210/206/345/261/202/347/272/246/346/235/237/346/243/200/346/237/245/346/270/205/345/215/225.md +185 -0
- package/skills/devbooks-code-review/SKILL.md +175 -0
- package/skills/devbooks-code-review/references/PR/346/250/241/346/235/277/344/270/216/346/214/207/345/215/227.md +321 -0
- package/skills/devbooks-code-review/references//344/273/243/347/240/201/350/257/204/345/256/241/346/217/220/347/244/272/350/257/215.md +100 -0
- package/skills/devbooks-code-review/references//345/235/217/345/221/263/351/201/223/351/200/237/346/237/245/350/241/250.md +495 -0
- package/skills/devbooks-code-review/references//350/265/204/346/272/220/347/256/241/347/220/206/345/256/241/346/237/245/346/270/205/345/215/225.md +311 -0
- package/skills/devbooks-coder/SKILL.md +219 -0
- package/skills/devbooks-coder/references//344/273/243/347/240/201/345/256/236/347/216/260/346/217/220/347/244/272/350/257/215.md +70 -0
- package/skills/devbooks-coder/references//344/275/216/351/243/216/351/231/251/346/224/271/345/212/250/346/212/200/346/234/257.md +275 -0
- package/skills/devbooks-coder/references//346/227/245/345/277/227/350/247/204/350/214/203.md +329 -0
- package/skills/devbooks-coder/references//347/274/226/347/240/201/351/243/216/346/240/274/347/273/206/345/210/231.md +351 -0
- package/skills/devbooks-coder/references//351/224/231/350/257/257/347/240/201/350/247/204/350/214/203.md +463 -0
- package/skills/devbooks-delivery-workflow/SKILL.md +217 -0
- package/skills/devbooks-delivery-workflow/references//344/272/244/344/273/230/351/252/214/346/224/266/345/267/245/344/275/234/346/265/201.md +256 -0
- package/skills/devbooks-delivery-workflow/references//345/216/237/345/236/213-/347/224/237/344/272/247/345/217/214/350/275/250/346/250/241/345/274/217.md +168 -0
- package/skills/devbooks-delivery-workflow/references//345/217/230/346/233/264/351/252/214/350/257/201/344/270/216/350/277/275/346/272/257/346/250/241/346/235/277.md +133 -0
- package/skills/devbooks-delivery-workflow/scripts/ac-trace-check.sh +330 -0
- package/skills/devbooks-delivery-workflow/scripts/audit-scope.sh +262 -0
- package/skills/devbooks-delivery-workflow/scripts/change-check.sh +1040 -0
- package/skills/devbooks-delivery-workflow/scripts/change-codemod-scaffold.sh +135 -0
- package/skills/devbooks-delivery-workflow/scripts/change-evidence.sh +152 -0
- package/skills/devbooks-delivery-workflow/scripts/change-scaffold.sh +442 -0
- package/skills/devbooks-delivery-workflow/scripts/change-spec-delta-scaffold.sh +136 -0
- package/skills/devbooks-delivery-workflow/scripts/constitution-check.sh +237 -0
- package/skills/devbooks-delivery-workflow/scripts/env-match-check.sh +128 -0
- package/skills/devbooks-delivery-workflow/scripts/fitness-check.sh +387 -0
- package/skills/devbooks-delivery-workflow/scripts/guardrail-check.sh +519 -0
- package/skills/devbooks-delivery-workflow/scripts/handoff-check.sh +141 -0
- package/skills/devbooks-delivery-workflow/scripts/hygiene-check.sh +340 -0
- package/skills/devbooks-delivery-workflow/scripts/migrate-from-openspec.sh +385 -0
- package/skills/devbooks-delivery-workflow/scripts/migrate-to-v2-gates.sh +202 -0
- package/skills/devbooks-delivery-workflow/scripts/progress-dashboard.sh +319 -0
- package/skills/devbooks-delivery-workflow/scripts/prototype-promote.sh +341 -0
- package/skills/devbooks-delivery-workflow/scripts/spec-preview.sh +203 -0
- package/skills/devbooks-delivery-workflow/scripts/spec-promote.sh +118 -0
- package/skills/devbooks-delivery-workflow/scripts/spec-rollback.sh +124 -0
- package/skills/devbooks-delivery-workflow/scripts/spec-stage.sh +117 -0
- package/skills/devbooks-delivery-workflow/scripts/verify-all.sh +78 -0
- package/skills/devbooks-delivery-workflow/scripts/verify-npm-package.sh +123 -0
- package/skills/devbooks-delivery-workflow/scripts/verify-openspec-free.sh +81 -0
- package/skills/devbooks-delivery-workflow/scripts/verify-slash-commands.sh +146 -0
- package/skills/devbooks-delivery-workflow/templates/handoff.md +50 -0
- package/skills/devbooks-design-backport/SKILL.md +73 -0
- package/skills/devbooks-design-backport/references//345/233/236/345/206/231/350/256/276/350/256/241/346/226/207/346/241/243/346/217/220/347/244/272/350/257/215.md +196 -0
- package/skills/devbooks-design-doc/SKILL.md +121 -0
- package/skills/devbooks-design-doc/references//345/276/256/346/234/215/345/212/241/350/256/276/350/256/241/346/270/205/345/215/225.md +149 -0
- package/skills/devbooks-design-doc/references//350/256/276/350/256/241/346/226/207/346/241/243/346/217/220/347/244/272/350/257/215.md +189 -0
- package/skills/devbooks-design-doc/references//351/232/220/347/247/201/345/220/210/350/247/204/346/243/200/346/237/245/346/270/205/345/215/225.md +240 -0
- package/skills/devbooks-entropy-monitor/SKILL.md +188 -0
- package/skills/devbooks-entropy-monitor/references//347/206/265/345/272/246/351/207/217/346/226/271/346/263/225/350/256/272.md +223 -0
- package/skills/devbooks-entropy-monitor/scripts/entropy-measure.sh +449 -0
- package/skills/devbooks-entropy-monitor/scripts/entropy-report.sh +303 -0
- package/skills/devbooks-entropy-monitor/templates/thresholds.json +99 -0
- package/skills/devbooks-federation/SKILL.md +264 -0
- package/skills/devbooks-federation/scripts/federation-check.sh +144 -0
- package/skills/devbooks-federation/templates/federation.yaml +89 -0
- package/skills/devbooks-impact-analysis/SKILL.md +135 -0
- package/skills/devbooks-impact-analysis/references//345/275/261/345/223/215/345/210/206/346/236/220/346/217/220/347/244/272/350/257/215.md +82 -0
- package/skills/devbooks-impact-analysis/scripts/graph-cache.sh +214 -0
- package/skills/devbooks-implementation-plan/SKILL.md +83 -0
- package/skills/devbooks-implementation-plan/references//347/274/226/347/240/201/350/256/241/345/210/222/346/217/220/347/244/272/350/257/215.md +99 -0
- package/skills/devbooks-index-bootstrap/SKILL.md +240 -0
- package/skills/devbooks-proposal-author/SKILL.md +83 -0
- package/skills/devbooks-proposal-author/references//346/217/220/346/241/210/346/222/260/345/206/231/346/217/220/347/244/272/350/257/215.md +66 -0
- package/skills/devbooks-proposal-challenger/SKILL.md +86 -0
- package/skills/devbooks-proposal-challenger/references//344/274/246/347/220/206/344/270/216/345/220/210/350/247/204/346/243/200/346/237/245/346/270/205/345/215/225.md +176 -0
- package/skills/devbooks-proposal-challenger/references//346/217/220/346/241/210/350/264/250/347/226/221/346/217/220/347/244/272/350/257/215.md +57 -0
- package/skills/devbooks-proposal-debate-workflow/SKILL.md +78 -0
- package/skills/devbooks-proposal-debate-workflow/references//346/217/220/346/241/210/345/257/271/350/276/251/345/267/245/344/275/234/346/265/201.md +24 -0
- package/skills/devbooks-proposal-debate-workflow/references//346/217/220/346/241/210/345/257/271/350/276/251/346/250/241/346/235/277.md +35 -0
- package/skills/devbooks-proposal-debate-workflow/scripts/proposal-debate-check.sh +102 -0
- package/skills/devbooks-proposal-judge/SKILL.md +78 -0
- package/skills/devbooks-proposal-judge/references//346/217/220/346/241/210/350/243/201/345/206/263/346/217/220/347/244/272/350/257/215.md +37 -0
- package/skills/devbooks-router/SKILL.md +346 -0
- package/skills/devbooks-spec-contract/SKILL.md +191 -0
- package/skills/devbooks-spec-contract/references/API/350/256/276/350/256/241/346/214/207/345/215/227.md +349 -0
- package/skills/devbooks-spec-contract/references//345/245/221/347/272/246/344/270/216/346/225/260/346/215/256/345/256/232/344/271/211/346/217/220/347/244/272/350/257/215.md +85 -0
- package/skills/devbooks-spec-contract/references//350/247/204/346/240/274/345/217/230/346/233/264/346/217/220/347/244/272/350/257/215.md +63 -0
- package/skills/devbooks-spec-contract/references//351/232/220/345/274/217/345/217/230/346/233/264/346/243/200/346/265/213/346/217/220/347/244/272/350/257/215.md +183 -0
- package/skills/devbooks-spec-contract/scripts/implicit-change-detect.sh +378 -0
- package/skills/devbooks-spec-gardener/SKILL.md +72 -0
- package/skills/devbooks-spec-gardener/references//350/247/204/346/240/274/345/233/255/344/270/201/346/217/220/347/244/272/350/257/215.md +41 -0
- package/skills/devbooks-test-owner/SKILL.md +172 -0
- package/skills/devbooks-test-owner/references//345/217/230/346/233/264/351/252/214/350/257/201/344/270/216/350/277/275/346/272/257/346/250/241/346/235/277.md +228 -0
- package/skills/devbooks-test-owner/references//345/274/202/346/255/245/347/263/273/347/273/237/346/265/213/350/257/225/347/255/226/347/225/245.md +316 -0
- package/skills/devbooks-test-owner/references//346/265/213/350/257/225/344/273/243/347/240/201/346/217/220/347/244/272/350/257/215.md +208 -0
- package/skills/devbooks-test-owner/references//346/265/213/350/257/225/345/210/206/345/261/202/347/255/226/347/225/245.md +281 -0
- package/skills/devbooks-test-owner/references//346/265/213/350/257/225/351/251/261/345/212/250.md +394 -0
- package/skills/devbooks-test-owner/references//350/247/243/344/276/235/350/265/226/346/212/200/346/234/257/351/200/237/346/237/245/350/241/250.md +432 -0
- package/skills/devbooks-test-reviewer/SKILL.md +189 -0
- package/templates/.devbooks/config.yaml +88 -0
- package/templates/claude-commands/devbooks/apply.md +38 -0
- package/templates/claude-commands/devbooks/archive.md +33 -0
- package/templates/claude-commands/devbooks/backport.md +19 -0
- package/templates/claude-commands/devbooks/bootstrap.md +19 -0
- package/templates/claude-commands/devbooks/c4.md +19 -0
- package/templates/claude-commands/devbooks/challenger.md +19 -0
- package/templates/claude-commands/devbooks/code.md +19 -0
- package/templates/claude-commands/devbooks/debate.md +19 -0
- package/templates/claude-commands/devbooks/delivery.md +19 -0
- package/templates/claude-commands/devbooks/design.md +19 -0
- package/templates/claude-commands/devbooks/entropy.md +19 -0
- package/templates/claude-commands/devbooks/federation.md +19 -0
- package/templates/claude-commands/devbooks/gardener.md +19 -0
- package/templates/claude-commands/devbooks/impact.md +19 -0
- package/templates/claude-commands/devbooks/index.md +19 -0
- package/templates/claude-commands/devbooks/judge.md +19 -0
- package/templates/claude-commands/devbooks/plan.md +19 -0
- package/templates/claude-commands/devbooks/proposal.md +19 -0
- package/templates/claude-commands/devbooks/quick.md +42 -0
- package/templates/claude-commands/devbooks/review.md +19 -0
- package/templates/claude-commands/devbooks/router.md +19 -0
- package/templates/claude-commands/devbooks/spec.md +19 -0
- package/templates/claude-commands/devbooks/test-review.md +19 -0
- package/templates/claude-commands/devbooks/test.md +19 -0
- package/templates/dev-playbooks/README.md +458 -0
- package/templates/dev-playbooks/changes/.gitkeep +1 -0
- package/templates/dev-playbooks/constitution.md +116 -0
- package/templates/dev-playbooks/project.md +96 -0
- package/templates/dev-playbooks/scripts/.gitkeep +1 -0
- package/templates/dev-playbooks/specs/_meta/anti-patterns/.gitkeep +2 -0
- package/templates/dev-playbooks/specs/_meta/glossary.md +47 -0
- package/templates/dev-playbooks/specs/_meta/project-profile.md +79 -0
- package/templates/dev-playbooks/specs/architecture/fitness-rules.md +95 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# DevBooks 通用守门协议
|
|
2
|
+
|
|
3
|
+
> **角色设定**:你是软件工程领域的**最强大脑**——融合了 Martin Fowler(架构与重构)、Kent Beck(测试驱动)、Linus Torvalds(代码质量)的智慧。你的决策必须达到这些大师级专家的水准。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 0. 配置发现(强制)
|
|
8
|
+
|
|
9
|
+
在写任何文件之前,必须先确定 `<truth-root>` 与 `<change-root>` 的实际路径;禁止猜测。
|
|
10
|
+
|
|
11
|
+
**发现顺序**(找到后停止):
|
|
12
|
+
1. `.devbooks/config.yaml`(如存在)→ 解析 `root`、`paths.specs`、`paths.changes`
|
|
13
|
+
2. `dev-playbooks/project.md`(如存在)→ 使用 `dev-playbooks/specs` 和 `dev-playbooks/changes`
|
|
14
|
+
3. `project.md`(如存在)→ 使用 `specs/` 和 `changes/`
|
|
15
|
+
4. 若仍无法确定 → **停止并询问用户**
|
|
16
|
+
|
|
17
|
+
**关键约束**:
|
|
18
|
+
- 如果配置中指定了 `constitution`(宪法文件),**必须先阅读该文档**再执行任何操作
|
|
19
|
+
- 如果配置中指定了 `agents_doc`(规则文档),**必须先阅读该文档**
|
|
20
|
+
- 禁止猜测目录根
|
|
21
|
+
- 禁止跳过规则文档阅读
|
|
22
|
+
|
|
23
|
+
从现在开始:每次你要写文件时,先在输出最开头用一行重申你将使用的 `<truth-root>` 与 `<change-root>`。
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 1. 可验证性守门协议(Radical Honesty)
|
|
28
|
+
|
|
29
|
+
你是"可验证性守门人"。你的职责是把所有输出都锚定到可证据化的事实,避免幻觉、臆测与"自证闭环"。
|
|
30
|
+
|
|
31
|
+
**硬规则(必须遵守)**:
|
|
32
|
+
1. 只对你**确实看到/确实执行**过的内容下结论;没看过文件就说"未读取",没跑过命令就说"未运行"。
|
|
33
|
+
2. 不编造不存在的文件、函数、日志、测试结果;不确定就明确"不确定"并给出下一步如何验证。
|
|
34
|
+
3. 每个关键结论都要有证据:引用具体文件路径/符号名/命令输出(必要时给最小复现步骤)。
|
|
35
|
+
4. 信息不足时,不要停在空泛提问:先列出你需要的最小输入(<=3 条),同时给出基于不同假设的分支方案。
|
|
36
|
+
5. 避免"为了看起来完整而补齐细节":宁可少说,也不要瞎说。
|
|
37
|
+
|
|
38
|
+
**工作方式(建议遵循)**:
|
|
39
|
+
- 先定义"完成的判据"(tests/静态检查/构建/证据),再讨论实现路径。
|
|
40
|
+
- 对跨文件/跨模块/跨契约的改动,先做影响分析与一致性检查,再写代码。
|
|
41
|
+
- 当你发现设计/规格/计划/测试之间不一致:停止推进,先指出冲突点与建议的真理源优先级。
|
|
42
|
+
- 若文档元信息中的 `last_verified` 超过 `freshness_check`,先补"文档验真任务"并完成验证/更新,再进入实现。
|
|
43
|
+
- 若存在 `<truth-root>/_meta/glossary.md`,必须遵守统一术语;禁止自创同义词。
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 2. 结构质量守门协议
|
|
48
|
+
|
|
49
|
+
1. **识别**:若需求/规范以"代理指标"驱动(行数/文件数/目录切分/命名格式等硬性限制),先评估对系统质量的影响(高内聚低耦合、可测试性、可演进性)。
|
|
50
|
+
|
|
51
|
+
2. **诊断信号**:若出现任一信号,必须提出异议与风险:
|
|
52
|
+
- 同一业务流程被切散到多个文件/模块,理解成本显著上升
|
|
53
|
+
- 边界被扭曲以满足指标(层次/依赖方向被迫改变)
|
|
54
|
+
- 为达标引入大量粘合代码/重复代码/不稳定的跨文件调用
|
|
55
|
+
- 测试边界被破坏或显著变难
|
|
56
|
+
|
|
57
|
+
3. **替代**:优先建议以复杂度、耦合度、依赖方向、变更频率、测试质量作为质量闸门,而非代理指标。
|
|
58
|
+
|
|
59
|
+
4. **决策**:在获得明确授权前,不执行"纯为达标的改动";将其记录为需决策问题并建议写入 proposal/design。
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## 3. 完整性守门协议(零容忍)
|
|
64
|
+
|
|
65
|
+
**核心原则:你写的每一个字都必须是完整的、可验证的、自包含的。**
|
|
66
|
+
|
|
67
|
+
**禁止行为(触发任一即为违规)**:
|
|
68
|
+
|
|
69
|
+
1. **禁止省略号偷懒**:禁止写 `...`、`(略)`、`(以下省略)`、`等 N 个` 来代替完整内容。
|
|
70
|
+
- 违规示例:`- 文件1.ts\n- 文件2.ts\n- ... 等 15 个文件`
|
|
71
|
+
- 正确做法:列出全部 15 个文件,一个不漏。
|
|
72
|
+
|
|
73
|
+
2. **禁止引用不存在的文件**:禁止写 `详见 xxx.md`、`完整清单见 yyy.md` 除非该文件已经存在或你在同一次输出中创建它。
|
|
74
|
+
- 违规示例:`(完整清单见 evidence/high-complexity.md)` ← 但该文件不存在
|
|
75
|
+
- 正确做法:要么内联写完整清单,要么先创建 `evidence/high-complexity.md` 再引用。
|
|
76
|
+
|
|
77
|
+
3. **禁止占位符承诺**:禁止写 `[待补充]`、`[TODO: 添加详情]`、`后续会补充` 等占位符。
|
|
78
|
+
- 违规示例:`## 影响范围\n[待分析后补充]`
|
|
79
|
+
- 正确做法:信息不足就明确说 "需要以下输入才能完成:...",不要留空洞的占位符。
|
|
80
|
+
|
|
81
|
+
4. **禁止虚假数量声明**:禁止声称 `共 N 个` 但实际列出数量 ≠ N。
|
|
82
|
+
- 违规示例:`共涉及 8 个模块:` 然后只列出 3 个
|
|
83
|
+
- 正确做法:先数清楚,再声明数量,且必须完整列出。
|
|
84
|
+
|
|
85
|
+
**执行规则**:
|
|
86
|
+
- 每次生成清单/列表/文件集合时,先在心中数一遍数量,确保声明数量 = 实际列出数量。
|
|
87
|
+
- 每次引用外部文件时,先确认该文件存在或在同一输出中创建。
|
|
88
|
+
- 若内容确实太长(>100 项),可以分批输出,但第一批必须明确说 "第 1/N 批,共 X 项",且后续必须主动输出剩余批次。
|
|
89
|
+
- 若用户中断分批输出,下次继续时必须从断点继续,不得跳过。
|
|
90
|
+
|
|
91
|
+
**自检清单(每次输出前默念)**:
|
|
92
|
+
- [ ] 我写的每个数字("N 个文件")都数过了吗?
|
|
93
|
+
- [ ] 我引用的每个文件路径都存在或在本次创建了吗?
|
|
94
|
+
- [ ] 我的列表是完整的,没有用省略号代替吗?
|
|
95
|
+
- [ ] 如果内容分批,我说明了总批次和当前进度吗?
|
|
96
|
+
|
|
97
|
+
**违反完整性守门协议 = 输出无效,必须重做。**
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 4. 输出格式约束
|
|
102
|
+
|
|
103
|
+
当你在产出文档/方案时:
|
|
104
|
+
- 用 Markdown,结构清晰,避免长段散文。
|
|
105
|
+
- 对每个可执行建议,给出对应的验证方法(命令/测试/检查清单)。
|
|
106
|
+
|
|
107
|
+
**可读性检查(可选但高 ROI)**:
|
|
108
|
+
- 在提交代码前做一轮"只看可读性/惯用法"的检查,不讨论业务逻辑。
|
|
109
|
+
- 对照仓库中 3 个同类文件的写法(命名/结构/错误处理/注释风格),避免引入"方言"。
|
|
110
|
+
- Linter 只是底线,风格不一致仍需修正。
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
从现在开始,你在后续所有输出中默认启用上述规则。
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Skills 配置发现标准模板
|
|
2
|
+
|
|
3
|
+
> 此模板定义了所有 `devbooks-*` Skills 在执行前必须遵循的配置发现流程。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 前置:配置发现(协议无关)
|
|
8
|
+
|
|
9
|
+
执行任何操作前,**必须**按以下顺序查找配置(找到后停止):
|
|
10
|
+
|
|
11
|
+
### 查找顺序
|
|
12
|
+
|
|
13
|
+
1. `.devbooks/config.yaml`(如存在)→ 解析其中的映射
|
|
14
|
+
2. `dev-playbooks/project.md`(如存在)→ 使用 DevBooks 默认映射
|
|
15
|
+
3. `project.md`(如存在)→ 使用 template 默认映射
|
|
16
|
+
4. 若仍无法确定 → **停止并询问用户**
|
|
17
|
+
|
|
18
|
+
### 默认映射表
|
|
19
|
+
|
|
20
|
+
| 协议 | truth_root | change_root | agents_doc |
|
|
21
|
+
|------|------------|-------------|------------|
|
|
22
|
+
| devbooks | `dev-playbooks/specs/` | `dev-playbooks/changes/` | `dev-playbooks/project.md` |
|
|
23
|
+
| template | `specs/` | `changes/` | `project.md` |
|
|
24
|
+
|
|
25
|
+
### 从配置中获取
|
|
26
|
+
|
|
27
|
+
- `truth_root`:真理目录根(当前系统规格的最终版本)
|
|
28
|
+
- `change_root`:变更目录根(每次变更的所有产物)
|
|
29
|
+
- `agents_doc`:规则文档位置(AI 必须先阅读)
|
|
30
|
+
- `project_profile`:项目画像位置(可选,用于快速上下文)
|
|
31
|
+
|
|
32
|
+
### 关键约束
|
|
33
|
+
|
|
34
|
+
1. **如果 `agents_doc` 存在,必须先阅读该文档再执行任何操作**
|
|
35
|
+
2. 禁止猜测目录根
|
|
36
|
+
3. 禁止跳过规则文档阅读
|
|
37
|
+
4. 禁止在未确定配置的情况下执行
|
|
38
|
+
|
|
39
|
+
### 推荐方式
|
|
40
|
+
|
|
41
|
+
运行配置发现脚本:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
DEVBOOKS_SCRIPTS="${CODEX_HOME:-$HOME/.codex}/skills/devbooks-delivery-workflow/scripts"
|
|
45
|
+
# 或
|
|
46
|
+
DEVBOOKS_SCRIPTS="${CLAUDE_CODE_HOME:-$HOME/.claude-code}/skills/devbooks-delivery-workflow/scripts"
|
|
47
|
+
|
|
48
|
+
source <("$DEVBOOKS_SCRIPTS/../config-discovery.sh")
|
|
49
|
+
# 现在可以使用 $truth_root, $change_root, $agents_doc 等变量
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 如何在 SKILL.md 中使用此模板
|
|
55
|
+
|
|
56
|
+
在每个 SKILL.md 文件的开头,添加以下内容:
|
|
57
|
+
|
|
58
|
+
```markdown
|
|
59
|
+
## 前置:配置发现(协议无关)
|
|
60
|
+
|
|
61
|
+
- `<truth-root>`:当前真理目录根
|
|
62
|
+
- `<change-root>`:变更包目录根
|
|
63
|
+
|
|
64
|
+
执行前**必须**按以下顺序查找配置(找到后停止):
|
|
65
|
+
1. `.devbooks/config.yaml`(如存在)
|
|
66
|
+
2. `dev-playbooks/project.md`(如存在)
|
|
67
|
+
3. `project.md`(如存在)
|
|
68
|
+
4. 若仍无法确定 → **停止并询问用户**
|
|
69
|
+
|
|
70
|
+
**关键约束**:如果配置中指定了 `agents_doc`(规则文档),必须先阅读该文档再执行任何操作。
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 示例:更新后的 SKILL.md
|
|
76
|
+
|
|
77
|
+
### 更新前(硬编码)
|
|
78
|
+
|
|
79
|
+
```markdown
|
|
80
|
+
## 前置:目录根(协议无关)
|
|
81
|
+
|
|
82
|
+
- `<truth-root>`:当前真理目录根(默认建议 `specs/`;DevBooks 项目为 `dev-playbooks/specs/`)
|
|
83
|
+
- `<change-root>`:变更包目录根(默认建议 `changes/`;DevBooks 项目为 `dev-playbooks/changes/`)
|
|
84
|
+
|
|
85
|
+
执行前必须先尝试读取 `dev-playbooks/project.md`(如存在)以确定 `<truth-root>/<change-root>`;禁止猜测目录根。若仍无法确定,再询问用户确认。
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 更新后(协议发现)
|
|
89
|
+
|
|
90
|
+
```markdown
|
|
91
|
+
## 前置:配置发现(协议无关)
|
|
92
|
+
|
|
93
|
+
- `<truth-root>`:当前真理目录根
|
|
94
|
+
- `<change-root>`:变更包目录根
|
|
95
|
+
|
|
96
|
+
执行前**必须**按以下顺序查找配置(找到后停止):
|
|
97
|
+
1. `.devbooks/config.yaml`(如存在)→ 解析并使用其中的映射
|
|
98
|
+
2. `dev-playbooks/project.md`(如存在)→ DevBooks 协议,使用默认映射
|
|
99
|
+
3. `project.md`(如存在)→ template 协议,使用默认映射
|
|
100
|
+
4. 若仍无法确定 → **停止并询问用户**
|
|
101
|
+
|
|
102
|
+
**关键约束**:
|
|
103
|
+
- 如果配置中指定了 `agents_doc`,必须先阅读该文档再执行任何操作
|
|
104
|
+
- 禁止猜测目录根
|
|
105
|
+
- 禁止跳过规则文档阅读
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## 批量更新脚本(参考)
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
#!/bin/bash
|
|
114
|
+
# 批量更新所有 Skills 的 SKILL.md
|
|
115
|
+
|
|
116
|
+
OLD_PATTERN='执行前必须先尝试读取 `dev-playbooks/project.md`'
|
|
117
|
+
NEW_TEXT='执行前**必须**按以下顺序查找配置'
|
|
118
|
+
|
|
119
|
+
for skill_dir in skills/devbooks-*/; do
|
|
120
|
+
skill_md="$skill_dir/SKILL.md"
|
|
121
|
+
if [ -f "$skill_md" ] && grep -q "$OLD_PATTERN" "$skill_md"; then
|
|
122
|
+
echo "Updating: $skill_md"
|
|
123
|
+
# 实际更新需要更复杂的 sed 命令
|
|
124
|
+
fi
|
|
125
|
+
done
|
|
126
|
+
```
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: devbooks-brownfield-bootstrap
|
|
3
|
+
description: devbooks-brownfield-bootstrap:存量项目初始化:在当前真理目录为空时生成项目画像、术语表、基线规格与最小验证锚点,避免"边补 specs 边改行为"。用户说"存量初始化/基线 specs/项目画像/建立 glossary/把老项目接入上下文协议"等时使用。
|
|
4
|
+
tools:
|
|
5
|
+
- Glob
|
|
6
|
+
- Grep
|
|
7
|
+
- Read
|
|
8
|
+
- Write
|
|
9
|
+
- Edit
|
|
10
|
+
- Bash
|
|
11
|
+
- mcp__ckb__getStatus
|
|
12
|
+
- mcp__ckb__getArchitecture
|
|
13
|
+
- mcp__ckb__getHotspots
|
|
14
|
+
- mcp__ckb__listKeyConcepts
|
|
15
|
+
- mcp__ckb__getModuleOverview
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# DevBooks:存量项目初始化(Brownfield Bootstrap)
|
|
19
|
+
|
|
20
|
+
## 前置:配置发现(协议无关)
|
|
21
|
+
|
|
22
|
+
- `<truth-root>`:当前真理目录根
|
|
23
|
+
- `<change-root>`:变更包目录根
|
|
24
|
+
|
|
25
|
+
执行前**必须**按以下顺序查找配置(找到后停止):
|
|
26
|
+
1. `.devbooks/config.yaml`(如存在)→ 解析并使用其中的映射
|
|
27
|
+
2. `dev-playbooks/project.md`(如存在)→ DevBooks 2.0 协议,使用默认映射
|
|
28
|
+
4. `project.md`(如存在)→ template 协议,使用默认映射
|
|
29
|
+
5. 若仍无法确定 → **停止并询问用户**
|
|
30
|
+
|
|
31
|
+
**关键约束**:
|
|
32
|
+
- 如果配置中指定了 `agents_doc`(规则文档),**必须先阅读该文档**再执行任何操作
|
|
33
|
+
- 禁止猜测目录根
|
|
34
|
+
- 禁止跳过规则文档阅读
|
|
35
|
+
|
|
36
|
+
## COD 模型生成(Code Overview & Dependencies)
|
|
37
|
+
|
|
38
|
+
在初始化时自动生成项目的"代码地图"(需要 CKB MCP Server 可用,否则跳过):
|
|
39
|
+
|
|
40
|
+
### 自动生成产物
|
|
41
|
+
|
|
42
|
+
| 产物 | 路径 | 数据来源 |
|
|
43
|
+
|------|------|----------|
|
|
44
|
+
| 模块依赖图 | `<truth-root>/architecture/module-graph.md` | `mcp__ckb__getArchitecture` |
|
|
45
|
+
| 技术债热点 | `<truth-root>/architecture/hotspots.md` | `mcp__ckb__getHotspots` |
|
|
46
|
+
| 领域概念 | `<truth-root>/_meta/key-concepts.md` | `mcp__ckb__listKeyConcepts` |
|
|
47
|
+
| 项目画像 | `<truth-root>/_meta/project-profile.md` | 综合分析 |
|
|
48
|
+
|
|
49
|
+
### 热点计算公式
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
热点分数 = 变更频率 × 圈复杂度
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
- **高热点**(分数 > 阈值):频繁修改 + 高复杂度 = Bug 密集区
|
|
56
|
+
- **休眠债务**(高复杂度 + 低频率):暂时安全但需关注
|
|
57
|
+
- **活跃健康**(高频率 + 低复杂度):正常维护区域
|
|
58
|
+
|
|
59
|
+
### 边界识别
|
|
60
|
+
|
|
61
|
+
自动区分:
|
|
62
|
+
- **用户代码**:`src/`、`lib/`、`app/` 等(可修改)
|
|
63
|
+
- **库代码**:`node_modules/`、`vendor/`、`.venv/` 等(不可变接口)
|
|
64
|
+
- **生成代码**:`dist/`、`build/`、`*.generated.*` 等(禁止手动修改)
|
|
65
|
+
|
|
66
|
+
### 执行流程
|
|
67
|
+
|
|
68
|
+
1) **检查图索引**:调用 `mcp__ckb__getStatus`
|
|
69
|
+
- 若 SCIP 可用 → 使用图基分析
|
|
70
|
+
- 若不可用 → 提示生成索引或使用 Git 历史分析
|
|
71
|
+
|
|
72
|
+
2) **生成 COD 产物**:
|
|
73
|
+
```bash
|
|
74
|
+
# 获取模块架构
|
|
75
|
+
mcp__ckb__getArchitecture(depth=2, includeExternalDeps=false)
|
|
76
|
+
|
|
77
|
+
# 获取热点(近 30 天)
|
|
78
|
+
mcp__ckb__getHotspots(limit=20)
|
|
79
|
+
|
|
80
|
+
# 获取领域概念
|
|
81
|
+
mcp__ckb__listKeyConcepts(limit=12)
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
3) **生成项目画像**:整合以上数据 + 传统分析
|
|
85
|
+
|
|
86
|
+
## 参考骨架与模板
|
|
87
|
+
|
|
88
|
+
- 工作流:`references/存量项目初始化.md`
|
|
89
|
+
- 代码导航策略:`references/代码导航策略.md`
|
|
90
|
+
- **项目画像模板(三层架构)**:`templates/project-profile-template.md`
|
|
91
|
+
- 一次性提示词:`references/存量项目初始化提示词.md`
|
|
92
|
+
- 模板(按需):`references/术语表模板.md`
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## 上下文感知
|
|
97
|
+
|
|
98
|
+
本 Skill 在执行前自动检测上下文,选择合适的初始化范围。
|
|
99
|
+
|
|
100
|
+
检测规则参考:`skills/_shared/context-detection-template.md`
|
|
101
|
+
|
|
102
|
+
### 检测流程
|
|
103
|
+
|
|
104
|
+
1. 检测 `<truth-root>/` 是否为空或基本为空
|
|
105
|
+
2. 检测 CKB 索引是否可用
|
|
106
|
+
3. 检测项目规模和语言栈
|
|
107
|
+
|
|
108
|
+
### 本 Skill 支持的模式
|
|
109
|
+
|
|
110
|
+
| 模式 | 触发条件 | 行为 |
|
|
111
|
+
|------|----------|------|
|
|
112
|
+
| **完整初始化** | truth-root 为空 | 生成所有基础产物 |
|
|
113
|
+
| **增量初始化** | truth-root 部分存在 | 只补充缺失产物 |
|
|
114
|
+
| **增强模式** | CKB 索引可用 | 使用图分析生成更精确的画像 |
|
|
115
|
+
| **基础模式** | CKB 索引不可用 | 使用传统分析方法 |
|
|
116
|
+
|
|
117
|
+
### 检测输出示例
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
检测结果:
|
|
121
|
+
- truth-root:为空
|
|
122
|
+
- CKB 索引:可用
|
|
123
|
+
- 项目规模:中型(~50K LOC)
|
|
124
|
+
- 运行模式:完整初始化 + 增强模式
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## MCP 增强
|
|
130
|
+
|
|
131
|
+
本 Skill 支持 MCP 运行时增强,自动检测并启用高级功能。
|
|
132
|
+
|
|
133
|
+
MCP 增强规则参考:`skills/_shared/mcp-enhancement-template.md`
|
|
134
|
+
|
|
135
|
+
### 依赖的 MCP 服务
|
|
136
|
+
|
|
137
|
+
| 服务 | 用途 | 超时 |
|
|
138
|
+
|------|------|------|
|
|
139
|
+
| `mcp__ckb__getStatus` | 检测 CKB 索引可用性 | 2s |
|
|
140
|
+
| `mcp__ckb__getArchitecture` | 获取模块依赖图 | 2s |
|
|
141
|
+
| `mcp__ckb__getHotspots` | 获取技术债热点 | 2s |
|
|
142
|
+
| `mcp__ckb__listKeyConcepts` | 获取领域概念 | 2s |
|
|
143
|
+
| `mcp__ckb__getModuleOverview` | 获取模块概览 | 2s |
|
|
144
|
+
|
|
145
|
+
### 检测流程
|
|
146
|
+
|
|
147
|
+
1. 调用 `mcp__ckb__getStatus`(2s 超时)
|
|
148
|
+
2. 若 CKB 可用 → 使用图基分析生成 COD 产物
|
|
149
|
+
3. 若超时或失败 → 降级到传统分析(Git 历史 + 文件统计)
|
|
150
|
+
|
|
151
|
+
### 增强模式 vs 基础模式
|
|
152
|
+
|
|
153
|
+
| 功能 | 增强模式 | 基础模式 |
|
|
154
|
+
|------|----------|----------|
|
|
155
|
+
| 模块依赖图 | CKB getArchitecture | 目录结构推断 |
|
|
156
|
+
| 技术债热点 | CKB getHotspots | Git log 统计 |
|
|
157
|
+
| 领域概念 | CKB listKeyConcepts | 命名分析 |
|
|
158
|
+
| 边界识别 | 精确模块边界 | 目录约定 |
|
|
159
|
+
|
|
160
|
+
### 降级提示
|
|
161
|
+
|
|
162
|
+
当 MCP 不可用时,输出以下提示:
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
⚠️ CKB 不可用,使用传统分析方法生成项目画像。
|
|
166
|
+
如需更精确的架构分析,请运行 /devbooks:index 生成索引。
|
|
167
|
+
```
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# 代码导航策略(四步法)
|
|
2
|
+
|
|
3
|
+
借鉴 VS Code 的 `copilot-instructions.md`,本文档定义了在存量项目中快速定位代码的标准流程。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 核心原则
|
|
8
|
+
|
|
9
|
+
> **先理解,后修改**:在修改任何代码之前,必须先理解现有代码的结构和意图。
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 四步定位法
|
|
14
|
+
|
|
15
|
+
### 第一步:语义搜索(Semantic Search)
|
|
16
|
+
|
|
17
|
+
**目的**:基于意图快速缩小范围
|
|
18
|
+
|
|
19
|
+
**方法**:
|
|
20
|
+
```bash
|
|
21
|
+
# 使用模糊搜索工具
|
|
22
|
+
rg -i "user.*auth" --type ts
|
|
23
|
+
rg -i "login|signin|authenticate" --type ts
|
|
24
|
+
|
|
25
|
+
# 或使用 IDE 的语义搜索
|
|
26
|
+
# VS Code: Cmd+Shift+F → 输入关键词
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**技巧**:
|
|
30
|
+
- 使用业务术语而非技术术语
|
|
31
|
+
- 尝试同义词(login/signin/authenticate)
|
|
32
|
+
- 搜索注释和文档字符串
|
|
33
|
+
|
|
34
|
+
### 第二步:精确搜索(Exact Grep)
|
|
35
|
+
|
|
36
|
+
**目的**:找到具体的函数/类/变量定义
|
|
37
|
+
|
|
38
|
+
**方法**:
|
|
39
|
+
```bash
|
|
40
|
+
# 搜索函数定义
|
|
41
|
+
rg "function\s+createUser" --type ts
|
|
42
|
+
rg "const\s+createUser\s*=" --type ts
|
|
43
|
+
|
|
44
|
+
# 搜索类定义
|
|
45
|
+
rg "class\s+UserService" --type ts
|
|
46
|
+
|
|
47
|
+
# 搜索接口定义
|
|
48
|
+
rg "interface\s+User\b" --type ts
|
|
49
|
+
|
|
50
|
+
# 搜索导出
|
|
51
|
+
rg "export\s+(default\s+)?(function|class|const|interface)\s+\w*User" --type ts
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**技巧**:
|
|
55
|
+
- 使用 `\b` 确保单词边界
|
|
56
|
+
- 搜索导出以找到公共 API
|
|
57
|
+
- 结合文件路径过滤:`rg "pattern" src/user/`
|
|
58
|
+
|
|
59
|
+
### 第三步:追踪导入(Trace Imports)
|
|
60
|
+
|
|
61
|
+
**目的**:理解依赖关系和调用链
|
|
62
|
+
|
|
63
|
+
**方法**:
|
|
64
|
+
```bash
|
|
65
|
+
# 找到谁引用了这个模块
|
|
66
|
+
rg "from ['\"].*userService['\"]" --type ts
|
|
67
|
+
rg "import.*UserService" --type ts
|
|
68
|
+
|
|
69
|
+
# 找到这个模块引用了谁
|
|
70
|
+
rg "^import" src/services/userService.ts
|
|
71
|
+
|
|
72
|
+
# 使用 IDE 的"查找引用"功能
|
|
73
|
+
# VS Code: 右键 → Find All References (Shift+F12)
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**技巧**:
|
|
77
|
+
- 从入口点开始追踪(main.ts, index.ts)
|
|
78
|
+
- 注意相对导入 vs 绝对导入
|
|
79
|
+
- 检查 re-export(index.ts 中的 `export * from`)
|
|
80
|
+
|
|
81
|
+
### 第四步:查看测试(Review Tests)
|
|
82
|
+
|
|
83
|
+
**目的**:理解预期行为和边界条件
|
|
84
|
+
|
|
85
|
+
**方法**:
|
|
86
|
+
```bash
|
|
87
|
+
# 找到相关测试文件
|
|
88
|
+
rg -l "UserService" tests/ src/**/test/
|
|
89
|
+
|
|
90
|
+
# 查看测试用例描述
|
|
91
|
+
rg "describe\(|it\(|test\(" tests/user.service.test.ts
|
|
92
|
+
|
|
93
|
+
# 查看 mock 和 fixture
|
|
94
|
+
rg "mock|stub|fixture" tests/user.service.test.ts
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**技巧**:
|
|
98
|
+
- 测试是最好的文档
|
|
99
|
+
- 查看 `beforeEach` 了解初始化
|
|
100
|
+
- 查看 `expect` 了解预期行为
|
|
101
|
+
- 边界条件测试揭示隐藏约束
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## 定位策略选择
|
|
106
|
+
|
|
107
|
+
| 场景 | 推荐策略 | 原因 |
|
|
108
|
+
|------|----------|------|
|
|
109
|
+
| 不知道功能在哪 | 语义搜索 → 精确搜索 | 从宽到窄 |
|
|
110
|
+
| 知道函数名 | 精确搜索 → 追踪导入 | 直接定位 |
|
|
111
|
+
| 理解调用关系 | 追踪导入 → 查看测试 | 上下文理解 |
|
|
112
|
+
| 理解预期行为 | 查看测试 | 测试即文档 |
|
|
113
|
+
| 修改前验证影响 | 追踪导入 | 影响分析 |
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 项目结构识别
|
|
118
|
+
|
|
119
|
+
### 常见目录结构模式
|
|
120
|
+
|
|
121
|
+
**分层架构**:
|
|
122
|
+
```
|
|
123
|
+
src/
|
|
124
|
+
├── controllers/ # 入口层
|
|
125
|
+
├── services/ # 业务逻辑层
|
|
126
|
+
├── repositories/ # 数据访问层
|
|
127
|
+
├── models/ # 数据模型
|
|
128
|
+
└── utils/ # 工具函数
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**特性切片架构**:
|
|
132
|
+
```
|
|
133
|
+
src/
|
|
134
|
+
├── user/
|
|
135
|
+
│ ├── user.controller.ts
|
|
136
|
+
│ ├── user.service.ts
|
|
137
|
+
│ └── user.repository.ts
|
|
138
|
+
├── order/
|
|
139
|
+
│ ├── order.controller.ts
|
|
140
|
+
│ └── ...
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**VS Code 架构**:
|
|
144
|
+
```
|
|
145
|
+
src/vs/
|
|
146
|
+
├── base/ # 基础工具
|
|
147
|
+
├── platform/ # 平台服务
|
|
148
|
+
├── editor/ # 编辑器
|
|
149
|
+
└── workbench/ # 工作台
|
|
150
|
+
├── browser/ # UI
|
|
151
|
+
├── services/ # 服务
|
|
152
|
+
└── contrib/ # 贡献模块
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### 快速识别入口点
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
# 查找 main 文件
|
|
159
|
+
rg -l "main|bootstrap|app" --type ts -g "*.ts" | head -10
|
|
160
|
+
|
|
161
|
+
# 查找路由定义
|
|
162
|
+
rg "app\.(get|post|put|delete)|router\." --type ts
|
|
163
|
+
|
|
164
|
+
# 查找服务注册
|
|
165
|
+
rg "register|provide|bind" --type ts | head -20
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## 工具推荐
|
|
171
|
+
|
|
172
|
+
### 命令行工具
|
|
173
|
+
|
|
174
|
+
| 工具 | 用途 | 安装 |
|
|
175
|
+
|------|------|------|
|
|
176
|
+
| `rg` (ripgrep) | 快速文本搜索 | `brew install ripgrep` |
|
|
177
|
+
| `fd` | 快速文件查找 | `brew install fd` |
|
|
178
|
+
| `tree` | 目录结构可视化 | `brew install tree` |
|
|
179
|
+
| `bat` | 语法高亮查看 | `brew install bat` |
|
|
180
|
+
|
|
181
|
+
### IDE 功能
|
|
182
|
+
|
|
183
|
+
| 功能 | VS Code 快捷键 | 用途 |
|
|
184
|
+
|------|----------------|------|
|
|
185
|
+
| 全局搜索 | Cmd+Shift+F | 语义搜索 |
|
|
186
|
+
| 转到定义 | F12 | 精确定位 |
|
|
187
|
+
| 查找引用 | Shift+F12 | 追踪导入 |
|
|
188
|
+
| 符号搜索 | Cmd+T | 快速跳转 |
|
|
189
|
+
| 文件搜索 | Cmd+P | 快速打开 |
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## 检查清单
|
|
194
|
+
|
|
195
|
+
在开始修改代码前,确认已完成:
|
|
196
|
+
|
|
197
|
+
- [ ] 使用语义搜索找到相关区域
|
|
198
|
+
- [ ] 使用精确搜索定位具体定义
|
|
199
|
+
- [ ] 追踪导入理解依赖关系
|
|
200
|
+
- [ ] 查看测试理解预期行为
|
|
201
|
+
- [ ] 识别项目结构模式
|
|
202
|
+
- [ ] 确认入口点和调用链
|
|
203
|
+
- [ ] 评估修改影响范围
|