jsharness 1.0.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.
Files changed (68) hide show
  1. package/.harness/README.md +199 -0
  2. package/.harness/agents/code-reviewer/contract.yaml +64 -0
  3. package/.harness/agents/developer/contract.yaml +72 -0
  4. package/.harness/agents/gate-controller/contract.yaml +64 -0
  5. package/.harness/agents/project-manager/contract.yaml +77 -0
  6. package/.harness/agents/prompt-templates.md +352 -0
  7. package/.harness/agents/requirements-analyst/contract.yaml +64 -0
  8. package/.harness/agents/solution-designer/contract.yaml +75 -0
  9. package/.harness/agents/tester/contract.yaml +92 -0
  10. package/.harness/config/models.yaml +67 -0
  11. package/.harness/dev-map/backend/api-definition.md +131 -0
  12. package/.harness/dev-map/backend/auth-security.md +131 -0
  13. package/.harness/dev-map/backend/conventions-java.md +471 -0
  14. package/.harness/dev-map/backend/conventions.md +192 -0
  15. package/.harness/dev-map/backend/database.md +106 -0
  16. package/.harness/dev-map/backend/structure.md +140 -0
  17. package/.harness/dev-map/decisions.md +275 -0
  18. package/.harness/dev-map/frontend/api-integration.md +139 -0
  19. package/.harness/dev-map/frontend/components.md +178 -0
  20. package/.harness/dev-map/frontend/conventions.md +416 -0
  21. package/.harness/dev-map/frontend/state-management.md +170 -0
  22. package/.harness/dev-map/frontend/structure.md +103 -0
  23. package/.harness/dev-map/overview.md +267 -0
  24. package/.harness/docs/integration-test-plan.md +248 -0
  25. package/.harness/docs/team-guidelines/README.md +161 -0
  26. package/.harness/docs/team-guidelines/arch-team.md +811 -0
  27. package/.harness/docs/team-guidelines/collaboration.md +556 -0
  28. package/.harness/docs/team-guidelines/pm-team.md +337 -0
  29. package/.harness/docs/team-guidelines/qa-team.md +562 -0
  30. package/.harness/docs/team-guidelines/rd-team.md +714 -0
  31. package/.harness/docs/training-materials.md +280 -0
  32. package/.harness/gate/baseline.js +220 -0
  33. package/.harness/gate/checks/build-gates-frontend.js +152 -0
  34. package/.harness/gate/checks/build-gates-java.js +155 -0
  35. package/.harness/gate/checks/build-gates.js +119 -0
  36. package/.harness/gate/checks/engineering-consistency.js +138 -0
  37. package/.harness/gate/checks/security-quality.js +129 -0
  38. package/.harness/gate/checks/static-compliance.js +313 -0
  39. package/.harness/gate/checks/test-compliance.js +114 -0
  40. package/.harness/gate/index.js +315 -0
  41. package/.harness/mcp/config.yaml +435 -0
  42. package/.harness/rules/global/coding-standard.md +232 -0
  43. package/.harness/rules/global/commit-convention.md +165 -0
  44. package/.harness/rules/global/process-discipline.md +192 -0
  45. package/.harness/rules/global/security-baseline.md +306 -0
  46. package/.harness/rules/project/frontend-vue3.md +293 -0
  47. package/.harness/rules/project/java-backend.md +460 -0
  48. package/.harness/rules/project/web-specific.md +231 -0
  49. package/.harness/skills/build.md +192 -0
  50. package/.harness/skills/code-review.md +251 -0
  51. package/.harness/skills/docker-build.md +227 -0
  52. package/.harness/skills/docs-update.md +164 -0
  53. package/.harness/skills/java-build.md +261 -0
  54. package/.harness/skills/lint-check.md +482 -0
  55. package/.harness/skills/task-board-maintenance.md +105 -0
  56. package/.harness/skills/test-api.md +461 -0
  57. package/.harness/skills/test-e2e.md +431 -0
  58. package/.harness/skills/test-unit.md +649 -0
  59. package/.harness/skills/vue-frontend-build.md +344 -0
  60. package/.harness/specs/quality-feedback/implementation-guide.md +350 -0
  61. package/.harness/task-board.md +121 -0
  62. package/.harness/workflow/definition.yaml +504 -0
  63. package/.harness/workflow/validate.js +320 -0
  64. package/.harness/workflow/variants.yaml +253 -0
  65. package/README.md +237 -0
  66. package/bin/jsharness.js +53 -0
  67. package/lib/index.mjs +778 -0
  68. package/package.json +1 -0
@@ -0,0 +1,164 @@
1
+ # 文档更新技能 (docs-update)
2
+
3
+ > **执行角色**: 开发实现 Agent / 需求分析 Agent / 方案设计 Agent
4
+ > **触发时机**: 每次代码变更后、阶段交付前
5
+
6
+ ---
7
+
8
+ ## CHANGELOG 更新检查
9
+
10
+ ### 格式规范(Keep a Changelog)
11
+
12
+ ```markdown
13
+ # Changelog
14
+
15
+ All notable changes to this project will be documented in this file.
16
+
17
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
18
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
19
+
20
+ ## [Unreleased]
21
+
22
+ ### Added
23
+ - New: 用户头像上传与裁剪功能 (`feat(user)` #123)
24
+ - New: JWT 双 Token 刷新机制 (`feat(auth)` #124)
25
+
26
+ ### Changed
27
+ - Update: 升级 Vue3 到 3.5 / Vite 到 6.x (`chore(deps)` #125)
28
+ - Update: 用户列表 API 默认分页从 10 改为 20 (`fix(api)` #126)
29
+
30
+ ### Fixed
31
+ - Fix: Safari 下记住登录状态失效的问题 (`fix(auth)` #127)
32
+ - Fix: 用户查询分页边界越界 (`fix(api)` #128)
33
+
34
+ ### Security
35
+ - Fix: 修复 X-XSS-Protection 头未设置的问题 (`security` #129)
36
+
37
+ ## [1.2.0] - 2026-05-15
38
+
39
+ ### Added
40
+ - ...
41
+ ```
42
+
43
+ ### 检查规则
44
+
45
+ | 规则 | 说明 |
46
+ |------|------|
47
+ | **用户可见功能** | 必须记录到 Changelog(Added / Changed / Fixed)|
48
+ | **纯内部重构** | 可选记录到 Changed |
49
+ | **依赖升级** | 必须记录(含安全补丁)|
50
+ | **破坏性变更** | 必须标记 BREAKING CHANGE |
51
+ | **Issue 关联** | 每条记录必须关联 Issue/PR 编号 |
52
+ | **时间戳** | 每个正式版本必须有发布日期 |
53
+
54
+ ### Gate 检查脚本引用
55
+
56
+ ```yaml
57
+ # gate/checks/engineering-consistency.js 会检查:
58
+ # 1. 当前 PR 的改动是否需要在 CHANGELOG.md 中体现
59
+ # 2. Unreleased 区域是否有对应条目
60
+ # 3. 条目格式是否符合规范
61
+ ```
62
+
63
+ ---
64
+
65
+ ## dev-map 同步检查
66
+
67
+ ### 同步原则:**谁改代码谁更新地图**
68
+
69
+ 当发生以下变更时,必须同步更新 dev-map:
70
+
71
+ | 代码变更 | 需要更新的 dev-map 文件 |
72
+ |----------|------------------------|
73
+ | 新增目录/文件 | `dev-map/frontend/structure.md` 或 `dev-map/backend/structure.md` |
74
+ | 新增组件/复用模式 | `dev-map/frontend/components.md` 或 `dev-map/backend/structure.md` |
75
+ | 修改状态管理方式 | `dev-map/frontend/state-management.md` |
76
+ | 新增/修改 API | `dev-map/backend/api-definition.md` 或 `dev-map/frontend/api-integration.md` |
77
+ | 数据模型变更 | `dev-map/backend/database.md` |
78
+ | CI/CD 流水线调整 | `dev-map/infra/ci-cd.md` |
79
+ | Docker/部署变更 | `dev-map/infra/docker.md` |
80
+ | 重要技术决策 | `dev-map/decisions.md` |
81
+
82
+ ### 同步检查脚本
83
+
84
+ ```bash
85
+ # 检查 dev-map 是否与代码一致
86
+ node .harness/gate/checks/engineering-consistency.js --check-devmap
87
+ ```
88
+
89
+ **不一致的情况**:
90
+ - 代码中存在 dev-map 未记录的新模块 → WARNING
91
+ - dev-map 引用了已删除的代码 → FAIL(地图过期)
92
+
93
+ ---
94
+
95
+ ## README / API 文档同步
96
+
97
+ ### README.md 检查项
98
+
99
+ | 变更类型 | 需要更新的 README 部分 |
100
+ |----------|-----------------------|
101
+ | 新的环境变量 | Configuration / Environment Variables |
102
+ | 新的 npm scripts | Getting Started / Commands |
103
+ | 新的技术栈依赖 | Tech Stack |
104
+ | 修改启动方式 | Quick Start |
105
+ | 新的部署要求 | Deployment |
106
+
107
+ ### API 文档同步
108
+
109
+ 如果项目使用 OpenAPI/Swagger:
110
+
111
+ ```bash
112
+ # 检查 API 文档与代码的一致性
113
+ # 方法 1: 类型驱动(如 tsoa/nestjs/swagger)
114
+ npm run generate:openapi # 从代码生成文档
115
+ diff docs/openapi.yaml generated-openapi.yaml # 对比差异
116
+
117
+ # 方法 2: 契约测试(Pact)
118
+ npm run test:pact # 验证文档与实现的契约一致性
119
+ ```
120
+
121
+ ### 文档更新检查清单
122
+
123
+ ```
124
+ □ CHANGELOG.md 已更新(如有用户可见变更)
125
+ □ dev-map 相关分区已同步
126
+ □ README.md 环境变量/启动命令已更新
127
+ □ API 文档(如有)与新接口一致
128
+ □ 新增的配置项已在 .env.example 中标注
129
+ □ 删除的功能/配置已从文档中移除
130
+ ```
131
+
132
+ ---
133
+
134
+ ## 文档更新结果输出模板
135
+
136
+ ```yaml
137
+ docs_update_result:
138
+ timestamp: "2026-05-20T22:00:00Z"
139
+ status: pass | fail | warning
140
+
141
+ changelog:
142
+ required: true # 本次变更是否需要更新 CHANGELOG
143
+ updated: true # 是否已完成更新
144
+ entry_format_valid: true
145
+
146
+ dev_map_sync:
147
+ checked_files: 3
148
+ consistent: true
149
+ stale_entries: []
150
+
151
+ readme_sync:
152
+ requires_update: false
153
+ updated: true
154
+
155
+ api_docs_sync:
156
+ enabled: true
157
+ consistent: true
158
+
159
+ issues:
160
+ - severity: "warning"
161
+ file: "dev-map/backend/api-definition.md"
162
+ issue: "缺少新增端点 PATCH /api/v1/users/:id/preferences 的文档"
163
+ suggestion: "请更新 API 定义文档"
164
+ ```
@@ -0,0 +1,261 @@
1
+ # Java 后端构建技能 (java-build)
2
+
3
+ > **执行角色**: 开发者 Agent / CI Pipeline
4
+ > **适用项目**: Spring Boot + Maven Java 后端项目
5
+ > **来源**: `files/java-backend-coding-standards/SKILL.md` §15 测试规范
6
+ > **归档日期**: 2026-05-21
7
+
8
+ ---
9
+
10
+ ## 1. 编译构建
11
+
12
+ ### 1.1 Maven 编译
13
+
14
+ ```bash
15
+ # 完整清理编译(清除 target 目录后重新编译)
16
+ mvn clean compile
17
+
18
+ # 跳过测试编译
19
+ mvn clean compile -DskipTests
20
+
21
+ # 指定 profile 编译
22
+ mvn clean compile -P prod
23
+
24
+ # 多模块编译(从根目录)
25
+ mvn clean compile -pl domain -am
26
+ ```
27
+
28
+ **通过标准**:
29
+ - ✅ 零编译错误
30
+ - ✅ 零 deprecated 警告(理想状态)
31
+ - ⚠️ 允许 minor warning 但需说明理由
32
+
33
+ ### 1.2 常见编译问题处理
34
+
35
+ | 问题 | 原因 | 解决方案 |
36
+ |------|------|----------|
37
+ | 找不到符号 | 缺少依赖或 import 错误 | 检查 pom.xml 和 import |
38
+ | 循环依赖 | 模块间相互引用 | 重构消除循环或使用事件解耦 |
39
+ | JDK 版本不匹配 | 项目要求 JDK21,环境为低版本 | 设置 JAVA_HOME 或 maven.compiler |
40
+ | Lombok 注解未生效 | 注解处理器未配置 | 确认 pom.xml 中 lombok 依赖和 annotationProcessorPaths |
41
+
42
+ ---
43
+
44
+ ## 2. 单元测试执行
45
+
46
+ ### 2.1 运行测试
47
+
48
+ ```bash
49
+ # 运行全部单元测试
50
+ mvn test
51
+
52
+ # 运行指定测试类
53
+ mvn test -Dtest=UserServiceTest
54
+
55
+ # 运行指定测试方法
56
+ mvn test -Dtest=UserServiceTest#testCreateUser
57
+
58
+ # 跳过测试(仅打包时使用)
59
+ mvn test -DskipTests
60
+
61
+ # 并行执行测试(加速)
62
+ mvn test -T 4 # 4 个线程并行
63
+
64
+ # 失败重跑(CI 环境推荐)
65
+ mvn test -Dsurefire.rerunFailingTestsCount=2
66
+ ```
67
+
68
+ ### 2.2 覆盖率收集(JaCoCo)
69
+
70
+ ```bash
71
+ # 执行测试并收集覆盖率
72
+ mvn test jacoco:report
73
+
74
+ # 查看覆盖率报告
75
+ # 报告位置: {module}/target/site/jacoco/index.html
76
+
77
+ # 覆盖率阈值检查(不达标则构建失败)
78
+ mvn verify -Djacoco.check.skip=false
79
+ ```
80
+
81
+ **覆盖率目标**:
82
+
83
+ | 代码类型 | 行覆盖率目标 | 分支覆盖率目标 |
84
+ |---------|------------|--------------|
85
+ | 核心业务逻辑 | ≥ **90%** | ≥ **80%** |
86
+ | 工具函数 | ≥ **85%** | ≥ **75%** |
87
+ | Controller 层 | ≥ **70%** | ≥ **60%** |
88
+ | 配置/常量 | ≥ **50%** | - |
89
+
90
+ **JaCoCo pom.xml 配置**:
91
+ ```xml
92
+ <plugin>
93
+ <groupId>org.jacoco</groupId>
94
+ <artifactId>jacoco-maven-plugin</artifactId>
95
+ <version>0.8.11</version>
96
+ <executions>
97
+ <execution>
98
+ <goals><goal>prepare-agent</goal></goals>
99
+ </execution>
100
+ <execution>
101
+ <id>report</id>
102
+ <phase>test</phase>
103
+ <goals><goal>report</goal></goals>
104
+ </execution>
105
+ <execution>
106
+ <id>check</id>
107
+ <phase>verify</phase>
108
+ <goals><goal>check</goal></goals>
109
+ <configuration>
110
+ <rules>
111
+ <rule>
112
+ <element>BUNDLE</element>
113
+ <limits>
114
+ <limit>
115
+ <counter>LINE</counter>
116
+ <value>COVEREDRATIO</value>
117
+ <minimum>0.80</minimum>
118
+ </limit>
119
+ </limits>
120
+ </rule>
121
+ </rules>
122
+ </configuration>
123
+ </execution>
124
+ </executions>
125
+ </plugin>
126
+ ```
127
+
128
+ ### 2.3 测试框架标准配置
129
+
130
+ ```xml
131
+ <!-- JUnit 5 + Mockito -->
132
+ <dependency>
133
+ <groupId>org.junit.jupiter</groupId>
134
+ <artifactId>junit-jupiter</artifactId>
135
+ <scope>test</scope>
136
+ </dependency>
137
+ <dependency>
138
+ <groupId>org.mockito</groupId>
139
+ <artifactId>mockito-core</artifactId>
140
+ <scope>test</scope>
141
+ </dependency>
142
+ <dependency>
143
+ <groupId>org.springframework.boot</groupId>
144
+ <artifactId>spring-boot-starter-test</artifactId>
145
+ <scope>test</scope>
146
+ </dependency>
147
+ ```
148
+
149
+ ---
150
+
151
+ ## 3. 打包与部署
152
+
153
+ ### 3.1 Maven 打包
154
+
155
+ ```bash
156
+ # 标准打包(跳过测试)
157
+ mvn package -DskipTests
158
+
159
+ # 完整打包(含测试)
160
+ mvn package
161
+
162
+ # 打包并安装到本地仓库
163
+ mvn install -DskipTests
164
+
165
+ # 排除文档生成加速打包
166
+ mvn package -DskipTests -Dmaven.javadoc.skip=true
167
+ ```
168
+
169
+ ### 3.2 Docker 镜像构建
170
+
171
+ ```dockerfile
172
+ # 标准 Dockerfile(多阶段构建)
173
+ # === 阶段 1: 构建 ===
174
+ FROM maven:3.9-eclipse-temurin-21 AS builder
175
+ WORKDIR /app
176
+ COPY pom.xml .
177
+ COPY src ./src
178
+ RUN mvn clean package -DskipTests -o
179
+
180
+ # === 阶段 2: 运行 ===
181
+ FROM eclipse-temurin:21-jre-alpine
182
+ WORKDIR /app
183
+ COPY --from=builder /app/target/*.jar app.jar
184
+ EXPOSE 8080
185
+ ENV JAVA_OPTS="-Xms256m -Xmx512m"
186
+ ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]
187
+ ```
188
+
189
+ ```bash
190
+ # 构建镜像
191
+ docker build -t jscicd-app:latest .
192
+
193
+ # 推送镜像
194
+ docker push registry.example.com/jscicd-app:latest
195
+ ```
196
+
197
+ ---
198
+
199
+ ## 4. 构建失败处理策略
200
+
201
+ ### 4.1 分类处理
202
+
203
+ | 失败类型 | 原因分析 | 解决步骤 |
204
+ |---------|---------|----------|
205
+ | 编译错误 | 语法错误、类型错误、缺少依赖 | 修复代码 → 重新 `mvn compile` |
206
+ | 测试失败 | 测试用例未通过 | 分析失败原因 → 修复代码或更新测试 → 重新 `mvn test` |
207
+ | 覆盖率不足 | 新代码缺少测试 | 补充测试用例 → 重新验证覆盖率 |
208
+ | Checkstyle/PMD 违规 | 代码风格不符合规范 | 按 IDE 提示修复 → 重新检查 |
209
+ | 依赖解析失败 | 私有库不可用、版本冲突 | 检查网络/仓库配置 → 更新 pom.xml |
210
+
211
+ ### 4.2 快速诊断命令
212
+
213
+ ```bash
214
+ # 查看详细错误信息
215
+ mvn clean compile -e # 显示完整堆栈
216
+ mvn clean compile -X # 调试模式(最详细)
217
+
218
+ # 查看依赖树(排查冲突)
219
+ mvn dependency:tree -Dverbose
220
+
221
+ # 查找特定依赖来源
222
+ mvn dependency:tree -Dincludes=com.baomidou:mybatis-plus
223
+
224
+ # 检查过时依赖
225
+ mvn versions:display-dependency-updates
226
+ ```
227
+
228
+ ---
229
+
230
+ ## 5. CI/CD 集成示例
231
+
232
+ ```yaml
233
+ # .gitlab-ci.yml 或 GitHub Actions 示例
234
+ stages:
235
+ - build
236
+ - test
237
+ - package
238
+ - deploy
239
+
240
+ build-job:
241
+ stage: build
242
+ script:
243
+ - mvn clean compile
244
+ artifacts:
245
+ paths:
246
+ - target/
247
+
248
+ test-job:
249
+ stage: test
250
+ script:
251
+ - mvn test jacoco:report
252
+ coverage: '/Total.*?([0-9]{1,3})%/'
253
+
254
+ package-job:
255
+ stage: package
256
+ script:
257
+ - mvn package -DskipTests
258
+ - docker build -t $IMAGE_TAG .
259
+ only:
260
+ - main
261
+ ```