jsharness 1.11.0 → 1.12.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/.harness/README.md +1 -1
- package/.harness/agents/agent-dispatcher.md +66 -349
- package/.harness/agents/gate-controller/contract.yaml +1 -1
- package/.harness/agents/gate-controller/prompt.md +1 -1
- package/.harness/agents/gate-controller.md +1 -1
- package/.harness/agents/project-manager/contract.yaml +1 -1
- package/.harness/agents/project-manager/prompt.md +4 -1
- package/.harness/agents/project-manager.md +1 -1
- package/.harness/agents/requirements-analyst/contract.yaml +1 -1
- package/.harness/agents/requirements-analyst/prompt.md +2 -1
- package/.harness/agents/requirements-analyst.md +1 -1
- package/.harness/agents/solution-designer/contract.yaml +1 -1
- package/.harness/agents/solution-designer/prompt.md +1 -1
- package/.harness/agents/solution-designer.md +1 -1
- package/.harness/commands/js/deliver.md +43 -0
- package/.harness/commands/js/explore.md +18 -5
- package/.harness/commands/js/propose.md +4 -4
- package/.harness/doc/originRequirements/origin-main/.gitkeep +0 -0
- package/.harness/doc/prd/.gitkeep +0 -0
- package/.harness/doc/prd/prd-main/.gitkeep +0 -0
- package/.harness/doc/prd/prd-main/README.md +33 -0
- package/.harness/doc/team-guidelines/pm-team.md +1 -1
- package/.harness/doc/ttspec/.gitkeep +0 -0
- package/.harness/doc/ttspec/README.md +3 -3
- package/.harness/rules/project/frontend-coding-basics.md +519 -0
- package/.harness/skills/design-context-reader/SKILL.md +80 -0
- package/.harness/skills/docker-build/SKILL.md +1 -1
- package/.harness/skills/jsspec-deliver/SKILL.md +134 -0
- package/.harness/skills/{openspec-explore → jsspec-explore}/SKILL.md +35 -13
- package/.harness/skills/{openspec-propose → jsspec-propose}/SKILL.md +31 -16
- package/.harness/skills/{openspec-skill-creator → jsspec-skill-creator}/SKILL.md +17 -17
- package/.harness/workflow/definition.yaml +4 -4
- package/.harness/workflow/validate.js +1 -1
- package/files/front-coding-rules.md +665 -0
- package/lib/index.mjs +70 -1
- package/package.json +1 -1
- package/.harness/commands/js/apply.md +0 -31
- package/.harness/commands/js/archive.md +0 -31
- package/.harness/skills/openspec-apply/SKILL.md +0 -90
- package/.harness/skills/openspec-archive/SKILL.md +0 -77
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: jsspec-deliver
|
|
3
|
+
description: 交付归档技能 — 合并 apply + archive 为单一 workflow 控制的两阶段流程(Phase 1 实施 + Phase 2 归档),含门禁确认、原始需求归档到 origin-main、PRD 归档到 prd-main/{module}
|
|
4
|
+
alwaysApply: false
|
|
5
|
+
enabled: true
|
|
6
|
+
outputPath: .harness/doc/ttspec/change/
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# 交付归档技能 (jsspec-deliver)
|
|
10
|
+
|
|
11
|
+
> **Skill 类型**: 项目管理辅助 Skill
|
|
12
|
+
> **触发场景**: propose 产出完成且用户确认设计后,执行实施和归档的统一流程
|
|
13
|
+
> **所属 Agent**: developer / project-manager
|
|
14
|
+
> **输出路径**: `.harness/doc/ttspec/change/{name}/` + `.harness/doc/originRequirements/origin-main/` + `.harness/doc/prd/prd-main/{module}/`
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 1. 核心职责
|
|
19
|
+
|
|
20
|
+
作为交付归档技能,核心职责是:
|
|
21
|
+
|
|
22
|
+
1. **两阶段工作流控制**:实施任务 → 用户确认 → 归档
|
|
23
|
+
2. **统一归档操作**:change 目录归档 + 原始需求归档 + PRD 归档
|
|
24
|
+
|
|
25
|
+
### 1.1 前置条件
|
|
26
|
+
|
|
27
|
+
- propose 产出已完成(proposal.md、design.md、specs/、tasks.md)
|
|
28
|
+
- 用户已确认设计方案
|
|
29
|
+
- PRD 已生成(如适用)
|
|
30
|
+
|
|
31
|
+
### 1.2 输入
|
|
32
|
+
|
|
33
|
+
|| 输入项 | 路径 | 格式 | 必须 |
|
|
34
|
+
||--------|------|------|------|
|
|
35
|
+
|| 任务列表 | `.harness/doc/ttspec/change/{name}/tasks.md` | Markdown | 是 |
|
|
36
|
+
|| 提案文档 | `.harness/doc/ttspec/change/{name}/proposal.md` | Markdown | 是 |
|
|
37
|
+
|| 设计文档 | `.harness/doc/ttspec/change/{name}/design.md` | Markdown | 是 |
|
|
38
|
+
|| 能力规格 | `.harness/doc/ttspec/change/{name}/specs/` | Markdown | 是 |
|
|
39
|
+
|| PRD 文档 | `.harness/doc/prd/requirements-{name}.md` | Markdown | 否 |
|
|
40
|
+
|
|
41
|
+
### 1.3 输出
|
|
42
|
+
|
|
43
|
+
|| 输出项 | 路径 | 格式 | 必须 |
|
|
44
|
+
||--------|------|------|------|
|
|
45
|
+
|| 归档目录 | `.harness/doc/ttspec/change/archive/{YYYY-MM-DD}-{name}/` | 目录 | 是 |
|
|
46
|
+
|| 原始需求归档 | `.harness/doc/originRequirements/origin-main/{filename}` | Markdown | 是 |
|
|
47
|
+
|| PRD 归档 | `.harness/doc/prd/prd-main/{module}/requirements-{name}.md` | Markdown | 否 |
|
|
48
|
+
|| PRD 索引更新 | `.harness/doc/prd/prd-main/README.md` | Markdown | 否 |
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 2. 两阶段工作流
|
|
53
|
+
|
|
54
|
+
### Phase 1: 实施任务
|
|
55
|
+
|
|
56
|
+
#### Step 1: 读取任务列表
|
|
57
|
+
|
|
58
|
+
从 `.harness/doc/ttspec/change/{name}/tasks.md` 读取任务列表,识别所有待完成任务(标记为 `- [ ]`)。
|
|
59
|
+
|
|
60
|
+
#### Step 2: 逐任务实施
|
|
61
|
+
|
|
62
|
+
对每个待完成任务:
|
|
63
|
+
|
|
64
|
+
1. 读取任务描述和涉及的文件路径
|
|
65
|
+
2. 读取相关的 specs、design 和 PRD 文档获取上下文
|
|
66
|
+
3. 实施代码/文档变更
|
|
67
|
+
4. **立即**将任务标记为已完成:将 `- [ ]` 改为 `- [x]`
|
|
68
|
+
5. 继续下一个任务
|
|
69
|
+
|
|
70
|
+
#### Step 3: 暂停条件
|
|
71
|
+
|
|
72
|
+
以下情况**必须暂停**:
|
|
73
|
+
|
|
74
|
+
|| 暂停条件 | 处理方式 |
|
|
75
|
+
||---------|---------|
|
|
76
|
+
|| 任务描述不清晰 | 暂停并询问用户澄清 |
|
|
77
|
+
|| 实施中发现设计问题 | 暂停并建议更新 design/specs |
|
|
78
|
+
|| 遇到错误或阻塞 | 暂停并报告,等待指导 |
|
|
79
|
+
|| 用户中断 | 保存当前进度并停止 |
|
|
80
|
+
|
|
81
|
+
#### Step 4: Phase 1 完成门禁
|
|
82
|
+
|
|
83
|
+
所有任务完成后,**必须**向用户确认:
|
|
84
|
+
|
|
85
|
+
> "所有任务已完成,是否进入归档阶段?"
|
|
86
|
+
|
|
87
|
+
- 用户确认 → 进入 Phase 2
|
|
88
|
+
- 用户不满意 → 继续修改或补充,完成后再次确认
|
|
89
|
+
- **禁止**自动进入 Phase 2
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
### Phase 2: 归档
|
|
94
|
+
|
|
95
|
+
#### Step 1: 归档 change 目录
|
|
96
|
+
|
|
97
|
+
将 `.harness/doc/ttspec/change/{name}/` 整个目录移动到 `.harness/doc/ttspec/change/archive/{YYYY-MM-DD}-{name}/`。
|
|
98
|
+
|
|
99
|
+
#### Step 2: 归档原始需求文件
|
|
100
|
+
|
|
101
|
+
1. 查找 `.harness/doc/originRequirements/` 中与本次 change 关联的原始需求文件
|
|
102
|
+
2. 将该文件**移动**到 `.harness/doc/originRequirements/origin-main/`,保持原文件名
|
|
103
|
+
3. 如果找不到原始需求文件,记录 "未找到原始需求文件,跳过需求归档"
|
|
104
|
+
|
|
105
|
+
#### Step 3: 归档 PRD 文件
|
|
106
|
+
|
|
107
|
+
1. 查找 `.harness/doc/prd/requirements-{name}.md`
|
|
108
|
+
2. 如果 PRD 存在:
|
|
109
|
+
- 读取 PRD 文件,提取 "涉及产品线/模块" 字段
|
|
110
|
+
- 如果有模块信息 → 移动到 `.harness/doc/prd/prd-main/{module}/requirements-{name}.md`
|
|
111
|
+
- 如果没有模块信息 → 移动到 `.harness/doc/prd/prd-main/general/requirements-{name}.md`
|
|
112
|
+
- 更新 `.harness/doc/prd/prd-main/README.md` 索引
|
|
113
|
+
3. 如果 PRD 不存在,记录 "无 PRD 文件,跳过 PRD 归档"
|
|
114
|
+
|
|
115
|
+
#### Step 4: 输出归档摘要
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
✅ 变更 "{name}" 已归档
|
|
119
|
+
归档位置:.harness/doc/ttspec/change/archive/{date}-{name}/
|
|
120
|
+
原始需求:.harness/doc/originRequirements/origin-main/{filename}
|
|
121
|
+
PRD 归档:.harness/doc/prd/prd-main/{module}/requirements-{name}.md
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## 3. 约束
|
|
127
|
+
|
|
128
|
+
- **保持变更最小化** — 每个任务只做必要修改,不做额外重构
|
|
129
|
+
- **立即标记完成** — 完成任务后立即更新 tasks.md 中的复选框
|
|
130
|
+
- **遇到阻塞暂停** — 不猜测、不绕过,暂停并报告
|
|
131
|
+
- **Phase 2 必须经过用户确认** — Phase 1 完成后禁止自动进入归档
|
|
132
|
+
- **归档是移动操作** — 原始需求和 PRD 文件从原位置移除,归档到新位置
|
|
133
|
+
- **日期格式** — 归档目录名使用 `{YYYY-MM-DD}-{name}` 格式
|
|
134
|
+
- **所有输出使用中文**
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: jsspec-explore
|
|
3
3
|
description: 需求深度探索技能 — 四维度探索框架(范围边界/受影响角色/假设前提/风险面)、探索笔记模板、完成判定标准,产出存放于 .harness/doc/ttspec/change/{name}/explore-notes.md
|
|
4
4
|
alwaysApply: false
|
|
5
5
|
enabled: true
|
|
6
6
|
outputPath: .harness/doc/ttspec/change/
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
# 需求深度探索技能 (
|
|
9
|
+
# 需求深度探索技能 (jsspec-explore)
|
|
10
10
|
|
|
11
11
|
> **Skill 类型**: 需求分析辅助 Skill
|
|
12
12
|
> **触发场景**: 收到新需求后、生成任何文档之前,进行需求深度探索
|
|
@@ -30,17 +30,17 @@ outputPath: .harness/doc/ttspec/change/
|
|
|
30
30
|
|
|
31
31
|
### 1.2 输入
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
|| 输入项 | 路径 | 格式 | 必须 |
|
|
34
|
+
||--------|------|------|------|
|
|
35
|
+
|| 原始需求文件 | `.harness/doc/originRequirements/{filename}` | Markdown | 是 |
|
|
36
|
+
|| ttspec change 目录 | `.harness/doc/ttspec/change/{name}/` | 目录 | 是 |
|
|
37
|
+
|| dev-map 参考文档 | `.harness/dev-map/` | Markdown | 否 |
|
|
38
38
|
|
|
39
39
|
### 1.3 输出
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
|| 输出项 | 路径 | 格式 | 必须 |
|
|
42
|
+
||--------|------|------|------|
|
|
43
|
+
|| 探索笔记 | `.harness/doc/ttspec/change/{name}/explore-notes.md` | Markdown | 是 |
|
|
44
44
|
|
|
45
45
|
---
|
|
46
46
|
|
|
@@ -105,9 +105,18 @@ outputPath: .harness/doc/ttspec/change/
|
|
|
105
105
|
|
|
106
106
|
## 4. 执行步骤
|
|
107
107
|
|
|
108
|
-
### Step 1:
|
|
108
|
+
### Step 1: 解析输入源
|
|
109
109
|
|
|
110
|
-
|
|
110
|
+
> **前置步骤**:如果本次探索是在已有需求基础上进行(如迭代设计),必须先执行 `design-context-reader` Skill 读取已有 PRD 和 ttspec change 内容作为参考上下文。
|
|
111
|
+
|
|
112
|
+
按以下优先级确定需求文件来源:
|
|
113
|
+
|
|
114
|
+
1. **扫描 originRequirements/**:列出 `.harness/doc/originRequirements/` 下所有 `.md` 文件(排除 `README.md`、`.gitkeep` 和 `origin-main/` 子目录)
|
|
115
|
+
- 如果只有 1 个文件 → 自动选择并告知用户
|
|
116
|
+
- 如果有多个文件 → 列出编号列表让用户选择
|
|
117
|
+
- 如果没有文件 → 进入步骤 2
|
|
118
|
+
2. **用户指定路径**:如果用户在命令中提供了文件路径,验证文件存在后使用
|
|
119
|
+
3. **提示用户**:如果以上都没有,提示用户 "未找到需求文件。请在 .harness/doc/originRequirements/ 下创建需求文件,或提供需求文件路径",并**禁止继续执行**
|
|
111
120
|
|
|
112
121
|
### Step 2: 进入探索模式
|
|
113
122
|
|
|
@@ -122,7 +131,17 @@ outputPath: .harness/doc/ttspec/change/
|
|
|
122
131
|
- 用户明确确认探索内容满意,或
|
|
123
132
|
- 探索轮次达到上限(maxTurns: 10)且用户同意推进
|
|
124
133
|
|
|
125
|
-
|
|
134
|
+
### Step 5: 用户确认门禁(强制)
|
|
135
|
+
|
|
136
|
+
**⚠️ 本步骤为强制门禁,禁止跳过或自动推进**
|
|
137
|
+
|
|
138
|
+
探索笔记生成后,**必须**向用户展示摘要并明确询问:
|
|
139
|
+
|
|
140
|
+
> "是否确认探索结果?确认后进入提案阶段(propose)。如需补充或修改,请告知。"
|
|
141
|
+
|
|
142
|
+
- 用户确认 → 进入 propose 阶段(调用 `jsspec-propose` Skill)
|
|
143
|
+
- 用户不满意 → 回到 Step 2 继续探索,更新 explore-notes.md,然后再次回到本步骤确认
|
|
144
|
+
- **禁止**在未经用户确认的情况下自动调用 `jsspec-propose`
|
|
126
145
|
|
|
127
146
|
---
|
|
128
147
|
|
|
@@ -132,4 +151,7 @@ outputPath: .harness/doc/ttspec/change/
|
|
|
132
151
|
- **禁止编造** — 信息不足则追问,不编造假设
|
|
133
152
|
- **四个维度必须全覆盖** — 缺少任何一个维度的探索都视为未完成
|
|
134
153
|
- **轮次上限** — 最多 10 轮讨论,达到上限时总结当前发现并询问是否推进
|
|
154
|
+
- **禁止自动推进到 propose** — explore 完成后必须等待用户确认(Step 5 门禁),未经确认禁止调用 jsspec-propose
|
|
155
|
+
- **输入源优先级** — 必须按 Step 1 顺序查找需求文件:originRequirements/ → 用户路径 → 提示创建
|
|
156
|
+
- **origin-main 排除** — 扫描 originRequirements/ 时排除 origin-main/ 子目录中的文件
|
|
135
157
|
- **所有输出使用中文**
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: jsspec-propose
|
|
3
3
|
description: 结构化提案技能 — 从探索笔记生成 proposal/design/specs/tasks 的完整流程、产出物规范、与 PRD 的衔接,产出存放于 .harness/doc/ttspec/change/{name}/
|
|
4
4
|
alwaysApply: false
|
|
5
5
|
enabled: true
|
|
6
6
|
outputPath: .harness/doc/ttspec/change/
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
# 结构化提案技能 (
|
|
9
|
+
# 结构化提案技能 (jsspec-propose)
|
|
10
10
|
|
|
11
11
|
> **Skill 类型**: 需求分析辅助 Skill
|
|
12
12
|
> **触发场景**: explore 探索完成后,生成结构化提案
|
|
@@ -20,7 +20,7 @@ outputPath: .harness/doc/ttspec/change/
|
|
|
20
20
|
作为结构化提案技能,核心职责是:
|
|
21
21
|
|
|
22
22
|
1. **基于探索笔记生成结构化提案**
|
|
23
|
-
2.
|
|
23
|
+
2. **等待用户确认设计后才生成 PRD**
|
|
24
24
|
|
|
25
25
|
### 1.1 前置条件
|
|
26
26
|
|
|
@@ -29,20 +29,20 @@ outputPath: .harness/doc/ttspec/change/
|
|
|
29
29
|
|
|
30
30
|
### 1.2 输入
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
32
|
+
|| 输入项 | 路径 | 格式 | 必须 |
|
|
33
|
+
||--------|------|------|------|
|
|
34
|
+
|| 探索笔记 | `.harness/doc/ttspec/change/{name}/explore-notes.md` | Markdown | 是 |
|
|
35
|
+
|| 原始需求文件 | `.harness/doc/originRequirements/{filename}` | Markdown | 否(已含在探索笔记中) |
|
|
36
|
+
|| dev-map 参考文档 | `.harness/dev-map/` | Markdown | 否 |
|
|
37
37
|
|
|
38
38
|
### 1.3 输出
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
40
|
+
|| 输出项 | 路径 | 格式 | 必须 |
|
|
41
|
+
||--------|------|------|------|
|
|
42
|
+
|| 提案文档 | `.harness/doc/ttspec/change/{name}/proposal.md` | Markdown | 是 |
|
|
43
|
+
|| 设计文档 | `.harness/doc/ttspec/change/{name}/design.md` | Markdown | 是 |
|
|
44
|
+
|| 能力规格 | `.harness/doc/ttspec/change/{name}/specs/{capability}/spec.md` | Markdown | 是 |
|
|
45
|
+
|| 任务列表 | `.harness/doc/ttspec/change/{name}/tasks.md` | Markdown | 是 |
|
|
46
46
|
|
|
47
47
|
---
|
|
48
48
|
|
|
@@ -145,6 +145,8 @@ outputPath: .harness/doc/ttspec/change/
|
|
|
145
145
|
|
|
146
146
|
### Step 1: 读取探索笔记
|
|
147
147
|
|
|
148
|
+
> **前置步骤**:如果本次 propose 是在已有需求基础上迭代,必须先执行 `design-context-reader` Skill 读取已有 PRD 和 ttspec change 内容,确保设计决策与现有上下文一致。
|
|
149
|
+
|
|
148
150
|
从 `.harness/doc/ttspec/change/{name}/explore-notes.md` 读取探索结果。
|
|
149
151
|
|
|
150
152
|
### Step 2: 生成 proposal.md
|
|
@@ -163,9 +165,21 @@ outputPath: .harness/doc/ttspec/change/
|
|
|
163
165
|
|
|
164
166
|
生成实施任务列表。
|
|
165
167
|
|
|
166
|
-
### Step 6:
|
|
168
|
+
### Step 6: 用户确认门禁(强制)
|
|
169
|
+
|
|
170
|
+
**⚠️ 本步骤为强制门禁,禁止跳过或自动推进**
|
|
171
|
+
|
|
172
|
+
所有 propose 产出(proposal.md、design.md、specs/、tasks.md)生成后,**必须**向用户展示摘要并明确询问:
|
|
173
|
+
|
|
174
|
+
> "是否确认设计方案?确认后生成 PRD。如需修改,请告知调整内容。"
|
|
175
|
+
|
|
176
|
+
- 用户确认 → 调用 `prd-generator` Skill 生成 PRD
|
|
177
|
+
- 用户不满意 → 更新相关 propose 产出后,再次回到本步骤确认
|
|
178
|
+
- **禁止**在未经用户确认的情况下自动调用 `prd-generator`
|
|
179
|
+
|
|
180
|
+
### Step 7: 生成 PRD(用户确认后)
|
|
167
181
|
|
|
168
|
-
|
|
182
|
+
用户确认设计方案后,调用 `prd-generator` 技能,以探索笔记和 propose 产出作为输入上下文,在 `.harness/doc/prd/requirements-{name}.md` 生成标准化 PRD。
|
|
169
183
|
|
|
170
184
|
---
|
|
171
185
|
|
|
@@ -175,4 +189,5 @@ outputPath: .harness/doc/ttspec/change/
|
|
|
175
189
|
- **proposal 必须引用来源** — 包含 `来源: .harness/doc/originRequirements/{filename}`
|
|
176
190
|
- **specs 必须使用 WHEN/THEN 格式** — 确保可测试
|
|
177
191
|
- **tasks 必须使用复选框格式** — 确保 apply 阶段可追踪
|
|
192
|
+
- **禁止自动生成 PRD** — propose 完成后必须等待用户确认(Step 6 门禁),未经确认禁止调用 prd-generator
|
|
178
193
|
- **所有输出使用中文**
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: jsspec-skill-creator
|
|
3
3
|
description: Skill 创建辅助技能 — 在 Harness 体系内创建新 Skill 的模板和流程,包含命名校验、Agent 关联和标准 SKILL.md 模板
|
|
4
4
|
alwaysApply: false
|
|
5
5
|
enabled: true
|
|
6
6
|
outputPath: .harness/skills/
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
# Skill 创建辅助技能 (
|
|
9
|
+
# Skill 创建辅助技能 (jsspec-skill-creator)
|
|
10
10
|
|
|
11
11
|
> **Skill 类型**: 工程基础设施 Skill
|
|
12
12
|
> **触发场景**: 需要在 Harness 体系内创建新的 Skill
|
|
@@ -24,18 +24,18 @@ outputPath: .harness/skills/
|
|
|
24
24
|
|
|
25
25
|
### 1.1 输入
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
|| 输入项 | 说明 | 必须 |
|
|
28
|
+
||--------|------|------|
|
|
29
|
+
|| Skill 名称 | kebab-case 格式(如 `user-profile-export`) | 是 |
|
|
30
|
+
|| Skill 描述 | 中文简要描述 | 是 |
|
|
31
|
+
|| 所属 Agent | 可调用此 Skill 的 Agent 角色 | 是 |
|
|
32
|
+
|| 输出路径 | Skill 产出的目标目录 | 否(有默认值) |
|
|
33
33
|
|
|
34
34
|
### 1.2 输出
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
|| 输出项 | 路径 | 格式 |
|
|
37
|
+
||--------|------|------|
|
|
38
|
+
|| SKILL.md 文件 | `.harness/skills/{skill-name}/SKILL.md` | Markdown |
|
|
39
39
|
|
|
40
40
|
---
|
|
41
41
|
|
|
@@ -91,15 +91,15 @@ outputPath: {输出路径}
|
|
|
91
91
|
|
|
92
92
|
### 1.1 输入
|
|
93
93
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
94
|
+
|| 输入项 | 路径/说明 | 格式 | 必须 |
|
|
95
|
+
||--------|----------|------|------|
|
|
96
|
+
|| {输入1} | {路径} | {格式} | 是 |
|
|
97
97
|
|
|
98
98
|
### 1.2 输出
|
|
99
99
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
100
|
+
|| 输出项 | 路径/说明 | 格式 | 必须 |
|
|
101
|
+
||--------|----------|------|------|
|
|
102
|
+
|| {输出1} | {路径} | {格式} | 是 |
|
|
103
103
|
|
|
104
104
|
---
|
|
105
105
|
|
|
@@ -77,14 +77,14 @@ workflow:
|
|
|
77
77
|
description: "深度探索需求 — 范围边界、受影响角色、假设与前提、风险面"
|
|
78
78
|
input: "原始需求文件"
|
|
79
79
|
output: ".harness/doc/ttspec/change/{name}/explore-notes.md"
|
|
80
|
-
|
|
80
|
+
skill: "jsspec-explore"
|
|
81
81
|
max_turns: 10
|
|
82
82
|
- step: 2
|
|
83
83
|
name: "propose"
|
|
84
84
|
description: "生成结构化提案 — proposal/design/specs/tasks"
|
|
85
85
|
input: "explore-notes.md"
|
|
86
86
|
output: ".harness/doc/ttspec/change/{name}/ (proposal.md, design.md, specs/, tasks.md)"
|
|
87
|
-
|
|
87
|
+
skill: "jsspec-propose"
|
|
88
88
|
- step: 3
|
|
89
89
|
name: "prd-generation"
|
|
90
90
|
description: "使用 prd-generator 技能生成标准化 PRD"
|
|
@@ -521,8 +521,8 @@ workflow:
|
|
|
521
521
|
- id: delivery
|
|
522
522
|
name: "交付归档"
|
|
523
523
|
order: 7
|
|
524
|
-
agent: project-manager
|
|
525
|
-
model_tier: lite
|
|
524
|
+
agent: developer / project-manager
|
|
525
|
+
model_tier: standard / lite
|
|
526
526
|
max_turns: 5
|
|
527
527
|
|
|
528
528
|
inputs:
|
|
@@ -296,7 +296,7 @@ class WorkflowValidator {
|
|
|
296
296
|
// 写入校验结果文件
|
|
297
297
|
const outputPath = path.join(HARNESS_ROOT, '..', '..', '.workflow-validation-result.json');
|
|
298
298
|
try {
|
|
299
|
-
// 尝试写到
|
|
299
|
+
// 尝试写到 jsspec 目录层级
|
|
300
300
|
fs.writeFileSync(
|
|
301
301
|
path.join(__dirname, '..', '..', '..', '.workflow-validation-result.json'),
|
|
302
302
|
resultJson
|