@shirayner/ace 0.1.6 → 0.1.7-snapshot.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/package.json +1 -1
- package/templates/openspec/config.yaml +64 -131
- package/templates/settings.json +23 -31
package/package.json
CHANGED
|
@@ -1,160 +1,93 @@
|
|
|
1
1
|
schema: spec-driven
|
|
2
|
-
version:
|
|
2
|
+
version: 10.0.0
|
|
3
3
|
context: |
|
|
4
4
|
## 语言
|
|
5
|
-
|
|
5
|
+
所有交互、思考链、文档一律使用中文。OpenSpec 英文标题保留。
|
|
6
6
|
|
|
7
7
|
## 工作模式
|
|
8
|
-
aspec 寄生于 OpenSpec
|
|
9
|
-
|
|
8
|
+
aspec 寄生于 OpenSpec,通过 context 和 rules 注入增强,不修改 OpenSpec 本身。
|
|
9
|
+
核心理念:对齐优先于效率。
|
|
10
10
|
|
|
11
|
-
##
|
|
12
|
-
[
|
|
13
|
-
→ [设计澄清 → 对齐] → design.md → [设计审批] → tasks
|
|
14
|
-
→ [确认实施?] → apply → [经验提取] → [确认归档?] → archive
|
|
11
|
+
## 流程
|
|
12
|
+
[需求澄清→对齐] → proposal → specs → [设计澄清→对齐] → design.md → [审批] → tasks → [确认?] → apply → [经验提取] → [确认?] → archive
|
|
15
13
|
|
|
16
|
-
##
|
|
17
|
-
替用户做选择时,如果用户此刻看到该决策会惊讶 → 暂停,展示选项等待确认。
|
|
14
|
+
## 门禁(不可跳过)
|
|
18
15
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
| 阶段 | 前置条件 |
|
|
16
|
+
| 产物 | 前置条件 |
|
|
22
17
|
|------|----------|
|
|
23
|
-
| proposal |
|
|
24
|
-
| design.md |
|
|
18
|
+
| proposal | issues/requirement-issues.md 存在且已澄清 + 对齐确认通过 |
|
|
19
|
+
| design.md | issues/design-issues.md 存在且已澄清 + 对齐确认通过 |
|
|
25
20
|
| tasks | 用户审批 design.md |
|
|
26
21
|
|
|
27
|
-
##
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
## 严重度
|
|
32
|
-
- High:阻塞性,必须澄清 / Medium:建议澄清 / Low:可选
|
|
33
|
-
|
|
34
|
-
## Spec 质量标准
|
|
35
|
-
- proposal:每个 Capability 有明确边界和验收条件
|
|
36
|
-
- specs:场景覆盖核心路径 + 已知边界条件
|
|
37
|
-
- design:每个 High 决策有选择、理由、备选方案
|
|
38
|
-
- tasks:可独立验证,粒度适合单次实现
|
|
39
|
-
|
|
40
|
-
## Issue Schema
|
|
41
|
-
- 需求问题:id (R{功能序号}-{编号}), description, severity, status, answer
|
|
42
|
-
- 设计问题:id (D{维度序号}-{编号}), description, severity, status, decision, rationale
|
|
43
|
-
- 按功能点或维度分组,含统计汇总。格式自行组织。
|
|
44
|
-
|
|
45
|
-
## 实施观察笔记
|
|
46
|
-
apply 阶段记录到 spec/notes.md,分四类:需求意外 / 设计意外 / 好的实践 / 风险事件
|
|
47
|
-
|
|
48
|
-
## 澄清与对齐协议
|
|
49
|
-
|
|
50
|
-
需求澄清(proposal 前)和设计澄清(design.md 前)共用此协议,分两个独立步骤:
|
|
51
|
-
|
|
52
|
-
### 步骤一:澄清
|
|
53
|
-
通过 AskUserQuestion 工具批量提问所有 High/Medium 问题,标注总数和严重度分布。
|
|
54
|
-
用户可中途退出(q),进度保存到问题清单。收到完整回答后统一更新问题清单。
|
|
55
|
-
差异:需求澄清无问题时可跳过;设计澄清即使无问题也须展示决策摘要。
|
|
56
|
-
|
|
57
|
-
### 步骤二:对齐确认
|
|
58
|
-
澄清完成后,AI 用 markdown 文本向用户呈现 4 要素:
|
|
59
|
-
1. 我的理解 — 复述核心需求/设计意图
|
|
60
|
-
2. 计划方向 — 接下来文档将包含什么
|
|
61
|
-
3. 关键假设 — 不确定的假设
|
|
62
|
-
4. 完成标准 — 产出合格条件
|
|
63
|
-
呈现完毕后,调用 AskUserQuestion 让用户确认或调整。
|
|
64
|
-
注意:对齐内容用普通 markdown 文本输出,不放在 AskUserQuestion 中(大段内容显示异常)。
|
|
65
|
-
|
|
66
|
-
### 设计额外要求
|
|
67
|
-
design.md 创建后、tasks 前,须展示设计核心摘要,通过 AskUserQuestion 获得审批。
|
|
22
|
+
## 元规则
|
|
23
|
+
- 惊讶测试:替用户做选择时,若用户看到会惊讶 → 暂停展示选项
|
|
24
|
+
- 对齐内容用 markdown 文本输出(大段内容在 AskUserQuestion 中显示异常),确认通过 AskUserQuestion
|
|
68
25
|
|
|
69
|
-
##
|
|
26
|
+
## 深度探索
|
|
27
|
+
不要遍历维度清单做表面扫描。聚焦于:
|
|
28
|
+
- 哪些部分让你最不确定?为什么?
|
|
29
|
+
- 哪些误解的返工成本最高?
|
|
30
|
+
- dimensions.md 的已知盲区是否相关?
|
|
70
31
|
|
|
71
|
-
|
|
32
|
+
## 文件约定
|
|
33
|
+
- 需求问题:issues/requirement-issues.md(id, description, severity, status, answer)
|
|
34
|
+
- 设计问题:issues/design-issues.md(id, description, severity, status, decision, rationale)
|
|
35
|
+
- 实施观察:spec/notes.md(需求意外 / 设计意外 / 好的实践 / 风险事件)
|
|
36
|
+
- 项目经验:experience.md(结构见 experience-template.md)
|
|
72
37
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
| 技术决策 | experience.md 技术决策段 | issues/design-issues.md | 选择 + 理由 + 备选 + 状态 |
|
|
78
|
-
| 新术语 | experience.md 领域词汇段 | 实施过程发现 | 定义 + 首次出现 |
|
|
79
|
-
| 风险事件 | experience.md 风险图谱段 | spec/notes.md 风险事件 | 描述 + 区域 + 类型 |
|
|
80
|
-
| 澄清漏检 | dimensions.md 盲区段 | 对比 issues/ 下问题文件与实际偏差 | 新盲区 |
|
|
81
|
-
| 复盘记录 | experience.md 复盘记录段 | 全程记录 | 变更概述·澄清质量·过程经验·效率信号 |
|
|
82
|
-
|
|
83
|
-
### 主动应用(每次新 change 开始)
|
|
84
|
-
读取 openspec/experience.md 和 dimensions.md 盲区段,主动告知用户相关知识。
|
|
85
|
-
|
|
86
|
-
### 收敛
|
|
87
|
-
条目超阈值时合并/淘汰(需用户确认)。
|
|
88
|
-
|
|
89
|
-
## 阶段规则(非 schema artifact)
|
|
90
|
-
|
|
91
|
-
### explore 阶段
|
|
92
|
-
[PRE] **知识主动应用**
|
|
93
|
-
读取 openspec/experience.md 和 dimensions.md 盲区段,告知用户与当前 change 相关的已有知识。
|
|
38
|
+
## Spec 质量标准
|
|
39
|
+
- proposal:每个 Capability 有明确边界和可测试验收条件
|
|
40
|
+
- design:每个 High 决策含选择、理由、备选方案、排除原因
|
|
41
|
+
- tasks:可独立验证,可追溯到 design 决策
|
|
94
42
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
[POST] **复盘与知识进化**
|
|
99
|
-
1. 回顾本次实施过程,按 experience-template.md 复盘记录段的结构追加复盘
|
|
100
|
-
2. 提取知识更新 openspec/experience.md(技术决策/术语/风险)
|
|
101
|
-
3. 漏检问题更新 dimensions.md 盲区段
|
|
102
|
-
4. 展示 5-8 行摘要供用户确认
|
|
103
|
-
[POST] **流程衔接 → 归档**
|
|
104
|
-
经验提取完成后,通过 AskUserQuestion 询问用户:"是否立即归档?"
|
|
105
|
-
选项:立即归档(推荐)/ 稍后手动归档
|
|
106
|
-
用户确认后,调用 Skill 工具执行 opsx:archive。
|
|
43
|
+
## 经验进化
|
|
44
|
+
跨会话知识积累体系。钩子在 rules 中声明,结构由 experience-template.md 定义。
|
|
45
|
+
应用经验时告知用户("基于经验 EX,建议...")。验证:✓有效 / ✗无效 / —不适用。
|
|
107
46
|
|
|
108
|
-
### archive 阶段
|
|
109
|
-
[POST] **收敛检查**
|
|
110
|
-
experience.md 条目超阈值时提议合并/淘汰(需用户确认)。
|
|
111
47
|
rules:
|
|
112
48
|
proposal:
|
|
49
|
+
- "[PRE] 读取 experience.md 需求相关经验,告知用户"
|
|
113
50
|
- |
|
|
114
|
-
[PRE]
|
|
115
|
-
1.
|
|
116
|
-
2.
|
|
117
|
-
|
|
118
|
-
3. **步骤一(澄清)**:通过 AskUserQuestion 向用户批量提问
|
|
119
|
-
4. **必须更新文件**:收到回答后,立即更新 issues/requirement-issues.md 标注每个问题的 status 和 answer
|
|
120
|
-
5. **步骤二(对齐确认)**:markdown 展示 4 要素 → AskUserQuestion 确认
|
|
121
|
-
6. 确认后将文件状态标记为 clarified,然后创建 proposal
|
|
51
|
+
[PRE] 需求澄清流程(三步顺序执行,每步完成后再进入下一步):
|
|
52
|
+
1. **分析→写入** — 自主分析需求不确定性(参考 dimensions.md 盲区),结果写入 issues/requirement-issues.md
|
|
53
|
+
2. **澄清** — 通过 AskUserQuestion 批量澄清 High/Medium 问题
|
|
54
|
+
3. **对齐确认** — 用 markdown 展示需求理解摘要,再通过 AskUserQuestion 确认
|
|
122
55
|
- |
|
|
123
|
-
🚫
|
|
56
|
+
🚫 GATE: 满足以下全部条件前,禁止创建 proposal:
|
|
57
|
+
- issues/requirement-issues.md 已创建且 High/Medium 问题已澄清
|
|
58
|
+
- 对齐确认已通过
|
|
124
59
|
|
|
125
60
|
specs:
|
|
126
|
-
-
|
|
127
|
-
[CONSTRAINT] specs 必须与已澄清的需求一致。
|
|
128
|
-
需求有变更时,在问题清单中记录变更原因。
|
|
61
|
+
- "[CONSTRAINT] 须与已澄清需求一致,变更须记录原因"
|
|
129
62
|
|
|
130
63
|
design:
|
|
64
|
+
- "[PRE] 读取 experience.md 技术相关经验,告知用户"
|
|
131
65
|
- |
|
|
132
|
-
[PRE]
|
|
133
|
-
1.
|
|
134
|
-
2.
|
|
135
|
-
|
|
136
|
-
3. **步骤一(澄清)**:通过 AskUserQuestion 向用户批量提问(即使无问题也须展示决策摘要)
|
|
137
|
-
4. **必须更新文件**:收到回答后,立即更新 issues/design-issues.md 标注每个问题的 decision 和 rationale
|
|
138
|
-
5. **步骤二(对齐确认)**:markdown 展示 4 要素 → AskUserQuestion 确认
|
|
139
|
-
6. 确认后将文件状态标记为 clarified,然后创建 design.md
|
|
140
|
-
- |
|
|
141
|
-
🚫 禁止跳过门禁:issues/design-issues.md 不存在或状态不在 {clarifying, clarified, resolved} 时,禁止创建 design.md
|
|
66
|
+
[PRE] 设计澄清流程(三步顺序执行,每步完成后再进入下一步):
|
|
67
|
+
1. **分析→写入** — 自主分析设计不确定性,结果写入 issues/design-issues.md
|
|
68
|
+
2. **澄清** — 通过 AskUserQuestion 批量澄清 High/Medium 决策(即使无问题也须展示决策摘要)
|
|
69
|
+
3. **对齐确认** — 用 markdown 展示技术方案摘要,再通过 AskUserQuestion 确认
|
|
142
70
|
- |
|
|
143
|
-
|
|
144
|
-
-
|
|
145
|
-
-
|
|
146
|
-
- 备选方案(考虑过哪些)
|
|
147
|
-
- 排除原因(为什么放弃备选)
|
|
71
|
+
🚫 GATE: 满足以下全部条件前,禁止创建 design.md:
|
|
72
|
+
- issues/design-issues.md 已创建且 High/Medium 决策已澄清
|
|
73
|
+
- 对齐确认已通过
|
|
148
74
|
|
|
149
75
|
tasks:
|
|
76
|
+
- "[PRE] 展示 design.md 核心摘要,通过 AskUserQuestion 获得审批后创建任务"
|
|
150
77
|
- |
|
|
151
|
-
[
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
[
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
[
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
78
|
+
[CONSTRAINT] tasks.md 末尾必须包含"收尾"段落,包含以下门禁 checkbox:
|
|
79
|
+
## 收尾(代码任务全部完成后执行)
|
|
80
|
+
> 经验提取规范见 experience-template.md。重点:反直觉发现、踩坑经验、可复用模式。
|
|
81
|
+
- [ ] 复盘:对照 design.md 检查实施偏差,将发现记录到 spec/notes.md
|
|
82
|
+
- [ ] 经验提取:按 experience-template.md 格式从实施过程提取经验写入 experience.md
|
|
83
|
+
- [ ] 经验验证:验证本次应用的历史经验(标记 ✓有效/✗无效/—不适用)
|
|
84
|
+
- [ ] 经验收敛:检查 experience.md 条目数量,若 >20 条则提议合并/淘汰(需用户确认)
|
|
85
|
+
- [ ] 归档确认:通过 AskUserQuestion 询问用户是否归档
|
|
86
|
+
这些 checkbox 必须排在所有代码实施任务之后
|
|
87
|
+
- "[POST] 通过 AskUserQuestion 询问是否立即实施,确认后调用 Skill 执行 opsx:apply"
|
|
88
|
+
|
|
89
|
+
apply:
|
|
90
|
+
- "[PRE] 读取 issues/ 下决策文件,遵循所有已澄清决策"
|
|
91
|
+
- "[CONSTRAINT] 新问题暂停评估记录到 spec/notes.md;代码与 design.md 偏差须记录理由"
|
|
92
|
+
|
|
93
|
+
archive: []
|
package/templates/settings.json
CHANGED
|
@@ -1,58 +1,50 @@
|
|
|
1
1
|
{
|
|
2
2
|
"permissions": {
|
|
3
|
-
"defaultMode": "auto",
|
|
4
3
|
"allow": [
|
|
5
|
-
"Bash(
|
|
6
|
-
"Bash(ls*)",
|
|
7
|
-
"Bash(cat*)",
|
|
8
|
-
"Bash(echo*)",
|
|
9
|
-
"Bash(pwd)",
|
|
10
|
-
"Bash(cd*)",
|
|
11
|
-
"Bash(find*)",
|
|
12
|
-
"Bash(grep*)",
|
|
13
|
-
"Bash(sed*)",
|
|
14
|
-
"Bash(mkdir*)",
|
|
15
|
-
"Bash(touch*)",
|
|
16
|
-
"Bash(npm*)",
|
|
17
|
-
"Bash(node*)",
|
|
18
|
-
"Bash(jq*)",
|
|
19
|
-
"Bash(openspec*)",
|
|
20
|
-
"Bash(opc*)",
|
|
21
|
-
"Bash(gh *)",
|
|
22
|
-
"Bash(where:*)",
|
|
23
|
-
"Bash(npx*)",
|
|
24
|
-
"Bash(python*)",
|
|
25
|
-
"Bash(pip*)",
|
|
4
|
+
"Bash(*)",
|
|
26
5
|
"Read",
|
|
27
|
-
"Write",
|
|
28
|
-
"Edit",
|
|
29
|
-
"NotebookEdit",
|
|
30
6
|
"Glob",
|
|
31
7
|
"Grep",
|
|
32
|
-
"Skill(
|
|
8
|
+
"Skill(*)",
|
|
33
9
|
"WebSearch",
|
|
34
10
|
"WebFetch",
|
|
35
11
|
"mcp__context7__resolve_library_id",
|
|
36
12
|
"mcp__context7__query_docs",
|
|
37
|
-
"
|
|
38
|
-
"
|
|
13
|
+
"Write",
|
|
14
|
+
"Edit",
|
|
15
|
+
"NotebookEdit"
|
|
39
16
|
],
|
|
40
17
|
"deny": [
|
|
41
18
|
"Bash(rm -rf*)",
|
|
19
|
+
"Bash(rm -r*)",
|
|
20
|
+
"Bash(rm -f -r*)",
|
|
21
|
+
"Bash(rm --recursive*)",
|
|
22
|
+
"Bash(rm -rf /*)",
|
|
23
|
+
"Bash(rm -rf ~/*)",
|
|
24
|
+
"Bash(rm -rf /usr*)",
|
|
25
|
+
"Bash(rm -rf /opt*)",
|
|
26
|
+
"Bash(rmdir /s /q*)",
|
|
27
|
+
"Bash(rd /s /q*)",
|
|
28
|
+
"Bash(del /f /s /q*)",
|
|
29
|
+
"Bash(deltree*)",
|
|
30
|
+
"Bash(git clean -fd*)",
|
|
31
|
+
"Bash(git clean -ffd*)",
|
|
32
|
+
"Bash(git reset --hard*)",
|
|
42
33
|
"Bash(sudo*)",
|
|
43
|
-
"Bash(curl*--data*)",
|
|
44
34
|
"Write(*.env)",
|
|
45
35
|
"Write(*id_rsa*)"
|
|
46
36
|
],
|
|
37
|
+
"defaultMode": "auto",
|
|
47
38
|
"hooks": {
|
|
48
39
|
"PostToolUse": []
|
|
49
40
|
}
|
|
50
41
|
},
|
|
51
|
-
"
|
|
42
|
+
"hooks": {},
|
|
52
43
|
"enabledPlugins": {
|
|
53
44
|
"hookify@claude-plugins-official": true,
|
|
54
45
|
"revealjs@revealjs-skill": true,
|
|
55
46
|
"ace@ace-local": true
|
|
56
47
|
},
|
|
57
|
-
"
|
|
48
|
+
"autoMemoryDirectory": "~/.claude/memory/",
|
|
49
|
+
"skipAutoPermissionPrompt": true
|
|
58
50
|
}
|