sillyspec 3.7.1 → 3.7.2
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/package.json +1 -1
- package/src/index.js +11 -483
- package/src/setup.js +232 -64
- package/templates/brainstorm.md +2 -6
- package/templates/execute.md +19 -0
- package/templates/plan.md +6 -6
- package/templates/propose.md +3 -7
- package/templates/quick.md +2 -0
- package/templates/scan.md +17 -5
- package/.claude/commands/sillyspec/archive.md +0 -63
- package/.claude/commands/sillyspec/brainstorm.md +0 -182
- package/.claude/commands/sillyspec/continue.md +0 -32
- package/.claude/commands/sillyspec/execute.md +0 -133
- package/.claude/commands/sillyspec/explore.md +0 -43
- package/.claude/commands/sillyspec/export.md +0 -21
- package/.claude/commands/sillyspec/init.md +0 -64
- package/.claude/commands/sillyspec/plan.md +0 -112
- package/.claude/commands/sillyspec/propose.md +0 -77
- package/.claude/commands/sillyspec/quick.md +0 -76
- package/.claude/commands/sillyspec/resume.md +0 -53
- package/.claude/commands/sillyspec/scan-quick.md +0 -47
- package/.claude/commands/sillyspec/scan.md +0 -135
- package/.claude/commands/sillyspec/status.md +0 -72
- package/.claude/commands/sillyspec/verify.md +0 -87
- package/.claude/commands/sillyspec/workspace-sync.md +0 -89
- package/.claude/commands/sillyspec/workspace.md +0 -67
- package/.sillyspec/config.yaml +0 -13
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
## 交互规范
|
|
2
|
-
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
3
|
-
|
|
4
|
-
## 核心约束(必须遵守)
|
|
5
|
-
- ❌ 不写测试(底线是仍然要写测试)
|
|
6
|
-
- ❌ 修改无关文件
|
|
7
|
-
- ❌ 跳过测试因为"任务太简单"
|
|
8
|
-
|
|
9
|
-
## 用法
|
|
10
|
-
|
|
11
|
-
- `/sillyspec:quick "修复用户创建接口漏了手机号校验"` — 独立记录到按用户名隔离的 QUICKLOG
|
|
12
|
-
- `/sillyspec:quick --change user-module "修复用户创建接口漏了手机号校验"` — 追加到 user-module 变更的 tasks.md
|
|
13
|
-
|
|
14
|
-
## 任务
|
|
15
|
-
$ARGUMENTS
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## 流程
|
|
20
|
-
|
|
21
|
-
1. **解析参数:** 检查是否携带 `--change <变更名>`,确定记录方式
|
|
22
|
-
2. **理解任务:** 模糊则问一个问题确认
|
|
23
|
-
3. **加载上下文:** `cat .sillyspec/codebase/{CONVENTIONS,ARCHITECTURE}.md 2>/dev/null`
|
|
24
|
-
4. **先读后写:** 调用已有方法前 `cat` 源文件确认签名,`grep` 确认方法存在
|
|
25
|
-
5. **TDD 执行:**
|
|
26
|
-
```
|
|
27
|
-
🔴 RED → 先写测试,运行确认失败
|
|
28
|
-
🟢 GREEN → 写最少代码让测试通过
|
|
29
|
-
🔵 REFACTOR → 清理,保持测试通过
|
|
30
|
-
✅ COMMIT → git 提交(测试文件必须包含在提交中)
|
|
31
|
-
```
|
|
32
|
-
测试文件必须保留在项目中,不能删除。违反 TDD → 删掉代码从测试重新开始。
|
|
33
|
-
- 纯配置/数据/文档可跳过 TDD
|
|
34
|
-
- 其他情况一律走 TDD
|
|
35
|
-
6. **运行测试:** 先检查 local.yaml 构建命令配置:
|
|
36
|
-
```bash
|
|
37
|
-
cat .sillyspec/local.yaml 2>/dev/null
|
|
38
|
-
```
|
|
39
|
-
如果有则使用 local.yaml 中的命令;否则使用默认命令:
|
|
40
|
-
```bash
|
|
41
|
-
mvn test -pl <模块> -Dtest=<测试类> 2>/dev/null || ./gradlew test --tests <测试类> 2>/dev/null || pnpm test 2>/dev/null || npm test 2>/dev/null || pytest <测试文件> 2>/dev/null
|
|
42
|
-
```
|
|
43
|
-
7. **Git commit:** 展示 commit message 给用户确认后提交。**工作区模式下,确认当前在正确的子项目目录中执行 commit。**
|
|
44
|
-
8. **记录:**
|
|
45
|
-
- **有 `--change`:** 在 `.sillyspec/changes/<变更名>/tasks.md` 追加 task 并勾选,**记录精确到秒的时间戳**:
|
|
46
|
-
|
|
47
|
-
```
|
|
48
|
-
- [x] [YYYY-MM-DD HH:MM:SS] 任务描述
|
|
49
|
-
```
|
|
50
|
-
- **无 `--change`:** 记录到 `.sillyspec/quicklog/QUICKLOG-<git用户名>.md`(见下方规则)
|
|
51
|
-
9. **检查复杂度:** 任务比预期复杂 → 建议用完整流程
|
|
52
|
-
|
|
53
|
-
10. **记录发现的坑:** 执行过程中如果发现项目特有的规律、陷阱或约定(如"某方法参数顺序容易搞反"、"某表有隐藏软删除字段"),追加到 CONVENTIONS.md 的「注意事项」章节。**工作区模式下:** 只影响当前子项目 → 写入当前子项目 `.sillyspec/codebase/CONVENTIONS.md`;影响多个子项目 → 写入 `.sillyspec/shared/CONVENTIONS.md`(共享规范,所有子项目可见)。
|
|
54
|
-
|
|
55
|
-
### QUICKLOG 规则
|
|
56
|
-
|
|
57
|
-
**按 git 用户名隔离,避免多人同时操作冲突:**
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
USER=$(git config user.name 2>/dev/null || echo "default")
|
|
61
|
-
LOG_FILE=".sillyspec/quicklog/QUICKLOG-${USER}.md"
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
文件路径:`$LOG_FILE`
|
|
65
|
-
|
|
66
|
-
**追加记录格式(时间精确到秒):**
|
|
67
|
-
```markdown
|
|
68
|
-
## YYYY-MM-DD HH:MM:SS | fix: 任务描述
|
|
69
|
-
- 文件:`修改的文件列表`
|
|
70
|
-
- commit:`commit hash`
|
|
71
|
-
- 关联归档:`相关的已归档变更名`(如有)
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
**文件轮转:** 追加前检查文件大小,超过 500 行则:
|
|
75
|
-
1. 将当前文件重命名为 `QUICKLOG-${USER}-YYYY-MM-DD.md`
|
|
76
|
-
2. 创建新的空 `QUICKLOG-${USER}.md`
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
## 交互规范
|
|
2
|
-
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
3
|
-
|
|
4
|
-
## 核心约束(必须遵守)
|
|
5
|
-
- ❌ 直接说"没有记录"(无 STATE.md 时应自动探测)
|
|
6
|
-
- ❌ 修改任何文件(只读展示,但探测后可创建 STATE.md)
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## 流程
|
|
11
|
-
|
|
12
|
-
### Step 1: 读取 STATE.md
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
cat .sillyspec/STATE.md 2>/dev/null
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
**有 STATE.md:** 提取并展示当前变更、阶段、进度、下一步命令、阶段进度表、关键决策。AskUserQuestion:直接继续 / 查看更多细节。
|
|
19
|
-
|
|
20
|
-
**无 STATE.md:** 自动探测(工作区模式下同时检查子项目):
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
cat .sillyspec/config.yaml 2>/dev/null # 检查是否工作区模式
|
|
24
|
-
ls .sillyspec/changes/*/MASTER.md 2>/dev/null
|
|
25
|
-
ls -d .sillyspec/changes/*/ | grep -v archive | grep -v stages | tail -1 2>/dev/null
|
|
26
|
-
ls .sillyspec/codebase/*.md .sillyspec/codebase/details/*.md .sillyspec/changes/*/tasks.md .sillyspec/{REQUIREMENTS,ROADMAP}.md 2>/dev/null
|
|
27
|
-
# 工作区模式:检查每个子项目的状态
|
|
28
|
-
for proj in $(cat .sillyspec/config.yaml | grep -oP 'path:\s*\K.*'); do
|
|
29
|
-
echo "=== $(basename $proj) ==="
|
|
30
|
-
cat "$proj/.sillyspec/STATE.md" 2>/dev/null
|
|
31
|
-
ls "$proj/.sillyspec/changes/" 2>/dev/null | grep -v archive
|
|
32
|
-
done
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
**探测结果推断:**
|
|
36
|
-
|
|
37
|
-
| 探测到的文件 | 推断阶段 | 建议操作 |
|
|
38
|
-
|---|---|---|
|
|
39
|
-
| 无 .sillyspec/ 内容 | 未开始 | `/sillyspec:init` 或 `/sillyspec:scan` |
|
|
40
|
-
| 有 SCAN-RAW.md 或 codebase 文档不全 | 扫描中断 | `/sillyspec:scan`(断点续扫) |
|
|
41
|
-
| codebase 文档齐全无 changes/ | 已扫描未开始需求 | `/sillyspec:brainstorm` |
|
|
42
|
-
| 有 REQUIREMENTS.md 无 changes/ | 绿地有需求 | `/sillyspec:brainstorm` |
|
|
43
|
-
| changes/ 有 design 无 tasks | 待计划 | `/sillyspec:plan` |
|
|
44
|
-
| tasks.md 有未完成 checkbox | 执行中 | `/sillyspec:execute` |
|
|
45
|
-
| tasks.md 全完成 | 待验证 | `/sillyspec:verify` |
|
|
46
|
-
|
|
47
|
-
**同时创建 STATE.md 记录推断状态。**
|
|
48
|
-
|
|
49
|
-
### 关键原则
|
|
50
|
-
|
|
51
|
-
- STATE.md 是唯一恢复数据源(不需要 HANDOFF.json)
|
|
52
|
-
- STATE.md 不需要 Git 提交(可加入 `.gitignore`)
|
|
53
|
-
- 每次命令执行完自动更新
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
## 交互规范
|
|
2
|
-
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
3
|
-
|
|
4
|
-
> 本模板由 `/sillyspec:scan --quick` 触发。如需完整深度扫描,使用 `/sillyspec:scan`。
|
|
5
|
-
|
|
6
|
-
## 核心约束(必须遵守)
|
|
7
|
-
- ❌ 修改任何代码
|
|
8
|
-
- ❌ 编造文件路径或代码模式(必须包含真实路径)
|
|
9
|
-
- ❌ 读源码文件(快扫只读配置和目录)
|
|
10
|
-
|
|
11
|
-
## 快速扫描流程
|
|
12
|
-
|
|
13
|
-
### Step 1: 检查工作区模式
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
cat .sillyspec/config.yaml 2>/dev/null
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
有 `projects` 字段 → 工作区模式:逐个子项目快扫。
|
|
20
|
-
|
|
21
|
-
### Step 2: 读配置文件
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
cat package.json tsconfig.json requirements.txt Cargo.toml go.mod pom.xml build.gradle 2>/dev/null
|
|
25
|
-
find . -maxdepth 2 -name "*.config.*" -not -path "*/node_modules/*" -not -path "*/.git/*" | head -20 | xargs cat 2>/dev/null
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
### Step 3: 生成文档
|
|
29
|
-
|
|
30
|
-
`mkdir -p .sillyspec/codebase`,生成 4 份文档:
|
|
31
|
-
|
|
32
|
-
1. **ARCHITECTURE.md** — 架构 + 技术栈(合并原 STACK.md)
|
|
33
|
-
2. **STRUCTURE.md** — 目录结构(`find . -type f | head -200`)
|
|
34
|
-
3. **CONVENTIONS.md** — 空骨架文件,含章节标题(注意事项、代码风格等),供后续 quick/execute 追加
|
|
35
|
-
4. **PROJECT.md** — 项目概览
|
|
36
|
-
|
|
37
|
-
### Step 4: Git 提交
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
git add .sillyspec/ && git commit -m "chore: sillyspec quick scan"
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
工作区模式在每个子项目分别提交。
|
|
44
|
-
|
|
45
|
-
### 完成
|
|
46
|
-
|
|
47
|
-
提示用户:快扫只提取基础信息。如需完整代码规范(框架规则、实体继承、代码风格),执行 `/sillyspec:scan` 进行深度扫描。
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
## 交互规范
|
|
2
|
-
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
3
|
-
|
|
4
|
-
你现在是 SillySpec 代码库扫描器(编排器)。**你不读源码,只编排子代理或串行执行。**
|
|
5
|
-
|
|
6
|
-
## 参数处理
|
|
7
|
-
- 空白 → 交互式引导(逐步询问)
|
|
8
|
-
- `--deep` → 直接深度扫描
|
|
9
|
-
- 其他 → 快速扫描该区域
|
|
10
|
-
|
|
11
|
-
## 流程控制(必须先执行)
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
sillyspec status --json
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
非 `init` phase → 以 CLI 返回为准决定下一步。
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## 交互式引导(参数为空时)
|
|
22
|
-
|
|
23
|
-
### 检查工作区 & 已有文档
|
|
24
|
-
|
|
25
|
-
```bash
|
|
26
|
-
cat .sillyspec/config.yaml 2>/dev/null # 有 projects → 工作区模式
|
|
27
|
-
ls .sillyspec/codebase/ 2>/dev/null # 检查已有文档
|
|
28
|
-
wc -l .sillyspec/codebase/*.md 2>/dev/null
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
- 已有 3 份 → 建议升级深度扫描
|
|
32
|
-
- 已有 7 份 → 建议刷新或跳过
|
|
33
|
-
- 工作区 → 逐个扫描 / 选子项目 / 退出
|
|
34
|
-
|
|
35
|
-
### 选择扫描模式、范围、排除目录、确认
|
|
36
|
-
按原流程交互,确认后进入扫描。
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## 构建环境探测(主代理执行)
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
cat package.json pom.xml build.gradle go.mod Cargo.toml requirements.txt pyproject.toml Gemfile composer.json 2>/dev/null
|
|
44
|
-
find . -maxdepth 2 -name "*.config.*" -not -path "*/node_modules/*" -not -path "*/.git/*" | head -20 | xargs cat 2>/dev/null
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
结果保存到 `.sillyspec/codebase/_env-detect.md`(临时文件,扫描完删除)。
|
|
48
|
-
|
|
49
|
-
---
|
|
50
|
-
|
|
51
|
-
## 深度扫描
|
|
52
|
-
|
|
53
|
-
`mkdir -p .sillyspec/codebase`
|
|
54
|
-
|
|
55
|
-
### 断点续扫
|
|
56
|
-
|
|
57
|
-
```bash
|
|
58
|
-
for f in ARCHITECTURE STRUCTURE CONVENTIONS INTEGRATIONS TESTING CONCERNS PROJECT; do
|
|
59
|
-
[ -f ".sillyspec/codebase/${f}.md" ] && echo "✅ ${f}.md" || echo "⬜ ${f}.md"
|
|
60
|
-
done
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
只生成缺失的文档。
|
|
64
|
-
|
|
65
|
-
### 检测子代理可用性
|
|
66
|
-
检查是否有 Task/Spawn 工具。有 → 子代理模式,无 → 串行模式。
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
### 子代理模式(4 个并行)
|
|
71
|
-
|
|
72
|
-
#### Agent 1: tech → ARCHITECTURE.md
|
|
73
|
-
扫描技术栈 + 数据库 Schema + 架构模式。参考 `_env-detect.md`。
|
|
74
|
-
用 grep/rg 搜索(`@Entity`、`schema.prisma`、`models.py` 等),**禁止读源码全文**。
|
|
75
|
-
Schema 只记表名+说明+字段数。含 `## 技术栈` `## 架构概览` `## 数据模型(摘要)`。路径用反引号,不编造。
|
|
76
|
-
|
|
77
|
-
#### Agent 2: conventions → CONVENTIONS.md
|
|
78
|
-
扫描框架隐形规则 + 实体继承 + 代码风格。参考 `_env-detect.md`。
|
|
79
|
-
用 grep 搜索拦截器/插件/逻辑删除/基类/审计字段,**禁止读源码全文**。
|
|
80
|
-
根据检测到的语言/框架自行决定搜索什么模式,提取 3-5 个典型示例。
|
|
81
|
-
含 `## 框架隐形规则` `## 实体继承规范` `## 代码风格`。路径用反引号,不编造。
|
|
82
|
-
|
|
83
|
-
#### Agent 3: structure → STRUCTURE.md + INTEGRATIONS.md
|
|
84
|
-
扫描目录结构 + 外部集成。参考 `_env-detect.md`。
|
|
85
|
-
用 find/ls/tree 和 grep,**禁止读源码全文**。
|
|
86
|
-
搜索 API 调用、MQ 配置、缓存、第三方 SDK。STRUCTURE.md 含目录树+模块说明。INTEGRATIONS.md 按类型分组。路径用反引号,不编造。
|
|
87
|
-
|
|
88
|
-
#### Agent 4: quality → TESTING.md + CONCERNS.md + PROJECT.md
|
|
89
|
-
扫描测试现状 + 技术债务 + 项目概览。参考 `_env-detect.md`。
|
|
90
|
-
用 grep 搜索测试文件、TODO/FIXME、过时依赖,**禁止读源码全文**。
|
|
91
|
-
TESTING.md 含测试结构。CONCERNS.md 按严重程度分组。PROJECT.md 含项目信息。路径用反引号,不编造。
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
### 串行模式(降级)
|
|
96
|
-
无子代理时,按 tech → conventions → structure → quality 顺序执行。
|
|
97
|
-
每个 area 完成后**立即写文件**,下一个 area 开始前清除源码上下文。
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
## 工作区模式
|
|
102
|
-
对每个子项目:cd → 环境探测 → 扫描 → cd 回工作区。
|
|
103
|
-
全部完成后汇总 `.sillyspec/workspace/CODEBASE-OVERVIEW.md`(只读各子项目的 ARCHITECTURE.md + CONVENTIONS.md)。
|
|
104
|
-
|
|
105
|
-
---
|
|
106
|
-
|
|
107
|
-
## 扫描完成
|
|
108
|
-
|
|
109
|
-
```bash
|
|
110
|
-
# 路径校验
|
|
111
|
-
for f in ARCHITECTURE STRUCTURE CONVENTIONS INTEGRATIONS TESTING CONCERNS PROJECT; do
|
|
112
|
-
[ -f ".sillyspec/codebase/${f}.md" ] && echo "✅ ${f}.md"
|
|
113
|
-
done
|
|
114
|
-
|
|
115
|
-
# 验证 CLI
|
|
116
|
-
sillyspec status --json # 应返回 phase: "brainstorm"
|
|
117
|
-
sillyspec next # 推荐给用户
|
|
118
|
-
|
|
119
|
-
# 清理 + 提交
|
|
120
|
-
rm -f .sillyspec/codebase/_env-detect.md
|
|
121
|
-
git add .sillyspec/ && git commit -m "chore: sillyspec scan - codebase mapped"
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
### 自检门控
|
|
125
|
-
- [ ] ARCHITECTURE.md:技术栈 + Schema 摘要?
|
|
126
|
-
- [ ] CONVENTIONS.md:隐形规则 + 代码风格?
|
|
127
|
-
- [ ] STRUCTURE.md:目录结构?
|
|
128
|
-
- [ ] INTEGRATIONS.md:外部依赖?
|
|
129
|
-
- [ ] TESTING.md:测试现状?
|
|
130
|
-
- [ ] CONCERNS.md:技术债务?
|
|
131
|
-
- [ ] PROJECT.md:项目概览?
|
|
132
|
-
|
|
133
|
-
## 绝对规则
|
|
134
|
-
- ❌ 修改代码 / 编造路径 / 主代理读源码全文
|
|
135
|
-
- ✅ 交互模式每步等用户 / 文档只写 `.sillyspec/codebase/`
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
## 交互规范
|
|
2
|
-
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
3
|
-
|
|
4
|
-
## 核心约束(必须遵守)
|
|
5
|
-
- ❌ 修改任何文件(只读)
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 流程
|
|
10
|
-
|
|
11
|
-
### Step 1: 检查工作区模式
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
cat .sillyspec/config.yaml 2>/dev/null
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
**工作区模式:** 读取 config.yaml 子项目列表,对每个子项目检查 PROJECT.md、codebase 文档数、进行中变更、归档数。**同时检查工作区根目录 `.sillyspec/changes/` 下的未归档变更。** 检查共享规范和工作区概览。输出汇总后结束,不执行单项目流程。
|
|
18
|
-
|
|
19
|
-
工作区变更检查命令:
|
|
20
|
-
```bash
|
|
21
|
-
# 工作区根目录的变更
|
|
22
|
-
ls .sillyspec/changes/ 2>/dev/null | grep -v archive
|
|
23
|
-
ls .sillyspec/changes/archive/ 2>/dev/null | wc -l
|
|
24
|
-
|
|
25
|
-
# 每个子项目的变更
|
|
26
|
-
for proj in $(cat .sillyspec/config.yaml | grep -oP 'path:\s*\K.*'); do
|
|
27
|
-
echo "=== $(basename $proj) changes ==="
|
|
28
|
-
ls "$proj/.sillyspec/changes/" 2>/dev/null | grep -v archive
|
|
29
|
-
ls "$proj/.sillyspec/changes/archive/" 2>/dev/null | wc -l
|
|
30
|
-
done
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
**汇总输出格式:**
|
|
34
|
-
```
|
|
35
|
-
📊 SillySpec 状态
|
|
36
|
-
📋 工作区模式 — N 个子项目
|
|
37
|
-
|
|
38
|
-
工作区变更:
|
|
39
|
-
🔄 进行中:sec-bonus-penalty(tasks: 3/5)
|
|
40
|
-
✅ 已归档:1 个
|
|
41
|
-
|
|
42
|
-
主项目(工作区根目录):
|
|
43
|
-
📂 代码库文档:— (主项目通常无独立代码)
|
|
44
|
-
🔄 进行中:N 个变更
|
|
45
|
-
✅ 已归档:N 个变更
|
|
46
|
-
|
|
47
|
-
┌───────────────────┬────────────┬────────────┬────────┬────────┐
|
|
48
|
-
│ 子项目 │ PROJECT.md │ 代码库文档 │ 进行中 │ 已归档 │
|
|
49
|
-
├───────────────────┼────────────┼────────────┼────────┼────────┤
|
|
50
|
-
│ back-service │ ✗ │ 7 份 │ 1 │ 0 │
|
|
51
|
-
└───────────────────┴────────────┴────────────┴────────┴────────┘
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
**单项目模式:** 继续 Step 2。
|
|
55
|
-
|
|
56
|
-
### Step 2-5: 单项目检查
|
|
57
|
-
|
|
58
|
-
1. **项目基础:** PROJECT.md、codebase 文档、REQUIREMENTS.md、ROADMAP.md
|
|
59
|
-
2. **进行中变更:** 对每个变更检查 design/tasks 完成度
|
|
60
|
-
3. **归档历史:** `ls .sillyspec/changes/archive/ | wc -l`
|
|
61
|
-
4. **代码库文档:** `ls .sillyspec/codebase/`
|
|
62
|
-
|
|
63
|
-
### Step 6: 输出
|
|
64
|
-
|
|
65
|
-
```
|
|
66
|
-
📊 SillySpec 状态
|
|
67
|
-
📋 项目:xxx(已初始化/未初始化)
|
|
68
|
-
📂 代码库:已扫描(7 份文档)/ 未扫描
|
|
69
|
-
🔄 进行中:N 个变更
|
|
70
|
-
✅ 已归档:N 个变更
|
|
71
|
-
💡 下一步:/sillyspec:continue
|
|
72
|
-
```
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
## 交互规范
|
|
2
|
-
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
3
|
-
|
|
4
|
-
> **可选阶段。** execute 完成后会询问是否需要 verify,也可以手动调用。
|
|
5
|
-
|
|
6
|
-
## 核心约束(必须遵守)
|
|
7
|
-
- ❌ 修改任何代码(只做检查和报告)
|
|
8
|
-
- ❌ 跳过状态检查
|
|
9
|
-
- ❌ 自行推进到下一阶段
|
|
10
|
-
|
|
11
|
-
## 状态检查(必须先执行)
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
cat .sillyspec/STATE.md 2>/dev/null
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
检查当前阶段。如果没有 STATE.md,检查是否有未归档变更:
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
ls .sillyspec/changes/ 2>/dev/null | grep -v archive
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
无 STATE.md 且无未归档变更 → 提示用户先完成 execute 或用 `/sillyspec:status` 查看状态。
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## 工作区模式处理
|
|
28
|
-
|
|
29
|
-
如果 `.sillyspec/config.yaml` 包含 `projects` 字段:
|
|
30
|
-
|
|
31
|
-
1. 检查工作区根目录 `.sillyspec/changes/` 下的未归档变更
|
|
32
|
-
2. 检查每个子项目 `<子项目路径>/.sillyspec/changes/` 下的未归档变更
|
|
33
|
-
3. 列出所有未归档变更,让用户选择要验证哪个
|
|
34
|
-
4. 根据 $ARGUMENTS 或用户选择,cd 到对应目录执行验证
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
## 流程
|
|
39
|
-
|
|
40
|
-
### 1. 加载规范
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
# 确定变更目录
|
|
44
|
-
if [ -n "$ARGUMENTS" ]; then
|
|
45
|
-
CHANGE_DIR=".sillyspec/changes/$ARGUMENTS"
|
|
46
|
-
else
|
|
47
|
-
CHANGE_DIR=$(ls -d .sillyspec/changes/*/ 2>/dev/null | grep -v archive | tail -1)
|
|
48
|
-
fi
|
|
49
|
-
cat "$CHANGE_DIR"/{design,tasks}.md 2>/dev/null
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
锚定确认实际存在的文件。
|
|
53
|
-
|
|
54
|
-
### 2. 逐项检查 tasks.md
|
|
55
|
-
|
|
56
|
-
对每个 checkbox 报告:✅ 已完成 / ❌ 未完成 / ⚠️ 部分完成
|
|
57
|
-
|
|
58
|
-
### 3. 对照 design.md
|
|
59
|
-
|
|
60
|
-
架构决策?文件变更一致性?数据模型?API 设计?
|
|
61
|
-
|
|
62
|
-
### 4. 运行测试套件
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
pnpm test 2>/dev/null || npm test 2>/dev/null || pytest 2>/dev/null || go test ./... 2>/dev/null
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
### 5. 代码质量扫描
|
|
69
|
-
|
|
70
|
-
```bash
|
|
71
|
-
grep -r "TODO\|FIXME\|HACK\|XXX" src/ lib/ app/ --include="*.ts" --include="*.tsx" --include="*.py" --include="*.js" 2>/dev/null | head -20
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
### 6. 输出验证报告
|
|
75
|
-
|
|
76
|
-
```markdown
|
|
77
|
-
# SillySpec 验证报告
|
|
78
|
-
## 任务完成度:X/Y
|
|
79
|
-
## 设计一致性
|
|
80
|
-
## 测试结果:passed N, failed N
|
|
81
|
-
## 技术债务标记
|
|
82
|
-
## 结论:✅ PASS / ⚠️ PASS WITH NOTES / ❌ FAIL
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
### 7. 完成
|
|
86
|
-
|
|
87
|
-
更新 `.sillyspec/STATE.md`(如存在):阶段改为 `verify ✅` 或 `verify ⚠️`,记录精确到秒的时间戳。
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
## 交互规范
|
|
2
|
-
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
3
|
-
|
|
4
|
-
## 核心约束(必须遵守)
|
|
5
|
-
- ❌ 修改子项目的代码
|
|
6
|
-
- ❌ 删除已有文件(clone 前必须确认)
|
|
7
|
-
- ❌ 跳过冲突检查直接覆盖
|
|
8
|
-
|
|
9
|
-
## 流程
|
|
10
|
-
|
|
11
|
-
### Step 1: 读取配置
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
cat .sillyspec/config.yaml 2>/dev/null
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
无 config.yaml → 提示先执行 `/sillyspec:workspace` 初始化工作区。
|
|
18
|
-
|
|
19
|
-
### Step 2: 逐个子项目检查
|
|
20
|
-
|
|
21
|
-
对 config.yaml 中每个子项目,按顺序执行:
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
# 检查目录是否存在
|
|
25
|
-
ls -d <path> 2>/dev/null && echo "EXISTS" || echo "MISSING"
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
#### 情况 A:目录不存在
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
# 检查是否有 repo 配置
|
|
32
|
-
grep "repo:" .sillyspec/config.yaml | grep -A 1 "<name>"
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
- **有 repo** → AskUserQuestion:"子项目 `<name>` 不存在,是否从 `<repo>` clone 到 `<path>`?"
|
|
36
|
-
- 用户确认 → `git clone <repo> <path>` → ✅ 成功
|
|
37
|
-
- clone 失败 → ❌ 报错,提示用户手动 clone
|
|
38
|
-
- **无 repo** → ⚠️ 提示用户:"子项目 `<name>` 不存在且无 repo 配置,请手动放置到 `<path>`"
|
|
39
|
-
|
|
40
|
-
#### 情况 B:目录已存在
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
# 检查是否是 git 仓库
|
|
44
|
-
git -C <path> rev-parse --is-inside-work-tree 2>/dev/null
|
|
45
|
-
|
|
46
|
-
# 如果是,检查 remote 是否匹配
|
|
47
|
-
git -C <path> remote get-url origin 2>/dev/null
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
- **不是 git 仓库** → AskUserQuestion:"目录 `<path>` 存在但不是 git 仓库,可能和其他项目冲突。"
|
|
51
|
-
- 跳过此子项目
|
|
52
|
-
- 让用户指定正确路径
|
|
53
|
-
- **是 git 仓库,remote 匹配 repo** → ✅ 跳过,状态正常
|
|
54
|
-
- **是 git 仓库,remote 不匹配 repo** → ⚠️ AskUserQuestion:
|
|
55
|
-
- "目录 `<path>` 是 git 仓库但 remote 不匹配(期望 `<repo>`,实际 `<actual>`)。可能是不同项目。"
|
|
56
|
-
- 跳过 / 用户确认覆盖
|
|
57
|
-
|
|
58
|
-
#### 情况 C:路径冲突
|
|
59
|
-
|
|
60
|
-
检查两个子项目的 path 是否指向同一目录或互相包含:
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
# 将相对路径转为绝对路径后比较
|
|
64
|
-
realpath <path1>
|
|
65
|
-
realpath <path2>
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
冲突 → ❌ 报错:"子项目 A 和 B 的路径冲突,请修改 config.yaml"
|
|
69
|
-
|
|
70
|
-
### Step 3: 汇总报告
|
|
71
|
-
|
|
72
|
-
```
|
|
73
|
-
📊 工作区同步结果
|
|
74
|
-
|
|
75
|
-
┌───────────────────┬──────────┬────────────────────────────────────┐
|
|
76
|
-
│ 子项目 │ 状态 │ 说明 │
|
|
77
|
-
├───────────────────┼──────────┼────────────────────────────────────┤
|
|
78
|
-
│ back-service │ ✅ 正常 │ 目录存在,git remote 匹配 │
|
|
79
|
-
│ sub-grid-security │ 🔄 已克隆 │ 从 https://... clone 成功 │
|
|
80
|
-
│ frontend │ ⚠️ 缺失 │ 无 repo 配置,请手动放置 │
|
|
81
|
-
└───────────────────┴──────────┴────────────────────────────────────┘
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
全部正常 → 提示 `/sillyspec:brainstorm '你的需求'` 继续。
|
|
85
|
-
有异常 → 提示用户处理后再 sync。
|
|
86
|
-
|
|
87
|
-
### Step 4: 更新 config.yaml
|
|
88
|
-
|
|
89
|
-
如果 clone 过程中实际 remote 和 config.yaml 中的 repo 不一致,更新 repo 字段为实际值。
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
## 交互规范
|
|
2
|
-
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
3
|
-
|
|
4
|
-
## 核心约束(必须遵守)
|
|
5
|
-
- ❌ 修改子项目目录下的任何文件
|
|
6
|
-
- ❌ 写非法 YAML
|
|
7
|
-
- ❌ 使用绝对路径(必须是相对路径)
|
|
8
|
-
|
|
9
|
-
## 用户指令
|
|
10
|
-
$ARGUMENTS
|
|
11
|
-
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## 流程
|
|
15
|
-
|
|
16
|
-
### Step 1: 检查配置
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
cat .sillyspec/config.yaml 2>/dev/null
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
不存在 → 询问是否初始化工作区。
|
|
23
|
-
|
|
24
|
-
### Step 2: 解析指令
|
|
25
|
-
|
|
26
|
-
- 无参数 / `status` → 显示状态
|
|
27
|
-
- `add` → 添加子项目
|
|
28
|
-
|
|
29
|
-
**添加流程:**
|
|
30
|
-
1. AskUserQuestion 询问子项目名称、目录路径、角色描述
|
|
31
|
-
2. **自动检测 git 远程地址:**
|
|
32
|
-
```bash
|
|
33
|
-
git -C <path> remote get-url origin 2>/dev/null
|
|
34
|
-
```
|
|
35
|
-
检测到则写入 repo 字段,检测不到则留空
|
|
36
|
-
3. 更新 config.yaml,追加子项目配置
|
|
37
|
-
- `remove` → 移除子项目
|
|
38
|
-
- `sync` → 同步子项目(clone 缺失的,检查冲突)
|
|
39
|
-
|
|
40
|
-
### Step 3: 执行操作
|
|
41
|
-
|
|
42
|
-
**初始化工作区:** 询问名称 → 逐个添加子项目(名称、路径、角色描述,验证路径存在)→ 共享规范 → 生成 config.yaml + `.sillyspec/shared/`
|
|
43
|
-
|
|
44
|
-
**添加/移除子项目:** 更新 config.yaml,Git 提交。
|
|
45
|
-
|
|
46
|
-
**状态显示:** 读取每个子项目的 `.sillyspec/` 内容(PROJECT.md、codebase 文档数、进行中变更),输出格式:
|
|
47
|
-
|
|
48
|
-
```
|
|
49
|
-
🏢 工作区:<name>
|
|
50
|
-
📦 子项目(N 个):
|
|
51
|
-
✅ frontend ./frontend 前端 - Vue3+TS 已扫描(7 份文档)
|
|
52
|
-
⚠️ backend ./backend 后端 - Node.js 已初始化(未扫描)
|
|
53
|
-
📄 共享规范:2 份
|
|
54
|
-
💡 操作:/sillyspec:workspace add | /sillyspec:init | /sillyspec:scan
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### config.yaml 格式
|
|
58
|
-
|
|
59
|
-
```yaml
|
|
60
|
-
projects:
|
|
61
|
-
<name>:
|
|
62
|
-
path: <relative-path>
|
|
63
|
-
role: <description>
|
|
64
|
-
repo: <git-remote-url> # 可选,git remote get-url origin
|
|
65
|
-
shared:
|
|
66
|
-
- <filename.md>
|
|
67
|
-
```
|
package/.sillyspec/config.yaml
DELETED