ethan-skill 1.10.4 → 1.11.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/README.md +10 -10
- package/dist/cli/index.js +248 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/context/builder.d.ts +7 -0
- package/dist/context/builder.d.ts.map +1 -1
- package/dist/context/builder.js +31 -0
- package/dist/context/builder.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +212 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/skills/25-spec-proposal.d.ts +3 -0
- package/dist/skills/25-spec-proposal.d.ts.map +1 -0
- package/dist/skills/25-spec-proposal.js +157 -0
- package/dist/skills/25-spec-proposal.js.map +1 -0
- package/dist/skills/26-spec-review.d.ts +3 -0
- package/dist/skills/26-spec-review.d.ts.map +1 -0
- package/dist/skills/26-spec-review.js +126 -0
- package/dist/skills/26-spec-review.js.map +1 -0
- package/dist/skills/index.d.ts +2 -0
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +9 -1
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/pipeline.d.ts.map +1 -1
- package/dist/skills/pipeline.js +12 -0
- package/dist/skills/pipeline.js.map +1 -1
- package/dist/spec/index.d.ts +57 -0
- package/dist/spec/index.d.ts.map +1 -0
- package/dist/spec/index.js +303 -0
- package/dist/spec/index.js.map +1 -0
- package/package.json +1 -1
- package/rules/claude-code/CLAUDE.md +246 -3
- package/rules/cline/.clinerules +216 -2
- package/rules/codebuddy/CODEBUDDY.md +236 -2
- package/rules/continue/.continuerules +216 -2
- package/rules/copilot/copilot-instructions.md +230 -2
- package/rules/cursor/.cursorrules +243 -2
- package/rules/cursor/smart-flow.mdc +243 -2
- package/rules/jetbrains/smart-flow.md +230 -2
- package/rules/lingma/smart-flow.md +235 -3
- package/rules/windsurf/.windsurf/rules/smart-flow.md +231 -3
- package/rules/zed/smart-flow.rules +213 -1
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.specProposalSkill = void 0;
|
|
4
|
+
exports.specProposalSkill = {
|
|
5
|
+
id: 'spec-proposal',
|
|
6
|
+
name: 'Spec Proposal',
|
|
7
|
+
nameEn: 'spec_proposal',
|
|
8
|
+
order: 25,
|
|
9
|
+
description: '遵循 OpenSpec 规范,在编码前生成完整变更提案包(proposal + design + tasks + spec delta)',
|
|
10
|
+
descriptionEn: 'Generate a complete OpenSpec change proposal package before coding: proposal, design, tasks and spec deltas',
|
|
11
|
+
detailDescription: `遵循 OpenSpec 规范,在编写任何代码之前先生成完整的变更提案文档包。
|
|
12
|
+
包含变更描述(proposal.md)、技术方案(design.md)、分阶段任务(tasks.md)
|
|
13
|
+
和需求变更 delta(openspec/changes/[id]/specs/)。
|
|
14
|
+
让团队在实施前对齐意图和范围,"Review intent, not just code"。`,
|
|
15
|
+
triggers: [
|
|
16
|
+
'spec proposal',
|
|
17
|
+
'openspec proposal',
|
|
18
|
+
'生成提案',
|
|
19
|
+
'变更提案',
|
|
20
|
+
'spec 提案',
|
|
21
|
+
'写 proposal',
|
|
22
|
+
'@ethan spec proposal',
|
|
23
|
+
'/spec-proposal',
|
|
24
|
+
],
|
|
25
|
+
steps: [
|
|
26
|
+
{
|
|
27
|
+
title: '1. 扫描现有 Spec 上下文',
|
|
28
|
+
content: `查阅 openspec/specs/ 目录,了解已有规范:
|
|
29
|
+
|
|
30
|
+
- 列出所有 capability 目录及其 spec.md 摘要
|
|
31
|
+
- 识别本次变更涉及的 capability(可能跨多个)
|
|
32
|
+
- 了解现有需求(Requirements)和场景(Scenarios)边界
|
|
33
|
+
|
|
34
|
+
**如无 openspec 目录**:询问用户需要创建哪些 capability 的 spec,用 \`ethan spec init [capability]\` 初始化。
|
|
35
|
+
|
|
36
|
+
**输出**:涉及的 spec 文件列表 + 关键现有需求摘要`,
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
title: '2. 生成 proposal.md(变更提案)',
|
|
40
|
+
content: `生成 openspec/changes/[change-id]/proposal.md:
|
|
41
|
+
|
|
42
|
+
\`\`\`markdown
|
|
43
|
+
# Change Proposal: [变更标题]
|
|
44
|
+
|
|
45
|
+
> Change ID: [yyyymmdd-xxxx]
|
|
46
|
+
|
|
47
|
+
## 变更描述
|
|
48
|
+
[1-3 句话说明这个变更要做什么]
|
|
49
|
+
|
|
50
|
+
## 动机与背景
|
|
51
|
+
[为什么需要这个变更,解决什么业务问题]
|
|
52
|
+
|
|
53
|
+
## 影响范围
|
|
54
|
+
- 涉及的 Capability:[列表]
|
|
55
|
+
- 影响的用户角色:[列表]
|
|
56
|
+
- 影响的现有功能:[列表]
|
|
57
|
+
|
|
58
|
+
## 非功能性考量
|
|
59
|
+
- 性能影响:[说明或无]
|
|
60
|
+
- 安全考量:[说明或无]
|
|
61
|
+
- 向后兼容性:[说明]
|
|
62
|
+
\`\`\``,
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
title: '3. 生成 design.md(技术方案)',
|
|
66
|
+
content: `生成 openspec/changes/[change-id]/design.md:
|
|
67
|
+
|
|
68
|
+
\`\`\`markdown
|
|
69
|
+
# Technical Design: [变更标题]
|
|
70
|
+
|
|
71
|
+
## 架构决策
|
|
72
|
+
[关键架构选择及原因,如技术选型、模式选择]
|
|
73
|
+
|
|
74
|
+
## 接口变更
|
|
75
|
+
[新增/修改的 API 端点、组件 Props、函数签名]
|
|
76
|
+
|
|
77
|
+
## 数据模型变更
|
|
78
|
+
[新增/修改的数据库表、数据结构]
|
|
79
|
+
|
|
80
|
+
## 实现方案
|
|
81
|
+
[核心实现思路,关键算法或流程]
|
|
82
|
+
|
|
83
|
+
## 风险与缓解措施
|
|
84
|
+
[技术风险点 → 对应缓解策略]
|
|
85
|
+
\`\`\``,
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
title: '4. 生成 tasks.md(实现任务)',
|
|
89
|
+
content: `生成 openspec/changes/[change-id]/tasks.md,按阶段拆分原子任务:
|
|
90
|
+
|
|
91
|
+
\`\`\`markdown
|
|
92
|
+
# Implementation Tasks: [变更标题]
|
|
93
|
+
|
|
94
|
+
## Phase 1: 基础准备
|
|
95
|
+
- [ ] Task 1.1: [任务描述] | 估算:S/M/L
|
|
96
|
+
|
|
97
|
+
## Phase 2: 核心实现
|
|
98
|
+
- [ ] Task 2.1: [任务描述] | 估算:S/M/L
|
|
99
|
+
|
|
100
|
+
## Phase 3: 测试与验收
|
|
101
|
+
- [ ] Task 3.1: 编写单元测试,覆盖所有场景 AC
|
|
102
|
+
- [ ] Task 3.2: Spec Review — 验证代码与 spec delta 对齐
|
|
103
|
+
|
|
104
|
+
## 总估算
|
|
105
|
+
S: [n] | M: [n] | L: [n]
|
|
106
|
+
\`\`\`
|
|
107
|
+
|
|
108
|
+
每个任务应足够原子,可独立完成和验证。`,
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
title: '5. 生成 Spec Delta(需求变更)',
|
|
112
|
+
content: `为每个涉及的 capability 生成需求变更文件(openspec/changes/[id]/specs/[capability].md):
|
|
113
|
+
|
|
114
|
+
\`\`\`markdown
|
|
115
|
+
# Spec Delta: [capability]
|
|
116
|
+
|
|
117
|
+
> 变更描述:[本次变更对此 capability 的影响]
|
|
118
|
+
|
|
119
|
+
## 新增需求
|
|
120
|
+
|
|
121
|
+
### REQ-XXX: [新需求名称]
|
|
122
|
+
[需求描述]
|
|
123
|
+
|
|
124
|
+
## 修改需求
|
|
125
|
+
|
|
126
|
+
**变更前:**
|
|
127
|
+
[原需求内容]
|
|
128
|
+
|
|
129
|
+
**变更后:**
|
|
130
|
+
[新需求内容]
|
|
131
|
+
|
|
132
|
+
## 新增场景
|
|
133
|
+
|
|
134
|
+
GIVEN [前置条件]
|
|
135
|
+
WHEN [用户操作]
|
|
136
|
+
THEN [预期结果]
|
|
137
|
+
\`\`\`
|
|
138
|
+
|
|
139
|
+
**原则**:Spec delta 只记录"变化",不重复现有 spec 的未变更内容。`,
|
|
140
|
+
},
|
|
141
|
+
],
|
|
142
|
+
outputFormat: 'OpenSpec 变更提案包(保存到 openspec/changes/[change-id]/):\n' +
|
|
143
|
+
'- proposal.md(变更提案)\n' +
|
|
144
|
+
'- design.md(技术方案)\n' +
|
|
145
|
+
'- tasks.md(分阶段任务)\n' +
|
|
146
|
+
'- specs/[capability].md(spec delta,每个涉及的 capability 一个文件)',
|
|
147
|
+
examples: [],
|
|
148
|
+
notes: [
|
|
149
|
+
'提案应在编写任何代码之前生成,让团队先对变更意图达成共识',
|
|
150
|
+
'Spec delta 只记录"变化",不重复现有 spec 内容',
|
|
151
|
+
'tasks.md 的每个任务应足够原子,可独立完成和验证',
|
|
152
|
+
'如项目尚无 openspec 目录,先运行 ethan spec init [capability] 初始化',
|
|
153
|
+
],
|
|
154
|
+
category: '需求侧',
|
|
155
|
+
nextSkill: 'solution-design',
|
|
156
|
+
};
|
|
157
|
+
//# sourceMappingURL=25-spec-proposal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"25-spec-proposal.js","sourceRoot":"","sources":["../../src/skills/25-spec-proposal.ts"],"names":[],"mappings":";;;AAEa,QAAA,iBAAiB,GAAoB;IAChD,EAAE,EAAE,eAAe;IACnB,IAAI,EAAE,eAAe;IACrB,MAAM,EAAE,eAAe;IACvB,KAAK,EAAE,EAAE;IACT,WAAW,EAAE,sEAAsE;IACnF,aAAa,EAAE,6GAA6G;IAC5H,iBAAiB,EAAE;;;+CAG0B;IAC7C,QAAQ,EAAE;QACR,eAAe;QACf,mBAAmB;QACnB,MAAM;QACN,MAAM;QACN,SAAS;QACT,YAAY;QACZ,sBAAsB;QACtB,gBAAgB;KACjB;IACD,KAAK,EAAE;QACL;YACE,KAAK,EAAE,kBAAkB;YACzB,OAAO,EAAE;;;;;;;;gCAQiB;SAC3B;QACD;YACE,KAAK,EAAE,yBAAyB;YAChC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;OAsBR;SACF;QACD;YACE,KAAK,EAAE,uBAAuB;YAC9B,OAAO,EAAE;;;;;;;;;;;;;;;;;;;OAmBR;SACF;QACD;YACE,KAAK,EAAE,sBAAsB;YAC7B,OAAO,EAAE;;;;;;;;;;;;;;;;;;;oBAmBK;SACf;QACD;YACE,KAAK,EAAE,wBAAwB;YAC/B,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;6CA2B8B;SACxC;KACF;IACD,YAAY,EACV,sDAAsD;QACtD,uBAAuB;QACvB,qBAAqB;QACrB,qBAAqB;QACrB,2DAA2D;IAC7D,QAAQ,EAAE,EAAE;IACZ,KAAK,EAAE;QACL,8BAA8B;QAC9B,kCAAkC;QAClC,8BAA8B;QAC9B,wDAAwD;KACzD;IACD,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,iBAAiB;CAC7B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"26-spec-review.d.ts","sourceRoot":"","sources":["../../src/skills/26-spec-review.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,eAAe,EAAE,eA0H7B,CAAC"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.specReviewSkill = void 0;
|
|
4
|
+
exports.specReviewSkill = {
|
|
5
|
+
id: 'spec-review',
|
|
6
|
+
name: 'Spec Review(意图审查)',
|
|
7
|
+
nameEn: 'spec_review',
|
|
8
|
+
order: 26,
|
|
9
|
+
description: '基于 OpenSpec,对比 spec delta 与代码实现,执行意图级 Review(而非逐行代码审查)',
|
|
10
|
+
descriptionEn: 'Intent-based review: compare spec deltas against code changes to verify implementation aligns with requirements',
|
|
11
|
+
detailDescription: `不同于传统 Code Review 关注代码细节,Spec Review 从需求意图出发:
|
|
12
|
+
对照 openspec/changes/ 中的 spec delta,检查代码实现是否准确反映了需求变更的意图。
|
|
13
|
+
发现遗漏需求、超范围实现、与 spec 不一致的实现,让 PR Review 回归业务价值本身。
|
|
14
|
+
"Review intent, not just code"。`,
|
|
15
|
+
triggers: [
|
|
16
|
+
'spec review',
|
|
17
|
+
'intent review',
|
|
18
|
+
'意图审查',
|
|
19
|
+
'openspec review',
|
|
20
|
+
'spec 审查',
|
|
21
|
+
'需求对齐检查',
|
|
22
|
+
'@ethan spec review',
|
|
23
|
+
'/spec-review',
|
|
24
|
+
],
|
|
25
|
+
steps: [
|
|
26
|
+
{
|
|
27
|
+
title: '1. 加载 Spec 上下文',
|
|
28
|
+
content: `读取本次变更相关的 OpenSpec 文档:
|
|
29
|
+
|
|
30
|
+
1. 定位 openspec/changes/[change-id]/ 目录(取最新的或由用户指定)
|
|
31
|
+
2. 读取 proposal.md(了解变更目标和意图)
|
|
32
|
+
3. 读取 specs/[capability].md(逐个 spec delta)
|
|
33
|
+
4. 读取代码 diff(git diff HEAD 或 PR diff)
|
|
34
|
+
|
|
35
|
+
**目标**:建立"期望变更"(spec delta)和"实际变更"(代码)的对照关系。
|
|
36
|
+
|
|
37
|
+
如无 change proposal,说明本次改动未经过 spec 规范流程,建议先运行 \`ethan spec proposal\`。`,
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
title: '2. 意图对齐检查',
|
|
41
|
+
content: `逐条检查每个 spec delta 条目是否在代码中得到正确实现:
|
|
42
|
+
|
|
43
|
+
**对齐矩阵模板**
|
|
44
|
+
|
|
45
|
+
| Spec 需求/场景 | 对应代码位置 | 对齐状态 | 说明 |
|
|
46
|
+
|--------------|------------|---------|------|
|
|
47
|
+
| REQ-XXX: [需求名] | [文件:行号] | ✅ | 完全实现 |
|
|
48
|
+
| Scenario: [场景名] | [文件:行号] | ⚠️ | 边界条件缺失 |
|
|
49
|
+
| REQ-YYY: [需求名] | — | ❌ | 未找到实现 |
|
|
50
|
+
| [代码功能] | [文件:行号] | 🔄 | 超出 spec 范围 |
|
|
51
|
+
|
|
52
|
+
**状态说明**
|
|
53
|
+
- ✅ 完全实现:代码与 spec 意图一致,GIVEN/WHEN/THEN 均覆盖
|
|
54
|
+
- ⚠️ 部分实现:核心逻辑存在但细节缺失(如缺少异常处理)
|
|
55
|
+
- ❌ 未实现:spec 要求的功能在代码中找不到
|
|
56
|
+
- 🔄 超范围:代码实现了 spec 未定义的内容`,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
title: '3. 偏差识别与分级',
|
|
60
|
+
content: `识别三类关键偏差:
|
|
61
|
+
|
|
62
|
+
**🔴 意图偏差(Critical)—— 必须修复才能合并**
|
|
63
|
+
代码实现与 spec 意图相反或严重不符,例如:
|
|
64
|
+
- 场景要求"3次失败后锁定账号",实际实现了"无限重试"
|
|
65
|
+
- 权限检查逻辑与 GIVEN/WHEN/THEN 定义的场景不匹配
|
|
66
|
+
- 数据模型与 spec delta 中定义的结构不一致
|
|
67
|
+
|
|
68
|
+
**🟡 遗漏需求(Warning)—— 强烈建议补充**
|
|
69
|
+
spec 中定义的场景或需求在代码中未体现:
|
|
70
|
+
- 异常流程未处理(spec 中有 THEN [错误情况] 但代码未实现)
|
|
71
|
+
- 边界条件未覆盖(如空值、超长输入、并发)
|
|
72
|
+
- 非功能性需求未落实(如性能、安全要求)
|
|
73
|
+
|
|
74
|
+
**💡 超范围实现(Info)—— 确认并按需更新 spec**
|
|
75
|
+
代码实现了 spec 没有定义的功能:
|
|
76
|
+
- 可能是合理的技术实现细节(不需要更新 spec)
|
|
77
|
+
- 也可能是功能范围蔓延(需补充 spec delta 或回退)`,
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
title: '4. 输出 Spec Review 报告',
|
|
81
|
+
content: `生成结构化的意图审查报告:
|
|
82
|
+
|
|
83
|
+
\`\`\`markdown
|
|
84
|
+
# Spec Review Report
|
|
85
|
+
|
|
86
|
+
## 变更提案摘要
|
|
87
|
+
- Change ID: [id]
|
|
88
|
+
- 变更目标:[proposal.md 核心摘要]
|
|
89
|
+
- 涉及 Capability:[列表]
|
|
90
|
+
|
|
91
|
+
## 意图对齐矩阵
|
|
92
|
+
[对照表格]
|
|
93
|
+
|
|
94
|
+
## 关键发现
|
|
95
|
+
|
|
96
|
+
### 🔴 意图偏差([n] 项)
|
|
97
|
+
1. **[偏差描述]**
|
|
98
|
+
- Spec 要求:[spec 原文]
|
|
99
|
+
- 实际实现:[代码位置] [实际行为]
|
|
100
|
+
- 建议:[修复方向]
|
|
101
|
+
|
|
102
|
+
### 🟡 遗漏需求([n] 项)
|
|
103
|
+
[列表]
|
|
104
|
+
|
|
105
|
+
### 💡 超范围实现([n] 项)
|
|
106
|
+
[列表]
|
|
107
|
+
|
|
108
|
+
## 审查结论
|
|
109
|
+
- [ ] 意图完全对齐,可以合并
|
|
110
|
+
- [ ] 需要修复意图偏差后重新审查
|
|
111
|
+
- [ ] 需要更新 spec(超范围实现合理)
|
|
112
|
+
\`\`\``,
|
|
113
|
+
},
|
|
114
|
+
],
|
|
115
|
+
outputFormat: 'Spec Review 报告:意图对齐矩阵 + 三级偏差列表(🔴意图偏差 / 🟡遗漏需求 / 💡超范围)+ 审查结论',
|
|
116
|
+
examples: [],
|
|
117
|
+
notes: [
|
|
118
|
+
'Spec Review 不替代 Code Review,两者互补:Spec Review 审意图,Code Review 审实现质量',
|
|
119
|
+
'如果没有对应的 spec delta,说明该改动未经过规范的 spec 流程,需补充',
|
|
120
|
+
'超范围实现不一定是问题,但必须显式确认并按需更新 spec',
|
|
121
|
+
'GIVEN/WHEN/THEN 场景是最好的对齐锚点,每个场景都应在代码中有对应的实现',
|
|
122
|
+
],
|
|
123
|
+
category: '质量侧',
|
|
124
|
+
nextSkill: undefined,
|
|
125
|
+
};
|
|
126
|
+
//# sourceMappingURL=26-spec-review.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"26-spec-review.js","sourceRoot":"","sources":["../../src/skills/26-spec-review.ts"],"names":[],"mappings":";;;AAEa,QAAA,eAAe,GAAoB;IAC9C,EAAE,EAAE,aAAa;IACjB,IAAI,EAAE,mBAAmB;IACzB,MAAM,EAAE,aAAa;IACrB,KAAK,EAAE,EAAE;IACT,WAAW,EAAE,wDAAwD;IACrE,aAAa,EAAE,iHAAiH;IAChI,iBAAiB,EAAE;;;gCAGW;IAC9B,QAAQ,EAAE;QACR,aAAa;QACb,eAAe;QACf,MAAM;QACN,iBAAiB;QACjB,SAAS;QACT,QAAQ;QACR,oBAAoB;QACpB,cAAc;KACf;IACD,KAAK,EAAE;QACL;YACE,KAAK,EAAE,gBAAgB;YACvB,OAAO,EAAE;;;;;;;;;sEASuD;SACjE;QACD;YACE,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE;;;;;;;;;;;;;;;2BAeY;SACtB;QACD;YACE,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE;;;;;;;;;;;;;;;;;iCAiBkB;SAC5B;QACD;YACE,KAAK,EAAE,sBAAsB;YAC7B,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BR;SACF;KACF;IACD,YAAY,EACV,+DAA+D;IACjE,QAAQ,EAAE,EAAE;IACZ,KAAK,EAAE;QACL,oEAAoE;QACpE,4CAA4C;QAC5C,+BAA+B;QAC/B,6CAA6C;KAC9C;IACD,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,SAAS;CACrB,CAAC"}
|
package/dist/skills/index.d.ts
CHANGED
|
@@ -26,6 +26,8 @@ export { performanceSkill } from './21-performance';
|
|
|
26
26
|
export { refactoringSkill } from './22-refactoring';
|
|
27
27
|
export { observabilitySkill } from './23-observability';
|
|
28
28
|
export { designPatternsSkill } from './24-design-patterns';
|
|
29
|
+
export { specProposalSkill } from './25-spec-proposal';
|
|
30
|
+
export { specReviewSkill } from './26-spec-review';
|
|
29
31
|
export type { SkillDefinition, SkillStep, SkillExample, Platform, BuildContext, PipelineDefinition } from './types';
|
|
30
32
|
/** 所有 Skill 按顺序排列 */
|
|
31
33
|
export declare const ALL_SKILLS: import("./types").SkillDefinition[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AA6BpH,qBAAqB;AACrB,eAAO,MAAM,UAAU,qCA2BtB,CAAC"}
|
package/dist/skills/index.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* 构建脚本和运行时均从此文件取数据
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.ALL_SKILLS = exports.designPatternsSkill = exports.observabilitySkill = exports.refactoringSkill = exports.performanceSkill = exports.cicdSkill = exports.dockerSkill = exports.databaseOptimizeSkill = exports.systemDesignSkill = exports.unitTestingSkill = exports.gitWorkflowSkill = exports.prdSkill = exports.deploymentSkill = exports.securityReviewSkill = exports.apiDesignSkill = exports.techResearchSkill = exports.debugSkill = exports.codeReviewSkill = exports.weeklyReportSkill = exports.taskReportSkill = exports.progressTrackingSkill = exports.implementationSkill = exports.designSkill = exports.taskBreakdownSkill = exports.requirementSkill = void 0;
|
|
7
|
+
exports.ALL_SKILLS = exports.specReviewSkill = exports.specProposalSkill = exports.designPatternsSkill = exports.observabilitySkill = exports.refactoringSkill = exports.performanceSkill = exports.cicdSkill = exports.dockerSkill = exports.databaseOptimizeSkill = exports.systemDesignSkill = exports.unitTestingSkill = exports.gitWorkflowSkill = exports.prdSkill = exports.deploymentSkill = exports.securityReviewSkill = exports.apiDesignSkill = exports.techResearchSkill = exports.debugSkill = exports.codeReviewSkill = exports.weeklyReportSkill = exports.taskReportSkill = exports.progressTrackingSkill = exports.implementationSkill = exports.designSkill = exports.taskBreakdownSkill = exports.requirementSkill = void 0;
|
|
8
8
|
var _01_requirement_1 = require("./01-requirement");
|
|
9
9
|
Object.defineProperty(exports, "requirementSkill", { enumerable: true, get: function () { return _01_requirement_1.requirementSkill; } });
|
|
10
10
|
var _02_task_breakdown_1 = require("./02-task-breakdown");
|
|
@@ -53,6 +53,10 @@ var _23_observability_1 = require("./23-observability");
|
|
|
53
53
|
Object.defineProperty(exports, "observabilitySkill", { enumerable: true, get: function () { return _23_observability_1.observabilitySkill; } });
|
|
54
54
|
var _24_design_patterns_1 = require("./24-design-patterns");
|
|
55
55
|
Object.defineProperty(exports, "designPatternsSkill", { enumerable: true, get: function () { return _24_design_patterns_1.designPatternsSkill; } });
|
|
56
|
+
var _25_spec_proposal_1 = require("./25-spec-proposal");
|
|
57
|
+
Object.defineProperty(exports, "specProposalSkill", { enumerable: true, get: function () { return _25_spec_proposal_1.specProposalSkill; } });
|
|
58
|
+
var _26_spec_review_1 = require("./26-spec-review");
|
|
59
|
+
Object.defineProperty(exports, "specReviewSkill", { enumerable: true, get: function () { return _26_spec_review_1.specReviewSkill; } });
|
|
56
60
|
const _01_requirement_2 = require("./01-requirement");
|
|
57
61
|
const _02_task_breakdown_2 = require("./02-task-breakdown");
|
|
58
62
|
const _03_design_2 = require("./03-design");
|
|
@@ -77,6 +81,8 @@ const _21_performance_2 = require("./21-performance");
|
|
|
77
81
|
const _22_refactoring_2 = require("./22-refactoring");
|
|
78
82
|
const _23_observability_2 = require("./23-observability");
|
|
79
83
|
const _24_design_patterns_2 = require("./24-design-patterns");
|
|
84
|
+
const _25_spec_proposal_2 = require("./25-spec-proposal");
|
|
85
|
+
const _26_spec_review_2 = require("./26-spec-review");
|
|
80
86
|
/** 所有 Skill 按顺序排列 */
|
|
81
87
|
exports.ALL_SKILLS = [
|
|
82
88
|
_01_requirement_2.requirementSkill,
|
|
@@ -103,5 +109,7 @@ exports.ALL_SKILLS = [
|
|
|
103
109
|
_22_refactoring_2.refactoringSkill,
|
|
104
110
|
_23_observability_2.observabilitySkill,
|
|
105
111
|
_24_design_patterns_2.designPatternsSkill,
|
|
112
|
+
_25_spec_proposal_2.specProposalSkill,
|
|
113
|
+
_26_spec_review_2.specReviewSkill,
|
|
106
114
|
];
|
|
107
115
|
//# sourceMappingURL=index.js.map
|
package/dist/skills/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,oDAAoD;AAA3C,mHAAA,gBAAgB,OAAA;AACzB,0DAAyD;AAAhD,wHAAA,kBAAkB,OAAA;AAC3B,0CAA0C;AAAjC,yGAAA,WAAW,OAAA;AACpB,0DAA0D;AAAjD,yHAAA,mBAAmB,OAAA;AAC5B,gEAA+D;AAAtD,8HAAA,qBAAqB,OAAA;AAC9B,oDAAmD;AAA1C,kHAAA,eAAe,OAAA;AACxB,wDAAuD;AAA9C,sHAAA,iBAAiB,OAAA;AAC1B,oDAAmD;AAA1C,kHAAA,eAAe,OAAA;AACxB,wCAAwC;AAA/B,uGAAA,UAAU,OAAA;AACnB,wDAAuD;AAA9C,sHAAA,iBAAiB,OAAA;AAC1B,kDAAiD;AAAxC,gHAAA,cAAc,OAAA;AACvB,4DAA2D;AAAlD,0HAAA,mBAAmB,OAAA;AAC5B,kDAAkD;AAAzC,iHAAA,eAAe,OAAA;AACxB,oCAAoC;AAA3B,mGAAA,QAAQ,OAAA;AACjB,sDAAqD;AAA5C,oHAAA,gBAAgB,OAAA;AACzB,sDAAqD;AAA5C,oHAAA,gBAAgB,OAAA;AACzB,wDAAuD;AAA9C,sHAAA,iBAAiB,OAAA;AAC1B,gEAA+D;AAAtD,8HAAA,qBAAqB,OAAA;AAC9B,0CAA0C;AAAjC,yGAAA,WAAW,OAAA;AACpB,sCAAsC;AAA7B,qGAAA,SAAS,OAAA;AAClB,oDAAoD;AAA3C,mHAAA,gBAAgB,OAAA;AACzB,oDAAoD;AAA3C,mHAAA,gBAAgB,OAAA;AACzB,wDAAwD;AAA/C,uHAAA,kBAAkB,OAAA;AAC3B,4DAA2D;AAAlD,0HAAA,mBAAmB,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,oDAAoD;AAA3C,mHAAA,gBAAgB,OAAA;AACzB,0DAAyD;AAAhD,wHAAA,kBAAkB,OAAA;AAC3B,0CAA0C;AAAjC,yGAAA,WAAW,OAAA;AACpB,0DAA0D;AAAjD,yHAAA,mBAAmB,OAAA;AAC5B,gEAA+D;AAAtD,8HAAA,qBAAqB,OAAA;AAC9B,oDAAmD;AAA1C,kHAAA,eAAe,OAAA;AACxB,wDAAuD;AAA9C,sHAAA,iBAAiB,OAAA;AAC1B,oDAAmD;AAA1C,kHAAA,eAAe,OAAA;AACxB,wCAAwC;AAA/B,uGAAA,UAAU,OAAA;AACnB,wDAAuD;AAA9C,sHAAA,iBAAiB,OAAA;AAC1B,kDAAiD;AAAxC,gHAAA,cAAc,OAAA;AACvB,4DAA2D;AAAlD,0HAAA,mBAAmB,OAAA;AAC5B,kDAAkD;AAAzC,iHAAA,eAAe,OAAA;AACxB,oCAAoC;AAA3B,mGAAA,QAAQ,OAAA;AACjB,sDAAqD;AAA5C,oHAAA,gBAAgB,OAAA;AACzB,sDAAqD;AAA5C,oHAAA,gBAAgB,OAAA;AACzB,wDAAuD;AAA9C,sHAAA,iBAAiB,OAAA;AAC1B,gEAA+D;AAAtD,8HAAA,qBAAqB,OAAA;AAC9B,0CAA0C;AAAjC,yGAAA,WAAW,OAAA;AACpB,sCAAsC;AAA7B,qGAAA,SAAS,OAAA;AAClB,oDAAoD;AAA3C,mHAAA,gBAAgB,OAAA;AACzB,oDAAoD;AAA3C,mHAAA,gBAAgB,OAAA;AACzB,wDAAwD;AAA/C,uHAAA,kBAAkB,OAAA;AAC3B,4DAA2D;AAAlD,0HAAA,mBAAmB,OAAA;AAC5B,wDAAuD;AAA9C,sHAAA,iBAAiB,OAAA;AAC1B,oDAAmD;AAA1C,kHAAA,eAAe,OAAA;AAIxB,sDAAoD;AACpD,4DAAyD;AACzD,4CAA0C;AAC1C,4DAA0D;AAC1D,kEAA+D;AAC/D,sDAAmD;AACnD,0DAAuD;AACvD,sDAAmD;AACnD,0CAAwC;AACxC,0DAAuD;AACvD,oDAAiD;AACjD,8DAA2D;AAC3D,oDAAkD;AAClD,sCAAoC;AACpC,wDAAqD;AACrD,wDAAqD;AACrD,0DAAuD;AACvD,kEAA+D;AAC/D,4CAA0C;AAC1C,wCAAsC;AACtC,sDAAoD;AACpD,sDAAoD;AACpD,0DAAwD;AACxD,8DAA2D;AAC3D,0DAAuD;AACvD,sDAAmD;AAEnD,qBAAqB;AACR,QAAA,UAAU,GAAG;IACxB,kCAAgB;IAChB,uCAAkB;IAClB,wBAAW;IACX,wCAAmB;IACnB,6CAAqB;IACrB,iCAAe;IACf,qCAAiB;IACjB,iCAAe;IACf,sBAAU;IACV,qCAAiB;IACjB,+BAAc;IACd,yCAAmB;IACnB,gCAAe;IACf,kBAAQ;IACR,mCAAgB;IAChB,mCAAgB;IAChB,qCAAiB;IACjB,6CAAqB;IACrB,wBAAW;IACX,oBAAS;IACT,kCAAgB;IAChB,kCAAgB;IAChB,sCAAkB;IAClB,yCAAmB;IACnB,qCAAiB;IACjB,iCAAe;CAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/skills/pipeline.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAGnE,eAAO,MAAM,SAAS,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/skills/pipeline.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAGnE,eAAO,MAAM,SAAS,EAAE,kBAAkB,EA8EzC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,MAAM,EACV,eAAe,CAAC,EAAE,kBAAkB,EAAE,EACtC,SAAS,CAAC,EAAE,eAAe,EAAE,GAC5B;IAAE,QAAQ,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAA;CAAE,GAAG,IAAI,CAWpE"}
|
package/dist/skills/pipeline.js
CHANGED
|
@@ -74,6 +74,18 @@ exports.PIPELINES = [
|
|
|
74
74
|
'implementation',
|
|
75
75
|
],
|
|
76
76
|
},
|
|
77
|
+
{
|
|
78
|
+
id: 'spec-workflow',
|
|
79
|
+
name: 'Spec 驱动开发工作流',
|
|
80
|
+
description: '基于 OpenSpec 的规范驱动开发流程:变更提案 → 方案设计 → 任务拆解 → 执行实现 → 意图审查',
|
|
81
|
+
skillIds: [
|
|
82
|
+
'spec-proposal',
|
|
83
|
+
'solution-design',
|
|
84
|
+
'task-breakdown',
|
|
85
|
+
'implementation',
|
|
86
|
+
'spec-review',
|
|
87
|
+
],
|
|
88
|
+
},
|
|
77
89
|
];
|
|
78
90
|
/**
|
|
79
91
|
* 根据 pipeline id 解析出 pipeline 定义和对应的 Skill 列表
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/skills/pipeline.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/skills/pipeline.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAyFH,0CAeC;AArGD,mCAAqC;AAExB,QAAA,SAAS,GAAyB;IAC7C;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,qCAAqC;QAClD,QAAQ,EAAE;YACR,2BAA2B;YAC3B,gBAAgB;YAChB,iBAAiB;YACjB,gBAAgB;SACjB;KACF;IACD;QACE,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,4BAA4B;QACzC,QAAQ,EAAE;YACR,mBAAmB;YACnB,aAAa;YACb,eAAe;SAChB;KACF;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,yBAAyB;QACtC,QAAQ,EAAE;YACR,aAAa;YACb,OAAO;SACR;KACF;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,iDAAiD;QAC9D,QAAQ,EAAE;YACR,2BAA2B;YAC3B,YAAY;YACZ,iBAAiB;YACjB,gBAAgB;YAChB,aAAa;YACb,YAAY;SACb;KACF;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,6BAA6B;QAC1C,QAAQ,EAAE;YACR,OAAO;YACP,eAAe;YACf,aAAa;SACd;KACF;IACD;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,2CAA2C;QACxD,QAAQ,EAAE;YACR,KAAK;YACL,eAAe;YACf,YAAY;YACZ,gBAAgB;YAChB,gBAAgB;SACjB;KACF;IACD;QACE,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,wDAAwD;QACrE,QAAQ,EAAE;YACR,eAAe;YACf,iBAAiB;YACjB,gBAAgB;YAChB,gBAAgB;YAChB,aAAa;SACd;KACF;CACF,CAAC;AAEF;;;GAGG;AACH,SAAgB,eAAe,CAC7B,EAAU,EACV,eAAsC,EACtC,SAA6B;IAE7B,MAAM,SAAS,GAAG,SAAS,IAAI,kBAAU,CAAC;IAC1C,MAAM,YAAY,GAAG,CAAC,GAAG,iBAAS,EAAE,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ;SAC7B,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;SACzD,MAAM,CAAC,CAAC,CAAC,EAAwB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenSpec 集成工具
|
|
3
|
+
* 读取、写入、查找 openspec/ 目录规范文件,生成 spec-driven 提示词
|
|
4
|
+
*/
|
|
5
|
+
export interface SpecFile {
|
|
6
|
+
capability: string;
|
|
7
|
+
filePath: string;
|
|
8
|
+
content: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ChangeProposal {
|
|
11
|
+
id: string;
|
|
12
|
+
dir: string;
|
|
13
|
+
proposalContent?: string;
|
|
14
|
+
designContent?: string;
|
|
15
|
+
tasksContent?: string;
|
|
16
|
+
specDeltas: Array<{
|
|
17
|
+
capability: string;
|
|
18
|
+
content: string;
|
|
19
|
+
}>;
|
|
20
|
+
}
|
|
21
|
+
/** 检测项目是否包含 openspec 目录 */
|
|
22
|
+
export declare function hasOpenSpec(cwd: string): boolean;
|
|
23
|
+
/** 列出所有 openspec/specs/[capability]/spec.md */
|
|
24
|
+
export declare function listSpecs(cwd: string): SpecFile[];
|
|
25
|
+
/** 列出所有 openspec/changes/[id]/ change proposals */
|
|
26
|
+
export declare function listChanges(cwd: string): ChangeProposal[];
|
|
27
|
+
/** 根据文件路径列表,模糊匹配相关的 spec */
|
|
28
|
+
export declare function findRelatedSpecs(files: string[], cwd: string): SpecFile[];
|
|
29
|
+
/** 加载最新的 change proposal(按目录名排序取最后一个) */
|
|
30
|
+
export declare function loadLatestChange(cwd: string): ChangeProposal | null;
|
|
31
|
+
/** 生成唯一 change ID(yyyymmdd-xxxx 格式) */
|
|
32
|
+
export declare function generateChangeId(): string;
|
|
33
|
+
/** 写入 change proposal 文件包到 openspec/changes/[changeId]/ */
|
|
34
|
+
export declare function writeChangeFiles(changeId: string, files: {
|
|
35
|
+
proposal: string;
|
|
36
|
+
design: string;
|
|
37
|
+
tasks: string;
|
|
38
|
+
specDeltas?: Array<{
|
|
39
|
+
capability: string;
|
|
40
|
+
content: string;
|
|
41
|
+
}>;
|
|
42
|
+
}, cwd: string): string;
|
|
43
|
+
/** 初始化 spec.md 文件(openspec/specs/[capability]/spec.md) */
|
|
44
|
+
export declare function writeSpecFile(capability: string, content: string, cwd: string): string;
|
|
45
|
+
/** 截断 spec 内容,避免注入过多 token */
|
|
46
|
+
export declare function truncateSpec(content: string, maxLen?: number): string;
|
|
47
|
+
/** spec.md 初始模板 */
|
|
48
|
+
export declare function specTemplate(capability: string): string;
|
|
49
|
+
/** spec delta 模板 */
|
|
50
|
+
export declare function specDeltaTemplate(capability: string, description: string): string;
|
|
51
|
+
/** proposal.md 模板(给 AI 填充) */
|
|
52
|
+
export declare function proposalTemplate(changeId: string, description: string): string;
|
|
53
|
+
/** design.md 模板 */
|
|
54
|
+
export declare function designTemplate(description: string): string;
|
|
55
|
+
/** tasks.md 模板 */
|
|
56
|
+
export declare function tasksTemplate(description: string): string;
|
|
57
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/spec/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5D;AAID,2BAA2B;AAC3B,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhD;AAID,+CAA+C;AAC/C,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,CAkBjD;AAED,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,EAAE,CAiCzD;AAED,4BAA4B;AAC5B,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,CAUzE;AAED,yCAAyC;AACzC,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAInE;AAID,uCAAuC;AACvC,wBAAgB,gBAAgB,IAAI,MAAM,CAKzC;AAED,2DAA2D;AAC3D,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE;IACL,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC7D,EACD,GAAG,EAAE,MAAM,GACV,MAAM,CAcR;AAED,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAMtF;AAID,8BAA8B;AAC9B,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAO,GAAG,MAAM,CAGnE;AAID,mBAAmB;AACnB,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAqBvD;AAED,oBAAoB;AACpB,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAuBjF;AAED,8BAA8B;AAC9B,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAyB9E;AAED,mBAAmB;AACnB,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAuB1D;AAED,kBAAkB;AAClB,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAsBzD"}
|