sillyspec 3.26.15 → 3.27.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/.claude/skills/sillyspec-explore/SKILL.md +10 -3
- package/.claude/skills/sillyspec-verify/SKILL.md +2 -0
- package/README.md +2 -2
- package/package.json +1 -1
- package/packages/dashboard/server/index.js +22 -6
- package/src/agent-session-log.js +763 -0
- package/src/change-list.js +22 -2
- package/src/change-risk-profile.js +21 -6
- package/src/contract-matrix.js +91 -7
- package/src/db.js +14 -3
- package/src/docs-check.js +598 -570
- package/src/doctor-diagnostics.js +53 -1
- package/src/endpoint-extractor.js +21 -2
- package/src/fs-atomic.js +4 -2
- package/src/git-helper.js +73 -5
- package/src/hooks/claude-pre-tool-use.cjs +10 -5
- package/src/hooks/worktree-guard.js +22 -3
- package/src/index.js +59 -7
- package/src/module-impact.js +21 -1
- package/src/module-resolve.js +211 -0
- package/src/modules.js +82 -2
- package/src/progress/step-store.js +12 -8
- package/src/progress.js +6 -2
- package/src/quicklog.js +11 -3
- package/src/run/command.js +40 -0
- package/src/run/complete-handlers.js +17 -2
- package/src/run/complete.js +81 -8
- package/src/run/gates.js +83 -14
- package/src/run/prompt.js +16 -2
- package/src/run/quick-audit.js +22 -2
- package/src/run/shared.js +70 -19
- package/src/run/stage.js +60 -3
- package/src/stage-contract.js +14 -1
- package/src/stages/archive.js +3 -1
- package/src/stages/execute.js +171 -18
- package/src/stages/explore.js +11 -2
- package/src/stages/plan-postcheck.js +3 -1
- package/src/stages/plan.js +3 -0
- package/src/stages/quick.js +4 -3
- package/src/stages/verify.js +9 -2
- package/src/sync.js +98 -3
- package/src/task-review.js +55 -7
- package/src/taskcard.js +52 -22
- package/src/verify-postcheck.js +223 -6
- package/src/worktree-apply.js +28 -10
- package/src/worktree-deps.js +71 -5
- package/src/worktree.js +70 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: sillyspec:explore
|
|
3
|
-
description: 用于自由讨论、代码库调研、方案比较、画 ASCII
|
|
3
|
+
description: 用于自由讨论、代码库调研、方案比较、画 ASCII 图、澄清问题、生成 HTML 原型。适合用户说"分析下、讨论下、看看怎么设计、先别写代码、调研一下、画个结构图、帮我再分析下、画个原型、出个原型图、做个 demo 页"。默认只读不修改文件(仅用户明确要求时保存结论或生成原型),不实现功能。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
## 交互规范
|
|
@@ -33,7 +33,7 @@ sillyspec run explore --status # 查看阶段状态
|
|
|
33
33
|
|
|
34
34
|
## 这是什么模式
|
|
35
35
|
|
|
36
|
-
**探索模式用于思考,不用于实现。**
|
|
36
|
+
**探索模式用于思考,不用于实现。** 你可以读文件、搜代码、调查代码库,但默认不写任何文件(用户明确要求保存结论或生成原型时除外),也绝不写实现代码。如果用户要求实现,提醒他们先退出探索模式。
|
|
37
37
|
|
|
38
38
|
**这不是一个工作流,是一种姿态。** 没有固定步骤、没有必需的输出。你是一个帮助用户思考的伙伴。
|
|
39
39
|
|
|
@@ -66,6 +66,12 @@ sillyspec run explore --status # 查看阶段状态
|
|
|
66
66
|
└─────────────────────────────────┘
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
+
**生成 HTML 原型**(仅用户明确要求时):讨论 UI/交互方案时,用户说"画个原型、出个原型图、做个 demo 页"才动手,平时最多提议。生成要求与 brainstorm 阶段原型对齐:
|
|
70
|
+
- 单文件 HTML(内联 CSS + JS),浏览器直接打开
|
|
71
|
+
- 高保真呈现讨论中的布局/组件/交互流程,风格对齐项目现有界面(先读 scan 文档与前端代码)
|
|
72
|
+
- 保存到 `.sillyspec/explore/prototype-<名称>.html`(用户指定其他位置则从其指定)
|
|
73
|
+
- 探索原型是讨论工具、不是交付物,也不是实现代码;后续进入 brainstorm 时可复制到变更目录复用
|
|
74
|
+
|
|
69
75
|
**暴露风险**:识别可能出错的地方、发现理解空白
|
|
70
76
|
|
|
71
77
|
## OpenSpec 上下文感知
|
|
@@ -90,6 +96,7 @@ cat .sillyspec/ROADMAP.md 2>/dev/null
|
|
|
90
96
|
|
|
91
97
|
- ❌ 写实现代码
|
|
92
98
|
- ❌ 安装依赖
|
|
93
|
-
- ❌
|
|
99
|
+
- ❌ 修改任何文件(除非用户明确要求保存发现或生成原型)
|
|
100
|
+
- ❌ 主动生成原型(必须用户明确要求;最多提议)
|
|
94
101
|
- ❌ 强行下结论
|
|
95
102
|
- ❌ 强行结构化(让模式自然涌现)
|
|
@@ -52,6 +52,8 @@ verify 是只读阶段(**禁止改代码/改 git 状态**,只检查 + 写报
|
|
|
52
52
|
## verify-result.md 格式
|
|
53
53
|
|
|
54
54
|
> 🔧 **机械探针 + 报告骨架一条命令**:`sillyspec verify-probes --change <变更名> --init`——探针 1(TODO 标记)/3(测试覆盖)/5(API 契约对账)/6(删除对账)CLI 跑完并预填进 verify-result.md 骨架(七章节、已存在不覆盖);探针 2/4(关键词/决策追踪)与断言抽查、集成盲区标注是语义判断,替换骨架里的 `<!--TODO-->` 完成。结论必须写明 PASS/FAIL——留「待填」会被 gate 判不过。
|
|
55
|
+
>
|
|
56
|
+
> 🔧 **test/lint 实测对账**:`--done` 时 CLI 亲自执行 local.yaml 的 `commands.test`(实测失败阻断 verify 完成)与 `commands.lint`(advisory 对账,实测失败会明示)——自报告与实测不符时以实测为准,勿谎报跑过。
|
|
55
57
|
|
|
56
58
|
```markdown
|
|
57
59
|
# 验证报告
|
package/README.md
CHANGED
|
@@ -109,7 +109,7 @@ SillySpec 进度库使用 SQLite 持久化(基于 Node.js 内置的 `node:sqli
|
|
|
109
109
|
|---|---|
|
|
110
110
|
| `/sillyspec:status` · `/sillyspec:state` | 查看进度 / 当前工作状态 |
|
|
111
111
|
| `/sillyspec:continue` | 自动判断并执行下一步 |
|
|
112
|
-
| `/sillyspec:explore` |
|
|
112
|
+
| `/sillyspec:explore` | 自由思考:画图、讨论、调研、HTML 原型 |
|
|
113
113
|
| `/sillyspec:quick` | 快速模式:跳过完整流程 |
|
|
114
114
|
| `/sillyspec:resume` | 恢复工作(支持大模块阶段进度) |
|
|
115
115
|
| `/sillyspec:doctor` | 项目自检与状态修复 |
|
|
@@ -141,7 +141,7 @@ sillyspec doctor 全量自检 + 修复进度
|
|
|
141
141
|
- **进度持久化** — SQLite(node:sqlite)持久化,支持断点恢复
|
|
142
142
|
- **模块文档** — 模块级知识库,AI 执行时按需加载相关上下文
|
|
143
143
|
- **浏览器自动化** — 可选 MCP(Playwright / Chrome DevTools),供集成/E2E 冒烟验证
|
|
144
|
-
- **平台同步** — 可选对接 SillyHub,文档同步 + 团队审批
|
|
144
|
+
- **平台同步** — 可选对接 SillyHub,文档同步 + 团队审批 + 本地 agent 会话日志路径主动上报(平台会话展示本地 agent 完整日志;支持 Claude Code / Codex / ZCode 自动探测,其他 CLI 用 `SILLYSPEC_AGENT_LOG` 显式指定)
|
|
145
145
|
|
|
146
146
|
## 可靠性保障
|
|
147
147
|
|
package/package.json
CHANGED
|
@@ -468,10 +468,19 @@ function startServer({ port = 3456, open: openBrowser = true } = {}) {
|
|
|
468
468
|
res.end(JSON.stringify({ error: 'Missing project parameter' }))
|
|
469
469
|
return
|
|
470
470
|
}
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
471
|
+
// SEC-06 对齐:detail/content API 均已限"已发现项目内",此处此前漏校验——
|
|
472
|
+
// 任意绝对路径可列其 .sillyspec/docs 树与根文档文件名
|
|
473
|
+
isKnownProjectPath(projectPath).then(known => {
|
|
474
|
+
if (!known) {
|
|
475
|
+
res.writeHead(403)
|
|
476
|
+
res.end(JSON.stringify({ error: 'Unknown project path' }))
|
|
477
|
+
return
|
|
478
|
+
}
|
|
479
|
+
const docs = parseSillyspecDocsTree(projectPath)
|
|
480
|
+
res.setHeader('Content-Type', 'application/json')
|
|
481
|
+
res.writeHead(200)
|
|
482
|
+
res.end(JSON.stringify(docs))
|
|
483
|
+
})
|
|
475
484
|
return
|
|
476
485
|
}
|
|
477
486
|
|
|
@@ -591,8 +600,15 @@ function startServer({ port = 3456, open: openBrowser = true } = {}) {
|
|
|
591
600
|
break
|
|
592
601
|
case 'docs:get':
|
|
593
602
|
if (data.data?.projectPath) {
|
|
594
|
-
|
|
595
|
-
|
|
603
|
+
// SEC-06 对齐:与 /api/docs 同口径,仅已发现项目可列 docs 树
|
|
604
|
+
isKnownProjectPath(data.data.projectPath).then(known => {
|
|
605
|
+
if (!known) {
|
|
606
|
+
ws.send(JSON.stringify({ type: 'docs:tree', data: { error: 'Unknown project path' } }))
|
|
607
|
+
return
|
|
608
|
+
}
|
|
609
|
+
const docs = parseSillyspecDocsTree(data.data.projectPath)
|
|
610
|
+
ws.send(JSON.stringify({ type: 'docs:tree', data: docs }))
|
|
611
|
+
})
|
|
596
612
|
}
|
|
597
613
|
break
|
|
598
614
|
default:
|