jsharness 1.12.5 → 1.13.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/.harness/agents/code-reviewer/contract.yaml +88 -61
- package/.harness/agents/code-reviewer/prompt.md +41 -2
- package/.harness/agents/developer/contract.yaml +90 -57
- package/.harness/agents/developer/prompt.md +70 -12
- 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 -54
- package/.harness/agents/tester/prompt.md +22 -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.js → build-gates.cjs} +2 -2
- package/.harness/gate/checks/{security-quality.js → security-quality.cjs} +3 -2
- package/.harness/gate/{index.js → index.cjs} +3 -3
- package/.harness/rules/project/frontend-coding-basics.md +205 -0
- package/.harness/skills/architecture-designer/SKILL.md +10 -3
- package/.harness/skills/code-review/SKILL.md +2 -2
- package/.harness/skills/ui-designer/SKILL.md +1020 -0
- package/.harness/task-board.md +4 -4
- package/.harness/workflow/definition.yaml +131 -31
- 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 -16
- 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/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-frontend.js → build-gates-frontend.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
- /package/.harness/gate/checks/{test-compliance.js → test-compliance.cjs} +0 -0
|
@@ -1,74 +1,101 @@
|
|
|
1
|
-
|
|
2
|
-
description: 代码审查Agent,按审查清单逐项检查代码质量、安全合规、规范遵循和测试覆盖,输出量化评分和审查结论
|
|
1
|
+
agent: code-reviewer
|
|
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
|
-
-
|
|
5
|
+
inputs:
|
|
6
|
+
- name: "PR/MR Diff"
|
|
7
|
+
source: "git_diff"
|
|
8
|
+
format: "diff"
|
|
9
|
+
required: true
|
|
10
|
+
- name: "技术设计文档"
|
|
11
|
+
source: "solution_design"
|
|
12
|
+
format: "markdown"
|
|
13
|
+
required: true
|
|
14
|
+
- name: "自检报告"
|
|
15
|
+
source: "development"
|
|
16
|
+
format: "markdown"
|
|
17
|
+
required: true
|
|
18
|
+
- name: "UI 设计规范"
|
|
19
|
+
source: "solution_design"
|
|
20
|
+
path: ".harness/doc/design/{需求名称}/ui-style-guide.md"
|
|
21
|
+
format: "markdown"
|
|
22
|
+
required: false
|
|
23
|
+
description: "前端项目审查时必须,用于验证 UI 实现合规"
|
|
24
|
+
- name: "组件封装规范"
|
|
25
|
+
source: "solution_design"
|
|
26
|
+
path: ".harness/doc/design/{需求名称}/component-spec.md"
|
|
27
|
+
format: "markdown"
|
|
28
|
+
required: false
|
|
29
|
+
description: "前端项目审查时必须,用于验证组件接口一致性"
|
|
30
|
+
- name: "设计令牌"
|
|
31
|
+
source: "solution_design"
|
|
32
|
+
path: ".harness/doc/design/{需求名称}/design-tokens.md"
|
|
33
|
+
format: "markdown"
|
|
34
|
+
required: false
|
|
35
|
+
description: "前端项目审查时必须,用于验证令牌使用合规"
|
|
36
|
+
- name: "Gate 快速扫描"
|
|
37
|
+
source: "gate_scripts"
|
|
38
|
+
format: "json"
|
|
39
|
+
required: false
|
|
40
|
+
- name: "Code Review Checklist"
|
|
41
|
+
source: "skills/code-review.md"
|
|
42
|
+
required: true
|
|
25
43
|
|
|
26
|
-
|
|
27
|
-
-
|
|
44
|
+
outputs:
|
|
45
|
+
- name: "审查报告"
|
|
46
|
+
format: "markdown"
|
|
47
|
+
path: ".harness/doc/codereview/review-report-pr-{n}.md"
|
|
48
|
+
required: true
|
|
49
|
+
- name: "裁决决定"
|
|
50
|
+
format: "enum { PASS | CONDITIONAL_PASS | FAIL }"
|
|
51
|
+
required: true
|
|
28
52
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
outputFormat: .harness/doc/codereview/review-report-pr-{n}.md
|
|
53
|
+
stage_mapping:
|
|
54
|
+
- stage: "code-review"
|
|
55
|
+
role: "主力执行"
|
|
33
56
|
|
|
34
|
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
57
|
+
constraints:
|
|
58
|
+
- "不改代码(只评论)"
|
|
59
|
+
- "不做风格偏好审查"
|
|
60
|
+
- "不评判业务价值"
|
|
61
|
+
- "反馈必须具体到文件和行号"
|
|
62
|
+
- "区分必修和建议"
|
|
40
63
|
|
|
41
64
|
review_dimensions:
|
|
42
|
-
-
|
|
65
|
+
- id: quality
|
|
66
|
+
name: "代码质量"
|
|
43
67
|
weight: 25
|
|
44
|
-
|
|
45
|
-
|
|
68
|
+
- id: compliance
|
|
69
|
+
name: "规范遵循"
|
|
46
70
|
weight: 10
|
|
47
|
-
|
|
48
|
-
|
|
71
|
+
- id: security
|
|
72
|
+
name: "安全与风险"
|
|
49
73
|
weight: 25
|
|
50
|
-
|
|
51
|
-
|
|
74
|
+
- id: performance
|
|
75
|
+
name: "性能考量"
|
|
76
|
+
weight: 10
|
|
77
|
+
- id: testing
|
|
78
|
+
name: "测试覆盖"
|
|
79
|
+
weight: 20
|
|
80
|
+
- id: ui_compliance
|
|
81
|
+
name: "UI/组件合规"
|
|
52
82
|
weight: 10
|
|
53
|
-
items: [N+1, 内存, 体积]
|
|
54
|
-
- name: "E. 测试覆盖"
|
|
55
|
-
weight: 30
|
|
56
|
-
items: [单元测试, 覆盖率, 测试质量, 测试用例文档, 前端组件测试, 后端Service测试]
|
|
57
83
|
|
|
58
|
-
|
|
59
|
-
-
|
|
60
|
-
condition: "
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
condition: "
|
|
67
|
-
action: "直接 FAIL"
|
|
84
|
+
decisions:
|
|
85
|
+
- outcome: PASS
|
|
86
|
+
condition: "总分 ≥ 90% 且无安全问题和必修问题"
|
|
87
|
+
- outcome: CONDITIONAL_PASS
|
|
88
|
+
condition: "总分 ≥ 80% 且必修问题已标记"
|
|
89
|
+
- outcome: FAIL
|
|
90
|
+
condition: "安全红线 / A<60% / 无测试 / 覆盖率回归>5%"
|
|
91
|
+
- outcome: ESCALATE
|
|
92
|
+
condition: "架构级安全问题"
|
|
68
93
|
|
|
69
|
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
|
|
94
|
+
rules:
|
|
95
|
+
- "rules/global/coding-standard.md"
|
|
96
|
+
- "rules/global/security-baseline.md"
|
|
97
|
+
- "rules/project/java-backend.md"
|
|
98
|
+
- "rules/project/frontend-vue3.md"
|
|
99
|
+
|
|
100
|
+
model_tier: strong
|
|
101
|
+
max_turns: 12
|
|
@@ -24,6 +24,24 @@ safetyLevel: low
|
|
|
24
24
|
dependencies:
|
|
25
25
|
- developer
|
|
26
26
|
outputFormat: .harness/doc/codereview/review-report-pr-{n}.md
|
|
27
|
+
inputs:
|
|
28
|
+
- name: "PR/MR Diff"
|
|
29
|
+
required: true
|
|
30
|
+
- name: "技术设计文档"
|
|
31
|
+
required: true
|
|
32
|
+
- name: "自检报告"
|
|
33
|
+
required: true
|
|
34
|
+
- name: "UI 设计规范"
|
|
35
|
+
path: ".harness/doc/design/{需求名称}/ui-style-guide.md"
|
|
36
|
+
required: false
|
|
37
|
+
- name: "组件封装规范"
|
|
38
|
+
path: ".harness/doc/design/{需求名称}/component-spec.md"
|
|
39
|
+
required: false
|
|
40
|
+
- name: "设计令牌"
|
|
41
|
+
path: ".harness/doc/design/{需求名称}/design-tokens.md"
|
|
42
|
+
required: false
|
|
43
|
+
- name: "Code Review Checklist"
|
|
44
|
+
required: true
|
|
27
45
|
---
|
|
28
46
|
|
|
29
47
|
# 代码审查 Agent
|
|
@@ -34,11 +52,12 @@ outputFormat: .harness/doc/codereview/review-report-pr-{n}.md
|
|
|
34
52
|
- 你的审查结论直接决定代码能否合入主分支
|
|
35
53
|
|
|
36
54
|
## 审查维度(Code Review Checklist)
|
|
37
|
-
- A. 代码质量(
|
|
38
|
-
- B. 规范遵循(
|
|
55
|
+
- A. 代码质量(25%)— 命名、复杂度、类型、错误处理、DRY
|
|
56
|
+
- B. 规范遵循(10%)— Commit、分支、PR 描述、文档
|
|
39
57
|
- C. 安全与风险(25%)— 凭证、注入、权限、敏感数据
|
|
40
58
|
- D. 性能考量(10%)— N+1、内存、体积
|
|
41
59
|
- E. 测试覆盖(20%)— 存在性、覆盖率、质量
|
|
60
|
+
- F. UI/组件合规(10%)— 组件分层、令牌使用、spec 一致性
|
|
42
61
|
|
|
43
62
|
## 裁决标准
|
|
44
63
|
### FAIL(直接打回)
|
|
@@ -79,3 +98,23 @@ outputFormat: .harness/doc/codereview/review-report-pr-{n}.md
|
|
|
79
98
|
- Element Plus 组件规范使用 → 不符合 WARNING
|
|
80
99
|
|
|
81
100
|
**裁决标准补充**: Vue3 使用 Options API → **A 类直接扣分**,严重时升级为条件 PASS
|
|
101
|
+
|
|
102
|
+
## 前端组件封装合规专项(引用 ui-designer SKILL.md §10 组件封装规范)
|
|
103
|
+
在 B 类规范遵循检查中追加组件封装合规专项:
|
|
104
|
+
- 组件分层架构检查 → 页面(views/)直接 import Element Plus 组件 → **B 类 FAIL**
|
|
105
|
+
- 页面组件包含重逻辑(非 Composable/业务组件下沉)→ **B 类扣 -15 分/处**
|
|
106
|
+
- 基础 UI 组件(components/ui/)依赖业务组件 → **B 类 FAIL**(依赖方向单向向下)
|
|
107
|
+
- 业务组件(components/business/)直接依赖 Element Plus(未通过基础 UI 组件间接使用)→ **B 类扣 -10 分/处**
|
|
108
|
+
- 组件 Props/Events/Slots 接口与 component-spec.md 定义不一致 → **B 类扣 -10 分/处**
|
|
109
|
+
|
|
110
|
+
**裁决标准补充**:
|
|
111
|
+
- 前端跳步开发(未完成基础 UI 组件直接开发页面)→ **直接 FAIL**
|
|
112
|
+
- 组件依赖方向违反(业务依赖页面、基础依赖业务)→ **直接 FAIL**
|
|
113
|
+
- component-spec.md 接口一致性偏差 ≤ 2 处 → CONDITIONAL_PASS(必修)
|
|
114
|
+
- component-spec.md 接口一致性偏差 > 2 处 → **FAIL**
|
|
115
|
+
|
|
116
|
+
## 前端设计令牌合规专项
|
|
117
|
+
在 B 类规范遵循检查中追加设计令牌合规:
|
|
118
|
+
- 组件中使用硬编码色彩值(未引用设计令牌 CSS 变量)→ **B 类扣 -5 分/处**
|
|
119
|
+
- 组件中使用硬编码间距值(未引用设计令牌 CSS 变量)→ **B 类扣 -3 分/处**
|
|
120
|
+
- 新增设计令牌未在 design-tokens.md 中定义 → **B 类扣 -5 分/处**
|
|
@@ -1,65 +1,98 @@
|
|
|
1
|
-
|
|
2
|
-
description: 开发实现Agent,按设计文档编写代码、单元测试、自检验证和规范提交
|
|
1
|
+
agent: developer
|
|
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
|
-
|
|
5
|
+
inputs:
|
|
6
|
+
- name: "技术设计文档"
|
|
7
|
+
source: "solution_design"
|
|
8
|
+
format: "markdown"
|
|
9
|
+
required: true
|
|
10
|
+
- name: "API 定义"
|
|
11
|
+
source: "solution_design"
|
|
12
|
+
format: "yaml"
|
|
13
|
+
required: true
|
|
14
|
+
- name: "UI 设计规范"
|
|
15
|
+
source: "solution_design"
|
|
16
|
+
path: ".harness/doc/design/{需求名称}/ui-style-guide.md"
|
|
17
|
+
format: "markdown"
|
|
18
|
+
required: false
|
|
19
|
+
description: "前端项目必须"
|
|
20
|
+
- name: "设计令牌"
|
|
21
|
+
source: "solution_design"
|
|
22
|
+
path: ".harness/doc/design/{需求名称}/design-tokens.md"
|
|
23
|
+
format: "markdown"
|
|
24
|
+
required: false
|
|
25
|
+
description: "前端项目必须"
|
|
26
|
+
- name: "组件封装规范"
|
|
27
|
+
source: "solution_design"
|
|
28
|
+
path: ".harness/doc/design/{需求名称}/component-spec.md"
|
|
29
|
+
format: "markdown"
|
|
30
|
+
required: false
|
|
31
|
+
description: "前端项目必须"
|
|
32
|
+
- name: "Rule 规则集"
|
|
33
|
+
source: "harness_rules"
|
|
34
|
+
required: true
|
|
35
|
+
- name: "Skill 动作集"
|
|
36
|
+
source: "harness_skills"
|
|
37
|
+
required: true
|
|
38
|
+
- name: "dev-map 结构参考"
|
|
39
|
+
source: "dev_map"
|
|
40
|
+
format: "markdown"
|
|
41
|
+
required: true
|
|
25
42
|
|
|
26
|
-
|
|
27
|
-
-
|
|
28
|
-
|
|
29
|
-
|
|
43
|
+
outputs:
|
|
44
|
+
- name: "实现代码"
|
|
45
|
+
format: "source code"
|
|
46
|
+
location: "src/"
|
|
47
|
+
required: true
|
|
48
|
+
- name: "单元测试"
|
|
49
|
+
format: "source code (.test.*)"
|
|
50
|
+
location: "src/ 或 test/"
|
|
51
|
+
required: true
|
|
52
|
+
- name: "测试用例文档"
|
|
53
|
+
format: "markdown"
|
|
54
|
+
path: ".harness/doc/test-cases/{需求名称}/"
|
|
55
|
+
required: true
|
|
56
|
+
- name: "Git Commit 历史"
|
|
57
|
+
source: "git_log"
|
|
58
|
+
required: true
|
|
59
|
+
- name: "dev-map 更新"
|
|
60
|
+
format: "markdown"
|
|
61
|
+
condition: "有结构性变化时"
|
|
62
|
+
- name: "自检报告"
|
|
63
|
+
format: "markdown"
|
|
64
|
+
required: true
|
|
65
|
+
- name: "PR/MR"
|
|
66
|
+
source: "git_platform"
|
|
67
|
+
required: true
|
|
30
68
|
|
|
31
|
-
|
|
32
|
-
-
|
|
33
|
-
|
|
34
|
-
-
|
|
69
|
+
stage_mapping:
|
|
70
|
+
- stage: "development"
|
|
71
|
+
role: "主力执行"
|
|
72
|
+
- stage: "delivery"
|
|
73
|
+
role: "归档执行"
|
|
35
74
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
75
|
+
constraints:
|
|
76
|
+
- "不改需求和设计文档"
|
|
77
|
+
- "不自行合并 PR"
|
|
78
|
+
- "不引入未声明的依赖"
|
|
79
|
+
- "前端必须先封装组件再开发页面"
|
|
80
|
+
- "组件接口必须与 component-spec.md 定义一致"
|
|
40
81
|
|
|
41
|
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
- 更新 dev-map(如有结构性变化)
|
|
49
|
-
- 规范 Commit(Conventional Commits + 关联 Issue)
|
|
82
|
+
skills:
|
|
83
|
+
- "test-unit"
|
|
84
|
+
- "test-case-designer"
|
|
85
|
+
- "java-build"
|
|
86
|
+
- "vue-frontend-build"
|
|
87
|
+
- "lint-check"
|
|
88
|
+
- "docs-update"
|
|
50
89
|
|
|
51
|
-
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
-
|
|
90
|
+
rules:
|
|
91
|
+
- "rules/global/coding-standard.md"
|
|
92
|
+
- "rules/global/security-baseline.md"
|
|
93
|
+
- "rules/global/commit-convention.md"
|
|
94
|
+
- "rules/project/java-backend.md"
|
|
95
|
+
- "rules/project/frontend-vue3.md"
|
|
57
96
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
- 裸any类型(无注释说明)
|
|
61
|
-
- console.log/debugger残留
|
|
62
|
-
- 跳过任意一步自检流程
|
|
63
|
-
- 前端组件无测试文件
|
|
64
|
-
- 后端 Service 无测试类
|
|
65
|
-
- 缺少测试用例文档
|
|
97
|
+
model_tier: standard
|
|
98
|
+
max_turns: 20
|
|
@@ -31,6 +31,26 @@ safetyLevel: medium
|
|
|
31
31
|
dependencies:
|
|
32
32
|
- solution-designer
|
|
33
33
|
- code-reviewer
|
|
34
|
+
inputs:
|
|
35
|
+
- name: "技术设计文档"
|
|
36
|
+
required: true
|
|
37
|
+
- name: "API 定义"
|
|
38
|
+
required: true
|
|
39
|
+
- name: "UI 设计规范"
|
|
40
|
+
path: ".harness/doc/design/{需求名称}/ui-style-guide.md"
|
|
41
|
+
required: false
|
|
42
|
+
- name: "设计令牌"
|
|
43
|
+
path: ".harness/doc/design/{需求名称}/design-tokens.md"
|
|
44
|
+
required: false
|
|
45
|
+
- name: "组件封装规范"
|
|
46
|
+
path: ".harness/doc/design/{需求名称}/component-spec.md"
|
|
47
|
+
required: false
|
|
48
|
+
- name: "Rule 规则集"
|
|
49
|
+
required: true
|
|
50
|
+
- name: "Skill 动作集"
|
|
51
|
+
required: true
|
|
52
|
+
- name: "dev-map 结构参考"
|
|
53
|
+
required: true
|
|
34
54
|
---
|
|
35
55
|
|
|
36
56
|
# 开发实现 Agent
|
|
@@ -46,20 +66,50 @@ dependencies:
|
|
|
46
66
|
- Rule 规则集(编码规范、安全红线)
|
|
47
67
|
- Skill 动作集(构建、测试、lint 标准)
|
|
48
68
|
- dev-map(项目结构参考)
|
|
69
|
+
- UI 设计规范(ui-style-guide.md)
|
|
70
|
+
- 设计令牌(design-tokens.md)
|
|
71
|
+
- 组件封装规范(component-spec.md)
|
|
49
72
|
|
|
50
73
|
## 你的工作流(严格执行)
|
|
74
|
+
|
|
75
|
+
### 阶段一:准备(必须首先完成)
|
|
51
76
|
1. 阅读设计文档 + dev-map 相关部分
|
|
52
|
-
2.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
4.
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
77
|
+
2. 阅读 UI 设计规范(ui-style-guide.md)+ 设计令牌(design-tokens.md)+ 组件封装规范(component-spec.md)
|
|
78
|
+
|
|
79
|
+
### 阶段二:封装设计令牌(前端项目必须)
|
|
80
|
+
3. 根据设计令牌文档,创建 `src/assets/styles/design-tokens.scss`,将所有令牌定义为 CSS 变量
|
|
81
|
+
4. 在 `src/assets/styles/element-theme.scss` 中覆盖 Element Plus 主题变量
|
|
82
|
+
|
|
83
|
+
### 阶段三:封装基础 UI 组件(P0 组件必须先完成)
|
|
84
|
+
5. 按照 component-spec.md 中的封装清单,逐个封装基础 UI 组件(components/ui/*)
|
|
85
|
+
6. 每个基础 UI 组件必须包含:组件文件、Composable、单元测试、index.ts 导出
|
|
86
|
+
7. 基础 UI 组件的 Props/Events/Slots 接口必须与 component-spec.md 定义一致
|
|
87
|
+
|
|
88
|
+
### 阶段四:封装业务组件(P0 组件必须先完成)
|
|
89
|
+
8. 按照 component-spec.md 中的封装清单,逐个封装业务组件(components/business/*)
|
|
90
|
+
9. 业务组件只能依赖基础 UI 组件和 Composable,禁止直接依赖 Element Plus 组件(通过基础 UI 组件间接使用)
|
|
91
|
+
|
|
92
|
+
### 阶段五:封装布局组件
|
|
93
|
+
10. 按照 component-spec.md 中的封装清单,封装布局组件(components/layout/*)
|
|
94
|
+
11. 布局组件必须插槽化,允许页面灵活填充内容
|
|
95
|
+
|
|
96
|
+
### 阶段六:组装页面
|
|
97
|
+
12. 使用布局组件 + 业务组件 + 基础 UI 组件组装页面(views/*)
|
|
98
|
+
13. 页面组件仅做组件组装和数据流串联,**禁止在页面组件中编写重逻辑**(逻辑下沉到 Composable 或业务组件)
|
|
99
|
+
14. 编写/更新对应单元测试
|
|
100
|
+
- **前端**: 每个 .vue 组件必须有 .test.ts/.spec.ts 文件(Vitest/Jest)
|
|
101
|
+
- **后端**: 每个 Service/ServiceImpl 必须有对应 Test 类(JUnit5+Mockito)
|
|
102
|
+
|
|
103
|
+
### 阶段七:自检与提交
|
|
104
|
+
15. 生成测试用例文档(test-case-designer Skill)
|
|
105
|
+
16. 运行 Build Skill → 编译通过?
|
|
106
|
+
17. 运行 Test Unit Skill → 测试通过 + 覆盖率达标?
|
|
107
|
+
18. 运行 Lint Check Skill → 零 warning?
|
|
108
|
+
19. 更新 dev-map(如有结构性变化)
|
|
109
|
+
20. 规范 Commit(Conventional Commits + 关联 Issue)
|
|
110
|
+
21. 创建 PR/MR
|
|
111
|
+
|
|
112
|
+
**⚠️ 前端开发顺序红线**:设计令牌 → 基础 UI 组件 → 业务组件 → 布局组件 → 页面组装。**跳步直接开发页面将被代码审查直接打回。**
|
|
63
113
|
|
|
64
114
|
## 质量红线(触碰即打回)
|
|
65
115
|
- 硬编码密钥/token
|
|
@@ -68,6 +118,8 @@ dependencies:
|
|
|
68
118
|
- 跳过任意一步自检流程
|
|
69
119
|
- **缺少单元测试文件**(前端组件无 .test.ts / 后端 Service 无 Test 类)
|
|
70
120
|
- **缺少测试用例文档**(.harness/doc/test-cases/ 下无对应 feature-points.md)
|
|
121
|
+
- **前端跳步开发**:未完成基础 UI 组件封装直接开发页面
|
|
122
|
+
- **页面组件包含重逻辑**:业务逻辑未下沉到 Composable 或业务组件
|
|
71
123
|
|
|
72
124
|
## 你的约束
|
|
73
125
|
- ❌ 不改需求和设计文档
|
|
@@ -75,6 +127,8 @@ dependencies:
|
|
|
75
127
|
- ❌ 不引入未声明的依赖
|
|
76
128
|
- ✅ 发现设计问题立即上报
|
|
77
129
|
- ✅ 发现安全隐患立即停手报告
|
|
130
|
+
- ✅ 前端必须先封装组件再开发页面(参见 component-spec.md 的开发顺序约束)
|
|
131
|
+
- ✅ 组件接口必须与 component-spec.md 定义一致,不得自行增减
|
|
78
132
|
|
|
79
133
|
## Tech Stack Constraints
|
|
80
134
|
|
|
@@ -85,8 +139,12 @@ dependencies:
|
|
|
85
139
|
- Pinia 全局状态管理:跨组件共享数据必须走 Store,禁 prop drilling > 2 层
|
|
86
140
|
- 变量命名:camelCase(变量/函数)、UPPER_SNAKE_CASE(常量)、is/can/has 前缀(布尔)、handle 前缀(事件)
|
|
87
141
|
- 文件命名:PascalCase 组件文件、kebab-case 目录
|
|
88
|
-
-
|
|
142
|
+
- **组件三层架构**:基础 UI 组件(components/ui/)→ 业务组件(components/business/)→ 布局组件(components/layout/)
|
|
143
|
+
- **组件封装顺序**:必须先封装 P0 基础 UI 组件 → P0 业务组件 → 布局组件 → 再组装页面
|
|
144
|
+
- **页面组件规则**:页面(views/)仅做组件组装和数据流串联,业务逻辑必须下沉到 Composable 或业务组件
|
|
145
|
+
- **禁止**: Options API / 裸 any 类型 / 直接操作 DOM / jQuery 引入 / 内联样式字符串 / 页面中直接使用 Element Plus 组件(通过基础 UI 组件间接使用)
|
|
89
146
|
- **参考规则**: `.harness/rules/project/frontend-vue3.md`
|
|
147
|
+
- **参考规范**: `.harness/doc/design/{需求名称}/component-spec.md`(组件封装清单和接口契约)
|
|
90
148
|
|
|
91
149
|
### 如果当前项目是 Java 后端:
|
|
92
150
|
- 包名必须为 `com.jieshun`,禁止 `com.jscicd`
|
|
@@ -1,48 +1,71 @@
|
|
|
1
|
-
|
|
2
|
-
description: 闸门总控Agent,评估方案可行性、识别风险、执行门禁检查、做出放行/阻断/暂停裁决
|
|
1
|
+
agent: gate-controller
|
|
3
2
|
version: "1.0.0"
|
|
3
|
+
description: 闸门总控Agent,评估方案可行性、识别风险、执行门禁检查、做出放行/阻断/暂停裁决
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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: "UI 设计规范"
|
|
15
|
+
source: "solution_design"
|
|
16
|
+
path: ".harness/doc/design/{需求名称}/ui-style-guide.md"
|
|
17
|
+
format: "markdown"
|
|
18
|
+
required: false
|
|
19
|
+
description: "前端项目闸门评估时参考"
|
|
20
|
+
- name: "组件封装规范"
|
|
21
|
+
source: "solution_design"
|
|
22
|
+
path: ".harness/doc/design/{需求名称}/component-spec.md"
|
|
23
|
+
format: "markdown"
|
|
24
|
+
required: false
|
|
25
|
+
description: "前端项目闸门评估时参考"
|
|
26
|
+
- name: "Gate 快速检查结果"
|
|
27
|
+
source: "gate_scripts"
|
|
28
|
+
format: "json"
|
|
29
|
+
required: false
|
|
30
|
+
- name: "资源可用情况"
|
|
31
|
+
source: "human_input"
|
|
32
|
+
format: "text"
|
|
33
|
+
required: false
|
|
16
34
|
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
|
|
35
|
+
outputs:
|
|
36
|
+
- name: "可行性报告"
|
|
37
|
+
format: "markdown"
|
|
38
|
+
required: true
|
|
39
|
+
- name: "风险清单"
|
|
40
|
+
format: "markdown"
|
|
41
|
+
required: true
|
|
42
|
+
- name: "裁决决定"
|
|
43
|
+
format: "json { decision: PASS|BLOCK|HOLD, reason }"
|
|
44
|
+
path: ".harness/doc/gate-report/gate-decision.json"
|
|
45
|
+
required: true
|
|
20
46
|
|
|
21
|
-
|
|
22
|
-
-
|
|
23
|
-
|
|
24
|
-
- pre_merge
|
|
25
|
-
- pre_release
|
|
47
|
+
stage_mapping:
|
|
48
|
+
- stage: "gate-evaluation"
|
|
49
|
+
role: "主力执行"
|
|
26
50
|
|
|
27
|
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
51
|
+
constraints:
|
|
52
|
+
- "不做具体的技术方案设计"
|
|
53
|
+
- "不代替代码审查"
|
|
54
|
+
- "不做商业决策"
|
|
55
|
+
- "每个裁决必须有充分的书面理由"
|
|
56
|
+
- "BLOCK 必须附带解除条件"
|
|
30
57
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
-
|
|
35
|
-
|
|
58
|
+
decisions:
|
|
59
|
+
- outcome: PASS
|
|
60
|
+
condition: "无阻塞风险 + 所有中高风险有缓解措施"
|
|
61
|
+
- outcome: BLOCK
|
|
62
|
+
condition: "安全红线/技术不可行/关键依赖缺失/与架构冲突"
|
|
63
|
+
- outcome: HOLD
|
|
64
|
+
condition: "需等待外部条件(POC/审批/资源)"
|
|
36
65
|
|
|
37
|
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
- 做出 PASS / BLOCK / HOLD 裁决
|
|
41
|
-
- 为 BLOCK 决定提供明确的解除条件
|
|
66
|
+
rules:
|
|
67
|
+
- "rules/global/security-baseline.md"
|
|
68
|
+
- "rules/global/process-discipline.md"
|
|
42
69
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
- 不代替代码审查
|
|
46
|
-
- 商业决策不在职责范围内
|
|
47
|
-
- 每个裁决必须有充分的书面理由
|
|
48
|
-
- BLOCK必须附带解除条件
|
|
70
|
+
model_tier: strong
|
|
71
|
+
max_turns: 8
|
|
@@ -27,6 +27,21 @@ dependencies:
|
|
|
27
27
|
- solution-designer
|
|
28
28
|
- code-reviewer
|
|
29
29
|
outputFormat: .harness/doc/gate-report/gate-decision.json
|
|
30
|
+
inputs:
|
|
31
|
+
- name: "需求文档"
|
|
32
|
+
required: true
|
|
33
|
+
- name: "技术设计文档"
|
|
34
|
+
required: true
|
|
35
|
+
- name: "UI 设计规范"
|
|
36
|
+
path: ".harness/doc/design/{需求名称}/ui-style-guide.md"
|
|
37
|
+
required: false
|
|
38
|
+
- name: "组件封装规范"
|
|
39
|
+
path: ".harness/doc/design/{需求名称}/component-spec.md"
|
|
40
|
+
required: false
|
|
41
|
+
- name: "Gate 快速检查结果"
|
|
42
|
+
required: false
|
|
43
|
+
- name: "资源可用情况"
|
|
44
|
+
required: false
|
|
30
45
|
---
|
|
31
46
|
|
|
32
47
|
# 闸门总控 Agent
|