jsharness 1.12.4 → 1.13.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/.harness/agents/code-reviewer/contract.yaml +93 -55
- package/.harness/agents/code-reviewer/prompt.md +41 -2
- package/.harness/agents/developer/contract.yaml +90 -51
- package/.harness/agents/developer/prompt.md +72 -9
- package/.harness/agents/gate-controller/contract.yaml +63 -40
- package/.harness/agents/gate-controller/prompt.md +15 -0
- package/.harness/agents/project-manager/contract.yaml +33 -44
- package/.harness/agents/requirements-analyst/contract.yaml +56 -43
- package/.harness/agents/solution-designer/contract.yaml +65 -39
- package/.harness/agents/solution-designer/prompt.md +18 -5
- package/.harness/agents/tester/contract.yaml +98 -51
- package/.harness/agents/tester/prompt.md +33 -0
- package/.harness/commands/js/build-gates-frontend.md +1 -1
- package/.harness/commands/js/build-gates-java.md +1 -1
- package/.harness/commands/js/build-gates.md +3 -3
- package/.harness/commands/js/engineering-consistency.md +1 -1
- package/.harness/commands/js/security-quality.md +1 -1
- package/.harness/commands/js/static-compliance.md +1 -1
- package/.harness/commands/js/test-compliance.md +1 -1
- package/.harness/gate/checks/{build-gates-frontend.js → build-gates-frontend.cjs} +94 -0
- package/.harness/gate/checks/{build-gates.js → build-gates.cjs} +2 -2
- package/.harness/gate/checks/{security-quality.js → security-quality.cjs} +3 -2
- package/.harness/gate/checks/test-compliance.cjs +280 -0
- package/.harness/gate/{index.js → index.cjs} +3 -3
- package/.harness/rules/project/frontend-coding-basics.md +205 -0
- package/.harness/skills/code-review/SKILL.md +10 -0
- package/.harness/skills/ui-designer/SKILL.md +1020 -0
- package/.harness/workflow/definition.yaml +177 -28
- package/.harness/workflow/{validate.js → validate.cjs} +1 -1
- package/LICENSE +21 -0
- package/README.md +36 -25
- package/bin/jsharness.js +4 -2
- package/lib/index.mjs +45 -15
- package/package.json +39 -9
- package/.harness/doc/integration-test-plan.md +0 -248
- package/.harness/doc/originRequirements/.gitkeep +0 -0
- package/.harness/doc/originRequirements/2026-05-22-sample-requirement.md +0 -12
- package/.harness/doc/originRequirements/README.md +0 -36
- 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 +0 -33
- package/.harness/doc/team-guidelines/README.md +0 -161
- package/.harness/doc/team-guidelines/arch-team.md +0 -811
- package/.harness/doc/team-guidelines/collaboration.md +0 -556
- package/.harness/doc/team-guidelines/pm-team.md +0 -337
- package/.harness/doc/team-guidelines/qa-team.md +0 -562
- package/.harness/doc/team-guidelines/rd-team.md +0 -714
- package/.harness/doc/training-materials.md +0 -280
- package/.harness/doc/ttspec/.gitkeep +0 -0
- package/.harness/doc/ttspec/README.md +0 -33
- package/.harness/doc/ttspec/change/.gitkeep +0 -0
- package/.harness/doc/ttspec/change/archive/.gitkeep +0 -0
- package/.harness/doc/ttspec/specs/.gitkeep +0 -0
- package/.harness/gate/checks/test-compliance.js +0 -114
- package/files/AI_RULE.md +0 -185
- package/files/analyze-requirements.md +0 -197
- package/files/architecture-designer.md +0 -1334
- package/files/front-coding-rules.md +0 -665
- package/files/frontend-project-conventions/SKILL.md +0 -125
- package/files/java-backend-coding-standards/SKILL.md +0 -536
- package/files//345/205/254/345/217/270harness.txt +0 -1818
- /package/.harness/gate/{baseline.js → baseline.cjs} +0 -0
- /package/.harness/gate/checks/{build-gates-java.js → build-gates-java.cjs} +0 -0
- /package/.harness/gate/checks/{engineering-consistency.js → engineering-consistency.cjs} +0 -0
- /package/.harness/gate/checks/{static-compliance.js → static-compliance.cjs} +0 -0
|
@@ -1,49 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
description: 项目经理路由Agent,负责需求接收与分类路由、任务分配、进度追踪和跨角色协调
|
|
1
|
+
agent: project-manager
|
|
3
2
|
version: "1.0.0"
|
|
3
|
+
description: 项目经理路由Agent,负责需求接收与分类路由、任务分配、进度追踪和跨角色协调
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
-
|
|
26
|
-
|
|
27
|
-
- change_request
|
|
28
|
-
|
|
29
|
-
permissions:
|
|
30
|
-
- read
|
|
31
|
-
- write
|
|
5
|
+
inputs:
|
|
6
|
+
- name: "原始需求"
|
|
7
|
+
source: "origin_requirements"
|
|
8
|
+
format: "markdown"
|
|
9
|
+
required: true
|
|
10
|
+
- name: "TaskBoard"
|
|
11
|
+
source: "task_board"
|
|
12
|
+
format: "markdown"
|
|
13
|
+
required: true
|
|
14
|
+
|
|
15
|
+
outputs:
|
|
16
|
+
- name: "路由决策"
|
|
17
|
+
format: "markdown"
|
|
18
|
+
path: ".harness/doc/project/routing-decision.md"
|
|
19
|
+
required: true
|
|
20
|
+
- name: "TaskBoard 更新"
|
|
21
|
+
format: "markdown"
|
|
22
|
+
required: true
|
|
23
|
+
|
|
24
|
+
stage_mapping:
|
|
25
|
+
- stage: "delivery"
|
|
26
|
+
role: "归档协调"
|
|
32
27
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
28
|
+
constraints:
|
|
29
|
+
- "只做路由和协调,绝对不参与技术判断"
|
|
30
|
+
- "不得修改技术文档内容"
|
|
31
|
+
- "不得跳过必要流程阶段"
|
|
32
|
+
- "不得越过闸门总控强行推进"
|
|
36
33
|
|
|
37
|
-
|
|
38
|
-
-
|
|
39
|
-
- 选择合适的流程变体并分配给对应角色
|
|
40
|
-
- 维护 TaskBoard 看板的准确性
|
|
41
|
-
- 追踪各阶段进度,识别阻塞点
|
|
42
|
-
- 协调跨角色的沟通和变更请求
|
|
34
|
+
rules:
|
|
35
|
+
- "rules/global/process-discipline.md"
|
|
43
36
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
- 不得跳过必要的流程阶段
|
|
47
|
-
- 不得评价代码质量或设计优劣
|
|
48
|
-
- 不得修改技术文档的内容
|
|
49
|
-
- 不得在闸门判定为BLOCK时强行推进
|
|
37
|
+
model_tier: lite
|
|
38
|
+
max_turns: 5
|
|
@@ -1,48 +1,61 @@
|
|
|
1
|
-
|
|
2
|
-
description: 需求分析Agent,将原始需求转化为结构化需求文档、验收标准和用户故事,使用 prd-generator 技能生成标准化 PRD
|
|
1
|
+
agent: requirements-analyst
|
|
3
2
|
version: "1.0.0"
|
|
3
|
+
description: 需求分析Agent,将原始需求转化为结构化需求文档、验收标准和用户故事
|
|
4
|
+
|
|
5
|
+
inputs:
|
|
6
|
+
- name: "原始需求文件"
|
|
7
|
+
source: "origin_requirements"
|
|
8
|
+
path: ".harness/doc/originRequirements/{filename}"
|
|
9
|
+
format: "markdown"
|
|
10
|
+
required: true
|
|
11
|
+
- name: "ttspec change 目录"
|
|
12
|
+
source: "ttspec_change"
|
|
13
|
+
path: ".harness/doc/ttspec/change/{name}/"
|
|
14
|
+
format: "directory"
|
|
15
|
+
required: true
|
|
16
|
+
- name: "TaskBoard"
|
|
17
|
+
source: "task_board"
|
|
18
|
+
format: "markdown"
|
|
19
|
+
required: true
|
|
20
|
+
- name: "dev-map"
|
|
21
|
+
source: "dev_map"
|
|
22
|
+
format: "markdown"
|
|
23
|
+
required: true
|
|
24
|
+
|
|
25
|
+
outputs:
|
|
26
|
+
- name: "explore 笔记"
|
|
27
|
+
format: "markdown"
|
|
28
|
+
path: ".harness/doc/ttspec/change/{name}/explore-notes.md"
|
|
29
|
+
required: true
|
|
30
|
+
- name: "结构化提案"
|
|
31
|
+
format: "directory"
|
|
32
|
+
path: ".harness/doc/ttspec/change/{name}/"
|
|
33
|
+
required: true
|
|
34
|
+
- name: "需求文档(PRD)"
|
|
35
|
+
format: "markdown"
|
|
36
|
+
path: ".harness/doc/prd/requirements-{task-id}.md"
|
|
37
|
+
required: true
|
|
38
|
+
- name: "TaskBoard 更新"
|
|
39
|
+
format: "markdown"
|
|
40
|
+
required: true
|
|
41
|
+
|
|
42
|
+
stage_mapping:
|
|
43
|
+
- stage: "requirements-analysis"
|
|
44
|
+
role: "主力执行"
|
|
4
45
|
|
|
5
|
-
|
|
6
|
-
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
- search_file
|
|
11
|
-
- ask_followup_question
|
|
12
|
-
|
|
13
|
-
model: standard
|
|
14
|
-
agentMode: interactive
|
|
15
|
-
enabled: true
|
|
16
|
-
enabledAutoRun: false
|
|
17
|
-
maxTurns: 10
|
|
18
|
-
|
|
19
|
-
scope:
|
|
20
|
-
- jsspec/
|
|
21
|
-
- .harness/
|
|
22
|
-
|
|
23
|
-
triggers:
|
|
24
|
-
- requirement_received
|
|
25
|
-
- clarification_needed
|
|
26
|
-
|
|
27
|
-
permissions:
|
|
28
|
-
- read
|
|
29
|
-
- write
|
|
46
|
+
constraints:
|
|
47
|
+
- "不做技术方案设计"
|
|
48
|
+
- "不评估技术可行性细节"
|
|
49
|
+
- "不写代码"
|
|
50
|
+
- "禁止跳过任何步骤(必须 explore → propose → prd 顺序执行)"
|
|
30
51
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
-
|
|
34
|
-
|
|
52
|
+
skills:
|
|
53
|
+
- "jsspec-explore"
|
|
54
|
+
- "jsspec-propose"
|
|
55
|
+
- "prd-generator"
|
|
35
56
|
|
|
36
|
-
|
|
37
|
-
-
|
|
38
|
-
- 确保每个需求都有明确可测试的验收标准
|
|
39
|
-
- 先 explore(深度探索),再 propose(结构化提案),最后 prd-generation(标准化 PRD)
|
|
40
|
-
- 产出 explore-notes.md、proposal/design/specs/tasks 和标准化 PRD
|
|
41
|
-
- 用户故事拆分
|
|
57
|
+
rules:
|
|
58
|
+
- "rules/global/process-discipline.md"
|
|
42
59
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
- 不评估技术可行性细节
|
|
46
|
-
- 不写代码
|
|
47
|
-
- 每个需求至少有一个验收标准
|
|
48
|
-
- 明确写出"不做什么"
|
|
60
|
+
model_tier: standard
|
|
61
|
+
max_turns: 10
|
|
@@ -1,47 +1,73 @@
|
|
|
1
|
-
|
|
2
|
-
description: 方案设计Agent,基于需求文档输出技术方案、接口定义(OpenAPI 3.0)、数据模型和架构设计
|
|
1
|
+
agent: solution-designer
|
|
3
2
|
version: "1.0.0"
|
|
3
|
+
description: 方案设计Agent,基于需求文档输出技术方案、接口定义、数据模型、架构设计和 UI 设计规范
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
-
|
|
11
|
-
|
|
5
|
+
inputs:
|
|
6
|
+
- name: "需求文档"
|
|
7
|
+
source: "requirements_analysis.outputs.需求文档"
|
|
8
|
+
format: "markdown"
|
|
9
|
+
required: true
|
|
10
|
+
- name: "验收标准"
|
|
11
|
+
source: "requirements_analysis.outputs.验收标准列表"
|
|
12
|
+
required: true
|
|
13
|
+
- name: "dev-map 架构参考"
|
|
14
|
+
source: "dev_map"
|
|
15
|
+
required: true
|
|
16
|
+
- name: "ADR 历史决策"
|
|
17
|
+
source: "dev-map/decisions.md"
|
|
18
|
+
required: false
|
|
12
19
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
20
|
+
outputs:
|
|
21
|
+
- name: "技术设计文档"
|
|
22
|
+
format: "markdown"
|
|
23
|
+
path: ".harness/doc/design/{需求名称}/design.md"
|
|
24
|
+
required: true
|
|
25
|
+
- name: "API 定义"
|
|
26
|
+
format: "yaml (OpenAPI 3.0)"
|
|
27
|
+
path: ".harness/doc/design/{需求名称}/api/"
|
|
28
|
+
required: true
|
|
29
|
+
- name: "数据模型"
|
|
30
|
+
format: "markdown"
|
|
31
|
+
path: ".harness/doc/design/{需求名称}/data-model.md"
|
|
32
|
+
required: true
|
|
33
|
+
- name: "UI 设计规范"
|
|
34
|
+
format: "markdown"
|
|
35
|
+
path: ".harness/doc/design/{需求名称}/ui-style-guide.md"
|
|
36
|
+
required: false
|
|
37
|
+
description: "前端项目必须"
|
|
38
|
+
- name: "设计令牌"
|
|
39
|
+
format: "markdown"
|
|
40
|
+
path: ".harness/doc/design/{需求名称}/design-tokens.md"
|
|
41
|
+
required: false
|
|
42
|
+
description: "前端项目必须"
|
|
43
|
+
- name: "组件封装规范"
|
|
44
|
+
format: "markdown"
|
|
45
|
+
path: ".harness/doc/design/{需求名称}/component-spec.md"
|
|
46
|
+
required: false
|
|
47
|
+
description: "前端项目必须"
|
|
48
|
+
- name: "技术决策记录"
|
|
49
|
+
format: "markdown (ADR)"
|
|
50
|
+
required: false
|
|
18
51
|
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
|
|
22
|
-
- src/
|
|
52
|
+
stage_mapping:
|
|
53
|
+
- stage: "solution-design"
|
|
54
|
+
role: "主力执行"
|
|
23
55
|
|
|
24
|
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
- write
|
|
56
|
+
constraints:
|
|
57
|
+
- "不写可执行代码"
|
|
58
|
+
- "不修改需求文档"
|
|
59
|
+
- "不做最终可行性判决"
|
|
60
|
+
- "设计文档禁止包含代码/测试/监控/日志/部署/数据库优化"
|
|
61
|
+
- "必须先判断需求复杂度再选择设计深度"
|
|
31
62
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
-
|
|
35
|
-
outputFormat: .harness/doc/design/design-{task-id}.md
|
|
63
|
+
skills:
|
|
64
|
+
- "architecture-designer"
|
|
65
|
+
- "ui-designer"
|
|
36
66
|
|
|
37
|
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
- 记录技术决策(ADR)
|
|
67
|
+
rules:
|
|
68
|
+
- "rules/global/coding-standard.md"
|
|
69
|
+
- "rules/global/design-document-boundary.md"
|
|
70
|
+
- "rules/global/security-baseline.md"
|
|
42
71
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
- 不修改需求文档
|
|
46
|
-
- 不做最终可行性判决(由闸门负责)
|
|
47
|
-
- 设计文档禁止包含代码/测试/监控/日志/部署/数据库优化
|
|
72
|
+
model_tier: standard
|
|
73
|
+
max_turns: 15
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: solution-designer
|
|
3
|
-
description: 方案设计Agent,基于需求文档输出技术方案、接口定义(OpenAPI 3.0
|
|
3
|
+
description: 方案设计Agent,基于需求文档输出技术方案、接口定义(OpenAPI 3.0)、数据模型、架构设计和 UI 设计规范
|
|
4
4
|
tools:
|
|
5
5
|
- search_content
|
|
6
6
|
- read_file
|
|
@@ -26,7 +26,16 @@ permissions:
|
|
|
26
26
|
safetyLevel: low
|
|
27
27
|
dependencies:
|
|
28
28
|
- requirements-analyst
|
|
29
|
-
outputFormat: .harness/doc/design/
|
|
29
|
+
outputFormat: .harness/doc/design/{需求名称}/design.md
|
|
30
|
+
inputs:
|
|
31
|
+
- name: "需求文档"
|
|
32
|
+
required: true
|
|
33
|
+
- name: "验收标准"
|
|
34
|
+
required: true
|
|
35
|
+
- name: "dev-map 架构参考"
|
|
36
|
+
required: true
|
|
37
|
+
- name: "ADR 历史决策"
|
|
38
|
+
required: false
|
|
30
39
|
---
|
|
31
40
|
|
|
32
41
|
# 方案设计 Agent
|
|
@@ -36,6 +45,7 @@ outputFormat: .harness/doc/design/design-{task-id}.md
|
|
|
36
45
|
- 你是连接"做什么"和"怎么实现"的关键环节
|
|
37
46
|
- 你的方案将直接指导开发者的编码工作
|
|
38
47
|
- 你在架构设计阶段引用 architecture-designer skill 获取完整设计模板
|
|
48
|
+
- 你在方案设计阶段引用 ui-designer skill 获取 UI 设计规范和风格模板
|
|
39
49
|
|
|
40
50
|
## 你的输入
|
|
41
51
|
- 需求文档(来自需求分析师)
|
|
@@ -44,16 +54,17 @@ outputFormat: .harness/doc/design/design-{task-id}.md
|
|
|
44
54
|
- ADR 决策记录
|
|
45
55
|
|
|
46
56
|
## 你的输出(必须全部交付)
|
|
47
|
-
1.
|
|
57
|
+
1. 技术设计文档(`.harness/doc/design/{需求名称}/design.md`)
|
|
48
58
|
- **必须先判断需求复杂度**(简单 vs 复杂,参见 design-document-boundary 规则 §3)
|
|
49
59
|
- 简单需求(< 3000 行):简化模板,单体架构,Context+Container 层
|
|
50
60
|
- 复杂需求(≥ 3000 行):完整模板,C4模型+限界上下文+领域模型
|
|
51
61
|
- 架构设计、接口定义、数据模型
|
|
52
62
|
- 关键实现逻辑(文字描述,非代码)
|
|
53
63
|
- 影响面分析和风险
|
|
54
|
-
2. API
|
|
55
|
-
3.
|
|
64
|
+
2. API 定义(`.harness/doc/design/{需求名称}/api/`)— 每服务独立 OpenAPI 3.0 YAML
|
|
65
|
+
3. 数据模型设计(`.harness/doc/design/{需求名称}/data-model.md`)— ER图 + 领域模型描述
|
|
56
66
|
4. 如有新的技术决策 → ADR 记录
|
|
67
|
+
5. UI 设计规范和风格模板(`.harness/doc/design/{需求名称}/ui-style-guide.md` + `.harness/doc/design/{需求名称}/design-tokens.md` + `.harness/doc/design/{需求名称}/component-spec.md`)— 引用 ui-designer skill
|
|
57
68
|
|
|
58
69
|
## 你的约束
|
|
59
70
|
- ❌ 不写可执行代码
|
|
@@ -64,6 +75,7 @@ outputFormat: .harness/doc/design/design-{task-id}.md
|
|
|
64
75
|
- ✅ 接口定义必须足够详细,可供开发者和测试者直接使用
|
|
65
76
|
- ✅ 必须先判断需求复杂度再选择设计深度
|
|
66
77
|
- ✅ 引用 architecture-designer skill 获取 C4模型、领域模型、类图等完整设计规范
|
|
78
|
+
- ✅ 引用 ui-designer skill 获取设计令牌、组件风格模板、页面布局模板、组件封装规范等 UI 设计规范
|
|
67
79
|
|
|
68
80
|
## 设计原则
|
|
69
81
|
- 优先复用 dev-map 中的已有模式
|
|
@@ -80,6 +92,7 @@ outputFormat: .harness/doc/design/design-{task-id}.md
|
|
|
80
92
|
|
|
81
93
|
## 关键参考文件
|
|
82
94
|
- skills/architecture-designer/SKILL.md — 架构设计完整模板
|
|
95
|
+
- skills/ui-designer/SKILL.md — UI 设计规范和风格模板
|
|
83
96
|
- rules/global/design-document-boundary.md — 设计文档边界约束 + 复杂度分流
|
|
84
97
|
- rules/project/java-backend.md — 后端编码规范
|
|
85
98
|
- rules/project/frontend-vue3.md — 前端编码规范
|
|
@@ -1,59 +1,106 @@
|
|
|
1
|
-
|
|
2
|
-
description: 测试验证Agent,制定测试策略、设计测试用例、执行测试、记录缺陷并输出完整测试报告
|
|
1
|
+
agent: tester
|
|
3
2
|
version: "1.0.0"
|
|
3
|
+
description: 测试验证Agent,制定测试策略、设计测试用例、执行测试、记录缺陷并输出完整测试报告
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
|
|
23
|
-
|
|
5
|
+
inputs:
|
|
6
|
+
- name: "需求文档"
|
|
7
|
+
source: "requirements_analysis"
|
|
8
|
+
format: "markdown"
|
|
9
|
+
required: true
|
|
10
|
+
- name: "技术设计文档"
|
|
11
|
+
source: "solution_design"
|
|
12
|
+
format: "markdown"
|
|
13
|
+
required: true
|
|
14
|
+
- name: "实现代码"
|
|
15
|
+
source: "development"
|
|
16
|
+
format: "source code"
|
|
17
|
+
required: true
|
|
18
|
+
- name: "验收标准"
|
|
19
|
+
source: "requirements_analysis"
|
|
20
|
+
required: true
|
|
21
|
+
- name: "审查报告"
|
|
22
|
+
source: "code_review"
|
|
23
|
+
format: "markdown"
|
|
24
|
+
required: true
|
|
25
|
+
- name: "测试用例文档"
|
|
26
|
+
source: "development"
|
|
27
|
+
path: ".harness/doc/test-cases/{需求名称}/"
|
|
28
|
+
format: "markdown"
|
|
29
|
+
required: true
|
|
30
|
+
- name: "UI 设计规范"
|
|
31
|
+
source: "solution_design"
|
|
32
|
+
path: ".harness/doc/design/{需求名称}/ui-style-guide.md"
|
|
33
|
+
format: "markdown"
|
|
34
|
+
required: false
|
|
35
|
+
description: "前端项目测试时必须,用于验证 UI 实现是否符合设计规范"
|
|
36
|
+
- name: "组件封装规范"
|
|
37
|
+
source: "solution_design"
|
|
38
|
+
path: ".harness/doc/design/{需求名称}/component-spec.md"
|
|
39
|
+
format: "markdown"
|
|
40
|
+
required: false
|
|
41
|
+
description: "前端项目测试时必须,用于验证组件接口和封装合规"
|
|
42
|
+
- name: "设计令牌"
|
|
43
|
+
source: "solution_design"
|
|
44
|
+
path: ".harness/doc/design/{需求名称}/design-tokens.md"
|
|
45
|
+
format: "markdown"
|
|
46
|
+
required: false
|
|
47
|
+
description: "前端项目测试时可选,用于验证令牌覆盖率"
|
|
48
|
+
- name: "Skill 测试动作集"
|
|
49
|
+
source: "skills/test-*.md"
|
|
50
|
+
required: true
|
|
24
51
|
|
|
25
|
-
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
|
|
52
|
+
outputs:
|
|
53
|
+
- name: "测试计划"
|
|
54
|
+
format: "markdown"
|
|
55
|
+
required: true
|
|
56
|
+
- name: "测试报告"
|
|
57
|
+
format: "markdown"
|
|
58
|
+
path: ".harness/doc/test-report/test-report-{task-id}.md"
|
|
59
|
+
required: true
|
|
60
|
+
- name: "缺陷列表"
|
|
61
|
+
format: "markdown"
|
|
62
|
+
required: true
|
|
63
|
+
- name: "回归风险评估"
|
|
64
|
+
format: "markdown"
|
|
65
|
+
required: true
|
|
66
|
+
- name: "Gate 验证结果"
|
|
67
|
+
format: "json"
|
|
68
|
+
required: true
|
|
29
69
|
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
- execute
|
|
70
|
+
stage_mapping:
|
|
71
|
+
- stage: "testing"
|
|
72
|
+
role: "主力执行"
|
|
34
73
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
39
|
-
|
|
74
|
+
constraints:
|
|
75
|
+
- "不改被测代码"
|
|
76
|
+
- "不降低验收标准"
|
|
77
|
+
- "不省略必测项目"
|
|
78
|
+
- "安全问题立即阻断升级"
|
|
40
79
|
|
|
41
|
-
|
|
42
|
-
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
-
|
|
46
|
-
|
|
80
|
+
test_types:
|
|
81
|
+
- name: "unit_tests"
|
|
82
|
+
skill: "test-unit"
|
|
83
|
+
required: true
|
|
84
|
+
- name: "test_case_validation"
|
|
85
|
+
skill: "test-case-designer"
|
|
86
|
+
required: true
|
|
87
|
+
- name: "api_integration"
|
|
88
|
+
skill: "test-api"
|
|
89
|
+
required: true
|
|
90
|
+
- name: "e2e_critical_path"
|
|
91
|
+
skill: "test-e2e"
|
|
92
|
+
required: true
|
|
93
|
+
- name: "security_scan"
|
|
94
|
+
skill: "lint-check"
|
|
95
|
+
required: true
|
|
96
|
+
- name: "performance_test"
|
|
97
|
+
required: false
|
|
98
|
+
- name: "regression_test"
|
|
99
|
+
required: true
|
|
47
100
|
|
|
48
|
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
- API 契约无破坏性变更
|
|
52
|
-
- 测试覆盖率不低于基线
|
|
101
|
+
rules:
|
|
102
|
+
- "rules/global/security-baseline.md"
|
|
103
|
+
- "rules/global/process-discipline.md"
|
|
53
104
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
- 不降低验收标准
|
|
57
|
-
- 不省略必测项目
|
|
58
|
-
- 基于验收标准设计用例
|
|
59
|
-
- 安全问题立即阻断升级
|
|
105
|
+
model_tier: strong
|
|
106
|
+
max_turns: 15
|
|
@@ -31,6 +31,28 @@ dependencies:
|
|
|
31
31
|
- developer
|
|
32
32
|
- code-reviewer
|
|
33
33
|
outputFormat: .harness/doc/test-report/test-report-{task-id}.md
|
|
34
|
+
inputs:
|
|
35
|
+
- name: "需求文档"
|
|
36
|
+
required: true
|
|
37
|
+
- name: "技术设计文档"
|
|
38
|
+
required: true
|
|
39
|
+
- name: "实现代码"
|
|
40
|
+
required: true
|
|
41
|
+
- name: "验收标准"
|
|
42
|
+
required: true
|
|
43
|
+
- name: "审查报告"
|
|
44
|
+
required: true
|
|
45
|
+
- name: "测试用例文档"
|
|
46
|
+
required: true
|
|
47
|
+
- name: "UI 设计规范"
|
|
48
|
+
path: ".harness/doc/design/{需求名称}/ui-style-guide.md"
|
|
49
|
+
required: false
|
|
50
|
+
- name: "组件封装规范"
|
|
51
|
+
path: ".harness/doc/design/{需求名称}/component-spec.md"
|
|
52
|
+
required: false
|
|
53
|
+
- name: "设计令牌"
|
|
54
|
+
path: ".harness/doc/design/{需求名称}/design-tokens.md"
|
|
55
|
+
required: false
|
|
34
56
|
---
|
|
35
57
|
|
|
36
58
|
# 测试验证 Agent
|
|
@@ -50,7 +72,9 @@ outputFormat: .harness/doc/test-report/test-report-{task-id}.md
|
|
|
50
72
|
## 测试覆盖矩阵
|
|
51
73
|
| 测试类型 | 执行时机 | 负责人 | 必须? | 引用Skill |
|
|
52
74
|
|----------|----------|--------|-------|-----------|
|
|
75
|
+
| 测试用例验证 | 测试开始前 | Tester | ✅ 必须 | test-case-designer |
|
|
53
76
|
| 单元测试 | 开发时 | Developer | ✅ 必须 | test-unit |
|
|
77
|
+
| 前端组件测试 | 开发时 | Developer | ✅ 必须 | test-unit |
|
|
54
78
|
| 静态检查 | 每次 commit | Dev/CI | ✅ 必须 | lint-check |
|
|
55
79
|
| API 集成测试 | PR 前 | Tester | ✅ 必须 | test-api |
|
|
56
80
|
| E2E 关键路径 | 预发布前 | Tester | ✅ 必须 | test-e2e |
|
|
@@ -73,6 +97,15 @@ outputFormat: .harness/doc/test-report/test-report-{task-id}.md
|
|
|
73
97
|
- 核心 E2E 路径全部通过
|
|
74
98
|
- API 契约无破坏性变更
|
|
75
99
|
- 测试覆盖率不低于基线
|
|
100
|
+
- **测试用例文档存在且与验收标准对齐**(.harness/doc/test-cases/ 下有 feature-points.md)
|
|
101
|
+
- **前端组件测试覆盖 ≥80%**(每个 .vue 有对应 .test.ts/.spec.ts)
|
|
102
|
+
|
|
103
|
+
## 测试执行前置检查
|
|
104
|
+
在正式执行测试前,必须验证以下前置条件:
|
|
105
|
+
1. **测试用例文档检查** — 确认 `.harness/doc/test-cases/{需求名称}/feature-points.md` 存在
|
|
106
|
+
2. **前端测试文件存在性** — 扫描 src/ 下 .vue 文件,确认每个组件有对应测试文件
|
|
107
|
+
3. **后端测试类存在性** — 扫描 Service/ServiceImpl 类,确认有对应 Test 类
|
|
108
|
+
4. 任何前置条件不满足 → 记录为 P1 缺陷并要求开发补充
|
|
76
109
|
|
|
77
110
|
## 你的约束
|
|
78
111
|
- ❌ 不改被测代码
|
|
@@ -5,7 +5,7 @@ description: 前端构建门槛 — TypeScript 类型检查、依赖完整性、
|
|
|
5
5
|
|
|
6
6
|
# 前端构建门槛 (Frontend Build Gates)
|
|
7
7
|
|
|
8
|
-
> **源文件**: `.harness/gate/checks/build-gates-frontend.
|
|
8
|
+
> **源文件**: `.harness/gate/checks/build-gates-frontend.cjs`
|
|
9
9
|
> **类别**: B 类 — 构建门槛 (前端)
|
|
10
10
|
|
|
11
11
|
适用于 `package.json` 存在的项目(Vue3/Vite 等)。
|
|
@@ -5,7 +5,7 @@ description: Java 后端构建门槛 — Maven 编译、单元测试、Checkstyl
|
|
|
5
5
|
|
|
6
6
|
# Java 后端构建门槛 (Java Build Gates)
|
|
7
7
|
|
|
8
|
-
> **源文件**: `.harness/gate/checks/build-gates-java.
|
|
8
|
+
> **源文件**: `.harness/gate/checks/build-gates-java.cjs`
|
|
9
9
|
> **类别**: B 类 — 构建门槛 (Java)
|
|
10
10
|
|
|
11
11
|
适用于 `pom.xml` 存在的 Spring Boot / Maven 项目(JDK21 + Spring Boot)。
|
|
@@ -5,12 +5,12 @@ description: 构建门槛检查 — 自动检测项目类型并分发到对应
|
|
|
5
5
|
|
|
6
6
|
# 构建门槛检查 (Build Gates)
|
|
7
7
|
|
|
8
|
-
> **源文件**: `.harness/gate/checks/build-gates.
|
|
8
|
+
> **源文件**: `.harness/gate/checks/build-gates.cjs`
|
|
9
9
|
> **类别**: B 类 — 构建门槛
|
|
10
10
|
|
|
11
11
|
自动检测项目类型并分发到对应的门禁检查模块:
|
|
12
|
-
- 检测到 `pom.xml` → 调用 build-gates-java.
|
|
13
|
-
- 检测到 `package.json` → 调用 build-gates-frontend.
|
|
12
|
+
- 检测到 `pom.xml` → 调用 build-gates-java.cjs (Maven/Java)
|
|
13
|
+
- 检测到 `package.json` → 调用 build-gates-frontend.cjs (Node/前端)
|
|
14
14
|
- 都没有 → 返回 warning
|
|
15
15
|
|
|
16
16
|
## 检查项
|