Skip to content

Commit 871b042

Browse files
authored
📝 #4071 新增 WxJava 用户技能(SKILL)指南
1 parent 4feb71e commit 871b042

16 files changed

Lines changed: 269 additions & 0 deletions

File tree

README.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
### 目录索引
3131
- [快速开始(3分钟)](#快速开始3分钟)
32+
- [AI 编程智能体 SKILL 安装](#ai-编程智能体-skill-安装)
3233
- [我该选哪个模块?](#我该选哪个模块)
3334
- [Maven 引用方式](#maven-引用方式)
3435
- [最小示例](#最小示例)
@@ -45,6 +46,41 @@
4546
2. 引入 Maven 依赖并选择对应模块
4647
3. 参考最小示例完成初始化并调用 API
4748

49+
### AI 编程智能体 SKILL 安装
50+
51+
仓库的 [`skills`](skills) 目录提供面向 WxJava 用户和贡献者的通用 SKILL,包括模块选择、接入、排障、接口贡献和升级迁移。每个 SKILL 都以 `SKILL.md` 为入口,可用于支持该约定的 AI 编程智能体。
52+
53+
支持远程安装 SKILL 的智能体,可以直接使用自然语言指令安装所需目录。例如:
54+
55+
> 安装 https://github.com/binarywang/WxJava/tree/develop/skills/wxjava-integration-guide 中的技能。
56+
57+
可安装的 SKILL 包括:
58+
59+
- [模块选择](https://github.com/binarywang/WxJava/tree/develop/skills/wxjava-module-selector)
60+
- [接入指南](https://github.com/binarywang/WxJava/tree/develop/skills/wxjava-integration-guide)
61+
- [故障排查](https://github.com/binarywang/WxJava/tree/develop/skills/wxjava-troubleshooter)
62+
- [接口贡献](https://github.com/binarywang/WxJava/tree/develop/skills/wxjava-api-contributor)
63+
- [升级迁移](https://github.com/binarywang/WxJava/tree/develop/skills/wxjava-upgrade-guide)
64+
65+
不支持远程安装时,可将所需的 `skills/wxjava-*` 目录复制到智能体的 SKILL 目录或工作区配置目录;不同智能体的目录和启用方式请以其官方文档为准。
66+
67+
以 Codex 为例,可复制到个人 SKILL 目录:
68+
69+
```shell
70+
git clone https://github.com/binarywang/WxJava.git
71+
mkdir -p "${CODEX_HOME:-$HOME/.codex}/skills"
72+
cp -R WxJava/skills/wxjava-* "${CODEX_HOME:-$HOME/.codex}/skills/"
73+
```
74+
75+
如果已在本仓库根目录,可直接执行:
76+
77+
```shell
78+
mkdir -p "${CODEX_HOME:-$HOME/.codex}/skills"
79+
cp -R skills/wxjava-* "${CODEX_HOME:-$HOME/.codex}/skills/"
80+
```
81+
82+
重启或新建智能体会话后,即可按需使用。例如:`使用 wxjava-integration-guide 为我的 Spring Boot 项目接入微信支付。`
83+
4884
### 我该选哪个模块?
4985

5086
| 业务场景 | 模块 | artifactId |
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
---
2+
name: wxjava-api-contributor
3+
description: 按 WxJava 的 Maven 多模块、Java 8、公共 API 兼容性和 TestNG 约定,为微信官方接口新增或维护 SDK 支持。适用于新增 Service API、请求响应 Bean、序列化、HTTP 实现、Starter 配置或回归测试时。
4+
---
5+
6+
# WxJava 接口贡献
7+
8+
1. 先搜索开放与已关闭 Issue,确认需求是否已有讨论、实现、回归用例或官方接口变动;再确认微信产品和目标模块。
9+
2. 阅读对应 README、POM、相似接口、实现与测试,并读取 [贡献约定](references/contribution.md)
10+
3. 将官方接口契约映射到 Service、实现、Bean、URL、序列化和测试;列出所有可能受影响的 HTTP 客户端和 Starter。
11+
4. 只做完成需求所需的最小改动;更新必要 Javadoc、测试与用户可见文档。
12+
5. 执行 `mvn -pl <module> -am test`,并检查 `git diff --check`
13+
14+
保持 Java 8 与公共 API、异常语义、JSON/XML 字段兼容性。涉及多 HTTP 客户端、单/多账号 Starter 或 Solon 插件时,检查等价实现是否需要同步。PR 应关联对应 Issue,目标分支为 `develop`
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
interface:
2+
display_name: "WxJava 接口贡献"
3+
short_description: "按 WxJava 项目约定新增或维护 SDK 接口能力"
4+
default_prompt: "使用 $wxjava-api-contributor 为 WxJava 新增微信接口支持。"
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# 贡献约定
2+
3+
以微信官方接口定义和本仓库同类实现为准,核对路径、方法、字段名、必填项和响应结构。优先复用既有 HTTP 执行器、异常、配置、Gson/Jackson/XStream 映射和 TestNG 测试模式。
4+
5+
公共方法需要准确 Javadoc。不要吞异常、记录敏感值或无关重构。新增公开方法和 bug 修复均应有针对性测试;涉及公共模块、BOM 或多模块时扩大验证范围。
6+
7+
## 接口增量检查表
8+
9+
1. 从微信官方文档和相关 Issue 中确认接口可用条件、HTTP 方法、URL、必填字段、签名/加密要求和响应示例。
10+
2. 搜索同产品的相邻能力,复用其 Service 分层、Bean 命名、请求执行和错误处理模式;不要只新增 Bean 而遗漏 Service 暴露。
11+
3. 若接口尚未支持,优先使用现有通用执行能力;MP/CP Wiki 说明通用执行器会处理 access token 刷新及 `errcode` 到异常的转换。
12+
4. 为字段边界、空值、JSON/XML 映射和异常路径添加 TestNG 回归测试。API 路径或字段问题是历史 bug 的高频来源,例如 [#3982](https://github.com/binarywang/WxJava/issues/3982)[#4000](https://github.com/binarywang/WxJava/issues/4000)
13+
5.[贡献指南](https://github.com/binarywang/WxJava/blob/develop/CONTRIBUTING.md) 使用 `develop` 作为 PR 目标;说明 Issue、兼容性影响和验证命令。
14+
15+
## 一手资料入口
16+
17+
- [如何调用 MP 未支持接口](https://github.com/binarywang/WxJava/wiki/MP_%E5%A6%82%E4%BD%95%E8%B0%83%E7%94%A8%E6%9C%AA%E6%94%AF%E6%8C%81%E7%9A%84%E6%8E%A5%E5%8F%A3)
18+
- [如何调用 CP 未支持接口](https://github.com/binarywang/WxJava/wiki/CP_%E5%A6%82%E4%BD%95%E8%B0%83%E7%94%A8%E6%9C%AA%E6%94%AF%E6%8C%81%E7%9A%84%E6%8E%A5%E5%8F%A3)
19+
- [关闭的新接口 Issue](https://github.com/binarywang/WxJava/issues?q=is%3Aissue%20state%3Aclosed%20label%3A%E6%96%B0%E6%8E%A5%E5%8F%A3)
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
---
2+
name: wxjava-integration-guide
3+
description: 为 Java、Spring Boot 或 Solon 项目生成可验证的 WxJava 接入方案,包括模块选择、BOM、配置、最小调用代码以及单/多账号集成。适用于用户要求接入公众号、小程序、支付、企业微信、开放平台、视频号或微信小店时。
4+
---
5+
6+
# WxJava 接入指南
7+
8+
1. 确认微信产品、框架、单/多账号、部署形态和首个 API 调用。
9+
2. 读取 [接入约束](references/integration.md),选择模块和配置方式。
10+
3. 先输出依赖与配置,再输出最小调用;每段示例注明应放置的位置和所依赖的模块。
11+
4. 输出脱敏配置和最小服务端代码;凭据一律用占位符。
12+
5. 给出本地验证步骤与安全提醒;支付、回调和证书示例不得直接用于生产。
13+
14+
保持 Java 8 兼容。生产集群必须使用可共享的配置存储或 token 存储;不要把内存实现当作多节点部署方案。引用已有 Demo、Wiki 或 README 作为继续阅读入口;不虚构配置键、SDK 方法或版本号。
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
interface:
2+
display_name: "WxJava 接入指南"
3+
short_description: "生成可验证的 WxJava 最小接入方案与配置示例"
4+
default_prompt: "使用 $wxjava-integration-guide 为我的项目生成 WxJava 接入代码。"
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# 接入约束
2+
3+
优先通过 `wx-java-bom` 统一管理多个 WxJava 模块版本。核心 SDK 模块是 MP、MiniApp、Pay、CP、Open、Channel、Qidian、Aispeech;框架集成模块位于 `spring-boot-starters``solon-plugins`
4+
5+
查阅相应模块 README、根目录 [demo.md](https://github.com/binarywang/WxJava/blob/develop/demo.md) 和目标模块测试中的示例,确认配置属性与初始化模式。所有 `appId``secret`、商户私钥、API v3 密钥和证书均使用占位符,不得输出到日志。
6+
7+
## 实施检查表
8+
9+
1. 先完成一条只读或低风险 API 调用,再接入消息、支付或异步回调。
10+
2. 单实例可使用默认配置存储;多实例或集群需使用共享的 token/config storage,避免节点各自刷新 access token。
11+
3. 公众号、企业微信等回调必须先按平台要求校验消息合法性,再进入业务路由;支付回调还必须按商户单号实现幂等。
12+
4. 需要代理或私有网络出口时,明确区分正向代理与反向代理。支付 V3 的签名路径不能因反向代理路径前缀而被错误改写。
13+
5. HTTP 客户端类型、Starter 配置键和 Service 实现必须取自目标模块的当前 README、POM 或相邻 Demo;不要混用不同产品模块的配置前缀。
14+
6. Starter 自动配置与 Demo 手动初始化必须二选一后再给示例。发生空 key、注入为空或 NPE 时,先核对启动模块、profile、配置前缀和当前 `*Properties` 类;历史 [#2177](https://github.com/binarywang/WxJava/issues/2177) 是混用两种配置模型的案例。
15+
7. Quarkus 或 GraalVM 场景转到 [Quarkus 支持文档](https://github.com/binarywang/WxJava/blob/develop/docs/QUARKUS_SUPPORT.md),不要套用 Spring Boot Starter 配置。
16+
17+
## 一手资料入口
18+
19+
- [MP Quick Start](https://github.com/binarywang/WxJava/wiki/MP_Quick-Start)
20+
- [微信支付说明](https://github.com/binarywang/WxJava/wiki/%E5%BE%AE%E4%BF%A1%E6%94%AF%E4%BB%98)
21+
- [SDK 正反向代理支持](https://github.com/binarywang/WxJava/wiki/SDK-%E9%92%88%E5%AF%B9%E5%BE%AE%E4%BF%A1-%E6%AD%A3%E5%90%91%E4%BB%A3%E7%90%86%E5%92%8C%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E6%94%AF%E6%8C%81)
22+
- [HTTP 客户端升级指南](https://github.com/binarywang/WxJava/blob/develop/docs/HTTPCLIENT_UPGRADE_GUIDE.md)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
name: wxjava-module-selector
3+
description: 根据微信公众号、小程序、微信支付、企业微信、开放平台、视频号或微信小店、腾讯企点和微信智能对话等业务场景,为用户选择合适的 WxJava Maven 模块、BOM 和示例入口。适用于用户询问“该用哪个模块”、依赖坐标、产品边界或单/多账号 Starter 选择时。
4+
---
5+
6+
# WxJava 模块选择
7+
8+
1. 识别微信产品、服务端框架、是否多账号、是否包含支付或回调;信息不足时只询问必要问题。
9+
2. 读取 [模块映射](references/modules.md),给出一个主推荐,以及组合模块的理由。
10+
3. 先区分产品边界,再选择核心 SDK;仅当项目确实依赖框架自动配置时才额外推荐 Starter 或 Solon 插件。
11+
4. 优先推荐 BOM;给出准确的 `groupId``artifactId`、相应 Demo、Wiki 或仓库文档入口。
12+
5. 说明服务端 SDK 的边界:移动端登录、分享等能力仍需微信官方客户端 SDK。
13+
6. 不臆测版本号;建议以 Maven Central 或项目 README 的当前版本为准。
14+
15+
使用“场景 → 模块 → 集成选项 → 下一步”的简短结构。涉及多账号时说明单账号与 multi Starter 的区别;不要在示例中泄露凭据。支付和回调场景必须提醒用户验证通知 URL、验签与幂等处理。
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
interface:
2+
display_name: "WxJava 模块选择"
3+
short_description: "按微信业务场景选择 WxJava 模块、依赖与示例"
4+
default_prompt: "使用 $wxjava-module-selector 为我的微信业务选择合适的 WxJava 模块。"
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# WxJava 模块映射
2+
3+
| 场景 | 核心模块 |
4+
| --- | --- |
5+
| 微信公众号 | `weixin-java-mp` |
6+
| 微信小程序 | `weixin-java-miniapp` |
7+
| 微信支付 | `weixin-java-pay` |
8+
| 企业微信 | `weixin-java-cp` |
9+
| 微信开放平台/第三方平台 | `weixin-java-open` |
10+
| 视频号/微信小店 | `weixin-java-channel` |
11+
| 腾讯企点/微信客服 | `weixin-java-qidian` |
12+
| 微信智能对话/智能语音 | `weixin-java-aispeech` |
13+
14+
多个模块并用时优先使用 `com.github.binarywang:wx-java-bom`。Spring Boot 集成从 `spring-boot-starters` 选择;Solon 集成从 `solon-plugins` 选择。
15+
16+
## 多账号集成范围
17+
18+
只有多个独立微信应用配置时才选择 multi 集成,并先按框架与产品核对目录是否存在:
19+
20+
- Spring Boot:MP、MiniApp、CP、自建/第三方 CP、Pay、Open、Channel 都有相应 multi Starter。
21+
- Solon:仅 MP、MiniApp、CP、Channel 有 multi 插件;Pay、Open、Qidian 目前只有单账号插件,不要推荐不存在的 multi artifact。
22+
23+
## 选择检查点
24+
25+
- 公众号、小程序和企业微信的消息回调、token 与加解密配置彼此独立;不要因同属一个公司而复用不兼容的凭据或配置对象。
26+
- 企业微信的多应用应使用独立的 `WxCpConfigStorage``WxCpServiceImpl`;Wiki 明确指出复用 token、AES key 和 URL 会造成安全边界问题。
27+
- 支付能力通常与 MP、MiniApp 或 Open 同时使用:前者处理业务身份和消息,`weixin-java-pay` 处理商户签名、证书与支付回调。
28+
- 视频号/微信小店接口属于 `weixin-java-channel`;不要误归入 MP 或 Pay。
29+
- 腾讯企点与微信智能对话是独立 SDK 模块;不要将客服或智能对话需求默认归入 MP、CP 或 Channel。
30+
- 当能力在 MP 与 Open 等模块可能重叠时,按授权主体、官方 API 域和回调场景选择,不要只按“移动端”或“登录”字样判断。先在当前源码和 Issue 中确认覆盖状态,并标注“已确认 / 待查 / 需自行调用底层接口”。
31+
- BOM 适合同时使用多个 WxJava 模块。若项目还导入 Spring Boot 等上游 BOM,升级后执行 `mvn help:effective-pom``mvn dependency:tree`;历史 [#4058](https://github.com/binarywang/WxJava/issues/4058) 表明依赖管理顺序可能影响 Spring Data Redis 等依赖。
32+
33+
## 一手资料入口
34+
35+
- [WxJava Wiki 首页](https://github.com/binarywang/WxJava/wiki)
36+
- [企业微信多应用配置](https://github.com/binarywang/WxJava/wiki/CP_%E5%A6%82%E4%BD%95%E6%94%AF%E6%8C%81%E5%A4%9A%E4%B8%AA%E4%BC%81%E4%B8%9A%E5%8F%B7%E5%BA%94%E7%94%A8%E6%88%96%E4%BC%81%E4%B8%9A%E5%8F%B7)
37+
- [视频号/微信小店开发文档](https://github.com/binarywang/WxJava/wiki/0_%E8%A7%86%E9%A2%91%E5%8F%B7_%E5%BE%AE%E4%BF%A1%E5%B0%8F%E5%BA%97%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3)

0 commit comments

Comments
 (0)