cgraphx 1.1.0 → 1.3.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/README.md +0 -1
- package/dist/.claude-template/hooks/precommit-check/precommit-check.cjs +90 -0
- package/dist/.claude-template/skills/cgraphx/SKILL.md +3 -3
- package/dist/.claude-template/skills/cgraphx/agent-prompt.md +1 -1
- package/dist/.claude-template/skills/cgraphx-guide/SKILL.md +94 -0
- package/dist/.claude-template/skills/cgraphx-guide/how-to-use.html +424 -0
- package/dist/.claude-template/skills/clarify-requirements/SKILL.md +19 -8
- package/dist/.claude-template/skills/code-impact-docgen/SKILL.md +186 -176
- package/dist/.claude-template/skills/code-impact-docgen/template-design-html.md +357 -0
- package/dist/.claude-template/skills/code-impact-docgen/template-design-md.md +164 -0
- package/dist/.claude-template/skills/code-impact-init/SKILL.md +47 -47
- package/dist/.claude-template/skills/developer-timeline/SKILL.md +9 -0
- package/dist/.claude-template/skills/precommit-review/SKILL.md +50 -0
- package/dist/.claude-template/skills/run-api-test/SKILL.md +187 -0
- package/dist/.claude-template/skills/run-api-test/assets/template-test-report.md +103 -0
- package/dist/.claude-template/skills/run-api-test/assets/template-test-verify.jsonl +5 -0
- package/dist/.claude-template/skills/run-api-test/references/bru-run.md +60 -0
- package/dist/.claude-template/skills/run-api-test/references/db-verification.md +81 -0
- package/dist/.claude-template/skills/run-api-test/references/report-format.md +104 -0
- package/dist/.claude-template/skills/run-api-test/references/service-readiness.md +61 -0
- package/dist/.claude-template/skills/run-api-test/references/test-scope.md +64 -0
- package/dist/.claude-template/skills/write-api/SKILL.md +150 -0
- package/dist/.claude-template/skills/write-api/assets/template-api-spec.md +112 -0
- package/dist/.claude-template/skills/write-api/assets/template-request.bru +75 -0
- package/dist/.claude-template/skills/write-api/references/ai-prompts.md +133 -0
- package/dist/.claude-template/skills/write-api/references/api-spec-format.md +108 -0
- package/dist/.claude-template/skills/write-api/references/bru-format.md +144 -0
- package/dist/.claude-template/skills/write-api/references/collection-layout.md +81 -0
- package/dist/.claude-template/skills/write-api/references/environment-setup.md +105 -0
- package/dist/.claude-template/skills/write-api/references/interface-scope.md +74 -0
- package/dist/.claude-template/skills/write-api-doc/SKILL.md +317 -0
- package/dist/.claude-template/skills/write-api-doc/template-api-html.md +422 -0
- package/dist/.claude-template/skills/write-plan/SKILL.md +38 -16
- package/dist/.claude-template/skills/write-prd/SKILL.md +32 -8
- package/dist/.claude-template/skills/write-spec/SKILL.md +34 -9
- package/dist/api-test/ai-fields.d.ts +37 -0
- package/dist/api-test/ai-fields.d.ts.map +1 -0
- package/dist/api-test/ai-fields.js +114 -0
- package/dist/api-test/ai-fields.js.map +1 -0
- package/dist/api-test/assemble.d.ts +76 -0
- package/dist/api-test/assemble.d.ts.map +1 -0
- package/dist/api-test/assemble.js +185 -0
- package/dist/api-test/assemble.js.map +1 -0
- package/dist/api-test/bru-cli-invoker.d.ts +72 -0
- package/dist/api-test/bru-cli-invoker.d.ts.map +1 -0
- package/dist/api-test/bru-cli-invoker.js +169 -0
- package/dist/api-test/bru-cli-invoker.js.map +1 -0
- package/dist/api-test/bru-report-parser.d.ts +24 -0
- package/dist/api-test/bru-report-parser.d.ts.map +1 -0
- package/dist/api-test/bru-report-parser.js +110 -0
- package/dist/api-test/bru-report-parser.js.map +1 -0
- package/dist/api-test/bru-runner.d.ts +101 -0
- package/dist/api-test/bru-runner.d.ts.map +1 -0
- package/dist/api-test/bru-runner.js +316 -0
- package/dist/api-test/bru-runner.js.map +1 -0
- package/dist/api-test/bru-writer.d.ts +52 -0
- package/dist/api-test/bru-writer.d.ts.map +1 -0
- package/dist/api-test/bru-writer.js +159 -0
- package/dist/api-test/bru-writer.js.map +1 -0
- package/dist/api-test/call-chain-extractor.d.ts +80 -0
- package/dist/api-test/call-chain-extractor.d.ts.map +1 -0
- package/dist/api-test/call-chain-extractor.js +179 -0
- package/dist/api-test/call-chain-extractor.js.map +1 -0
- package/dist/api-test/cli.d.ts +133 -0
- package/dist/api-test/cli.d.ts.map +1 -0
- package/dist/api-test/cli.js +1009 -0
- package/dist/api-test/cli.js.map +1 -0
- package/dist/api-test/config.d.ts +75 -0
- package/dist/api-test/config.d.ts.map +1 -0
- package/dist/api-test/config.js +406 -0
- package/dist/api-test/config.js.map +1 -0
- package/dist/api-test/db-query-cli.d.ts +51 -0
- package/dist/api-test/db-query-cli.d.ts.map +1 -0
- package/dist/api-test/db-query-cli.js +119 -0
- package/dist/api-test/db-query-cli.js.map +1 -0
- package/dist/api-test/enhance-prepare.d.ts +111 -0
- package/dist/api-test/enhance-prepare.d.ts.map +1 -0
- package/dist/api-test/enhance-prepare.js +425 -0
- package/dist/api-test/enhance-prepare.js.map +1 -0
- package/dist/api-test/enhance-write.d.ts +28 -0
- package/dist/api-test/enhance-write.d.ts.map +1 -0
- package/dist/api-test/enhance-write.js +145 -0
- package/dist/api-test/enhance-write.js.map +1 -0
- package/dist/api-test/errors.d.ts +48 -0
- package/dist/api-test/errors.d.ts.map +1 -0
- package/dist/api-test/errors.js +76 -0
- package/dist/api-test/errors.js.map +1 -0
- package/dist/api-test/field-extractor.d.ts +98 -0
- package/dist/api-test/field-extractor.d.ts.map +1 -0
- package/dist/api-test/field-extractor.js +327 -0
- package/dist/api-test/field-extractor.js.map +1 -0
- package/dist/api-test/impl-finder.d.ts +37 -0
- package/dist/api-test/impl-finder.d.ts.map +1 -0
- package/dist/api-test/impl-finder.js +54 -0
- package/dist/api-test/impl-finder.js.map +1 -0
- package/dist/api-test/index.d.ts +41 -0
- package/dist/api-test/index.d.ts.map +1 -0
- package/dist/api-test/index.js +124 -0
- package/dist/api-test/index.js.map +1 -0
- package/dist/api-test/java-parser.d.ts +89 -0
- package/dist/api-test/java-parser.d.ts.map +1 -0
- package/dist/api-test/java-parser.js +508 -0
- package/dist/api-test/java-parser.js.map +1 -0
- package/dist/api-test/md-writer.d.ts +49 -0
- package/dist/api-test/md-writer.d.ts.map +1 -0
- package/dist/api-test/md-writer.js +202 -0
- package/dist/api-test/md-writer.js.map +1 -0
- package/dist/api-test/parser-httpservice.d.ts +91 -0
- package/dist/api-test/parser-httpservice.d.ts.map +1 -0
- package/dist/api-test/parser-httpservice.js +271 -0
- package/dist/api-test/parser-httpservice.js.map +1 -0
- package/dist/api-test/report.d.ts +188 -0
- package/dist/api-test/report.d.ts.map +1 -0
- package/dist/api-test/report.js +522 -0
- package/dist/api-test/report.js.map +1 -0
- package/dist/api-test/snapshot.d.ts +26 -0
- package/dist/api-test/snapshot.d.ts.map +1 -0
- package/dist/api-test/snapshot.js +150 -0
- package/dist/api-test/snapshot.js.map +1 -0
- package/dist/api-test/test-history.d.ts +48 -0
- package/dist/api-test/test-history.d.ts.map +1 -0
- package/dist/api-test/test-history.js +122 -0
- package/dist/api-test/test-history.js.map +1 -0
- package/dist/api-test/types.d.ts +174 -0
- package/dist/api-test/types.d.ts.map +1 -0
- package/dist/api-test/types.js +13 -0
- package/dist/api-test/types.js.map +1 -0
- package/dist/api-test/verify-prepare.d.ts +30 -0
- package/dist/api-test/verify-prepare.d.ts.map +1 -0
- package/dist/api-test/verify-prepare.js +150 -0
- package/dist/api-test/verify-prepare.js.map +1 -0
- package/dist/api-test/verify-write.d.ts +31 -0
- package/dist/api-test/verify-write.d.ts.map +1 -0
- package/dist/api-test/verify-write.js +159 -0
- package/dist/api-test/verify-write.js.map +1 -0
- package/dist/bin/codegraph.js +0 -100
- package/dist/bin/codegraph.js.map +1 -1
- package/dist/dbquery/dump-schema.d.ts +46 -0
- package/dist/dbquery/dump-schema.d.ts.map +1 -0
- package/dist/dbquery/dump-schema.js +379 -0
- package/dist/dbquery/dump-schema.js.map +1 -0
- package/dist/installer/targets/claude.d.ts +15 -0
- package/dist/installer/targets/claude.d.ts.map +1 -1
- package/dist/installer/targets/claude.js +53 -0
- package/dist/installer/targets/claude.js.map +1 -1
- package/dist/resolution/index.d.ts.map +1 -1
- package/dist/resolution/index.js +13 -0
- package/dist/resolution/index.js.map +1 -1
- package/dist/resolution/scope-index.d.ts +86 -0
- package/dist/resolution/scope-index.d.ts.map +1 -0
- package/dist/resolution/scope-index.js +143 -0
- package/dist/resolution/scope-index.js.map +1 -0
- package/dist/resolution/stdlib-blocklist.d.ts +53 -0
- package/dist/resolution/stdlib-blocklist.d.ts.map +1 -0
- package/dist/resolution/stdlib-blocklist.js +143 -0
- package/dist/resolution/stdlib-blocklist.js.map +1 -0
- package/dist/search/ast-helpers.d.ts +42 -0
- package/dist/search/ast-helpers.d.ts.map +1 -0
- package/dist/search/ast-helpers.js +106 -0
- package/dist/search/ast-helpers.js.map +1 -0
- package/dist/search/call-sites.d.ts +398 -0
- package/dist/search/call-sites.d.ts.map +1 -0
- package/dist/search/call-sites.js +1433 -0
- package/dist/search/call-sites.js.map +1 -0
- package/dist/search/context.d.ts +134 -0
- package/dist/search/context.d.ts.map +1 -0
- package/dist/search/context.js +575 -0
- package/dist/search/context.js.map +1 -0
- package/dist/search/impact.d.ts +139 -0
- package/dist/search/impact.d.ts.map +1 -0
- package/dist/search/impact.js +646 -0
- package/dist/search/impact.js.map +1 -0
- package/dist/search/related.d.ts +178 -0
- package/dist/search/related.d.ts.map +1 -0
- package/dist/search/related.js +667 -0
- package/dist/search/related.js.map +1 -0
- package/dist/search/slice.d.ts +148 -0
- package/dist/search/slice.d.ts.map +1 -0
- package/dist/search/slice.js +460 -0
- package/dist/search/slice.js.map +1 -0
- package/dist/search/snr-constants.d.ts +41 -0
- package/dist/search/snr-constants.d.ts.map +1 -0
- package/dist/search/snr-constants.js +44 -0
- package/dist/search/snr-constants.js.map +1 -0
- package/dist/search/types.d.ts +28 -0
- package/dist/search/types.d.ts.map +1 -0
- package/dist/search/types.js +12 -0
- package/dist/search/types.js.map +1 -0
- package/dist/timeline/cli.d.ts.map +1 -1
- package/dist/timeline/cli.js +22 -3
- package/dist/timeline/cli.js.map +1 -1
- package/dist/timeline/store.d.ts +5 -0
- package/dist/timeline/store.d.ts.map +1 -1
- package/dist/timeline/store.js +23 -3
- package/dist/timeline/store.js.map +1 -1
- package/package.json +1 -1
- package/scripts/agent-eval/subagent-token-cost.py +188 -0
- package/dist/.claude-template/skills/code-impact-docgen/template-business-html.md +0 -242
- package/dist/.claude-template/skills/code-impact-docgen/template-business-md.md +0 -107
- package/dist/.claude-template/skills/code-impact-docgen/template-technical-html.md +0 -205
- package/dist/.claude-template/skills/code-impact-docgen/template-technical-md.md +0 -155
package/README.md
CHANGED
|
@@ -88,7 +88,6 @@ cgraphx node <symbol|file> # 单符号详情 / 文件内容(带行号)
|
|
|
88
88
|
cgraphx query <search> # 按名字搜符号(--kind / --limit / --json)
|
|
89
89
|
cgraphx callers <symbol> # 谁调用 X
|
|
90
90
|
cgraphx callees <symbol> # X 调用谁
|
|
91
|
-
cgraphx impact <symbol> # 改 X 的影响半径(--depth)
|
|
92
91
|
cgraphx affected [files...] # 改这些文件受影响的测试(--stdin / --filter)
|
|
93
92
|
cgraphx files [path] # 项目文件结构
|
|
94
93
|
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* PreToolUse hook for Bash: precommit-check
|
|
4
|
+
*
|
|
5
|
+
* 守门员:拦截 git commit(当暂存含修改/删除/重命名文件时),要求 agent
|
|
6
|
+
* 先调用 /precommit-review skill 审查 staged diff,再带
|
|
7
|
+
* CGRAPHX_PRECOMMIT_REVIEWED=1 前缀重试。纯新增文件直接放行,不制造摩擦。
|
|
8
|
+
*
|
|
9
|
+
* 本脚本不做差异判断 —— 只做"是不是 git commit + 有没有非纯新增文件"的
|
|
10
|
+
* 事实判定。真正的可疑模式识别由 /precommit-review skill 让 agent 自己
|
|
11
|
+
* 跑 git diff --cached 比对完成。
|
|
12
|
+
*
|
|
13
|
+
* 输出协议(PreToolUse):命中拦截时输出
|
|
14
|
+
* { hookSpecificOutput: { hookEventName: "PreToolUse",
|
|
15
|
+
* permissionDecision: "deny",
|
|
16
|
+
* permissionDecisionReason: <指名 /precommit-review> } }
|
|
17
|
+
* 不命中时静默 exit 0(放行)。任何异常都吞掉 exit 0,永不阻断正常流程。
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
const { execSync } = require('child_process');
|
|
21
|
+
const fs = require('fs');
|
|
22
|
+
|
|
23
|
+
const ENV_BYPASS = 'CGRAPHX_PRECOMMIT_REVIEWED=1';
|
|
24
|
+
|
|
25
|
+
function readInput() {
|
|
26
|
+
try {
|
|
27
|
+
const data = fs.readFileSync(0, 'utf-8');
|
|
28
|
+
return data ? JSON.parse(data) : {};
|
|
29
|
+
} catch (e) {
|
|
30
|
+
return {};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function deny(reason) {
|
|
35
|
+
process.stdout.write(JSON.stringify({
|
|
36
|
+
hookSpecificOutput: {
|
|
37
|
+
hookEventName: 'PreToolUse',
|
|
38
|
+
permissionDecision: 'deny',
|
|
39
|
+
permissionDecisionReason: reason,
|
|
40
|
+
},
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function main() {
|
|
45
|
+
const input = readInput();
|
|
46
|
+
const cmd = String((input && input.tool_input && input.tool_input.command) || '');
|
|
47
|
+
|
|
48
|
+
// 只拦 git commit(覆盖 -m / --amend / --fixup 等所有子形式)
|
|
49
|
+
if (!/\bgit\s+commit\b/.test(cmd)) return;
|
|
50
|
+
|
|
51
|
+
// 已审查过的重试 —— agent 在 skill 审查后会带 ENV_BYPASS 前缀重提交
|
|
52
|
+
if (cmd.includes(ENV_BYPASS)) return;
|
|
53
|
+
|
|
54
|
+
// 拿暂存文件状态
|
|
55
|
+
let staged;
|
|
56
|
+
try {
|
|
57
|
+
staged = execSync('git diff --cached --name-status', {
|
|
58
|
+
encoding: 'utf-8',
|
|
59
|
+
cwd: process.cwd(),
|
|
60
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
61
|
+
}) || '';
|
|
62
|
+
} catch (e) {
|
|
63
|
+
return; // 非 git 仓库 / git 不可用 —— 不阻断
|
|
64
|
+
}
|
|
65
|
+
if (!staged.trim()) return; // 没暂存任何东西,交给 git 报错
|
|
66
|
+
|
|
67
|
+
// 纯新增(A)直接放行;M/D/R/C/T/U 等都视为"非纯新增"
|
|
68
|
+
const nonNew = staged
|
|
69
|
+
.split('\n')
|
|
70
|
+
.filter(Boolean)
|
|
71
|
+
.filter((line) => line.split('\t')[0] !== 'A');
|
|
72
|
+
|
|
73
|
+
if (nonNew.length === 0) return; // 纯新增,放行
|
|
74
|
+
|
|
75
|
+
const reason =
|
|
76
|
+
`本次 git commit 暂存了 ${nonNew.length} 个修改/删除/重命名文件,提交前请先调用 ` +
|
|
77
|
+
`\`/precommit-review\` skill 审查 staged diff —— 检查被注释的开关(如 // @Component / @JmsListener / @Scheduled)、` +
|
|
78
|
+
`被注释的业务调用、未闭合的逻辑、写死的魔法字符串、TODO/临时标记等可疑修改。\n\n` +
|
|
79
|
+
`审查通过(或确认无需修改)后,用以下形式重试提交以跳过本检查:\n` +
|
|
80
|
+
` ${ENV_BYPASS} git commit ...\n\n` +
|
|
81
|
+
`(本 hook 不做差异判断,只做守门;真正的可疑识别由 /precommit-review skill 让 agent 自己比对 staged diff 完成。)`;
|
|
82
|
+
|
|
83
|
+
deny(reason);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
try {
|
|
87
|
+
main();
|
|
88
|
+
} catch (e) {
|
|
89
|
+
// hook 永不阻断正常流程 —— 任何意外都放行
|
|
90
|
+
}
|
|
@@ -39,9 +39,9 @@ cgraphx <subcommand> [args]
|
|
|
39
39
|
| 看符号定义 | `codegraph_explore` MCP,或 Bash `cgraphx query <name>` 后看返回 | 拿到完整源码 |
|
|
40
40
|
| 谁调用 X | `cgraphx callers <symbol>` | inbound 调用方 |
|
|
41
41
|
| X 调用谁 | `cgraphx callees <symbol>` | outbound 被调用方 |
|
|
42
|
-
| 改 X 的影响面 | `
|
|
42
|
+
| 改 X 的影响面 | `codegraph_impact(symbol, depth)` MCP | impact radius(BFS 影响传播,基于索引) |
|
|
43
43
|
| 改文件的受影响测试 | `cgraphx affected [<files>...]` | 找受影响测试文件 |
|
|
44
|
-
| 构建 task 上下文 | `
|
|
44
|
+
| 构建 task 上下文 | `codegraph_explore` MCP | 给 AI 一段任务描述,返回相关代码片段 + 调用路径 |
|
|
45
45
|
| 看索引状态 | `cgraphx status` | files/nodes/edges 计数、last_indexed_at |
|
|
46
46
|
| 增量同步 | `cgraphx sync` | 文件改了之后 |
|
|
47
47
|
| 全量重建 | `cgraphx index` | 出问题或大改动时 |
|
|
@@ -55,7 +55,7 @@ cgraphx <subcommand> [args]
|
|
|
55
55
|
│ → codegraph_explore MCP(一次拿源码 + 调用路径)
|
|
56
56
|
│
|
|
57
57
|
├── "改 X 会影响哪里" / "X 的 blast radius" / 重构前评估
|
|
58
|
-
│ →
|
|
58
|
+
│ → codegraph_impact(symbol) MCP(看影响半径)
|
|
59
59
|
│ → 或 cgraphx affected <file>(看受影响测试)
|
|
60
60
|
│
|
|
61
61
|
├── "谁调用 X" / "X 的 caller" / 反向追踪
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
| 工具 | 用途 |
|
|
14
14
|
|---|---|
|
|
15
15
|
| `codegraph_explore` MCP(首选) | 给一组符号名或自然语言问题,返回相关符号源码 + 调用路径(含 callback / React render / JSX children 等动态派生边) |
|
|
16
|
+
| `codegraph_impact(symbol, depth)` MCP | 改动影响半径(基于索引,返回 Subgraph 含 nodes/edges) |
|
|
16
17
|
| `cgraphx query "<name>"` CLI | 按名字模糊搜符号 |
|
|
17
18
|
| `cgraphx callers <symbol>` CLI | 反向追踪(谁调 X) |
|
|
18
19
|
| `cgraphx callees <symbol>` CLI | 正向追踪(X 调谁) |
|
|
19
|
-
| `cgraphx impact <symbol>` CLI | 改动影响半径 |
|
|
20
20
|
| `cgraphx affected [<files>...]` CLI | 受影响测试文件 |
|
|
21
21
|
| `cgraphx status` CLI | 看索引新鲜度 |
|
|
22
22
|
| `cgraphx files` CLI | 项目文件概览 |
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cgraphx-guide
|
|
3
|
+
description: cgraphx 应用整体使用指南 — 安装、项目接入、日常做需求的工作流(skill 串联)、agent 自动加载的上下文工具。Use when 用户问 cgraphx 怎么用/怎么安装/怎么接入项目/有哪些 skill/日常工作流/onboarding/新手入门/使用流程/安装步骤/skill 怎么配合/cgraphx 能干什么/cgraphx 和别的工具区别。问单个代码查询工具(codegraph_explore/callers/impact 怎么调)走 cgraphx skill,不是本 skill。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# cgraphx 应用使用指南
|
|
7
|
+
|
|
8
|
+
cgraphx 是本地优先的代码智能工具,把**代码图谱 + markdown 知识库 + 数据库查询 + 开发时间线**打包给 AI agent 用。本 skill 是**整体使用导航**——用户问"怎么用 / 怎么装 / 日常工作流 / 有哪些 skill"时调这里。
|
|
9
|
+
|
|
10
|
+
视觉版介绍页(给人类用户看):`how-to-use.html`(本 skill 目录内,随 skill 分发,`cgraphx install` 时部署到项目 `.claude/skills/cgraphx-guide/`)。
|
|
11
|
+
|
|
12
|
+
## 何时用 / 不用本 skill
|
|
13
|
+
|
|
14
|
+
**用本 skill**:
|
|
15
|
+
- 用户问 cgraphx 怎么安装 / 怎么接入项目
|
|
16
|
+
- 用户问日常怎么用 / 有哪些 skill / 工作流
|
|
17
|
+
- 用户是新手要 onboarding
|
|
18
|
+
- 用户问 cgraphx 整体能干什么、和别的工具区别
|
|
19
|
+
|
|
20
|
+
**不要用本 skill**(走对应专责 skill):
|
|
21
|
+
- 单个代码查询(`codegraph_explore` / `callers` / `impact` 怎么调)→ `cgraphx` skill
|
|
22
|
+
- 查业务知识(`docs/knowledge/`)→ `code-impact-api` skill
|
|
23
|
+
- 查数据库 → `db-query` skill
|
|
24
|
+
- 写 PRD / spec / plan → 各自 skill
|
|
25
|
+
- 探索陌生项目建知识库 → `code-impact-init` skill
|
|
26
|
+
|
|
27
|
+
本 skill 只做整体导航,不重复各 skill 的内部规范。
|
|
28
|
+
|
|
29
|
+
## 整体使用流程
|
|
30
|
+
|
|
31
|
+
| 阶段 | 命令 / skill |
|
|
32
|
+
|---|---|
|
|
33
|
+
| **机器级 · 每机器一次** | `npm install -g cgraphx` |
|
|
34
|
+
| **项目级 · 每项目一次** | `cgraphx init`(建代码图谱)、`cgraphx install`(写 MCP 配置 + 部署 skills 模板到项目 `.claude/`)、`/code-impact-init`(接手陌生项目时建业务知识库) |
|
|
35
|
+
| **日常做需求 · 必经 2 步** | `/clarify-requirements` 澄清 → `/implementation`(简单)或 `/subagent-implement`(复杂)实现 |
|
|
36
|
+
| **日常做需求 · 复杂按需** | `/write-prd`、`/write-spec`、`/write-plan`、`/code-impact-markdown`(沉淀到 `docs/knowledge/`) |
|
|
37
|
+
| **工作回顾 · 按需** | `/developer-timeline`(日/周/月报)、`/code-impact-docgen`(合成业务/技术文档) |
|
|
38
|
+
| **卸载 · 可选** | `npm uninstall -g cgraphx` + 删 `.cgraphx/` |
|
|
39
|
+
|
|
40
|
+
## 各 skill 导航
|
|
41
|
+
|
|
42
|
+
### 用户主动触发(在 Claude Code 里敲 `/skill-name`)
|
|
43
|
+
|
|
44
|
+
| skill | 何时建议用户调 |
|
|
45
|
+
|---|---|
|
|
46
|
+
| `/clarify-requirements` | 接到模糊需求,先澄清意图、业务边界、技术边界 |
|
|
47
|
+
| `/write-prd` | 要给业务方 / 领导确认业务文档 |
|
|
48
|
+
| `/write-spec` | 写技术规格(归档业务行为 / 规则 / 接口 / 数据,作为 plan 的稳定输入) |
|
|
49
|
+
| `/write-plan` | 拆执行计划(给 agent 执行) |
|
|
50
|
+
| `/implementation` | 简单任务实现(主会话顺序做) |
|
|
51
|
+
| `/subagent-implement` | 复杂多任务实现(派子 agent,隔离上下文) |
|
|
52
|
+
| `/code-impact-init` | 接手陌生项目,派子 agent 自动探索、建业务知识库 |
|
|
53
|
+
| `/code-impact-markdown` | 把业务决策 / 概念沉淀成 md 到 `docs/knowledge/` |
|
|
54
|
+
| `/code-impact-docgen` | 从知识库合成面向人类阅读的业务 / 技术文档(HTML 或 Markdown) |
|
|
55
|
+
| `/developer-timeline` | 生成日报 / 周报 / 月报 / 阶段总结 / 交付汇报 |
|
|
56
|
+
|
|
57
|
+
### agent 自动调用(用户不主动敲,agent 用来加载项目上下文)
|
|
58
|
+
|
|
59
|
+
| skill / 工具 | agent 何时自动调 |
|
|
60
|
+
|---|---|
|
|
61
|
+
| `codegraph_explore` | 任何代码理解 / 修改前——查代码结构、调用链、影响半径 |
|
|
62
|
+
| `code-impact-api` | 任务开始时查 `docs/knowledge/` 业务决策 / 概念 / 历史教训 |
|
|
63
|
+
| `db-query` | 验证数据假设 / 查表结构 / 找测试数据(查 MySQL / PostgreSQL,沉淀 schema 到 `docs/schema-knowledge/`) |
|
|
64
|
+
|
|
65
|
+
## 安装与接入(三步)
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
npm install -g cgraphx # 装 CLI(Node ≥ 20 且 < 25)
|
|
69
|
+
cd /your/project && cgraphx init # 建代码图谱索引、开 watcher
|
|
70
|
+
cgraphx install # 写 MCP 配置 + 部署 skills 模板到项目 .claude/(默认 local)
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
`cgraphx install` 默认 **local**(写项目内 `.claude/` / `.cursor/` 等);想影响所有项目才用 `--location=global`。
|
|
74
|
+
|
|
75
|
+
接手陌生项目时可选第四步:`/code-impact-init` 派子 agent 自动探索、建业务知识库到 `docs/knowledge/`。
|
|
76
|
+
|
|
77
|
+
## 背后自动(agent 跑的,用户无感)
|
|
78
|
+
|
|
79
|
+
- 文件改动 → watcher 自动增量同步代码图谱(无需手动 reindex)
|
|
80
|
+
- agent 经 `codegraph_explore` 自动查代码结构 / 调用链 / 影响半径
|
|
81
|
+
- agent 经 `code-impact-api` 自动查业务知识
|
|
82
|
+
- agent 经 `db-query` 自动查数据库
|
|
83
|
+
- `status` / `sync` / `explore` / `docs` / `db` / `timeline` 等 CLI 子命令由 agent / skill 调用,人类日常不主动跑
|
|
84
|
+
|
|
85
|
+
## 卸载
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
npm uninstall -g cgraphx # preuninstall 钩子自动清所有 agent 的 MCP 配置
|
|
89
|
+
# 需要清索引数据时,手动删项目目录下的 .cgraphx/
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## 视觉版
|
|
93
|
+
|
|
94
|
+
给人类用户看介绍页时,指向 `how-to-use.html`(本 skill 目录内,部署后在 `.claude/skills/cgraphx-guide/how-to-use.html`)——分阶段卡片布局,一眼看清完整使用流程。
|
|
@@ -0,0 +1,424 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="zh-CN">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>cgraphx 怎么用 — 安装与使用</title>
|
|
7
|
+
<style>
|
|
8
|
+
:root {
|
|
9
|
+
--color-primary: #2B6CB0;
|
|
10
|
+
--color-primary-dark: #2C5282;
|
|
11
|
+
--color-text: #1A202C;
|
|
12
|
+
--color-text-secondary: #4A5568;
|
|
13
|
+
--color-text-tertiary: #718096;
|
|
14
|
+
--color-border: #E2E8F0;
|
|
15
|
+
--color-bg: #FFFFFF;
|
|
16
|
+
--color-bg-subtle: #F7FAFC;
|
|
17
|
+
--color-bg-code: #EDF2F7;
|
|
18
|
+
--color-bg-accent: #FFFAF0;
|
|
19
|
+
--color-cgraphx: #2B6CB0;
|
|
20
|
+
--radius: 6px;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
* { box-sizing: border-box; }
|
|
24
|
+
html { scroll-behavior: smooth; }
|
|
25
|
+
|
|
26
|
+
body {
|
|
27
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
|
|
28
|
+
font-size: 16px;
|
|
29
|
+
line-height: 1.75;
|
|
30
|
+
color: var(--color-text);
|
|
31
|
+
background: var(--color-bg);
|
|
32
|
+
margin: 0;
|
|
33
|
+
padding: 0;
|
|
34
|
+
-webkit-font-smoothing: antialiased;
|
|
35
|
+
-moz-osx-font-smoothing: grayscale;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.container {
|
|
39
|
+
max-width: 880px;
|
|
40
|
+
margin: 0 auto;
|
|
41
|
+
padding: 0 24px;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* Header */
|
|
45
|
+
header {
|
|
46
|
+
padding: 80px 0 50px;
|
|
47
|
+
border-bottom: 1px solid var(--color-border);
|
|
48
|
+
margin-bottom: 50px;
|
|
49
|
+
}
|
|
50
|
+
header .eyebrow {
|
|
51
|
+
font-size: 13px;
|
|
52
|
+
color: var(--color-text-tertiary);
|
|
53
|
+
letter-spacing: 0.08em;
|
|
54
|
+
text-transform: uppercase;
|
|
55
|
+
margin-bottom: 12px;
|
|
56
|
+
font-weight: 500;
|
|
57
|
+
}
|
|
58
|
+
header h1 {
|
|
59
|
+
font-size: 38px;
|
|
60
|
+
font-weight: 700;
|
|
61
|
+
margin: 0 0 16px;
|
|
62
|
+
line-height: 1.2;
|
|
63
|
+
letter-spacing: -0.01em;
|
|
64
|
+
}
|
|
65
|
+
header .subtitle {
|
|
66
|
+
font-size: 18px;
|
|
67
|
+
color: var(--color-text-secondary);
|
|
68
|
+
margin: 0 0 24px;
|
|
69
|
+
}
|
|
70
|
+
header .meta {
|
|
71
|
+
font-size: 14px;
|
|
72
|
+
color: var(--color-text-tertiary);
|
|
73
|
+
margin: 0;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/* Section */
|
|
77
|
+
section { margin-bottom: 56px; }
|
|
78
|
+
|
|
79
|
+
h2 {
|
|
80
|
+
font-size: 26px;
|
|
81
|
+
font-weight: 600;
|
|
82
|
+
margin: 0 0 24px;
|
|
83
|
+
padding-bottom: 10px;
|
|
84
|
+
border-bottom: 2px solid var(--color-border);
|
|
85
|
+
letter-spacing: -0.01em;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
p { margin: 0 0 16px; }
|
|
89
|
+
p strong, li strong { font-weight: 600; }
|
|
90
|
+
|
|
91
|
+
/* Inline code */
|
|
92
|
+
code {
|
|
93
|
+
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
|
94
|
+
font-size: 0.88em;
|
|
95
|
+
background: var(--color-bg-code);
|
|
96
|
+
color: var(--color-primary-dark);
|
|
97
|
+
padding: 2px 6px;
|
|
98
|
+
border-radius: 3px;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* Tags */
|
|
102
|
+
.tag {
|
|
103
|
+
display: inline-block;
|
|
104
|
+
font-size: 12px;
|
|
105
|
+
font-weight: 600;
|
|
106
|
+
padding: 2px 8px;
|
|
107
|
+
border-radius: 3px;
|
|
108
|
+
letter-spacing: 0.02em;
|
|
109
|
+
white-space: nowrap;
|
|
110
|
+
}
|
|
111
|
+
.tag-cgraphx { background: #EBF8FF; color: #2C5282; }
|
|
112
|
+
|
|
113
|
+
/* Pipeline (单卡片,沿用左侧 code-workflow 卡片样式) */
|
|
114
|
+
.pipeline {
|
|
115
|
+
border: 1px solid var(--color-border);
|
|
116
|
+
border-top: 4px solid var(--color-cgraphx);
|
|
117
|
+
border-radius: var(--radius);
|
|
118
|
+
padding: 24px 28px;
|
|
119
|
+
background: var(--color-bg);
|
|
120
|
+
margin: 0 0 24px;
|
|
121
|
+
}
|
|
122
|
+
.pipeline h4 {
|
|
123
|
+
margin: 0 0 20px;
|
|
124
|
+
font-size: 16px;
|
|
125
|
+
font-weight: 600;
|
|
126
|
+
}
|
|
127
|
+
.phase {
|
|
128
|
+
margin-bottom: 18px;
|
|
129
|
+
padding-bottom: 18px;
|
|
130
|
+
border-bottom: 1px dashed var(--color-border);
|
|
131
|
+
}
|
|
132
|
+
.phase:last-child {
|
|
133
|
+
margin-bottom: 0;
|
|
134
|
+
padding-bottom: 0;
|
|
135
|
+
border-bottom: none;
|
|
136
|
+
}
|
|
137
|
+
.phase-label {
|
|
138
|
+
font-size: 11px;
|
|
139
|
+
text-transform: uppercase;
|
|
140
|
+
letter-spacing: 0.06em;
|
|
141
|
+
color: var(--color-text-tertiary);
|
|
142
|
+
font-weight: 600;
|
|
143
|
+
margin-bottom: 10px;
|
|
144
|
+
}
|
|
145
|
+
.phase-list {
|
|
146
|
+
padding-left: 20px;
|
|
147
|
+
margin: 0;
|
|
148
|
+
font-size: 14px;
|
|
149
|
+
line-height: 1.75;
|
|
150
|
+
}
|
|
151
|
+
.phase-list li { margin-bottom: 6px; }
|
|
152
|
+
.phase-list code { font-size: 12.5px; }
|
|
153
|
+
.phase-list em {
|
|
154
|
+
color: var(--color-text-tertiary);
|
|
155
|
+
font-size: 13px;
|
|
156
|
+
font-style: normal;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/* Highlight box */
|
|
160
|
+
.highlight {
|
|
161
|
+
background: var(--color-bg-subtle);
|
|
162
|
+
border: 1px solid var(--color-border);
|
|
163
|
+
border-left: 4px solid var(--color-cgraphx);
|
|
164
|
+
border-radius: var(--radius);
|
|
165
|
+
padding: 20px 24px;
|
|
166
|
+
margin: 0 0 16px;
|
|
167
|
+
}
|
|
168
|
+
.highlight p:last-child { margin-bottom: 0; }
|
|
169
|
+
|
|
170
|
+
/* Lists */
|
|
171
|
+
ul, ol {
|
|
172
|
+
padding-left: 24px;
|
|
173
|
+
margin: 0 0 16px;
|
|
174
|
+
}
|
|
175
|
+
li { margin-bottom: 6px; }
|
|
176
|
+
|
|
177
|
+
/* Footer */
|
|
178
|
+
footer {
|
|
179
|
+
margin-top: 80px;
|
|
180
|
+
padding: 30px 0;
|
|
181
|
+
border-top: 1px solid var(--color-border);
|
|
182
|
+
text-align: center;
|
|
183
|
+
color: var(--color-text-tertiary);
|
|
184
|
+
font-size: 13px;
|
|
185
|
+
}
|
|
186
|
+
footer p { margin: 0; }
|
|
187
|
+
|
|
188
|
+
/* docs/ 目录速查 */
|
|
189
|
+
.docs-tree {
|
|
190
|
+
background: var(--color-bg-subtle);
|
|
191
|
+
border: 1px solid var(--color-border);
|
|
192
|
+
border-left: 4px solid var(--color-cgraphx);
|
|
193
|
+
border-radius: var(--radius);
|
|
194
|
+
padding: 22px 26px;
|
|
195
|
+
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
|
196
|
+
font-size: 13.5px;
|
|
197
|
+
line-height: 1.8;
|
|
198
|
+
color: var(--color-text);
|
|
199
|
+
overflow-x: auto;
|
|
200
|
+
margin: 0 0 16px;
|
|
201
|
+
white-space: pre;
|
|
202
|
+
}
|
|
203
|
+
.docs-tree b {
|
|
204
|
+
font-weight: 600;
|
|
205
|
+
color: var(--color-primary-dark);
|
|
206
|
+
}
|
|
207
|
+
.docs-tree .skill {
|
|
208
|
+
color: var(--color-primary);
|
|
209
|
+
font-weight: 600;
|
|
210
|
+
}
|
|
211
|
+
.docs-tree .ann {
|
|
212
|
+
color: var(--color-text-tertiary);
|
|
213
|
+
}
|
|
214
|
+
.docs-tree .must {
|
|
215
|
+
color: #2e7d32;
|
|
216
|
+
font-weight: 600;
|
|
217
|
+
}
|
|
218
|
+
.docs-tree .opt {
|
|
219
|
+
color: #e65100;
|
|
220
|
+
font-weight: 600;
|
|
221
|
+
}
|
|
222
|
+
.docs-legend {
|
|
223
|
+
display: flex;
|
|
224
|
+
gap: 20px;
|
|
225
|
+
flex-wrap: wrap;
|
|
226
|
+
font-size: 13px;
|
|
227
|
+
color: var(--color-text-secondary);
|
|
228
|
+
margin: 0 0 20px;
|
|
229
|
+
}
|
|
230
|
+
.docs-legend span {
|
|
231
|
+
display: inline-flex;
|
|
232
|
+
align-items: center;
|
|
233
|
+
gap: 6px;
|
|
234
|
+
}
|
|
235
|
+
.docs-legend .dot {
|
|
236
|
+
display: inline-block;
|
|
237
|
+
width: 8px;
|
|
238
|
+
height: 8px;
|
|
239
|
+
border-radius: 50%;
|
|
240
|
+
}
|
|
241
|
+
.docs-legend .dot.must { background: #2e7d32; }
|
|
242
|
+
.docs-legend .dot.opt { background: #e65100; }
|
|
243
|
+
.docs-legend .dot.local { background: var(--color-cgraphx); }
|
|
244
|
+
|
|
245
|
+
/* Responsive */
|
|
246
|
+
@media (max-width: 768px) {
|
|
247
|
+
.container { padding: 0 18px; }
|
|
248
|
+
header { padding: 50px 0 30px; margin-bottom: 30px; }
|
|
249
|
+
header h1 { font-size: 28px; }
|
|
250
|
+
header .subtitle { font-size: 16px; }
|
|
251
|
+
h2 { font-size: 22px; }
|
|
252
|
+
body { font-size: 15px; }
|
|
253
|
+
.pipeline { padding: 20px; }
|
|
254
|
+
}
|
|
255
|
+
</style>
|
|
256
|
+
</head>
|
|
257
|
+
<body>
|
|
258
|
+
|
|
259
|
+
<div class="container">
|
|
260
|
+
|
|
261
|
+
<header>
|
|
262
|
+
<div class="eyebrow">cgraphx 安装与使用</div>
|
|
263
|
+
<h1>cgraphx 怎么用</h1>
|
|
264
|
+
<p class="subtitle">本地优先的代码智能 · 给 AI agent 用的代码图谱</p>
|
|
265
|
+
<p class="meta">最后更新:2026-07-13</p>
|
|
266
|
+
</header>
|
|
267
|
+
|
|
268
|
+
<section>
|
|
269
|
+
<h2>安装流程</h2>
|
|
270
|
+
|
|
271
|
+
<div class="pipeline">
|
|
272
|
+
<h4><span class="tag tag-cgraphx">cgraphx</span> 一次接入 · 三层就绪</h4>
|
|
273
|
+
|
|
274
|
+
<div class="phase">
|
|
275
|
+
<div class="phase-label">机器级 · 每机器一次</div>
|
|
276
|
+
<ul class="phase-list">
|
|
277
|
+
<li><code>npm install -g cgraphx</code> 装 CLI<em>(Node ≥ 20 且 < 25)</em></li>
|
|
278
|
+
</ul>
|
|
279
|
+
</div>
|
|
280
|
+
|
|
281
|
+
<div class="phase">
|
|
282
|
+
<div class="phase-label">项目级 · 每项目一次</div>
|
|
283
|
+
<ul class="phase-list">
|
|
284
|
+
<li><code>cd /your/project && cgraphx init</code> 建 <code>.cgraphx/</code> 代码图谱索引、开 watcher 自动增量同步</li>
|
|
285
|
+
<li><code>cgraphx install</code> 写 MCP 配置 + 部署 skills 模板到项目 <code>.claude/</code><em>(默认 local;想影响所有项目才用 <code>--location=global</code>)</em></li>
|
|
286
|
+
<li><code>/code-impact-init</code> 接手陌生项目时按需跑<em>(派子 agent 自动探索、建 <code>docs/knowledge/</code> 业务知识库)</em></li>
|
|
287
|
+
</ul>
|
|
288
|
+
</div>
|
|
289
|
+
|
|
290
|
+
<div class="phase">
|
|
291
|
+
<div class="phase-label">卸载 · 可选</div>
|
|
292
|
+
<ul class="phase-list">
|
|
293
|
+
<li><code>npm uninstall -g cgraphx</code><em>(preuninstall 钩子自动清所有 agent 的 MCP 配置)</em></li>
|
|
294
|
+
<li>删项目目录下 <code>.cgraphx/</code> 清索引数据</li>
|
|
295
|
+
</ul>
|
|
296
|
+
</div>
|
|
297
|
+
</div>
|
|
298
|
+
|
|
299
|
+
<div class="highlight">
|
|
300
|
+
<p><strong>装一次,自动维护</strong>——全局装 CLI,每个项目跑 <code>init</code> + <code>install</code> 就接入完成;之后 watcher 自动同步代码图谱、MCP 配置自动注入,你不需要主动跑命令。卸载也是一条命令。</p>
|
|
301
|
+
</div>
|
|
302
|
+
</section>
|
|
303
|
+
|
|
304
|
+
<section>
|
|
305
|
+
<h2>使用流程</h2>
|
|
306
|
+
|
|
307
|
+
<div class="pipeline">
|
|
308
|
+
<h4><span class="tag tag-cgraphx">cgraphx</span> 极简内核 · 按需扩展</h4>
|
|
309
|
+
|
|
310
|
+
<div class="phase">
|
|
311
|
+
<div class="phase-label">日常做需求 · 必经 2 步</div>
|
|
312
|
+
<ul class="phase-list">
|
|
313
|
+
<li><code>/clarify-requirements</code> 澄清意图、业务边界、技术边界</li>
|
|
314
|
+
<li><code>/implementation</code> 实现<em>(简单任务,主会话顺序做)</em>或 <code>/subagent-implement</code><em>(复杂多任务,派子 agent)</em></li>
|
|
315
|
+
</ul>
|
|
316
|
+
</div>
|
|
317
|
+
|
|
318
|
+
<div class="phase">
|
|
319
|
+
<div class="phase-label">日常做需求 · 复杂按需</div>
|
|
320
|
+
<ul class="phase-list">
|
|
321
|
+
<li><code>/write-prd</code> 写业务文档<em>(给业务方 / 领导确认)</em></li>
|
|
322
|
+
<li><code>/write-spec</code> 写技术规格<em>(归档业务行为 / 规则 / 接口 / 数据,作为 plan 的稳定输入)</em></li>
|
|
323
|
+
<li><code>/write-plan</code> 拆执行计划<em>(给 agent 执行)</em></li>
|
|
324
|
+
<li><code>/code-impact-markdown</code> 沉淀业务决策 / 概念到 <code>docs/knowledge/</code></li>
|
|
325
|
+
</ul>
|
|
326
|
+
</div>
|
|
327
|
+
|
|
328
|
+
<div class="phase">
|
|
329
|
+
<div class="phase-label">编码完成后 · 按需</div>
|
|
330
|
+
<ul class="phase-list">
|
|
331
|
+
<li><code>/write-api</code> 自动生成 bruno 测试接口<em>(识别新增接口 → 生成测试规格 + .bru + 多环境配置 + bruno.json,只造弹药不跑测试)</em></li>
|
|
332
|
+
<li><code>/run-api-test</code> 跑接口测试 + 核实写接口 DB 副作用 + 出报告<em>(指定需求或接口触发;写接口必须查 DB 验数据,HTTP 200 ≠ 通过;失败只报告不修不重跑)</em></li>
|
|
333
|
+
<li><code>/write-api-doc</code> 生成静态 HTML 接口文档<em>(与 write-api / run-api-test 独立并列)</em></li>
|
|
334
|
+
<li><code>/code-impact-docgen</code> 自测通过后合成 feature 设计文档</li>
|
|
335
|
+
</ul>
|
|
336
|
+
</div>
|
|
337
|
+
|
|
338
|
+
<div class="phase">
|
|
339
|
+
<div class="phase-label">工作回顾 · 按需</div>
|
|
340
|
+
<ul class="phase-list">
|
|
341
|
+
<li><code>/developer-timeline</code> 生成日报 / 周报 / 月报 / 阶段总结 / 交付汇报</li>
|
|
342
|
+
<li>直接问「我上周做了什么」「这个月干了啥」「X 是哪天做的」也能答</li>
|
|
343
|
+
<li><code>/code-impact-docgen</code> 从知识库合成面向人类阅读的业务 / 技术文档<em>(HTML 或 Markdown)</em></li>
|
|
344
|
+
</ul>
|
|
345
|
+
</div>
|
|
346
|
+
|
|
347
|
+
<div class="phase">
|
|
348
|
+
<div class="phase-label">背后 · agent 自动</div>
|
|
349
|
+
<ul class="phase-list">
|
|
350
|
+
<li>agent 经 <code>codegraph_explore</code> 自动查代码结构、调用链、影响半径<em>(你不用主动跑)</em></li>
|
|
351
|
+
<li>文件改动 → watcher 自动增量同步,无需手动 reindex</li>
|
|
352
|
+
<li><code>status</code> / <code>sync</code> / <code>explore</code> / <code>docs</code> / <code>db</code> / <code>timeline</code> 等子命令由 agent / skill 调用,人类日常不主动跑</li>
|
|
353
|
+
</ul>
|
|
354
|
+
</div>
|
|
355
|
+
|
|
356
|
+
<div class="phase">
|
|
357
|
+
<div class="phase-label">项目上下文 · agent 自动</div>
|
|
358
|
+
<ul class="phase-list">
|
|
359
|
+
<li><code>code-impact-api</code> agent 自动查 <code>docs/knowledge/</code> 业务决策 / 概念 / 历史教训</li>
|
|
360
|
+
<li><code>db-query</code> agent 自动查 MySQL / PostgreSQL 验证数据假设,沉淀 schema 知识到 <code>docs/schema-knowledge/</code></li>
|
|
361
|
+
</ul>
|
|
362
|
+
</div>
|
|
363
|
+
</div>
|
|
364
|
+
|
|
365
|
+
<div class="highlight">
|
|
366
|
+
<p><strong>日常默认 2 步</strong>——澄清 + 实现;复杂需求按需补 <code>prd</code> / <code>spec</code> / <code>plan</code> / 沉淀。<strong>cgraphx 在背后自动同步代码图谱、agent 自动查</strong>,你不需要主动跑命令。</p>
|
|
367
|
+
</div>
|
|
368
|
+
</section>
|
|
369
|
+
|
|
370
|
+
<section>
|
|
371
|
+
<h2>docs/ 目录速查</h2>
|
|
372
|
+
<p>翻文档时知道去哪儿找 —— 哪个目录由哪个 skill 自动维护。</p>
|
|
373
|
+
|
|
374
|
+
<div class="docs-legend">
|
|
375
|
+
<span><span class="dot must"></span>必有</span>
|
|
376
|
+
<span><span class="dot opt"></span>可选(按需)</span>
|
|
377
|
+
<span><span class="dot local"></span>本地测试相关</span>
|
|
378
|
+
</div>
|
|
379
|
+
|
|
380
|
+
<pre class="docs-tree"><b>docs/</b> <span class="ann"># 必有</span>
|
|
381
|
+
├── <b>bruno/</b> <span class="ann"># 本地,write-api + run-api-test 维护</span>
|
|
382
|
+
│ ├── bruno.json <span class="ann"># bruno app 识别整个 collection</span>
|
|
383
|
+
│ ├── <b>environments/</b>
|
|
384
|
+
│ │ ├── local.bru <span class="ann"># write-api 生成骨架,用户填 secret</span>
|
|
385
|
+
│ │ ├── staging.bru
|
|
386
|
+
│ │ └── production.bru
|
|
387
|
+
│ ├── <b>common/</b> <span class="ann"># 通用接口(登录 / 健康检查等)</span>
|
|
388
|
+
│ │ └── <接口名>/<场景>.bru
|
|
389
|
+
│ └── <b><服务名>/</b> <span class="ann"># 如 a-service / b-service</span>
|
|
390
|
+
│ └── <b><接口名>/</b> <span class="ann"># 接口跨 feature 复用,不绑 feature-id</span>
|
|
391
|
+
│ ├── <场景1>.bru <span class="ann"># 如 正常.bru</span>
|
|
392
|
+
│ └── <场景2>.bru <span class="ann"># 如 缺prodInstId.bru</span>
|
|
393
|
+
│
|
|
394
|
+
├── <b>features/</b> <span class="ann"># 必有,全流程 skills 维护</span>
|
|
395
|
+
│ └── <b><前缀>/</b> <span class="ann"># 前缀 = 需求/bug编号 + 名称,如 CRM-req19230-号百商品详情查询接口</span>
|
|
396
|
+
│ ├── <前缀>-需求文档.md <span class="skill">/write-prd</span>
|
|
397
|
+
│ ├── <前缀>-spec.md <span class="must">必有</span> <span class="skill">/write-spec</span>
|
|
398
|
+
│ ├── <b>plan/</b> <span class="opt">可选</span> <span class="ann">(按复杂度)</span> <span class="skill">/write-plan</span>
|
|
399
|
+
│ ├── <前缀>-api-spec.md <span class="skill">/write-api</span>
|
|
400
|
+
│ ├── <前缀>-测试报告.md <span class="skill">/run-api-test</span>
|
|
401
|
+
│ ├── <前缀>-测试验证.jsonl <span class="skill">/run-api-test</span>
|
|
402
|
+
│ └── <前缀>-设计文档.md <span class="skill">/code-impact-docgen</span>
|
|
403
|
+
│
|
|
404
|
+
├── <b>knowledge/</b> <span class="ann"># 公共必选,业务知识库</span>
|
|
405
|
+
│ <span class="skill">/code-impact-init</span> <span class="ann">批量写</span>
|
|
406
|
+
│ <span class="skill">/code-impact-markdown</span> <span class="ann">按需写</span>
|
|
407
|
+
│
|
|
408
|
+
└── <b>schema-knowledge/</b> <span class="opt">可选</span> <span class="ann">DB schema 知识</span>
|
|
409
|
+
<span class="skill">/db-query</span> <span class="ann">自动写</span>
|
|
410
|
+
</pre>
|
|
411
|
+
|
|
412
|
+
<div class="highlight">
|
|
413
|
+
<p><strong>两个核心目录</strong>——<code>docs/features/</code> 是单次需求工作目录(必须有 spec.md),<code>docs/knowledge/</code> 是跨需求共享的业务知识库。<strong>bruno/ 和 schema-knowledge/ 按需出现</strong>,只在跑接口测试 / 查 DB 时产生。</p>
|
|
414
|
+
</div>
|
|
415
|
+
</section>
|
|
416
|
+
|
|
417
|
+
<footer>
|
|
418
|
+
<p>cgraphx 使用说明 · 2026-07-13</p>
|
|
419
|
+
</footer>
|
|
420
|
+
|
|
421
|
+
</div>
|
|
422
|
+
|
|
423
|
+
</body>
|
|
424
|
+
</html>
|