sillyspec 3.9.0 → 3.9.1
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/.claude/skills/sillyspec-archive/SKILL.md +17 -0
- package/.claude/skills/sillyspec-auto/SKILL.md +78 -0
- package/.claude/skills/sillyspec-brainstorm/SKILL.md +17 -0
- package/{templates/commit.md → .claude/skills/sillyspec-commit/SKILL.md} +32 -47
- package/.claude/skills/sillyspec-continue/SKILL.md +45 -0
- package/.claude/skills/sillyspec-doctor/SKILL.md +27 -0
- package/.claude/skills/sillyspec-execute/SKILL.md +17 -0
- package/.claude/skills/sillyspec-explore/SKILL.md +96 -0
- package/.claude/skills/sillyspec-export/SKILL.md +53 -0
- package/.claude/skills/sillyspec-init/SKILL.md +170 -0
- package/.claude/skills/sillyspec-plan/SKILL.md +52 -0
- package/.claude/skills/sillyspec-propose/SKILL.md +17 -0
- package/.claude/skills/sillyspec-quick/SKILL.md +17 -0
- package/.claude/skills/sillyspec-resume/SKILL.md +111 -0
- package/.claude/skills/sillyspec-scan/SKILL.md +17 -0
- package/.claude/skills/sillyspec-state/SKILL.md +54 -0
- package/.claude/skills/sillyspec-status/SKILL.md +17 -0
- package/.claude/skills/sillyspec-verify/SKILL.md +17 -0
- package/.claude/skills/sillyspec-workspace/SKILL.md +149 -0
- package/.sillyspec/changes/archive/2026-04-08-derive-state/design.md +97 -0
- package/.sillyspec/changes/archive/2026-04-08-derive-state/plan.md +51 -0
- package/.sillyspec/changes/archive/2026-04-08-derive-state/proposal.md +29 -0
- package/.sillyspec/changes/archive/2026-04-08-derive-state/requirements.md +34 -0
- package/.sillyspec/changes/archive/2026-04-08-derive-state/tasks.md +13 -0
- package/.sillyspec/changes/archive/2026-04-08-derive-state/verify-result.md +43 -0
- package/.sillyspec/changes/auto-mode/design.md +50 -0
- package/.sillyspec/changes/auto-mode/proposal.md +19 -0
- package/.sillyspec/changes/auto-mode/requirements.md +21 -0
- package/.sillyspec/changes/auto-mode/tasks.md +7 -0
- package/.sillyspec/changes/brainstorm-archive/2026-04-05-unified-docs-design.md +199 -0
- package/.sillyspec/changes/dashboard/design.md.braindraft +206 -0
- package/.sillyspec/changes/run-command-design/design.md +1230 -0
- package/.sillyspec/changes/unified-docs-design/design.md +199 -0
- package/.sillyspec/docs/sillyspec/scan/.gitkeep +0 -0
- package/.sillyspec/knowledge/INDEX.md +8 -0
- package/.sillyspec/knowledge/uncategorized.md +3 -0
- package/.sillyspec/projects/sillyspec.yaml +3 -0
- package/README.md +12 -5
- package/package.json +7 -9
- package/packages/dashboard/dist/assets/index-CntACGUN.css +1 -0
- package/packages/dashboard/dist/assets/index-RsLVPAy7.js +7446 -0
- package/packages/dashboard/dist/index.html +3 -2
- package/packages/dashboard/package-lock.json +226 -6
- package/packages/dashboard/package.json +8 -5
- package/packages/dashboard/public/logo.jpg +0 -0
- package/packages/dashboard/server/executor.js +1 -1
- package/packages/dashboard/server/index.js +336 -113
- package/packages/dashboard/server/parser.js +333 -29
- package/packages/dashboard/server/watcher.js +203 -131
- package/packages/dashboard/src/App.vue +187 -11
- package/packages/dashboard/src/components/ActionBar.vue +26 -42
- package/packages/dashboard/src/components/CommandPalette.vue +40 -65
- package/packages/dashboard/src/components/DetailPanel.vue +68 -53
- package/packages/dashboard/src/components/DocPreview.vue +160 -0
- package/packages/dashboard/src/components/DocTree.vue +58 -0
- package/packages/dashboard/src/components/LogStream.vue +13 -33
- package/packages/dashboard/src/components/PipelineStage.vue +8 -8
- package/packages/dashboard/src/components/PipelineView.vue +80 -45
- package/packages/dashboard/src/components/ProjectList.vue +103 -45
- package/packages/dashboard/src/components/ProjectOverview.vue +178 -0
- package/packages/dashboard/src/components/StageBadge.vue +13 -13
- package/packages/dashboard/src/components/StepCard.vue +15 -15
- package/packages/dashboard/src/components/detail/DocsDetail.vue +48 -0
- package/packages/dashboard/src/components/detail/GitDetail.vue +61 -0
- package/packages/dashboard/src/components/detail/TechDetail.vue +43 -0
- package/packages/dashboard/src/composables/useDashboard.js +20 -6
- package/packages/dashboard/src/composables/useKeyboard.js +6 -4
- package/packages/dashboard/src/main.js +4 -1
- package/packages/dashboard/src/style.css +17 -17
- package/src/index.js +134 -22
- package/src/init.js +83 -228
- package/src/migrate.js +117 -0
- package/src/progress.js +459 -0
- package/src/run.js +624 -0
- package/src/setup.js +2 -72
- package/src/stages/archive.js +54 -0
- package/src/stages/brainstorm.js +239 -0
- package/src/stages/doctor.js +303 -0
- package/src/stages/execute.js +262 -0
- package/src/stages/index.js +26 -0
- package/src/stages/plan.js +282 -0
- package/src/stages/propose.js +115 -0
- package/src/stages/quick.js +64 -0
- package/src/stages/scan.js +141 -0
- package/src/stages/status.js +65 -0
- package/src/stages/verify.js +135 -0
- package/dist/steps/brainstorm/01-load-context.md +0 -30
- package/dist/steps/brainstorm/02-reuse-check.md +0 -6
- package/dist/steps/brainstorm/03-prototype-analysis.md +0 -11
- package/dist/steps/brainstorm/04-module-split.md +0 -23
- package/dist/steps/brainstorm/05-dialog-explore.md +0 -8
- package/dist/steps/brainstorm/06-propose-approaches.md +0 -3
- package/dist/steps/brainstorm/07-present-design.md +0 -3
- package/dist/steps/brainstorm/08-write-design.md +0 -21
- package/dist/steps/brainstorm/09-self-review.md +0 -15
- package/dist/steps/brainstorm/10-user-confirm.md +0 -3
- package/dist/steps/brainstorm/11-output-spec.md +0 -7
- package/dist/steps/brainstorm/manifest.yaml +0 -26
- package/dist/steps/execute/01-load-context.md +0 -41
- package/dist/steps/execute/02-scan-conventions.md +0 -47
- package/dist/steps/execute/03-skill-mcp.md +0 -19
- package/dist/steps/execute/04-assign-task.md +0 -22
- package/dist/steps/execute/04b-prompt-template.md +0 -54
- package/dist/steps/execute/05-write-test.md +0 -7
- package/dist/steps/execute/06-write-code.md +0 -8
- package/dist/steps/execute/07-run-test.md +0 -26
- package/dist/steps/execute/08-fix-issues.md +0 -28
- package/dist/steps/execute/09-next-task.md +0 -33
- package/dist/steps/execute/manifest.yaml +0 -28
- package/dist/steps/plan/01-load-context.md +0 -22
- package/dist/steps/plan/02-anchor-confirm.md +0 -1
- package/dist/steps/plan/03-expand-tasks.md +0 -33
- package/dist/steps/plan/04-mark-order.md +0 -15
- package/dist/steps/plan/05-e2e-planning.md +0 -17
- package/dist/steps/plan/06-self-check.md +0 -16
- package/dist/steps/plan/07-save.md +0 -1
- package/dist/steps/plan/manifest.yaml +0 -18
- package/dist/steps/scan/01-env-detect.md +0 -51
- package/dist/steps/scan/02-tech-stack.md +0 -16
- package/dist/steps/scan/03-conventions.md +0 -16
- package/dist/steps/scan/04-structure.md +0 -19
- package/dist/steps/scan/05-quality.md +0 -18
- package/dist/steps/scan/06-complete.md +0 -49
- package/dist/steps/scan/manifest.yaml +0 -16
- package/dist/steps/verify/01-load-specs.md +0 -28
- package/dist/steps/verify/02-check-tasks.md +0 -1
- package/dist/steps/verify/03-check-design.md +0 -6
- package/dist/steps/verify/04-run-tests.md +0 -7
- package/dist/steps/verify/05-e2e-tests.md +0 -27
- package/dist/steps/verify/05b-e2e-fix.md +0 -33
- package/dist/steps/verify/06-code-quality.md +0 -25
- package/dist/steps/verify/07-lint-check.md +0 -27
- package/dist/steps/verify/08-output-report.md +0 -14
- package/dist/steps/verify/manifest.yaml +0 -22
- package/docs/.vitepress/config.mts +0 -45
- package/docs/.vitepress/dist/404.html +0 -25
- package/docs/.vitepress/dist/assets/app.YytxICdd.js +0 -1
- package/docs/.vitepress/dist/assets/chunks/framework.Czhw_PXq.js +0 -19
- package/docs/.vitepress/dist/assets/chunks/theme.DusTRZQk.js +0 -1
- package/docs/.vitepress/dist/assets/index.md.C3VCvtQA.js +0 -1
- package/docs/.vitepress/dist/assets/index.md.C3VCvtQA.lean.js +0 -1
- package/docs/.vitepress/dist/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-italic-cyrillic.By2_1cv3.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-italic-greek-ext.1u6EdAuj.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-italic-greek.DJ8dCoTZ.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-italic-latin-ext.CN1xVJS-.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-italic-latin.C2AdPX0b.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-italic-vietnamese.BSbpV94h.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-greek.BBVDIX6e.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-vietnamese.BjW4sHH5.woff2 +0 -0
- package/docs/.vitepress/dist/assets/sillyspec_commands.md.CXFFsj08.js +0 -15
- package/docs/.vitepress/dist/assets/sillyspec_commands.md.CXFFsj08.lean.js +0 -1
- package/docs/.vitepress/dist/assets/sillyspec_dashboard.md.BuPXHqjX.js +0 -4
- package/docs/.vitepress/dist/assets/sillyspec_dashboard.md.BuPXHqjX.lean.js +0 -1
- package/docs/.vitepress/dist/assets/sillyspec_file-io.md.Cz3x7llx.js +0 -1
- package/docs/.vitepress/dist/assets/sillyspec_file-io.md.Cz3x7llx.lean.js +0 -1
- package/docs/.vitepress/dist/assets/sillyspec_getting-started.md.ClcvV8k3.js +0 -4
- package/docs/.vitepress/dist/assets/sillyspec_getting-started.md.ClcvV8k3.lean.js +0 -1
- package/docs/.vitepress/dist/assets/sillyspec_install.md.CKuR2tiT.js +0 -5
- package/docs/.vitepress/dist/assets/sillyspec_install.md.CKuR2tiT.lean.js +0 -1
- package/docs/.vitepress/dist/assets/sillyspec_lifecycle.md.DY293cR1.js +0 -28
- package/docs/.vitepress/dist/assets/sillyspec_lifecycle.md.DY293cR1.lean.js +0 -1
- package/docs/.vitepress/dist/assets/sillyspec_structure.md.sVYS4zPs.js +0 -30
- package/docs/.vitepress/dist/assets/sillyspec_structure.md.sVYS4zPs.lean.js +0 -1
- package/docs/.vitepress/dist/assets/style.DFTx90Kk.css +0 -1
- package/docs/.vitepress/dist/hashmap.json +0 -1
- package/docs/.vitepress/dist/index.html +0 -28
- package/docs/.vitepress/dist/sillyspec/commands.html +0 -42
- package/docs/.vitepress/dist/sillyspec/dashboard.html +0 -31
- package/docs/.vitepress/dist/sillyspec/file-io.html +0 -28
- package/docs/.vitepress/dist/sillyspec/getting-started.html +0 -31
- package/docs/.vitepress/dist/sillyspec/install.html +0 -32
- package/docs/.vitepress/dist/sillyspec/lifecycle.html +0 -55
- package/docs/.vitepress/dist/sillyspec/structure.html +0 -57
- package/docs/.vitepress/dist/vp-icons.css +0 -1
- package/docs/index.md +0 -34
- package/docs/sillyspec/commands.md +0 -218
- package/docs/sillyspec/dashboard.md +0 -51
- package/docs/sillyspec/file-io.md +0 -34
- package/docs/sillyspec/getting-started.md +0 -61
- package/docs/sillyspec/install.md +0 -51
- package/docs/sillyspec/lifecycle.md +0 -146
- package/docs/sillyspec/structure.md +0 -62
- package/packages/dashboard/dist/assets/index-Bh-GPjKY.css +0 -1
- package/packages/dashboard/dist/assets/index-CrCn5Gg6.js +0 -17
- package/src/step.js +0 -543
- package/templates/archive.md +0 -120
- package/templates/brainstorm.md +0 -170
- package/templates/continue.md +0 -32
- package/templates/execute.md +0 -304
- package/templates/explore.md +0 -59
- package/templates/export.md +0 -21
- package/templates/init.md +0 -61
- package/templates/plan.md +0 -146
- package/templates/quick.md +0 -135
- package/templates/scan-quick.md +0 -49
- package/templates/scan.md +0 -156
- package/templates/skills/playwright-e2e/SKILL.md +0 -340
- package/templates/status.md +0 -75
- package/templates/verify.md +0 -236
- package/templates/workspace-sync.md +0 -99
- package/templates/workspace.md +0 -70
- /package/.sillyspec/{specs → changes/brainstorm-archive}/2026-04-05-dashboard-design.md +0 -0
- /package/{docs/.vitepress/dist/logo.jpg → logo.jpg} +0 -0
- /package/{docs/.vitepress → packages/dashboard}/dist/favicon.jpg +0 -0
- /package/{docs/public → packages/dashboard/dist}/logo.jpg +0 -0
- /package/{docs → packages/dashboard}/public/favicon.jpg +0 -0
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
## 交互规范
|
|
2
|
-
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
3
|
-
|
|
4
|
-
## 核心约束(必须遵守)
|
|
5
|
-
- ❌ 修改子项目的代码
|
|
6
|
-
- ❌ 删除已有文件(clone 前必须确认)
|
|
7
|
-
- ❌ 跳过冲突检查直接覆盖
|
|
8
|
-
|
|
9
|
-
## 流程
|
|
10
|
-
|
|
11
|
-
### Step 1: 读取配置
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
无子项目配置 → 提示先执行 `/sillyspec:workspace` 初始化工作区。
|
|
18
|
-
|
|
19
|
-
### Step 2: 逐个子项目检查
|
|
20
|
-
|
|
21
|
-
对每个子项目配置文件,按顺序执行:
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
for f in .sillyspec/projects/*.yaml; do
|
|
25
|
-
[ -f "$f" ] || continue
|
|
26
|
-
proj_name=$(basename "$f" .yaml)
|
|
27
|
-
proj_path=$(grep '^path:' "$f" | head -1 | sed 's/^path:[[:space:]]*//')
|
|
28
|
-
proj_repo=$(grep '^repo:' "$f" | head -1 | sed 's/^repo:[[:space:]]*//')
|
|
29
|
-
# ... 检查逻辑
|
|
30
|
-
done
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
# 检查目录是否存在
|
|
35
|
-
ls -d <path> 2>/dev/null && echo "EXISTS" || echo "MISSING"
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
#### 情况 A:目录不存在
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
# 检查是否有 repo 配置
|
|
42
|
-
grep '^repo:' .sillyspec/projects/<name>.yaml
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
- **有 repo** → AskUserQuestion:"子项目 `<name>` 不存在,是否从 `<repo>` clone 到 `<path>`?"
|
|
46
|
-
- 用户确认 → `git clone <repo> <path>` → ✅ 成功
|
|
47
|
-
- clone 失败 → ❌ 报错,提示用户手动 clone
|
|
48
|
-
- **无 repo** → ⚠️ 提示用户:"子项目 `<name>` 不存在且无 repo 配置,请手动放置到 `<path>`"
|
|
49
|
-
|
|
50
|
-
#### 情况 B:目录已存在
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
# 检查是否是 git 仓库
|
|
54
|
-
git -C <path> rev-parse --is-inside-work-tree 2>/dev/null
|
|
55
|
-
|
|
56
|
-
# 如果是,检查 remote 是否匹配
|
|
57
|
-
git -C <path> remote get-url origin 2>/dev/null
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
- **不是 git 仓库** → AskUserQuestion:"目录 `<path>` 存在但不是 git 仓库,可能和其他项目冲突。"
|
|
61
|
-
- 跳过此子项目
|
|
62
|
-
- 让用户指定正确路径
|
|
63
|
-
- **是 git 仓库,remote 匹配 repo** → ✅ 跳过,状态正常
|
|
64
|
-
- **是 git 仓库,remote 不匹配 repo** → ⚠️ AskUserQuestion:
|
|
65
|
-
- "目录 `<path>` 是 git 仓库但 remote 不匹配(期望 `<repo>`,实际 `<actual>`)。可能是不同项目。"
|
|
66
|
-
- 跳过 / 用户确认覆盖
|
|
67
|
-
|
|
68
|
-
#### 情况 C:路径冲突
|
|
69
|
-
|
|
70
|
-
检查两个子项目的 path 是否指向同一目录或互相包含:
|
|
71
|
-
|
|
72
|
-
```bash
|
|
73
|
-
# 将相对路径转为绝对路径后比较
|
|
74
|
-
realpath <path1>
|
|
75
|
-
realpath <path2>
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
冲突 → ❌ 报错:"子项目 A 和 B 的路径冲突,请修改对应的 projects/*.yaml"
|
|
79
|
-
|
|
80
|
-
### Step 3: 汇总报告
|
|
81
|
-
|
|
82
|
-
```
|
|
83
|
-
📊 工作区同步结果
|
|
84
|
-
|
|
85
|
-
┌───────────────────┬──────────┬────────────────────────────────────┐
|
|
86
|
-
│ 子项目 │ 状态 │ 说明 │
|
|
87
|
-
├───────────────────┼──────────┼────────────────────────────────────┤
|
|
88
|
-
│ back-service │ ✅ 正常 │ 目录存在,git remote 匹配 │
|
|
89
|
-
│ sub-grid-security │ 🔄 已克隆 │ 从 https://... clone 成功 │
|
|
90
|
-
│ frontend │ ⚠️ 缺失 │ 无 repo 配置,请手动放置 │
|
|
91
|
-
└───────────────────┴──────────┴────────────────────────────────────┘
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
全部正常 → 提示 `/sillyspec:brainstorm '你的需求'` 继续。
|
|
95
|
-
有异常 → 提示用户处理后再 sync。
|
|
96
|
-
|
|
97
|
-
### Step 4: 更新子项目配置
|
|
98
|
-
|
|
99
|
-
如果 clone 过程中实际 remote 和 `projects/<name>.yaml` 中的 repo 不一致,更新对应 yaml 文件的 repo 字段为实际值。
|
package/templates/workspace.md
DELETED
|
@@ -1,70 +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
|
-
ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .
|
|
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. 创建 `.sillyspec/projects/<name>.yaml` 文件
|
|
37
|
-
- `remove` → 删除 `.sillyspec/projects/<name>.yaml` 文件
|
|
38
|
-
- `sync` → 同步子项目(clone 缺失的,检查冲突)
|
|
39
|
-
|
|
40
|
-
### Step 3: 执行操作
|
|
41
|
-
|
|
42
|
-
**初始化工作区:** 询问名称 → 逐个添加子项目(名称、路径、角色描述,验证路径存在)→ 共享规范 → 创建 `projects/*.yaml` + `.sillyspec/shared/`
|
|
43
|
-
|
|
44
|
-
**添加/移除子项目:** 创建或删除 `projects/<name>.yaml`,Git 提交。
|
|
45
|
-
|
|
46
|
-
**状态显示:** 读取每个子项目的 `.sillyspec/` 内容(PROJECT.md、docs/<project>/scan/ 文档数、进行中变更),输出格式:
|
|
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
|
-
### 读取子项目信息
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
for f in .sillyspec/projects/*.yaml; do
|
|
61
|
-
[ -f "$f" ] || continue
|
|
62
|
-
proj_name=$(basename "$f" .yaml)
|
|
63
|
-
proj_path=$(grep '^path:' "$f" | head -1 | sed 's/^path:[[:space:]]*//')
|
|
64
|
-
proj_role=$(grep '^role:' "$f" | head -1 | sed 's/^role:[[:space:]]*//')
|
|
65
|
-
proj_repo=$(grep '^repo:' "$f" | head -1 | sed 's/^repo:[[:space:]]*//')
|
|
66
|
-
# 检查文档数、变更数等
|
|
67
|
-
doc_count=$(ls "$proj_path"/.sillyspec/docs/$proj_name/scan/*.md 2>/dev/null | wc -l)
|
|
68
|
-
echo " $proj_name $proj_path $proj_role docs:$doc_count"
|
|
69
|
-
done
|
|
70
|
-
```
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|