ai-engineering-init 1.4.3 → 1.5.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 (129) hide show
  1. package/.cursor/skills/bug-detective/SKILL.md +19 -19
  2. package/.cursor/skills/project-navigator/SKILL.md +164 -258
  3. package/package.json +7 -1
  4. package/scripts/build-skills.js +180 -0
  5. package/src/platform-map.json +56 -0
  6. package/src/skills/add-skill/SKILL.md +488 -0
  7. package/src/skills/add-todo/SKILL.md +269 -0
  8. package/src/skills/api-development/SKILL.md +266 -0
  9. package/src/skills/architecture-design/SKILL.md +262 -0
  10. package/src/skills/backend-annotations/SKILL.md +302 -0
  11. package/src/skills/banana-image/CHANGELOG.md +37 -0
  12. package/src/skills/banana-image/README.md +146 -0
  13. package/src/skills/banana-image/SKILL.md +171 -0
  14. package/src/skills/banana-image/assets/logo.png +0 -0
  15. package/src/skills/banana-image/references/advanced-usage.md +189 -0
  16. package/src/skills/banana-image/scripts/apply_template.py +125 -0
  17. package/src/skills/banana-image/scripts/banana_image_exec.ts +412 -0
  18. package/src/skills/banana-image/scripts/batch_prep.py +82 -0
  19. package/src/skills/banana-image/scripts/package-lock.json +1437 -0
  20. package/src/skills/banana-image/scripts/package.json +18 -0
  21. package/src/skills/banana-image/scripts/requirements.txt +10 -0
  22. package/src/skills/banana-image/templates/poster.json +22 -0
  23. package/src/skills/banana-image/templates/product.json +17 -0
  24. package/src/skills/banana-image/templates/social.json +22 -0
  25. package/src/skills/banana-image/templates/thumbnail.json +17 -0
  26. package/src/skills/brainstorm/SKILL.md +216 -0
  27. package/src/skills/bug-detective/SKILL.md +256 -0
  28. package/src/skills/bug-detective/references/error-patterns.md +242 -0
  29. package/src/skills/check/SKILL.md +367 -0
  30. package/src/skills/code-patterns/SKILL.md +280 -0
  31. package/src/skills/code-patterns/references/leniu-code-patterns.md +87 -0
  32. package/src/skills/codex-code-review/SKILL.md +135 -0
  33. package/src/skills/collaborating-with-codex/SKILL.md +174 -0
  34. package/src/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
  35. package/src/skills/collaborating-with-gemini/SKILL.md +194 -0
  36. package/src/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
  37. package/src/skills/crud/SKILL.md +265 -0
  38. package/src/skills/crud-development/SKILL.md +409 -0
  39. package/src/skills/data-permission/SKILL.md +292 -0
  40. package/src/skills/data-permission/references/custom-data-scope.md +90 -0
  41. package/src/skills/database-ops/SKILL.md +407 -0
  42. package/src/skills/dev/SKILL.md +187 -0
  43. package/src/skills/error-handler/SKILL.md +371 -0
  44. package/src/skills/file-oss-management/SKILL.md +255 -0
  45. package/src/skills/file-oss-management/references/entities.md +105 -0
  46. package/src/skills/file-oss-management/references/service-impl.md +104 -0
  47. package/src/skills/git-workflow/SKILL.md +397 -0
  48. package/src/skills/init-docs/SKILL.md +194 -0
  49. package/src/skills/json-serialization/SKILL.md +357 -0
  50. package/src/skills/leniu-api-development/SKILL.md +319 -0
  51. package/src/skills/leniu-api-development/references/real-examples.md +273 -0
  52. package/src/skills/leniu-architecture-design/SKILL.md +383 -0
  53. package/src/skills/leniu-backend-annotations/SKILL.md +277 -0
  54. package/src/skills/leniu-brainstorm/SKILL.md +242 -0
  55. package/src/skills/leniu-brainstorm/references/business-scenarios.md +162 -0
  56. package/src/skills/leniu-code-patterns/SKILL.md +411 -0
  57. package/src/skills/leniu-crud-development/SKILL.md +404 -0
  58. package/src/skills/leniu-crud-development/references/templates.md +597 -0
  59. package/src/skills/leniu-customization-location/SKILL.md +410 -0
  60. package/src/skills/leniu-data-permission/SKILL.md +341 -0
  61. package/src/skills/leniu-database-ops/SKILL.md +426 -0
  62. package/src/skills/leniu-error-handler/SKILL.md +462 -0
  63. package/src/skills/leniu-java-amount-handling/SKILL.md +461 -0
  64. package/src/skills/leniu-java-code-style/SKILL.md +510 -0
  65. package/src/skills/leniu-java-concurrent/SKILL.md +400 -0
  66. package/src/skills/leniu-java-entity/SKILL.md +237 -0
  67. package/src/skills/leniu-java-entity/references/templates.md +237 -0
  68. package/src/skills/leniu-java-export/SKILL.md +570 -0
  69. package/src/skills/leniu-java-logging/SKILL.md +229 -0
  70. package/src/skills/leniu-java-logging/references/data-mask.md +46 -0
  71. package/src/skills/leniu-java-logging/references/logging-scenarios.md +113 -0
  72. package/src/skills/leniu-java-mq/SKILL.md +338 -0
  73. package/src/skills/leniu-java-mybatis/SKILL.md +267 -0
  74. package/src/skills/leniu-java-mybatis/references/report-mapper.md +88 -0
  75. package/src/skills/leniu-java-report-query-param/SKILL.md +291 -0
  76. package/src/skills/leniu-java-task/SKILL.md +367 -0
  77. package/src/skills/leniu-java-total-line/SKILL.md +196 -0
  78. package/src/skills/leniu-marketing-price-rule-customizer/SKILL.md +301 -0
  79. package/src/skills/leniu-marketing-recharge-rule-customizer/SKILL.md +285 -0
  80. package/src/skills/leniu-mealtime/SKILL.md +215 -0
  81. package/src/skills/leniu-redis-cache/SKILL.md +331 -0
  82. package/src/skills/leniu-report-customization/SKILL.md +335 -0
  83. package/src/skills/leniu-report-customization/references/table-fields.md +93 -0
  84. package/src/skills/leniu-report-standard-customization/SKILL.md +328 -0
  85. package/src/skills/leniu-report-standard-customization/references/analysis-module.md +64 -0
  86. package/src/skills/leniu-report-standard-customization/references/table-fields.md +113 -0
  87. package/src/skills/leniu-security-guard/SKILL.md +306 -0
  88. package/src/skills/leniu-utils-toolkit/SKILL.md +380 -0
  89. package/src/skills/mysql-debug/SKILL.md +364 -0
  90. package/src/skills/next/SKILL.md +137 -0
  91. package/src/skills/openspec-apply-change/SKILL.md +165 -0
  92. package/src/skills/openspec-archive-change/SKILL.md +122 -0
  93. package/src/skills/openspec-bulk-archive-change/SKILL.md +254 -0
  94. package/src/skills/openspec-continue-change/SKILL.md +126 -0
  95. package/src/skills/openspec-explore/SKILL.md +299 -0
  96. package/src/skills/openspec-ff-change/SKILL.md +109 -0
  97. package/src/skills/openspec-new-change/SKILL.md +82 -0
  98. package/src/skills/openspec-onboard/SKILL.md +414 -0
  99. package/src/skills/openspec-sync-specs/SKILL.md +146 -0
  100. package/src/skills/openspec-verify-change/SKILL.md +176 -0
  101. package/src/skills/performance-doctor/SKILL.md +303 -0
  102. package/src/skills/progress/SKILL.md +193 -0
  103. package/src/skills/project-navigator/SKILL.md +211 -0
  104. package/src/skills/redis-cache/SKILL.md +333 -0
  105. package/src/skills/redis-cache/references/listeners.md +23 -0
  106. package/src/skills/scheduled-jobs/SKILL.md +314 -0
  107. package/src/skills/security-guard/SKILL.md +353 -0
  108. package/src/skills/security-guard/references/encrypt-config.md +103 -0
  109. package/src/skills/security-guard/references/sensitive-strategies.md +42 -0
  110. package/src/skills/sms-mail/SKILL.md +308 -0
  111. package/src/skills/sms-mail/references/mail-config.md +88 -0
  112. package/src/skills/sms-mail/references/sms-config.md +74 -0
  113. package/src/skills/social-login/SKILL.md +266 -0
  114. package/src/skills/social-login/references/provider-configs.md +118 -0
  115. package/src/skills/start/SKILL.md +154 -0
  116. package/src/skills/store-pc/SKILL.md +366 -0
  117. package/src/skills/sync/SKILL.md +149 -0
  118. package/src/skills/task-tracker/SKILL.md +307 -0
  119. package/src/skills/tech-decision/SKILL.md +393 -0
  120. package/src/skills/tenant-management/SKILL.md +288 -0
  121. package/src/skills/tenant-management/references/tenant-scenarios.md +91 -0
  122. package/src/skills/test-development/SKILL.md +301 -0
  123. package/src/skills/test-development/references/parameterized-examples.md +119 -0
  124. package/src/skills/ui-pc/SKILL.md +438 -0
  125. package/src/skills/update-status/SKILL.md +159 -0
  126. package/src/skills/utils-toolkit/SKILL.md +362 -0
  127. package/src/skills/utils-toolkit/references/redis-utils-api.md +56 -0
  128. package/src/skills/websocket-sse/SKILL.md +271 -0
  129. package/src/skills/workflow-engine/SKILL.md +321 -0
@@ -0,0 +1,266 @@
1
+ ---
2
+ name: social-login
3
+ description: |
4
+ 当需要实现第三方登录、OAuth2 认证、社交账号绑定时自动使用此 Skill。
5
+
6
+ 触发场景:
7
+ - 需要接入微信/QQ/支付宝等第三方登录
8
+ - 需要实现 OAuth2 授权流程
9
+ - 需要配置 JustAuth 第三方登录
10
+ - 需要实现社交账号与系统账号绑定
11
+ - 需要获取第三方用户信息
12
+
13
+ 触发词:第三方登录、微信登录、QQ登录、OAuth、OAuth2、JustAuth、社交登录、扫码登录、AuthRequest、SocialUtils、授权登录、GitHub登录、钉钉登录
14
+ ---
15
+
16
+ # 第三方登录开发指南(JustAuth)
17
+
18
+ > **适用模块**:`ruoyi-common-social`(基于 JustAuth)
19
+ > **特性**:Sa-Token 认证集成、Redis 状态缓存(防 CSRF)、多租户支持、账号绑定机制
20
+
21
+ ## 一、支持平台
22
+
23
+ | 平台 | source 标识 | 平台 | source 标识 |
24
+ |------|------------|------|------------|
25
+ | 钉钉 | `dingtalk` | GitHub | `github` |
26
+ | Gitee | `gitee` | 微博 | `weibo` |
27
+ | 支付宝 | `alipay_wallet` | QQ | `qq` |
28
+ | 微信开放平台 | `wechat_open` | 微信公众号 | `wechat_mp` |
29
+ | 企业微信 | `wechat_enterprise` | 抖音 | `douyin` |
30
+ | 华为 | `huawei` | 微软 | `microsoft` |
31
+ | MaxKey | `maxkey` | TopIAM | `topiam` |
32
+ | GitLab | `gitlab` | Gitea | `gitea` |
33
+
34
+ 完整平台列表及特殊配置详见 `references/provider-configs.md`。
35
+
36
+ ---
37
+
38
+ ## 二、基础配置
39
+
40
+ ```yaml
41
+ justauth:
42
+ address: https://your-domain.com # 回调地址前缀
43
+ type:
44
+ github:
45
+ client-id: ${GITHUB_CLIENT_ID:}
46
+ client-secret: ${GITHUB_CLIENT_SECRET:}
47
+ redirect-uri: ${justauth.address}/social-callback?source=github
48
+ gitee:
49
+ client-id: ${GITEE_CLIENT_ID:}
50
+ client-secret: ${GITEE_CLIENT_SECRET:}
51
+ redirect-uri: ${justauth.address}/social-callback?source=gitee
52
+ dingtalk:
53
+ client-id: ${DINGTALK_APP_KEY:}
54
+ client-secret: ${DINGTALK_APP_SECRET:}
55
+ redirect-uri: ${justauth.address}/social-callback?source=dingtalk
56
+ ```
57
+
58
+ > 各平台特殊配置(微软 tenantId、企业微信 agentId、支付宝公钥等)详见 `references/provider-configs.md`。
59
+
60
+ ---
61
+
62
+ ## 三、核心 API
63
+
64
+ ### 3.1 SocialUtils
65
+
66
+ **位置**:`org.dromara.common.social.utils.SocialUtils`
67
+
68
+ ```java
69
+ import org.dromara.common.social.utils.SocialUtils;
70
+ import me.zhyd.oauth.model.AuthResponse;
71
+ import me.zhyd.oauth.model.AuthUser;
72
+ import me.zhyd.oauth.request.AuthRequest;
73
+
74
+ // 获取授权请求对象
75
+ AuthRequest authRequest = SocialUtils.getAuthRequest("github", socialProperties);
76
+
77
+ // 生成授权 URL
78
+ String authorizeUrl = authRequest.authorize(state);
79
+
80
+ // 处理回调登录
81
+ AuthResponse<AuthUser> response = SocialUtils.loginAuth(
82
+ "github", code, state, socialProperties
83
+ );
84
+ if (response.ok()) {
85
+ AuthUser user = response.getData();
86
+ String openId = user.getUuid(); // 唯一标识
87
+ String nickname = user.getNickname(); // 昵称
88
+ String source = user.getSource(); // 来源平台
89
+ }
90
+ ```
91
+
92
+ ### 3.2 AuthUser 关键字段
93
+
94
+ | 属性 | 说明 | 属性 | 说明 |
95
+ |------|------|------|------|
96
+ | `uuid` | 平台用户唯一ID | `username` | 用户名 |
97
+ | `nickname` | 昵称 | `avatar` | 头像 |
98
+ | `email` | 邮箱 | `source` | 来源平台 |
99
+ | `token` | Token 信息 | `rawUserInfo` | 原始数据(Map) |
100
+
101
+ ### 3.3 状态缓存
102
+
103
+ `AuthRedisStateCache` 自动管理 OAuth2 state 参数(Redis 缓存,3分钟过期),无需手动操作。
104
+
105
+ ---
106
+
107
+ ## 四、后端实现
108
+
109
+ ### 4.1 生成授权 URL
110
+
111
+ ```java
112
+ @GetMapping("/binding/{source}")
113
+ public R<String> authBinding(@PathVariable String source) {
114
+ AuthRequest authRequest = SocialUtils.getAuthRequest(source, socialProperties);
115
+ String state = AuthStateUtils.createState();
116
+ return R.ok("操作成功", authRequest.authorize(state));
117
+ }
118
+ ```
119
+
120
+ ### 4.2 回调登录(SocialAuthStrategy)
121
+
122
+ ```java
123
+ @Slf4j
124
+ @Service("social" + IAuthStrategy.BASE_NAME)
125
+ @RequiredArgsConstructor
126
+ public class SocialAuthStrategy implements IAuthStrategy {
127
+
128
+ @Override
129
+ public LoginVo login(String body, SysClientVo client) {
130
+ SocialLoginBody loginBody = JsonUtils.parseObject(body, SocialLoginBody.class);
131
+ ValidatorUtils.validate(loginBody);
132
+
133
+ // 1. 获取第三方用户信息
134
+ AuthResponse<AuthUser> response = SocialUtils.loginAuth(
135
+ loginBody.getSource(), loginBody.getSocialCode(),
136
+ loginBody.getSocialState(), socialProperties);
137
+ if (!response.ok()) {
138
+ throw new ServiceException(response.getMsg());
139
+ }
140
+
141
+ // 2. 查找绑定关系
142
+ String authId = response.getData().getSource() + response.getData().getUuid();
143
+ List<SysSocialVo> list = sysSocialService.selectByAuthId(authId);
144
+ if (CollUtil.isEmpty(list)) {
145
+ throw new ServiceException("你还没有绑定第三方账号,绑定后才可以登录!");
146
+ }
147
+
148
+ // 3. 生成系统 Token
149
+ LoginUser loginUser = loginService.buildLoginUser(loadUser(list.get(0).getUserId()));
150
+ LoginHelper.login(loginUser, new SaLoginParameter()
151
+ .setDeviceType(client.getDeviceType())
152
+ .setTimeout(client.getTimeout())
153
+ .setActiveTimeout(client.getActiveTimeout()));
154
+
155
+ LoginVo loginVo = new LoginVo();
156
+ loginVo.setAccessToken(StpUtil.getTokenValue());
157
+ loginVo.setExpireIn(StpUtil.getTokenTimeout());
158
+ return loginVo;
159
+ }
160
+ }
161
+ ```
162
+
163
+ ### 4.3 账号绑定
164
+
165
+ ```java
166
+ // 绑定:AuthController.socialCallback() → SysLoginService.socialRegister()
167
+ @PostMapping("/social/callback")
168
+ public R<Void> socialCallback(@RequestBody SocialLoginBody loginBody) {
169
+ StpUtil.checkLogin();
170
+ AuthResponse<AuthUser> response = SocialUtils.loginAuth(...);
171
+ if (!response.ok()) return R.fail(response.getMsg());
172
+ loginService.socialRegister(response.getData());
173
+ return R.ok();
174
+ }
175
+
176
+ // socialRegister 核心逻辑:
177
+ // 1. 生成 authId = source + uuid
178
+ // 2. 检查 authId 是否已被其他用户绑定
179
+ // 3. 查询当前用户是否已绑定该平台 -> 新增或更新
180
+ ```
181
+
182
+ ### 4.4 解绑
183
+
184
+ ```java
185
+ @DeleteMapping("/unlock/{socialId}")
186
+ public R<Void> unlockSocial(@PathVariable Long socialId) {
187
+ StpUtil.checkLogin();
188
+ return socialUserService.deleteWithValidById(socialId) ? R.ok() : R.fail("取消授权失败");
189
+ }
190
+ ```
191
+
192
+ ---
193
+
194
+ ## 五、前端集成
195
+
196
+ ```javascript
197
+ // 跳转授权
198
+ const { data } = await request.get(`/auth/binding/${source}`);
199
+ window.location.href = data;
200
+
201
+ // 回调页面处理
202
+ const { source, code, state } = this.$route.query;
203
+ const { data } = await request.post('/auth/login', {
204
+ grantType: 'social',
205
+ source, socialCode: code, socialState: state,
206
+ clientId: 'your-client-id'
207
+ });
208
+ setToken(data.accessToken);
209
+ ```
210
+
211
+ ---
212
+
213
+ ## 六、常见错误
214
+
215
+ ```yaml
216
+ # ❌ 回调地址与第三方平台配置不一致
217
+ redirect-uri: http://localhost:8080/callback
218
+
219
+ # ✅ 使用与第三方平台一致的地址
220
+ redirect-uri: https://your-domain.com/social-callback?source=github
221
+ ```
222
+
223
+ ```java
224
+ // ❌ 不检查响应结果
225
+ AuthUser user = response.getData(); // 可能 null
226
+
227
+ // ✅ 先检查状态
228
+ if (!response.ok()) throw new ServiceException(response.getMsg());
229
+
230
+ // ❌ source 标识拼写错误
231
+ SocialUtils.getAuthRequest("wechat", props); // 不存在
232
+
233
+ // ✅ 正确标识
234
+ SocialUtils.getAuthRequest("wechat_open", props); // 微信开放平台
235
+ SocialUtils.getAuthRequest("wechat_mp", props); // 微信公众号
236
+ ```
237
+
238
+ ---
239
+
240
+ ## 七、扩展自定义平台
241
+
242
+ ```java
243
+ public class AuthCustomRequest extends AuthDefaultRequest {
244
+ public AuthCustomRequest(AuthConfig config, AuthStateCache stateCache) {
245
+ super(config, AuthCustomSource.CUSTOM, stateCache);
246
+ }
247
+ @Override
248
+ protected AuthToken getAccessToken(AuthCallback authCallback) { ... }
249
+ @Override
250
+ protected AuthUser getUserInfo(AuthToken authToken) { ... }
251
+ }
252
+ // 然后在 SocialUtils.getAuthRequest() 中添加对应 case
253
+ ```
254
+
255
+ ---
256
+
257
+ ## 八、参考代码位置
258
+
259
+ | 类型 | 位置 |
260
+ |------|------|
261
+ | SocialUtils | `ruoyi-common/ruoyi-common-social/.../utils/SocialUtils.java` |
262
+ | AuthRedisStateCache | `ruoyi-common/ruoyi-common-social/.../utils/AuthRedisStateCache.java` |
263
+ | SocialProperties | `ruoyi-common/ruoyi-common-social/.../config/properties/SocialProperties.java` |
264
+ | SocialAuthStrategy | `ruoyi-admin/.../web/service/impl/SocialAuthStrategy.java` |
265
+ | AuthController | `ruoyi-admin/.../web/controller/AuthController.java` |
266
+ | ISysSocialService | `ruoyi-modules/ruoyi-system/.../service/ISysSocialService.java` |
@@ -0,0 +1,118 @@
1
+ # 第三方登录平台配置参考
2
+
3
+ ## 完整平台列表
4
+
5
+ | 平台 | source 标识 | 平台 | source 标识 |
6
+ |------|------------|------|------------|
7
+ | 钉钉 | `dingtalk` | 百度 | `baidu` |
8
+ | GitHub | `github` | Gitee | `gitee` |
9
+ | 微博 | `weibo` | Coding | `coding` |
10
+ | 开源中国 | `oschina` | 支付宝 | `alipay_wallet` |
11
+ | QQ | `qq` | 微信开放平台 | `wechat_open` |
12
+ | 微信公众号 | `wechat_mp` | 企业微信 | `wechat_enterprise` |
13
+ | 淘宝 | `taobao` | 抖音 | `douyin` |
14
+ | LinkedIn | `linkedin` | Microsoft | `microsoft` |
15
+ | 人人网 | `renren` | StackOverflow | `stack_overflow` |
16
+ | 华为 | `huawei` | GitLab | `gitlab` |
17
+ | 阿里云 | `aliyun` | MaxKey | `maxkey` |
18
+ | TopIAM | `topiam` | Gitea | `gitea` |
19
+
20
+ ## 特殊平台配置
21
+
22
+ ### 微软登录(需要 tenantId)
23
+
24
+ ```yaml
25
+ justauth:
26
+ type:
27
+ microsoft:
28
+ client-id: ${MICROSOFT_CLIENT_ID}
29
+ client-secret: ${MICROSOFT_CLIENT_SECRET}
30
+ redirect-uri: ${justauth.address}/social-callback?source=microsoft
31
+ tenant-id: common # common、organizations、consumers 或具体租户ID
32
+ ```
33
+
34
+ ### 企业微信(需要 agentId)
35
+
36
+ ```yaml
37
+ justauth:
38
+ type:
39
+ wechat_enterprise:
40
+ client-id: ${WECHAT_CORP_ID}
41
+ client-secret: ${WECHAT_CORP_SECRET}
42
+ redirect-uri: ${justauth.address}/social-callback?source=wechat_enterprise
43
+ agent-id: ${WECHAT_AGENT_ID}
44
+ ```
45
+
46
+ ### 支付宝(需要公钥)
47
+
48
+ ```yaml
49
+ justauth:
50
+ type:
51
+ alipay_wallet:
52
+ client-id: ${ALIPAY_APP_ID}
53
+ client-secret: ${ALIPAY_PRIVATE_KEY}
54
+ redirect-uri: ${justauth.address}/social-callback?source=alipay_wallet
55
+ alipay-public-key: ${ALIPAY_PUBLIC_KEY}
56
+ ```
57
+
58
+ ### QQ(支持 unionId)
59
+
60
+ ```yaml
61
+ justauth:
62
+ type:
63
+ qq:
64
+ client-id: ${QQ_APP_ID}
65
+ client-secret: ${QQ_APP_KEY}
66
+ redirect-uri: ${justauth.address}/social-callback?source=qq
67
+ union-id: true
68
+ ```
69
+
70
+ ### MaxKey 单点登录
71
+
72
+ ```yaml
73
+ justauth:
74
+ type:
75
+ maxkey:
76
+ client-id: ${MAXKEY_CLIENT_ID}
77
+ client-secret: ${MAXKEY_CLIENT_SECRET}
78
+ redirect-uri: ${justauth.address}/social-callback?source=maxkey
79
+ server-url: ${MAXKEY_SERVER_URL}
80
+ ```
81
+
82
+ ## 完整配置模板
83
+
84
+ ```yaml
85
+ justauth:
86
+ address: https://your-domain.com
87
+ type:
88
+ github:
89
+ client-id: ${GITHUB_CLIENT_ID:}
90
+ client-secret: ${GITHUB_CLIENT_SECRET:}
91
+ redirect-uri: ${justauth.address}/social-callback?source=github
92
+ gitee:
93
+ client-id: ${GITEE_CLIENT_ID:}
94
+ client-secret: ${GITEE_CLIENT_SECRET:}
95
+ redirect-uri: ${justauth.address}/social-callback?source=gitee
96
+ dingtalk:
97
+ client-id: ${DINGTALK_APP_KEY:}
98
+ client-secret: ${DINGTALK_APP_SECRET:}
99
+ redirect-uri: ${justauth.address}/social-callback?source=dingtalk
100
+ qq:
101
+ client-id: ${QQ_APP_ID:}
102
+ client-secret: ${QQ_APP_KEY:}
103
+ redirect-uri: ${justauth.address}/social-callback?source=qq
104
+ union-id: true
105
+ wechat_open:
106
+ client-id: ${WECHAT_OPEN_APP_ID:}
107
+ client-secret: ${WECHAT_OPEN_APP_SECRET:}
108
+ redirect-uri: ${justauth.address}/social-callback?source=wechat_open
109
+ wechat_mp:
110
+ client-id: ${WECHAT_MP_APP_ID:}
111
+ client-secret: ${WECHAT_MP_APP_SECRET:}
112
+ redirect-uri: ${justauth.address}/social-callback?source=wechat_mp
113
+ maxkey:
114
+ client-id: ${MAXKEY_CLIENT_ID:}
115
+ client-secret: ${MAXKEY_CLIENT_SECRET:}
116
+ redirect-uri: ${justauth.address}/social-callback?source=maxkey
117
+ server-url: ${MAXKEY_SERVER_URL:}
118
+ ```
@@ -0,0 +1,154 @@
1
+ ---
2
+ name: start
3
+ description: |
4
+ 当需要快速了解项目、新成员入门时自动使用此 Skill。
5
+
6
+ 触发场景:
7
+ - 新成员第一次接触项目
8
+ - 接手他人的项目需要快速了解
9
+ - 距上次熟悉项目已久需要快速回顾
10
+ - 在新的会话中快速了解项目
11
+
12
+ 触发词:了解项目、start、项目介绍、项目概览、快速入门、新手入门、项目了解
13
+ ---
14
+
15
+ # /start - 项目快速了解
16
+
17
+ 新成员快速了解项目的必看命令。自动检测项目类型、扫描业务模块、生成项目概览。
18
+
19
+ ---
20
+
21
+ ## 🎯 适用场景
22
+
23
+ | 场景 | 说明 |
24
+ |------|------|
25
+ | **初次接触** | 新成员第一次接触项目 |
26
+ | **项目交接** | 接手他人的项目 |
27
+ | **重新梳理** | 距上次熟悉项目已久,需要快速回顾 |
28
+ | **窗口切换** | 在新的会话中快速了解项目 |
29
+
30
+ ---
31
+
32
+ ## 🚀 执行流程
33
+
34
+ ### 第一步:识别项目类型和框架(强制执行)
35
+
36
+ ```bash
37
+ # 扫描项目结构
38
+ Glob pattern: "ruoyi-modules/ruoyi-*/src/main/java/**/controller/*Controller.java"
39
+
40
+ # 查看最近 3 条 Git 提交
41
+ git log -3 --oneline --format="%h %s (%ar)"
42
+ ```
43
+
44
+ **识别框架模块(不统计进度)**:
45
+ - ✅ `ruoyi-system` - 系统管理模块
46
+ - ✅ `ruoyi-generator` - 代码生成器
47
+ - ✅ `ruoyi-common` - 通用工具库
48
+
49
+ **识别业务模块(需统计进度)**:
50
+ - 排除上述框架模块后的所有 `ruoyi-*` 模块
51
+
52
+ ---
53
+
54
+ ### 第二步:判断项目开发阶段
55
+
56
+ ```
57
+ 业务模块数量 = 0 → 🟢 全新项目(仅有框架)
58
+ 业务模块数量 1-5 → 🟡 初期开发(刚开始业务)
59
+ 业务模块数量 6+ → 🔴 成熟项目(业务较多)
60
+ ```
61
+
62
+ ---
63
+
64
+ ### 第三步:生成项目概览报告
65
+
66
+ #### 情况 1:全新项目(业务模块数 = 0)
67
+
68
+ ```markdown
69
+ # 👋 欢迎使用 RuoYi-Vue-Plus 框架
70
+
71
+ **项目类型**:Spring Boot 3 + MyBatis-Plus 纯后端项目
72
+ **框架版本**:5.5.3+
73
+
74
+ ## 📦 框架现状
75
+
76
+ ### ✅ 已就绪的框架模块
77
+
78
+ | 模块 | 说明 | 状态 |
79
+ |------|------|------|
80
+ | ruoyi-system | 系统管理(用户、角色、菜单、字典等) | ✅ 完整 |
81
+ | ruoyi-generator | 动态代码生成器 | ✅ 完整 |
82
+ | ruoyi-common | 通用工具库 | ✅ 完整 |
83
+
84
+ ## 🎯 快速开始
85
+
86
+ ### 方式 1:使用 /dev 命令(推荐)
87
+ \`/dev\`
88
+
89
+ ### 方式 2:使用 /crud 命令(表已存在)
90
+ \`/crud\`
91
+
92
+ ## 💡 推荐操作
93
+
94
+ **第一步**:了解项目规范
95
+ 查看项目根目录的 CLAUDE.md 文件
96
+
97
+ **第二步**:初始化项目文档
98
+ \`/init-docs\`
99
+
100
+ **第三步**:开发第一个功能
101
+ \`/dev\` 或 \`/crud\`
102
+ ```
103
+
104
+ #### 情况 2:初期开发项目(业务模块数 1-5)
105
+
106
+ ```markdown
107
+ # 👋 欢迎回到项目
108
+
109
+ **技术栈**:Spring Boot 3 + MyBatis-Plus + Sa-Token
110
+ **项目阶段**:🟡 初期开发
111
+
112
+ ## 📊 项目概况
113
+
114
+ ### 业务进度
115
+ - **业务模块**:X 个
116
+ - **已完成功能**:X 个
117
+ - **进行中功能**:X 个
118
+ - **总体进度**:X%
119
+
120
+ ## 🎯 当前工作建议
121
+
122
+ ### 快速查看进度
123
+ \`/progress\`
124
+
125
+ ### 检查代码规范
126
+ \`/check\`
127
+
128
+ ### 获取开发建议
129
+ \`/next\`
130
+ ```
131
+
132
+ ---
133
+
134
+ ## 📚 相关命令
135
+
136
+ | 命令 | 说明 | 用途 |
137
+ |------|------|------|
138
+ | `/progress` | 详细进度报告 | 了解各模块完成情况 |
139
+ | `/check` | 代码规范检查 | 确保代码质量 |
140
+ | `/next` | 下一步建议 | 获取开发方向 |
141
+ | `/sync` | 全量同步 | 定期整理文档 |
142
+ | `/dev` | 开发新功能 | 完整开发流程 |
143
+ | `/crud` | 快速生成 | 表已存在时 |
144
+
145
+ ---
146
+
147
+ ## 🎓 新成员入门清单
148
+
149
+ - [ ] 阅读项目根目录的 `CLAUDE.md` 了解开发规范
150
+ - [ ] 运行 `/start` 了解项目现状
151
+ - [ ] 运行 `/progress` 查看详细进度
152
+ - [ ] 查看 `/docs/ARCHITECTURE.md` 了解架构
153
+ - [ ] 根据 `/next` 建议选择任务
154
+ - [ ] 使用 `/dev` 或 `/crud` 开始开发