svharness 0.14.7 → 0.14.8

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.
Files changed (24) hide show
  1. package/README.md +858 -858
  2. package/package.json +1 -1
  3. package/templates/_shared/apply-skills/README.md +139 -0
  4. package/templates/_shared/apply-skills/harness-apply-create-task.md +295 -0
  5. package/templates/_shared/apply-skills/harness-apply-execute-task.md +344 -0
  6. package/templates/_shared/apply-skills/harness-apply-review-task.md +448 -0
  7. package/templates/_shared/apply-skills/harness-apply-skills-main.md +36 -36
  8. package/templates/_shared/build-rules/harness-build-rule-skills-tasks-output.md +101 -36
  9. package/templates/_shared/build-skills/harness-build-skill-knowledge-builder.md +84 -84
  10. package/templates/_shared/meta/AGENTS_APPLY.md.ejs +180 -180
  11. package/templates/_shared/skeleton/references/apply-skills-registry.example.yaml +11 -11
  12. package/templates/_shared/tasks/task-list.yaml +87 -0
  13. package/templates/_shared/tasks/templates/README.md +102 -0
  14. package/templates/_shared/tasks/templates/TEMPLATE-GUIDE.md +171 -0
  15. package/templates/_shared/tasks/templates/batch/batch-development.md +290 -0
  16. package/templates/_shared/tasks/templates/batch/execution-status-template.yaml +160 -0
  17. package/templates/_shared/tasks/templates/batch/verify-cases-template.yaml +115 -0
  18. package/templates/_shared/tasks/templates/feature/add-signal-interface.md +174 -0
  19. package/templates/_shared/tasks/templates/feature/feature-development.md +184 -0
  20. package/templates/_shared/tasks/templates/fix/bug-fix.md +167 -0
  21. package/templates/_shared/tasks/templates/index.yaml +143 -0
  22. package/templates/_shared/tasks/templates/refactor/adapt-architecture.md +180 -0
  23. package/templates/_shared/tasks/templates/review/code-review.md +275 -0
  24. package/templates/_shared/tasks/templates/test/verification-suite.md +190 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svharness",
3
- "version": "0.14.7",
3
+ "version": "0.14.8",
4
4
  "description": "CLI scaffolder for SDD-Driven Agent-Agnostic Coding Framework (harness)",
5
5
  "bin": {
6
6
  "svharness": "./bin/cli.js",
@@ -0,0 +1,139 @@
1
+ # Apply Skills 目录
2
+
3
+ > 本目录包含 `svharness apply` 生成的运行期 skills,用于引导 Agent 完成业务开发。
4
+
5
+ ## Skills 列表
6
+
7
+ | Skill | 用途 | 触发语示例 |
8
+ |-------|------|-----------|
9
+ | `harness-apply-skills-main` | 薄索引入口 | "使用 harness 开发 xxx" |
10
+ | `harness-apply-create-task` | 任务创建器 | "创建任务"、"新建任务" |
11
+ | `harness-apply-execute-task` | 任务执行器 | "执行任务"、"继续开发" |
12
+ | `harness-apply-review-task` | 任务审查器 | "审查任务"、"review task" |
13
+
14
+ ## 任务生命周期
15
+
16
+ ```mermaid
17
+ graph LR
18
+ A[harness-apply-create-task] -->|写入| B[task-list.yaml]
19
+ B -->|读取| C[harness-apply-execute-task]
20
+ C -->|写入| D[执行状态/证据]
21
+ D -->|读取| E[harness-apply-review-task]
22
+ E -->|反馈| B
23
+
24
+ F[specs/] --> A
25
+ G[requirements/] --> A
26
+ H[rules/] --> A
27
+ I[baseline/] --> A
28
+ ```
29
+
30
+ ### 流程说明
31
+
32
+ 1. **创建任务** (`harness-apply-create-task`)
33
+ - 搜索 requirements/specs/rules/baseline
34
+ - 确定任务类型
35
+ - 创建任务定义
36
+ - 对抗性审查
37
+ - 写入 task-list.yaml
38
+
39
+ 2. **执行任务** (`harness-apply-execute-task`)
40
+ - 读取 task-list.yaml
41
+ - 认领 pending 任务
42
+ - 按步骤执行
43
+ - 收集证据
44
+ - 提交审查
45
+
46
+ 3. **审查任务** (`harness-apply-review-task`)
47
+ - 读取任务执行结果
48
+ - 五维度审查
49
+ - 对抗性挑战
50
+ - 输出结论
51
+ - 更新任务状态
52
+
53
+ ## 文件结构
54
+
55
+ ```
56
+ tasks/
57
+ ├── task-list.yaml # 统一任务列表
58
+ ├── templates/ # 任务模板
59
+ │ ├── index.yaml # 模板索引
60
+ │ ├── feature/ # 功能开发模板
61
+ │ ├── fix/ # Bug 修复模板
62
+ │ ├── refactor/ # 重构模板
63
+ │ ├── test/ # 测试模板
64
+ │ ├── review/ # 审查模板
65
+ │ └── batch/ # 批量开发模板
66
+ └── evidence/ # 证据目录
67
+ └── <task-id>/ # 每任务证据
68
+ ```
69
+
70
+ ## 任务状态流转
71
+
72
+ ```
73
+ pending → in_progress → review_pending → done
74
+ ↑ ↓ ↓
75
+ └───────────┴──────────────┘ (blocked)
76
+ ```
77
+
78
+ | 状态 | 说明 | 触发条件 |
79
+ |------|------|----------|
80
+ | `pending` | 待执行 | 任务创建后初始状态 |
81
+ | `in_progress` | 执行中 | 被 execute-task 认领 |
82
+ | `review_pending` | 待审查 | 执行完成,提交审查 |
83
+ | `done` | 完成 | 审查通过 |
84
+ | `blocked` | 阻塞 | 执行或审查中遇到阻塞 |
85
+ | `waived` | 豁免 | 人工决定跳过 |
86
+
87
+ ## 与其他 Skills 的关系
88
+
89
+ | Skill | 用途 | 与本目录 skills 的关系 |
90
+ |-------|------|------------------------|
91
+ | `harness-apply-zhangyong-voice-tts` | 特定战役执行 | 参考实现,可复用任务结构 |
92
+ | `harness-android-architecture` | MVI 架构指引 | create-task 时参考 |
93
+ | `harness-compose-ui` | Compose UI 指引 | execute-task 时参考 |
94
+ | `harness-compose-state` | 状态管理指引 | execute-task 时参考 |
95
+
96
+ ## 使用示例
97
+
98
+ ### 创建任务
99
+
100
+ ```text
101
+ 用户: 创建一个任务来实现音频均衡器功能
102
+ Agent: [调用 harness-apply-create-task]
103
+ → 搜索 specs/behavior/voice-audio.yaml
104
+ → 搜索 requirements/yaml/
105
+ → 创建 TASK-001 (feature)
106
+ → 对抗性审查通过
107
+ → 写入 task-list.yaml
108
+ ```
109
+
110
+ ### 执行任务
111
+
112
+ ```text
113
+ 用户: 执行下一个任务
114
+ Agent: [调用 harness-apply-execute-task]
115
+ → 读取 task-list.yaml
116
+ → 认领 TASK-001
117
+ → 按步骤执行
118
+ → 收集证据
119
+ → 标记为 review_pending
120
+ ```
121
+
122
+ ### 审查任务
123
+
124
+ ```text
125
+ 用户: 审查 TASK-001
126
+ Agent: [调用 harness-apply-review-task]
127
+ → 读取 TASK-001 执行结果
128
+ → 五维度审查
129
+ → 对抗性挑战
130
+ → 输出 APPROVE
131
+ → 标记为 done
132
+ ```
133
+
134
+ ## 相关文档
135
+
136
+ - `tasks/templates/index.yaml` — 任务模板索引
137
+ - `tasks/task-list.yaml` — 统一任务列表骨架
138
+ - `agent-env/review-profiles/` — 审查配置
139
+ - `harness-apply-three-layer-architecture.md` — 三层架构设计
@@ -0,0 +1,295 @@
1
+ ---
2
+ name: harness-apply-create-task
3
+ description: >
4
+ 通用任务创建 skill。引导 Agent 搜索相关需求/specs/rules/baseline,
5
+ 创建各种类型的任务(feature/fix/refactor/test/review),记录到任务列表,
6
+ 并以对抗性思维对创建的任务进行审查。
7
+ 触发语:创建任务、新建任务、create task、add task、我要开发xxx、实现xxx功能。
8
+ ---
9
+
10
+ # harness-apply-create-task(任务创建器)
11
+
12
+ 你是 **任务创建器**。负责从需求/specs 中提取可执行任务,写入任务列表,并进行对抗性自审。
13
+
14
+ ## 绑定元数据
15
+
16
+ ```yaml
17
+ harness_root_rel: __HARNESS_ROOT_REL__
18
+ task_list_rel: tasks/task-list.yaml
19
+ templates_rel: tasks/templates
20
+ ```
21
+
22
+ ## 核心流程
23
+
24
+ ```
25
+ Phase 1: 搜索与理解
26
+
27
+ Phase 2: 确定任务类型
28
+
29
+ Phase 3: 创建任务
30
+
31
+ Phase 4: 对抗性审查
32
+
33
+ Phase 5: 写入任务列表
34
+ ```
35
+
36
+ ---
37
+
38
+ ## Phase 1: 搜索与理解
39
+
40
+ **目标**:全面收集与任务相关的信息,建立上下文。
41
+
42
+ ### 1.1 必读文档(按顺序)
43
+
44
+ | 序号 | 文档 | 路径 | 用途 |
45
+ |------|------|------|------|
46
+ | 1 | harness 清单 | `harness.yaml` | 了解 harness 基本信息(name、arch、agent) |
47
+ | 2 | 应用期约束 | `AGENTS_APPLY.md` | 了解 apply 期强约束 |
48
+ | 3 | 任务模板索引 | `tasks/templates/index.yaml` | 了解可用的任务模板 |
49
+ | 4 | 任务列表 | `tasks/task-list.yaml` | 了解已有任务,避免重复 |
50
+
51
+ ### 1.2 搜索相关信息
52
+
53
+ 根据用户需求,搜索以下目录中的相关内容:
54
+
55
+ | 搜索目标 | 路径 | 搜索方式 |
56
+ |----------|------|----------|
57
+ | 需求条目 | `requirements/yaml/*.yaml` | 按关键词/REQ-ID 搜索 |
58
+ | 行为规格 | `specs/behavior/*.yaml` | 按模块/功能搜索 |
59
+ | 信号规格 | `specs/signals/*.yaml` | 按信号名/CMDID 搜索 |
60
+ | UI 规格 | `specs/ui/*.yaml` | 按组件/TTS 搜索 |
61
+ | 接口规格 | `specs/interfaces/*.yaml` | 按接口名搜索 |
62
+ | 架构规则 | `agent-env/rules/*.md` | 加载 alwaysApply 规则 |
63
+ | 基线参考 | `baseline/code/` | 查找同类实现样本 |
64
+ | 已有任务 | `tasks/task-list.yaml` | 检查是否已存在相关任务 |
65
+
66
+ ### 1.3 输出:任务上下文
67
+
68
+ ```yaml
69
+ task_context:
70
+ req_ids: [] # 相关需求 ID
71
+ spec_paths: [] # 相关规格路径
72
+ rule_refs: [] # 相关规则
73
+ baseline_refs: [] # 基线参考
74
+ module_name: "" # 目标模块
75
+ feature_domain: "" # 功能域
76
+ ```
77
+
78
+ ---
79
+
80
+ ## Phase 2: 确定任务类型
81
+
82
+ 根据搜索结果,确定任务类型:
83
+
84
+ | 类型 | 触发条件 | 模板路径 |
85
+ |------|----------|----------|
86
+ | **feature** | 新增功能/信号/接口/UI | `tasks/templates/feature/` |
87
+ | **fix** | Bug 修复/问题排查 | `tasks/templates/fix/` |
88
+ | **refactor** | 架构重构/代码优化 | `tasks/templates/refactor/` |
89
+ | **test** | 测试验证/覆盖率提升 | `tasks/templates/test/` |
90
+ | **review** | 代码审查/规格验证 | `tasks/templates/review/` |
91
+ | **batch** | 跨模块批量开发 | `tasks/templates/batch/` |
92
+
93
+ **选择规则**:
94
+ 1. 用户明确指定类型 → 使用指定类型
95
+ 2. 用户描述为"新增/实现/开发" → feature
96
+ 3. 用户描述为"修复/fix/bug" → fix
97
+ 4. 用户描述为"重构/优化/迁移" → refactor
98
+ 5. 用户描述为"测试/验证" → test
99
+ 6. 用户描述为"审查/review" → review
100
+ 7. 用户描述为"批量/整包/跨模块" → batch
101
+
102
+ ---
103
+
104
+ ## Phase 3: 创建任务
105
+
106
+ ### 3.1 读取模板
107
+
108
+ 根据任务类型,读取对应的模板文件:
109
+
110
+ ```
111
+ tasks/templates/<type>/<template>.md
112
+ ```
113
+
114
+ ### 3.2 生成任务 ID
115
+
116
+ 格式:`TASK-<序号>`
117
+
118
+ 序号规则:
119
+ - 从 `tasks/task-list.yaml` 中获取当前最大序号
120
+ - 新任务序号 = 最大序号 + 1
121
+ - 示例:TASK-001、TASK-002、TASK-003
122
+
123
+ ### 3.3 填充任务定义
124
+
125
+ ```yaml
126
+ - id: "TASK-XXX"
127
+ type: <feature|fix|refactor|test|review|batch>
128
+ title: "任务标题(简洁明了)"
129
+ description: "任务描述(详细说明做什么)"
130
+ status: pending
131
+ priority: <P0|P1|P2> # P0=紧急, P1=重要, P2=普通
132
+ created_at: "<当前时间>"
133
+ updated_at: "<当前时间>"
134
+
135
+ # 来源追溯
136
+ req_ids: [<REQ-ID 列表>]
137
+ spec_paths: [<规格路径列表>]
138
+
139
+ # 执行定义
140
+ template: "tasks/templates/<type>/<template>.md"
141
+ inputs: # 模板输入参数
142
+ <param>: <value>
143
+ steps: # 从模板继承的步骤
144
+ - id: <step-id>
145
+ status: pending
146
+
147
+ # 审查记录(初始为空)
148
+ review:
149
+ status: pending
150
+ reviewer: null
151
+ dimensions: []
152
+
153
+ # 证据(初始为空)
154
+ evidence: []
155
+ ```
156
+
157
+ ---
158
+
159
+ ## Phase 4: 对抗性审查
160
+
161
+ **目标**:以对抗性思维检查任务定义的质量。
162
+
163
+ ### 4.1 检查清单
164
+
165
+ | 检查项 | 说明 | 失败处理 |
166
+ |--------|------|----------|
167
+ | **重复检查** | 是否与已有任务重复 | 拒绝创建,提示已有任务 ID |
168
+ | **依赖检查** | 依赖的任务是否存在 | 提示缺失的依赖任务 |
169
+ | **spec 覆盖** | 是否覆盖了所有相关 spec | 提示遗漏的 spec |
170
+ | **REQ 覆盖** | 是否关联了所有相关 REQ | 提示遗漏的 REQ |
171
+ | **验收标准** | acceptance 是否可测试 | 要求补充可测试的验收标准 |
172
+ | **模板匹配** | 选择的模板是否合适 | 建议更合适的模板 |
173
+ | **粒度检查** | 任务粒度是否合适(不过大/过小) | 建议拆分或合并 |
174
+
175
+ ### 4.2 对抗性挑战
176
+
177
+ 针对任务定义提出质疑:
178
+
179
+ 1. **边界条件**:是否考虑了所有边界条件?
180
+ 2. **异常场景**:异常场景如何处理?
181
+ 3. **性能影响**:对性能有何影响?
182
+ 4. **安全风险**:是否存在安全隐患?
183
+ 5. **向后兼容**:是否破坏现有功能?
184
+
185
+ ### 4.3 输出:审查结论
186
+
187
+ ```yaml
188
+ adversarial_review:
189
+ passed: true|false
190
+ checks:
191
+ - name: "重复检查"
192
+ status: pass|fail
193
+ detail: ""
194
+ - name: "依赖检查"
195
+ status: pass|fail
196
+ detail: ""
197
+ # ...
198
+ challenges:
199
+ - question: "边界条件处理?"
200
+ answer: "..."
201
+ # ...
202
+ conclusion: "approve|reject|needs_revision"
203
+ revision_notes: [] # 如需修改,列出修改项
204
+ ```
205
+
206
+ ---
207
+
208
+ ## Phase 5: 写入任务列表
209
+
210
+ ### 5.1 读取现有任务列表
211
+
212
+ ```yaml
213
+ # tasks/task-list.yaml
214
+ schema_version: "1.0"
215
+ updated_at: "..."
216
+ summary:
217
+ total: N
218
+ pending: N
219
+ # ...
220
+ tasks:
221
+ - id: TASK-001
222
+ # ...
223
+ ```
224
+
225
+ 如果文件不存在,创建初始结构。
226
+
227
+ ### 5.2 追加新任务
228
+
229
+ 将新任务追加到 `tasks` 数组中。
230
+
231
+ ### 5.3 更新统计
232
+
233
+ 更新 `summary` 中的统计数据。
234
+
235
+ ### 5.4 写入文件
236
+
237
+ 将更新后的内容写入 `tasks/task-list.yaml`。
238
+
239
+ ---
240
+
241
+ ## 输出格式
242
+
243
+ ### 成功创建
244
+
245
+ ```markdown
246
+ ## 任务创建成功
247
+
248
+ - **任务 ID**: TASK-XXX
249
+ - **类型**: feature
250
+ - **标题**: xxx
251
+ - **优先级**: P1
252
+
253
+ ### 对抗性审查
254
+ - 重复检查: PASS
255
+ - 依赖检查: PASS
256
+ - spec 覆盖: PASS
257
+ - 验收标准: PASS
258
+
259
+ ### 后续步骤
260
+ 1. 使用 `harness-apply-execute-task` 执行任务
261
+ 2. 使用 `harness-apply-review-task` 审查执行结果
262
+ ```
263
+
264
+ ### 创建失败
265
+
266
+ ```markdown
267
+ ## 任务创建失败
268
+
269
+ - **原因**: 与已有任务 TASK-YYY 重复
270
+ - **建议**: 修改 TASK-YYY 或合并任务
271
+
272
+ ### 对抗性审查
273
+ - 重复检查: FAIL (与 TASK-YYY 重复)
274
+ - 依赖检查: PASS
275
+ - spec 覆盖: PASS
276
+ - 验收标准: PASS
277
+ ```
278
+
279
+ ---
280
+
281
+ ## 守则
282
+
283
+ 1. **不猜测**:不确定的信息必须询问用户
284
+ 2. **不重复**:创建前必须检查已有任务
285
+ 3. **可追溯**:每个任务必须关联 req_ids 或 spec_paths
286
+ 4. **可测试**:验收标准必须可自动化或手动验证
287
+ 5. **对抗性**:必须以对抗性思维审查任务定义
288
+
289
+ ## 典型触发语
290
+
291
+ - "创建一个任务来实现 xxx 功能"
292
+ - "新建一个 bug 修复任务"
293
+ - "我要开发 xxx,帮我创建任务"
294
+ - "为 specs/behavior/voice-audio.yaml 创建开发任务"
295
+ - "add task for xxx"