claude-apprentice 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/CHANGELOG.md +112 -0
- package/LICENSE +21 -0
- package/README.md +311 -0
- package/bin/apprentice.js +196 -0
- package/install.sh +92 -0
- package/package.json +38 -0
- package/templates/CLAUDE.md +60 -0
- package/templates/commands/backend.md +18 -0
- package/templates/commands/frontend.md +18 -0
- package/templates/commands/fullstack.md +18 -0
- package/templates/commands/scan-todos.md +123 -0
- package/templates/commands/spec.md +88 -0
- package/templates/memory/architecture.md +55 -0
- package/templates/memory/backend-standards.md +84 -0
- package/templates/memory/business-logic.md +59 -0
- package/templates/memory/frontend-standards.md +89 -0
- package/templates/memory/issues.md +34 -0
- package/templates/memory/learned-lessons.md +78 -0
- package/templates/memory/superpowers-config.md +46 -0
- package/templates/rules/INDEX.md +63 -0
- package/templates/rules/coding-standards.md +25 -0
- package/templates/rules/git-safety.md +9 -0
- package/templates/rules/superpowers-workflow.md +15 -0
- package/templates/scripts/auto-review.sh +77 -0
- package/templates/scripts/health-check.sh +189 -0
- package/templates/scripts/init.sh +2476 -0
- package/templates/settings.json +23 -0
- package/templates/skills/backend-workflow.md +87 -0
- package/templates/skills/code-review/SKILL.md +253 -0
- package/templates/skills/code-review/standards.md +189 -0
- package/templates/skills/frontend-workflow.md +75 -0
- package/templates/skills/fullstack-workflow.md +121 -0
- package/templates/specs/SPEC-GUIDE.md +99 -0
- package/templates/specs/active/README.md +7 -0
- package/templates/specs/archived/README.md +10 -0
- package/templates/usage-guides/README.md +84 -0
- package/templates/usage-guides/bottleneck-navigation.md +146 -0
- package/templates/usage-guides/usage-guide-v5.8.md +1261 -0
- package/templates/workflow/WORKFLOW-GUIDE.md +78 -0
package/install.sh
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# ── claude-apprentice 一键安装脚本 ────────────────────────────────────
|
|
5
|
+
# 用法:
|
|
6
|
+
# curl -fsSL https://raw.githubusercontent.com/shuoyue/claude-apprentice/main/install.sh | bash
|
|
7
|
+
# curl -fsSL https://raw.githubusercontent.com/shuoyue/claude-apprentice/main/install.sh | bash -s -- v1.0.0
|
|
8
|
+
# ─────────────────────────────────────────────────────────────────────
|
|
9
|
+
|
|
10
|
+
VERSION="${1:-latest}"
|
|
11
|
+
TARGET="$(pwd)"
|
|
12
|
+
REPO_RAW="https://raw.githubusercontent.com/shuoyue/claude-apprentice"
|
|
13
|
+
REPO_GIT="https://github.com/shuoyue/claude-apprentice.git"
|
|
14
|
+
BRANCH="main"
|
|
15
|
+
|
|
16
|
+
if [ "$VERSION" != "latest" ]; then
|
|
17
|
+
BRANCH="$VERSION"
|
|
18
|
+
fi
|
|
19
|
+
|
|
20
|
+
echo ""
|
|
21
|
+
echo " claude-apprentice Installer"
|
|
22
|
+
echo " 版本: $VERSION"
|
|
23
|
+
echo " 目标: $TARGET"
|
|
24
|
+
echo ""
|
|
25
|
+
|
|
26
|
+
# ── 检查依赖 ──────────────────────────────────────────────────────────
|
|
27
|
+
|
|
28
|
+
command -v curl >/dev/null 2>&1 || { echo " ✗ 需要 curl"; exit 1; }
|
|
29
|
+
|
|
30
|
+
# ── 下载模板文件 ──────────────────────────────────────────────────────
|
|
31
|
+
|
|
32
|
+
CLAUDE_DIR="$TARGET/.claude"
|
|
33
|
+
|
|
34
|
+
echo " 下载模板文件..."
|
|
35
|
+
|
|
36
|
+
# 方法: 用 git clone(如果可用)或 curl 逐个下载
|
|
37
|
+
if command -v git >/dev/null 2>&1; then
|
|
38
|
+
TMP_DIR=$(mktemp -d)
|
|
39
|
+
git clone --depth 1 --branch "$BRANCH" \
|
|
40
|
+
"$REPO_GIT" "$TMP_DIR" 2>/dev/null || {
|
|
41
|
+
echo " ✗ 克隆失败,请检查仓库地址和版本号"
|
|
42
|
+
rm -rf "$TMP_DIR"
|
|
43
|
+
exit 1
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
# 复制 templates/ 到 .claude/(已有文件不覆盖)
|
|
47
|
+
if [ -d "$TMP_DIR/templates" ]; then
|
|
48
|
+
mkdir -p "$CLAUDE_DIR"
|
|
49
|
+
# 用 cp -n(不覆盖)复制文件
|
|
50
|
+
cp -rn "$TMP_DIR/templates/"* "$CLAUDE_DIR/" 2>/dev/null || true
|
|
51
|
+
cp -rn "$TMP_DIR/templates/."* "$CLAUDE_DIR/" 2>/dev/null || true
|
|
52
|
+
|
|
53
|
+
# 复制 CLAUDE.md 到项目根目录
|
|
54
|
+
if [ -f "$TMP_DIR/templates/CLAUDE.md" ] && [ ! -f "$TARGET/CLAUDE.md" ]; then
|
|
55
|
+
cp "$TMP_DIR/templates/CLAUDE.md" "$TARGET/CLAUDE.md"
|
|
56
|
+
fi
|
|
57
|
+
fi
|
|
58
|
+
|
|
59
|
+
rm -rf "$TMP_DIR"
|
|
60
|
+
|
|
61
|
+
else
|
|
62
|
+
echo " ✗ 需要 git 来下载模板文件"
|
|
63
|
+
echo " 请安装 git 或使用 npx 方式: npx claude-apprentice init"
|
|
64
|
+
exit 1
|
|
65
|
+
fi
|
|
66
|
+
|
|
67
|
+
# ── 创建必要目录 ──────────────────────────────────────────────────────
|
|
68
|
+
|
|
69
|
+
mkdir -p "$CLAUDE_DIR/reports"
|
|
70
|
+
|
|
71
|
+
# ── 运行 init.sh ─────────────────────────────────────────────────────
|
|
72
|
+
|
|
73
|
+
INIT_SH="$CLAUDE_DIR/scripts/init.sh"
|
|
74
|
+
if [ -f "$INIT_SH" ]; then
|
|
75
|
+
echo ""
|
|
76
|
+
echo " 执行 init.sh ..."
|
|
77
|
+
echo ""
|
|
78
|
+
bash "$INIT_SH" || true
|
|
79
|
+
fi
|
|
80
|
+
|
|
81
|
+
# ── 完成 ──────────────────────────────────────────────────────────────
|
|
82
|
+
|
|
83
|
+
echo ""
|
|
84
|
+
echo " ✓ 安装完成!"
|
|
85
|
+
echo ""
|
|
86
|
+
echo " 下一步:"
|
|
87
|
+
echo " 1. 检查 CLAUDE.md 中的技术栈信息"
|
|
88
|
+
echo " 2. 补充 .claude/memory/business-logic.md"
|
|
89
|
+
echo " 3. 运行 apprentice doctor 验证"
|
|
90
|
+
echo ""
|
|
91
|
+
echo " 文档: https://github.com/shuoyue/claude-apprentice"
|
|
92
|
+
echo ""
|
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "claude-apprentice",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Train Claude Code into a reliable apprentice — spec-driven, memory-backed, code-reviewed.",
|
|
5
|
+
"bin": {
|
|
6
|
+
"apprentice": "./bin/apprentice.js"
|
|
7
|
+
},
|
|
8
|
+
"files": [
|
|
9
|
+
"bin",
|
|
10
|
+
"templates",
|
|
11
|
+
"install.sh",
|
|
12
|
+
"README.md",
|
|
13
|
+
"CHANGELOG.md",
|
|
14
|
+
"LICENSE"
|
|
15
|
+
],
|
|
16
|
+
"engines": {
|
|
17
|
+
"node": ">=14"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"claude-code",
|
|
21
|
+
"ai-engineering",
|
|
22
|
+
"harness",
|
|
23
|
+
"spec-driven",
|
|
24
|
+
"code-review",
|
|
25
|
+
"apprentice",
|
|
26
|
+
"agent",
|
|
27
|
+
"cli"
|
|
28
|
+
],
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"repository": {
|
|
31
|
+
"type": "git",
|
|
32
|
+
"url": "https://github.com/shuoyue/claude-apprentice.git"
|
|
33
|
+
},
|
|
34
|
+
"homepage": "https://github.com/shuoyue/claude-apprentice#readme",
|
|
35
|
+
"bugs": {
|
|
36
|
+
"url": "https://github.com/shuoyue/claude-apprentice/issues"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
**体系版本:** v1.0 | **更新日期:** 2026-06-22
|
|
4
|
+
|
|
5
|
+
## 技术栈
|
|
6
|
+
|
|
7
|
+
- 前端:待填写
|
|
8
|
+
- 后端:待填写
|
|
9
|
+
- 数据库:待填写
|
|
10
|
+
|
|
11
|
+
## 核心原则:原生优先
|
|
12
|
+
|
|
13
|
+
简单任务(改变量、修 bug、写工具函数)直接说需求,不走 workflow。
|
|
14
|
+
复杂任务(新功能模块、多文件变更)才上 workflow 和 Spec。
|
|
15
|
+
|
|
16
|
+
> 90% 的场景用原生 Claude Code 就够了。过度工程化是最大的浪费。
|
|
17
|
+
|
|
18
|
+
## 开发铁律
|
|
19
|
+
|
|
20
|
+
1. **没设计不写代码** — 动手前先确认文件、范围、方案
|
|
21
|
+
2. **没测试不写代码** — 先写失败测试,再写实现
|
|
22
|
+
3. **没验证不说完成** — 必须运行验证命令并贴出结果
|
|
23
|
+
|
|
24
|
+
## 模式切换
|
|
25
|
+
|
|
26
|
+
| 命令 | 用途 |
|
|
27
|
+
|------|------|
|
|
28
|
+
| `/frontend` | 前端开发 |
|
|
29
|
+
| `/backend` | 后端开发 |
|
|
30
|
+
| `/fullstack` | 全栈协调 |
|
|
31
|
+
|
|
32
|
+
## 核心约束
|
|
33
|
+
|
|
34
|
+
- 后端分层:Controller → Service → DAO,禁止跨层
|
|
35
|
+
- 前端 API 调用走 `api/` 模块
|
|
36
|
+
- RESTful 统一响应:`{ code, message, data, timestamp }`
|
|
37
|
+
- 所有外部输入必须校验,不引入安全漏洞
|
|
38
|
+
|
|
39
|
+
## 文档地图
|
|
40
|
+
|
|
41
|
+
| 目录 | 用途 | 何时读 |
|
|
42
|
+
|------|------|--------|
|
|
43
|
+
| `.claude/rules/` | 自动触发的编码规则(索引见 `rules/INDEX.md`) | 编辑代码时自动生效 |
|
|
44
|
+
| `.claude/skills/` | 完整工作流编排 | 走 workflow 时按需加载 |
|
|
45
|
+
| `.claude/memory/` | 项目知识库(架构、规范、业务,含 `learned-lessons.md` 错误登记册) | 需要项目上下文时引用 |
|
|
46
|
+
| `.claude/specs/` | 功能规格文档 | 中等+复杂任务时创建和引用 |
|
|
47
|
+
| `.claude/scripts/` | 初始化和验证脚本 | 新项目接入时使用 |
|
|
48
|
+
| `.claude/reports/` | 代码评审报告输出 | 评审完成后自动生成 |
|
|
49
|
+
| `.claude/usage-guides/` | 操作手册(v1.0) | 查阅体系用法时引用 |
|
|
50
|
+
| `.claude/usage-guides/bottleneck-navigation.md` | **瓶颈定位指南** | AI 效果不好时按层排查 |
|
|
51
|
+
|
|
52
|
+
## 复杂度分级
|
|
53
|
+
|
|
54
|
+
| 级别 | 定义 | 策略 | Prompt | Context | Harness | Loop |
|
|
55
|
+
|------|------|------|--------|---------|---------|------|
|
|
56
|
+
| 简单 | 单文件修改,< 30 分钟 | 原生,不走 workflow | 基础描述 | 当前文件 | rules 自动触发 | 不需要 |
|
|
57
|
+
| 中等 | 新组件/新接口,30 分钟 - 2 小时 | brainstorming + spec + TDD | 完整描述 | + 相关 spec | + 验证脚本 | 通常不需要 |
|
|
58
|
+
| 复杂 | 新功能模块,> 2 小时 | 完整 workflow + spec + worktree + review | 完整描述 | 全量 spec | 完整 workflow | 探索试点 |
|
|
59
|
+
|
|
60
|
+
> AI 效果不好时,先按 [瓶颈定位指南](.claude/usage-guides/bottleneck-navigation.md) 排查瓶颈在哪一层,不要一上来就加 rule。
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
切换到后端开发模式。从现在起,你的工作重点是 API 接口设计、数据库操作、业务逻辑、服务治理。
|
|
2
|
+
|
|
3
|
+
## 约束
|
|
4
|
+
|
|
5
|
+
- 代码风格遵循 `.claude/memory/backend-standards.md`
|
|
6
|
+
- 严格分层架构:Controller → Service → DAO/Mapper,禁止跨层调用
|
|
7
|
+
- API 使用 RESTful 风格,统一响应格式 `{ code, message, data, timestamp }`
|
|
8
|
+
- 表名小写下划线,必备字段 `id, created_at, updated_at`
|
|
9
|
+
- 所有外部输入必须校验,防止 SQL 注入和 XSS
|
|
10
|
+
|
|
11
|
+
## 下一步
|
|
12
|
+
|
|
13
|
+
- **简单任务**(修接口/加字段):直接描述需求即可
|
|
14
|
+
- **中等任务**(新接口/新表):说"帮我设计一下",会触发 brainstorming
|
|
15
|
+
- **复杂任务**(新模块/重构):说"帮我规划",会走完整流程
|
|
16
|
+
- **完整流程**:调用 `/backend-workflow` 走结构化开发流水线
|
|
17
|
+
|
|
18
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
切换到前端开发模式。从现在起,你的工作重点是 UI 组件开发、样式调整、状态管理、前端性能优化。
|
|
2
|
+
|
|
3
|
+
## 约束
|
|
4
|
+
|
|
5
|
+
- 代码风格遵循 `.claude/memory/frontend-standards.md`
|
|
6
|
+
- API 调用统一走 `api/` 目录模块,不直接写 HTTP 请求
|
|
7
|
+
- 组件保持单一职责,PascalCase 命名,新增前先搜索已有组件
|
|
8
|
+
- 处理好加载/错误/空状态三种 UI 反馈
|
|
9
|
+
- ESLint + Prettier 规则不可绕过
|
|
10
|
+
|
|
11
|
+
## 下一步
|
|
12
|
+
|
|
13
|
+
- **简单任务**(改样式/改文案):直接描述需求即可
|
|
14
|
+
- **中等任务**(新组件/新页面):说"帮我设计一下",会触发 brainstorming
|
|
15
|
+
- **复杂任务**(新功能模块):说"帮我规划",会走完整流程
|
|
16
|
+
- **完整流程**:调用 `/frontend-workflow` 走结构化开发流水线
|
|
17
|
+
|
|
18
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
切换到全栈协调模式。从现在起,你需要同时关注前后端一致性和完整数据流。
|
|
2
|
+
|
|
3
|
+
## 约束
|
|
4
|
+
|
|
5
|
+
- 后端遵循 `.claude/memory/backend-standards.md`,前端遵循 `.claude/memory/frontend-standards.md`
|
|
6
|
+
- 前后端数据格式必须统一,接口契约必须一致
|
|
7
|
+
- 开发顺序:数据库 → 后端 API → 前端页面,自底向上
|
|
8
|
+
- 前端 API 调用必须与后端接口定义匹配(字段名、类型、路径)
|
|
9
|
+
- 错误处理链路完整:数据库异常 → 后端异常处理 → 前端错误展示
|
|
10
|
+
|
|
11
|
+
## 下一步
|
|
12
|
+
|
|
13
|
+
- **简单任务**(改字段/修 bug):直接描述需求即可
|
|
14
|
+
- **中等任务**(新页面+新接口):说"帮我设计一下",会触发 brainstorming
|
|
15
|
+
- **复杂任务**(新功能模块):说"帮我规划",会走 brainstorming → planning → TDD 完整流程
|
|
16
|
+
- **完整流程**:调用 `/fullstack-workflow` 走结构化全栈开发流水线
|
|
17
|
+
|
|
18
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 扫描项目中的 TODO/FIXME 并归类,试点 Loop 层自动化
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# 扫描 TODO/FIXME
|
|
6
|
+
|
|
7
|
+
你现在进入 **Loop 试点模式**,扫描项目里的 TODO/FIXME,产出可执行清单。这是 Loop 层的第一个试点,验证"AI 自己驱动重复性任务"是否可行。
|
|
8
|
+
|
|
9
|
+
## 你要做的事
|
|
10
|
+
|
|
11
|
+
1. **扫描范围:** 当前项目根目录下所有源代码文件
|
|
12
|
+
2. **排除目录(避免噪声):**
|
|
13
|
+
- `node_modules` / `dist` / `target` / `build` / `.git`(生成/依赖目录)
|
|
14
|
+
- `.claude/reports`(本扫描的输出目录)
|
|
15
|
+
- **`.claude/commands` / `.claude/usage-guides`**(命令文档和操作手册自身含 `TODO`/`FIXME` 关键字,会造成自指噪声 — 这是 v1 试点踩过的坑)
|
|
16
|
+
3. **匹配模式:** `TODO`、`FIXME`、`XXX`、`HACK`、`@deprecated`、`待实现`、`待补充`、`未完成`
|
|
17
|
+
4. **归类维度:**
|
|
18
|
+
- 按紧急度:FIXME > TODO > 其他
|
|
19
|
+
- 按文件:统计每个文件的待办密度
|
|
20
|
+
- 按内容关键词:是否含"性能""安全""并发""测试""幂等"等关键字
|
|
21
|
+
|
|
22
|
+
## 自指过滤(重要)
|
|
23
|
+
|
|
24
|
+
扫描类命令容易"扫到自己头上"。即使排除了上面的目录,仍可能遇到:
|
|
25
|
+
|
|
26
|
+
- 测试 fixture / 示例代码 里的关键字
|
|
27
|
+
- 文档引用其他命令时提到的关键字
|
|
28
|
+
- README/变更日志里描述命令时用到的关键字
|
|
29
|
+
|
|
30
|
+
**判定规则:** 如果一条匹配明显是文档/示例性质(不是真实待办),归类为**文档自指噪声**,不算真实待办,但要在报告里单独说明(这是工程改进的信号,不是无价值数据)。
|
|
31
|
+
|
|
32
|
+
## 输出格式
|
|
33
|
+
|
|
34
|
+
根据真实待办数选择模板:
|
|
35
|
+
|
|
36
|
+
### 情况 A:真实待办 > 0
|
|
37
|
+
|
|
38
|
+
产出 Markdown 报告到 `.claude/reports/todo-scan-{YYYYMMDD}.md`,结构:
|
|
39
|
+
|
|
40
|
+
```markdown
|
|
41
|
+
# TODO/FIXME 扫描报告
|
|
42
|
+
|
|
43
|
+
**扫描时间:** {当前日期}
|
|
44
|
+
**扫描范围:** {根目录}
|
|
45
|
+
**文件总数:** {n}
|
|
46
|
+
**真实待办:** {n}(FIXME: {n}, TODO: {n}, 其他: {n})
|
|
47
|
+
**文档自指噪声:** {n} 条(已从真实待办中扣除)
|
|
48
|
+
|
|
49
|
+
## 优先处理建议(Top 5)
|
|
50
|
+
|
|
51
|
+
| # | 文件 | 行号 | 类型 | 内容 | 建议优先级 |
|
|
52
|
+
|---|------|------|------|------|-----------|
|
|
53
|
+
| 1 | ... | ... | FIXME | ... | 高 |
|
|
54
|
+
|
|
55
|
+
## 按文件分布(待办密度 Top 10)
|
|
56
|
+
|
|
57
|
+
| 文件 | 待办数 | 主要类型 |
|
|
58
|
+
|------|--------|---------|
|
|
59
|
+
|
|
60
|
+
## 按关键字聚类
|
|
61
|
+
|
|
62
|
+
- 性能相关: {n} 条
|
|
63
|
+
- 安全相关: {n} 条
|
|
64
|
+
- 测试相关: {n} 条
|
|
65
|
+
- 并发/幂等: {n} 条
|
|
66
|
+
- 其他: {n} 条
|
|
67
|
+
|
|
68
|
+
## 下一步建议
|
|
69
|
+
|
|
70
|
+
- 立即处理: {列出 FIXME}
|
|
71
|
+
- 本周处理: {列出带优先级的 TODO}
|
|
72
|
+
- 可沉淀为 rule: {如果是"AI 老忘的事",建议加到 rules/}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### 情况 B:真实待办 = 0(全部是噪声或目录无源代码)
|
|
76
|
+
|
|
77
|
+
用**简化模板**,重点是反思而非清单:
|
|
78
|
+
|
|
79
|
+
```markdown
|
|
80
|
+
# TODO/FIXME 扫描报告
|
|
81
|
+
|
|
82
|
+
**扫描时间:** {当前日期}
|
|
83
|
+
**扫描范围:** {根目录}
|
|
84
|
+
**文件总数:** {n}
|
|
85
|
+
**真实待办:** 0
|
|
86
|
+
**文档自指噪声:** {n} 条
|
|
87
|
+
|
|
88
|
+
## 关键发现
|
|
89
|
+
|
|
90
|
+
{说明为什么真实待办为 0:目录性质?代码很干净?扫描范围错?}
|
|
91
|
+
|
|
92
|
+
## 噪声来源(如有)
|
|
93
|
+
|
|
94
|
+
| 文件 | 出现行 | 性质 |
|
|
95
|
+
|------|--------|------|
|
|
96
|
+
|
|
97
|
+
## 下一步建议
|
|
98
|
+
|
|
99
|
+
- {根据情况给建议:换目录跑?改进命令?配 cron?}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## 不要做的事
|
|
103
|
+
|
|
104
|
+
- ❌ 不要修改任何源代码
|
|
105
|
+
- ❌ 不要建议具体修复方案(只归类,不修)
|
|
106
|
+
- ❌ 不要扫描 `node_modules` / `dist` / `target` 等生成目录
|
|
107
|
+
- ❌ 不要把"待办为 0"当成问题 — 这只是扫描,不是整改
|
|
108
|
+
- ❌ **不要把文档自指噪声当成真实待办**(v1 试点踩过的坑)
|
|
109
|
+
|
|
110
|
+
## 试点意义
|
|
111
|
+
|
|
112
|
+
这是 Loop 层的第一个试点。验证三件事:
|
|
113
|
+
|
|
114
|
+
1. AI 能否标准化地产出报告(可重复性)
|
|
115
|
+
2. 报告是否真的有用(用户价值)
|
|
116
|
+
3. 是否值得未来配 cron 定时跑(自动化潜力)
|
|
117
|
+
|
|
118
|
+
跑完报告后,简单总结你的观察:这次扫描有什么意外发现?有没有反复出现的"AI 老忘的事"值得沉淀成 rule?
|
|
119
|
+
|
|
120
|
+
## 版本历史
|
|
121
|
+
|
|
122
|
+
- **v1**(2026-06-22):初版。在体系目录跑试点,发现自指噪声问题(12 条匹配全是文档自身)
|
|
123
|
+
- **v2**(2026-06-22):基于 v1 发现改进 — 排除目录加 `.claude/commands` 和 `.claude/usage-guides`;加自指过滤判定规则;报告模板分情况 A/B
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
强制进入 Spec 模式:把模糊需求转化为结构化规格文档,作为团队和 AI 共享的唯一真相来源。
|
|
2
|
+
|
|
3
|
+
## 触发场景
|
|
4
|
+
|
|
5
|
+
- 只想先把需求理清楚,不想立刻动手编码
|
|
6
|
+
- 多人协作时先对齐需求再分发任务
|
|
7
|
+
- 想把 spec 作为给其他 AI 会话/同事的需求文档
|
|
8
|
+
- 不信任 AI 的复杂度判断,要强制产出 spec
|
|
9
|
+
|
|
10
|
+
## 执行流程
|
|
11
|
+
|
|
12
|
+
### 步骤 1:读取规范
|
|
13
|
+
|
|
14
|
+
读取 `.claude/specs/SPEC-GUIDE.md`,确认 spec 文件格式和生命周期定义。
|
|
15
|
+
|
|
16
|
+
### 步骤 2:需求澄清(必须完成,不得跳过)
|
|
17
|
+
|
|
18
|
+
通过苏格拉底式对话澄清以下内容(按需提问,不要一次全部问完):
|
|
19
|
+
|
|
20
|
+
- **目标**:这个功能要解决什么问题?谁是使用者?
|
|
21
|
+
- **范围**:包含什么、不包含什么?边界在哪里?
|
|
22
|
+
- **接口**:涉及哪些 API?输入输出是什么?
|
|
23
|
+
- **数据**:涉及哪些表/字段/索引?有无迁移?
|
|
24
|
+
- **约束**:硬性约束(性能、安全、幂等、并发、兼容性)
|
|
25
|
+
- **验收**:怎样才算完成?可验证的标准是什么?
|
|
26
|
+
|
|
27
|
+
如果用户在 `$ARGUMENTS` 中已经提供了足够信息,可以直接进入步骤 3,但要显式列出"我理解的关键点"让用户确认。
|
|
28
|
+
|
|
29
|
+
### 步骤 3:产出 spec 文件
|
|
30
|
+
|
|
31
|
+
在 `.claude/specs/active/` 下创建 `[feature-name].md`,使用 kebab-case 命名。文件必须包含 `SPEC-GUIDE.md` 中定义的完整结构:
|
|
32
|
+
|
|
33
|
+
```markdown
|
|
34
|
+
# [功能名称] 规格
|
|
35
|
+
|
|
36
|
+
## 状态
|
|
37
|
+
Proposed
|
|
38
|
+
|
|
39
|
+
## 需求概述
|
|
40
|
+
[一句话描述]
|
|
41
|
+
|
|
42
|
+
## 涉及文件
|
|
43
|
+
- 新增:[路径列表]
|
|
44
|
+
- 修改:[路径列表]
|
|
45
|
+
|
|
46
|
+
## 接口定义(如涉及 API)
|
|
47
|
+
## 数据模型变更(如涉及数据库)
|
|
48
|
+
## 约束条件
|
|
49
|
+
## 验收标准
|
|
50
|
+
## 变更记录
|
|
51
|
+
| 日期 | 变更内容 |
|
|
52
|
+
|------|---------|
|
|
53
|
+
| YYYY-MM-DD | 初始提案 |
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 步骤 4:等待用户确认
|
|
57
|
+
|
|
58
|
+
明确告知用户 spec 已创建,**不要主动进入实施阶段**。提示用户:
|
|
59
|
+
|
|
60
|
+
- "请确认 spec 内容,或指出需要调整的部分"
|
|
61
|
+
- "确认后说'开始实现',我会把状态改为 Applied 并进入 workflow"
|
|
62
|
+
|
|
63
|
+
### 步骤 5:确认后
|
|
64
|
+
|
|
65
|
+
- 用户确认 → 状态改为 `Applied`
|
|
66
|
+
- 用户要求修改 → 更新 spec 的"变更记录"表(Delta Spec 原则,不重写整个文档)
|
|
67
|
+
- 用户说"开始实现" → 进入对应 workflow(根据技术栈调用 `/backend` / `/frontend` / `/fullstack`)
|
|
68
|
+
|
|
69
|
+
## 关键约束
|
|
70
|
+
|
|
71
|
+
- **不得跳过澄清直接写 spec**:本命令的核心价值就是把需求理清
|
|
72
|
+
- **不得在 spec 阶段写代码**:spec 模式只产出文档,不产出实现
|
|
73
|
+
- **必须遵循 Delta Spec 原则**:每次修改追加到变更记录,不重写整个文档
|
|
74
|
+
- **必须使用 kebab-case 命名**:如 `user-points-credit.md`,不用空格或下划线
|
|
75
|
+
- **必须读取 SPEC-GUIDE.md**:每次执行都要读,防止格式漂移
|
|
76
|
+
|
|
77
|
+
## 与 workflow 的区别
|
|
78
|
+
|
|
79
|
+
| 入口 | 行为 |
|
|
80
|
+
|------|------|
|
|
81
|
+
| `/spec <需求>` | 只产出 spec 文件,不进入实现 |
|
|
82
|
+
| `/backend` `/frontend` `/fullstack` | 走完整 workflow(spec + 实现 + 验证 + 归档) |
|
|
83
|
+
|
|
84
|
+
`/spec` 是"先把事说清",workflow 是"说清后把事做完"。
|
|
85
|
+
|
|
86
|
+
## 输入
|
|
87
|
+
|
|
88
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# 项目架构文档
|
|
2
|
+
|
|
3
|
+
## 系统概述
|
|
4
|
+
|
|
5
|
+
[在此描述项目的主要功能和目标]
|
|
6
|
+
|
|
7
|
+
## 技术架构
|
|
8
|
+
|
|
9
|
+
### 整体架构
|
|
10
|
+
[描述系统的分层架构、模块划分]
|
|
11
|
+
|
|
12
|
+
### 技术栈
|
|
13
|
+
|
|
14
|
+
#### 前端技术栈
|
|
15
|
+
- 框架:[Vue/React/Angular等]
|
|
16
|
+
- 状态管理:[Vuex/Redux等]
|
|
17
|
+
- 构建工具:[Vite/Webpack等]
|
|
18
|
+
|
|
19
|
+
#### 后端技术栈
|
|
20
|
+
- 语言:[Java/Go/Python等]
|
|
21
|
+
- 框架:[SpringBoot/Gin/FastAPI等]
|
|
22
|
+
- 数据库:[MySQL/PostgreSQL等]
|
|
23
|
+
- 中间件:[Redis/RabbitMQ等]
|
|
24
|
+
|
|
25
|
+
## 目录结构
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
[项目根目录]/
|
|
29
|
+
├── frontend/ # 前端代码
|
|
30
|
+
│ ├── src/
|
|
31
|
+
│ │ ├── components/ # 组件
|
|
32
|
+
│ │ ├── views/ # 页面
|
|
33
|
+
│ │ └── api/ # API调用
|
|
34
|
+
│ └── package.json
|
|
35
|
+
├── backend/ # 后端代码
|
|
36
|
+
│ ├── src/main/java/
|
|
37
|
+
│ │ ├── controller/ # 控制器
|
|
38
|
+
│ │ ├── service/ # 服务层
|
|
39
|
+
│ │ └── dao/ # 数据访问层
|
|
40
|
+
│ └── pom.xml
|
|
41
|
+
└── docs/ # 文档
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## 模块依赖关系
|
|
45
|
+
|
|
46
|
+
[描述各模块之间的依赖关系]
|
|
47
|
+
|
|
48
|
+
## 部署架构
|
|
49
|
+
|
|
50
|
+
[描述系统的部署方式、环境配置等]
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
**最后更新:** 2026-05-18
|
|
55
|
+
**维护者:** [填写]
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# 后端开发规范
|
|
2
|
+
|
|
3
|
+
## API设计规范
|
|
4
|
+
|
|
5
|
+
### RESTful API 设计原则
|
|
6
|
+
|
|
7
|
+
| 方法 | 路径 | 说明 |
|
|
8
|
+
|------|------|------|
|
|
9
|
+
| GET | /api/resources | 获取列表 |
|
|
10
|
+
| GET | /api/resources/:id | 获取详情 |
|
|
11
|
+
| POST | /api/resources | 创建资源 |
|
|
12
|
+
| PUT | /api/resources/:id | 更新资源 |
|
|
13
|
+
| DELETE | /api/resources/:id | 删除资源 |
|
|
14
|
+
|
|
15
|
+
### 接口响应格式
|
|
16
|
+
```json
|
|
17
|
+
{
|
|
18
|
+
"code": 200,
|
|
19
|
+
"message": "success",
|
|
20
|
+
"data": {},
|
|
21
|
+
"timestamp": 1234567890
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## 代码分层规范
|
|
26
|
+
|
|
27
|
+
### Controller 层
|
|
28
|
+
- 职责:接收请求、参数校验、调用Service、返回响应
|
|
29
|
+
- 命名:*Controller.java
|
|
30
|
+
|
|
31
|
+
### Service 层
|
|
32
|
+
- 职责:业务逻辑处理
|
|
33
|
+
- 命名:*Service.java, *ServiceImpl.java
|
|
34
|
+
|
|
35
|
+
### DAO/Mapper 层
|
|
36
|
+
- 职责:数据访问
|
|
37
|
+
- 命名:*Mapper.java, *Mapper.xml
|
|
38
|
+
|
|
39
|
+
## 数据库规范
|
|
40
|
+
|
|
41
|
+
### 表命名
|
|
42
|
+
- 小写字母 + 下划线:user_profile
|
|
43
|
+
|
|
44
|
+
### 字段命名
|
|
45
|
+
- 小写字母 + 下划线:created_at
|
|
46
|
+
|
|
47
|
+
### 必备字段
|
|
48
|
+
- id: 主键
|
|
49
|
+
- created_at: 创建时间
|
|
50
|
+
- updated_at: 更新时间
|
|
51
|
+
- is_deleted: 逻辑删除标记
|
|
52
|
+
|
|
53
|
+
## 异常处理规范
|
|
54
|
+
|
|
55
|
+
### 异常分类
|
|
56
|
+
- BusinessException:业务异常
|
|
57
|
+
- SystemException:系统异常
|
|
58
|
+
- ValidationException:参数校验异常
|
|
59
|
+
|
|
60
|
+
### 全局异常处理
|
|
61
|
+
```java
|
|
62
|
+
@RestControllerAdvice
|
|
63
|
+
public class GlobalExceptionHandler {
|
|
64
|
+
@ExceptionHandler(Exception.class)
|
|
65
|
+
public Result handleException(Exception e) {
|
|
66
|
+
// 处理逻辑
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## 日志规范
|
|
72
|
+
|
|
73
|
+
### 日志级别
|
|
74
|
+
- ERROR:错误信息
|
|
75
|
+
- WARN:警告信息
|
|
76
|
+
- INFO:关键业务信息
|
|
77
|
+
- DEBUG:调试信息
|
|
78
|
+
|
|
79
|
+
### 日志格式
|
|
80
|
+
```[时间] [级别] [类名] - 日志内容```
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
**最后更新:** 2026-05-18
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# 业务逻辑说明
|
|
2
|
+
|
|
3
|
+
## 核心业务流程
|
|
4
|
+
|
|
5
|
+
### 业务流程1:[流程名称]
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
[开始] → [步骤1] → [步骤2] → [步骤3] → [结束]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**详细说明:**
|
|
12
|
+
1. 用户触发[操作]
|
|
13
|
+
2. 系统执行[处理]
|
|
14
|
+
3. 返回[结果]
|
|
15
|
+
|
|
16
|
+
## 数据流向
|
|
17
|
+
|
|
18
|
+
### 前端 → 后端数据流
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
前端页面 → API接口 → Controller → Service → DAO → 数据库
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### 关键数据结构
|
|
25
|
+
|
|
26
|
+
| 数据项 | 类型 | 说明 | 来源 |
|
|
27
|
+
|--------|------|------|------|
|
|
28
|
+
| 字段1 | String | 说明 | 前端传入 |
|
|
29
|
+
| 字段2 | Integer | 说明 | 数据库查询 |
|
|
30
|
+
|
|
31
|
+
## 业务规则
|
|
32
|
+
|
|
33
|
+
### 规则1:[规则名称]
|
|
34
|
+
- 条件:[触发条件]
|
|
35
|
+
- 处理:[处理方式]
|
|
36
|
+
- 示例:[示例说明]
|
|
37
|
+
|
|
38
|
+
### 规则2:[规则名称]
|
|
39
|
+
- 条件:[触发条件]
|
|
40
|
+
- 处理:[处理方式]
|
|
41
|
+
- 示例:[示例说明]
|
|
42
|
+
|
|
43
|
+
## 权限控制
|
|
44
|
+
|
|
45
|
+
### 角色定义
|
|
46
|
+
- 管理员:全部权限
|
|
47
|
+
- 普通用户:部分权限
|
|
48
|
+
|
|
49
|
+
### 权限矩阵
|
|
50
|
+
|
|
51
|
+
| 操作 | 管理员 | 普通用户 | 访客 |
|
|
52
|
+
|------|--------|----------|------|
|
|
53
|
+
| 创建 | ✓ | ✓ | ✗ |
|
|
54
|
+
| 编辑 | ✓ | ✗ | ✗ |
|
|
55
|
+
| 删除 | ✓ | ✗ | ✗ |
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
**最后更新:** 2026-05-18
|