leniu-dev 2.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 (670) hide show
  1. package/.claude/agents/auto-test-generator.md +315 -0
  2. package/.claude/agents/bug-analyzer.md +103 -0
  3. package/.claude/agents/code-reviewer.md +122 -0
  4. package/.claude/agents/code-scanner.md +145 -0
  5. package/.claude/agents/image-reader.md +154 -0
  6. package/.claude/agents/loki-runner.md +80 -0
  7. package/.claude/agents/mysql-runner.md +81 -0
  8. package/.claude/agents/project-manager.md +159 -0
  9. package/.claude/agents/requirements-analyzer.md +175 -0
  10. package/.claude/agents/task-fetcher.md +75 -0
  11. package/.claude/audio/completed.wav +0 -0
  12. package/.claude/commands/add-todo.md +255 -0
  13. package/.claude/commands/auto-test.md +252 -0
  14. package/.claude/commands/check.md +210 -0
  15. package/.claude/commands/crud.md +454 -0
  16. package/.claude/commands/dev.md +532 -0
  17. package/.claude/commands/init-config.md +154 -0
  18. package/.claude/commands/init-docs.md +681 -0
  19. package/.claude/commands/next.md +281 -0
  20. package/.claude/commands/opsx-apply.md +147 -0
  21. package/.claude/commands/opsx-archive.md +105 -0
  22. package/.claude/commands/opsx-bulk-archive.md +237 -0
  23. package/.claude/commands/opsx-continue.md +109 -0
  24. package/.claude/commands/opsx-explore.md +281 -0
  25. package/.claude/commands/opsx-ff.md +92 -0
  26. package/.claude/commands/opsx-new.md +65 -0
  27. package/.claude/commands/opsx-onboard.md +397 -0
  28. package/.claude/commands/opsx-sync.md +129 -0
  29. package/.claude/commands/opsx-verify.md +159 -0
  30. package/.claude/commands/progress.md +264 -0
  31. package/.claude/commands/release.md +109 -0
  32. package/.claude/commands/start.md +199 -0
  33. package/.claude/commands/sync.md +307 -0
  34. package/.claude/commands/update-status.md +428 -0
  35. package/.claude/docs/Mixin/344/275/277/347/224/250/346/214/207/345/215/227.md +299 -0
  36. package/.claude/docs/README.md +167 -0
  37. package/.claude/docs//345/211/215/347/253/257/345/274/200/345/217/221/346/214/207/345/215/227.md +599 -0
  38. package/.claude/docs//345/220/216/347/253/257/345/274/200/345/217/221/346/214/207/345/215/227.md +726 -0
  39. package/.claude/docs//345/267/245/344/275/234/346/265/201/345/274/200/345/217/221/346/214/207/345/215/227.md +714 -0
  40. package/.claude/docs//345/267/245/345/205/267/347/261/273/344/275/277/347/224/250/346/214/207/345/215/227.md +463 -0
  41. package/.claude/docs//346/225/260/346/215/256/345/272/223/350/256/276/350/256/241/350/247/204/350/214/203.md +390 -0
  42. package/.claude/docs//346/226/260/345/212/237/350/203/275/345/274/200/345/217/221/346/265/201/347/250/213/350/247/204/350/214/203.md +688 -0
  43. package/.claude/docs//346/226/260/351/241/271/347/233/256/345/274/200/345/217/221/346/265/201/347/250/213.md +365 -0
  44. package/.claude/docs//346/241/206/346/236/266/350/257/264/346/230/216.md +393 -0
  45. package/.claude/docs//350/267/257/347/224/261/351/205/215/347/275/256/346/214/207/345/215/227.md +246 -0
  46. package/.claude/framework-config.json +73 -0
  47. package/.claude/hooks/lib/notify.js +310 -0
  48. package/.claude/hooks/pre-tool-use.js +117 -0
  49. package/.claude/hooks/skill-forced-eval.js +161 -0
  50. package/.claude/hooks/stop.js +55 -0
  51. package/.claude/notify-config.json +9 -0
  52. package/.claude/settings.json +57 -0
  53. package/.claude/skills/add-skill/SKILL.md +488 -0
  54. package/.claude/skills/analyze-requirements/SKILL.md +112 -0
  55. package/.claude/skills/api-development/SKILL.md +315 -0
  56. package/.claude/skills/architecture-design/SKILL.md +152 -0
  57. package/.claude/skills/auto-test/SKILL.md +625 -0
  58. package/.claude/skills/auto-test/references/api-conventions.md +260 -0
  59. package/.claude/skills/backend-annotations/SKILL.md +248 -0
  60. package/.claude/skills/banana-image/CHANGELOG.md +37 -0
  61. package/.claude/skills/banana-image/README.md +146 -0
  62. package/.claude/skills/banana-image/SKILL.md +171 -0
  63. package/.claude/skills/banana-image/assets/logo.png +0 -0
  64. package/.claude/skills/banana-image/references/advanced-usage.md +189 -0
  65. package/.claude/skills/banana-image/scripts/apply_template.py +125 -0
  66. package/.claude/skills/banana-image/scripts/banana_image_exec.ts +412 -0
  67. package/.claude/skills/banana-image/scripts/batch_prep.py +82 -0
  68. package/.claude/skills/banana-image/scripts/package-lock.json +1437 -0
  69. package/.claude/skills/banana-image/scripts/package.json +18 -0
  70. package/.claude/skills/banana-image/scripts/requirements.txt +10 -0
  71. package/.claude/skills/banana-image/templates/poster.json +22 -0
  72. package/.claude/skills/banana-image/templates/product.json +17 -0
  73. package/.claude/skills/banana-image/templates/social.json +22 -0
  74. package/.claude/skills/banana-image/templates/thumbnail.json +17 -0
  75. package/.claude/skills/brainstorm/SKILL.md +216 -0
  76. package/.claude/skills/bug-detective/SKILL.md +295 -0
  77. package/.claude/skills/bug-detective/references/error-patterns.md +242 -0
  78. package/.claude/skills/chrome-cdp/SKILL.md +81 -0
  79. package/.claude/skills/chrome-cdp/scripts/cdp.mjs +838 -0
  80. package/.claude/skills/chrome-cdp/scripts/run-cdp.sh +7 -0
  81. package/.claude/skills/code-patterns/SKILL.md +163 -0
  82. package/.claude/skills/code-patterns/references/leniu-code-patterns.md +87 -0
  83. package/.claude/skills/codex-code-review/SKILL.md +327 -0
  84. package/.claude/skills/collaborating-with-codex/SKILL.md +180 -0
  85. package/.claude/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
  86. package/.claude/skills/collaborating-with-gemini/SKILL.md +194 -0
  87. package/.claude/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
  88. package/.claude/skills/crud-development/SKILL.md +328 -0
  89. package/.claude/skills/data-permission/SKILL.md +221 -0
  90. package/.claude/skills/data-permission/references/custom-data-scope.md +90 -0
  91. package/.claude/skills/database-ops/SKILL.md +210 -0
  92. package/.claude/skills/error-handler/SKILL.md +310 -0
  93. package/.claude/skills/file-oss-management/SKILL.md +260 -0
  94. package/.claude/skills/file-oss-management/references/entities.md +105 -0
  95. package/.claude/skills/file-oss-management/references/service-impl.md +104 -0
  96. package/.claude/skills/fix-bug/SKILL.md +269 -0
  97. package/.claude/skills/git-workflow/SKILL.md +179 -0
  98. package/.claude/skills/jenkins-deploy/SKILL.md +134 -0
  99. package/.claude/skills/jenkins-deploy/assets/env_param.template.json +51 -0
  100. package/.claude/skills/jenkins-deploy/assets/jk_build.py +400 -0
  101. package/.claude/skills/json-serialization/SKILL.md +341 -0
  102. package/.claude/skills/lanhu-design/SKILL.md +99 -0
  103. package/.claude/skills/leniu-api-development/SKILL.md +319 -0
  104. package/.claude/skills/leniu-api-development/references/real-examples.md +273 -0
  105. package/.claude/skills/leniu-architecture-design/SKILL.md +383 -0
  106. package/.claude/skills/leniu-backend-annotations/SKILL.md +277 -0
  107. package/.claude/skills/leniu-brainstorm/SKILL.md +242 -0
  108. package/.claude/skills/leniu-brainstorm/references/business-scenarios.md +162 -0
  109. package/.claude/skills/leniu-code-patterns/SKILL.md +411 -0
  110. package/.claude/skills/leniu-crud-development/SKILL.md +404 -0
  111. package/.claude/skills/leniu-crud-development/references/templates.md +597 -0
  112. package/.claude/skills/leniu-customization-location/SKILL.md +410 -0
  113. package/.claude/skills/leniu-data-permission/SKILL.md +341 -0
  114. package/.claude/skills/leniu-database-ops/SKILL.md +426 -0
  115. package/.claude/skills/leniu-error-handler/SKILL.md +462 -0
  116. package/.claude/skills/leniu-java-concurrent/SKILL.md +400 -0
  117. package/.claude/skills/leniu-java-entity/SKILL.md +237 -0
  118. package/.claude/skills/leniu-java-entity/references/templates.md +237 -0
  119. package/.claude/skills/leniu-java-logging/SKILL.md +229 -0
  120. package/.claude/skills/leniu-java-logging/references/data-mask.md +46 -0
  121. package/.claude/skills/leniu-java-logging/references/logging-scenarios.md +113 -0
  122. package/.claude/skills/leniu-java-mq/SKILL.md +338 -0
  123. package/.claude/skills/leniu-java-mybatis/SKILL.md +267 -0
  124. package/.claude/skills/leniu-java-mybatis/references/report-mapper.md +88 -0
  125. package/.claude/skills/leniu-java-task/SKILL.md +367 -0
  126. package/.claude/skills/leniu-marketing-scenario/SKILL.md +448 -0
  127. package/.claude/skills/leniu-marketing-scenario/references/pay-meal-rules.md +197 -0
  128. package/.claude/skills/leniu-marketing-scenario/references/price-rules.md +286 -0
  129. package/.claude/skills/leniu-marketing-scenario/references/recharge-rules.md +188 -0
  130. package/.claude/skills/leniu-redis-cache/SKILL.md +331 -0
  131. package/.claude/skills/leniu-report-scenario/SKILL.md +508 -0
  132. package/.claude/skills/leniu-report-scenario/references/amount-handling.md +448 -0
  133. package/.claude/skills/leniu-report-scenario/references/analysis-module.md +64 -0
  134. package/.claude/skills/leniu-report-scenario/references/customization-table-fields.md +93 -0
  135. package/.claude/skills/leniu-report-scenario/references/customization.md +356 -0
  136. package/.claude/skills/leniu-report-scenario/references/data-permission.md +182 -0
  137. package/.claude/skills/leniu-report-scenario/references/export.md +553 -0
  138. package/.claude/skills/leniu-report-scenario/references/mealtime.md +197 -0
  139. package/.claude/skills/leniu-report-scenario/references/query-param.md +274 -0
  140. package/.claude/skills/leniu-report-scenario/references/report-tables.md +162 -0
  141. package/.claude/skills/leniu-report-scenario/references/standard-customization.md +112 -0
  142. package/.claude/skills/leniu-report-scenario/references/standard-table-fields.md +113 -0
  143. package/.claude/skills/leniu-report-scenario/references/total-line.md +179 -0
  144. package/.claude/skills/leniu-security-guard/SKILL.md +306 -0
  145. package/.claude/skills/leniu-utils-toolkit/SKILL.md +380 -0
  146. package/.claude/skills/loki-log-query/SKILL.md +430 -0
  147. package/.claude/skills/mysql-debug/SKILL.md +406 -0
  148. package/.claude/skills/performance-doctor/SKILL.md +297 -0
  149. package/.claude/skills/project-navigator/SKILL.md +211 -0
  150. package/.claude/skills/redis-cache/SKILL.md +282 -0
  151. package/.claude/skills/redis-cache/references/listeners.md +23 -0
  152. package/.claude/skills/scheduled-jobs/SKILL.md +277 -0
  153. package/.claude/skills/security-guard/SKILL.md +245 -0
  154. package/.claude/skills/security-guard/references/encrypt-config.md +103 -0
  155. package/.claude/skills/security-guard/references/sensitive-strategies.md +42 -0
  156. package/.claude/skills/sms-mail/SKILL.md +346 -0
  157. package/.claude/skills/sms-mail/references/mail-config.md +88 -0
  158. package/.claude/skills/sms-mail/references/sms-config.md +74 -0
  159. package/.claude/skills/social-login/SKILL.md +328 -0
  160. package/.claude/skills/social-login/references/provider-configs.md +118 -0
  161. package/.claude/skills/store-pc/SKILL.md +366 -0
  162. package/.claude/skills/sync-back-merge/SKILL.md +66 -0
  163. package/.claude/skills/task-tracker/SKILL.md +307 -0
  164. package/.claude/skills/tech-decision/SKILL.md +393 -0
  165. package/.claude/skills/tenant-management/SKILL.md +272 -0
  166. package/.claude/skills/tenant-management/references/tenant-scenarios.md +91 -0
  167. package/.claude/skills/test-development/SKILL.md +301 -0
  168. package/.claude/skills/test-development/references/parameterized-examples.md +119 -0
  169. package/.claude/skills/ui-pc/SKILL.md +438 -0
  170. package/.claude/skills/utils-toolkit/SKILL.md +354 -0
  171. package/.claude/skills/utils-toolkit/references/redis-utils-api.md +56 -0
  172. package/.claude/skills/websocket-sse/SKILL.md +350 -0
  173. package/.claude/skills/workflow-engine/SKILL.md +249 -0
  174. package/.claude/skills/yunxiao-task-management/SKILL.md +401 -0
  175. package/.claude/skills/yunxiao-task-management/templates//346/217/220/346/265/213/345/215/225/346/250/241/346/235/277.html +17 -0
  176. package/.claude/templates/env-config.md +27 -0
  177. package/.claude/templates//345/276/205/345/212/236/346/270/205/345/215/225/346/250/241/346/235/277.md +56 -0
  178. package/.claude/templates//351/234/200/346/261/202/346/226/207/346/241/243/346/250/241/346/235/277.md +85 -0
  179. package/.claude/templates//351/241/271/347/233/256/347/212/266/346/200/201/346/250/241/346/235/277.md +43 -0
  180. package/.codex/skills/add-skill/SKILL.md +488 -0
  181. package/.codex/skills/add-todo/SKILL.md +269 -0
  182. package/.codex/skills/analyze-requirements/SKILL.md +112 -0
  183. package/.codex/skills/api-development/SKILL.md +315 -0
  184. package/.codex/skills/architecture-design/SKILL.md +152 -0
  185. package/.codex/skills/auto-test/SKILL.md +453 -0
  186. package/.codex/skills/auto-test/references/api-conventions.md +260 -0
  187. package/.codex/skills/backend-annotations/SKILL.md +248 -0
  188. package/.codex/skills/banana-image/CHANGELOG.md +37 -0
  189. package/.codex/skills/banana-image/README.md +146 -0
  190. package/.codex/skills/banana-image/SKILL.md +171 -0
  191. package/.codex/skills/banana-image/assets/logo.png +0 -0
  192. package/.codex/skills/banana-image/references/advanced-usage.md +189 -0
  193. package/.codex/skills/banana-image/scripts/apply_template.py +125 -0
  194. package/.codex/skills/banana-image/scripts/banana_image_exec.ts +412 -0
  195. package/.codex/skills/banana-image/scripts/batch_prep.py +82 -0
  196. package/.codex/skills/banana-image/scripts/package-lock.json +1437 -0
  197. package/.codex/skills/banana-image/scripts/package.json +18 -0
  198. package/.codex/skills/banana-image/scripts/requirements.txt +10 -0
  199. package/.codex/skills/banana-image/templates/poster.json +22 -0
  200. package/.codex/skills/banana-image/templates/product.json +17 -0
  201. package/.codex/skills/banana-image/templates/social.json +22 -0
  202. package/.codex/skills/banana-image/templates/thumbnail.json +17 -0
  203. package/.codex/skills/brainstorm/SKILL.md +216 -0
  204. package/.codex/skills/bug-detective/SKILL.md +295 -0
  205. package/.codex/skills/bug-detective/references/error-patterns.md +242 -0
  206. package/.codex/skills/check/SKILL.md +367 -0
  207. package/.codex/skills/code-patterns/SKILL.md +163 -0
  208. package/.codex/skills/code-patterns/references/leniu-code-patterns.md +87 -0
  209. package/.codex/skills/collaborating-with-codex/SKILL.md +180 -0
  210. package/.codex/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
  211. package/.codex/skills/collaborating-with-gemini/SKILL.md +194 -0
  212. package/.codex/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
  213. package/.codex/skills/crud/SKILL.md +265 -0
  214. package/.codex/skills/crud-development/SKILL.md +328 -0
  215. package/.codex/skills/data-permission/SKILL.md +221 -0
  216. package/.codex/skills/data-permission/references/custom-data-scope.md +90 -0
  217. package/.codex/skills/database-ops/SKILL.md +210 -0
  218. package/.codex/skills/dev/SKILL.md +187 -0
  219. package/.codex/skills/error-handler/SKILL.md +310 -0
  220. package/.codex/skills/file-oss-management/SKILL.md +260 -0
  221. package/.codex/skills/file-oss-management/references/entities.md +105 -0
  222. package/.codex/skills/file-oss-management/references/service-impl.md +104 -0
  223. package/.codex/skills/fix-bug/SKILL.md +269 -0
  224. package/.codex/skills/git-workflow/SKILL.md +179 -0
  225. package/.codex/skills/init-docs/SKILL.md +194 -0
  226. package/.codex/skills/jenkins-deploy/SKILL.md +134 -0
  227. package/.codex/skills/json-serialization/SKILL.md +341 -0
  228. package/.codex/skills/lanhu-design/SKILL.md +99 -0
  229. package/.codex/skills/leniu-api-development/SKILL.md +319 -0
  230. package/.codex/skills/leniu-api-development/references/real-examples.md +273 -0
  231. package/.codex/skills/leniu-architecture-design/SKILL.md +383 -0
  232. package/.codex/skills/leniu-backend-annotations/SKILL.md +277 -0
  233. package/.codex/skills/leniu-brainstorm/SKILL.md +242 -0
  234. package/.codex/skills/leniu-brainstorm/references/business-scenarios.md +162 -0
  235. package/.codex/skills/leniu-code-patterns/SKILL.md +411 -0
  236. package/.codex/skills/leniu-crud-development/SKILL.md +404 -0
  237. package/.codex/skills/leniu-crud-development/references/templates.md +597 -0
  238. package/.codex/skills/leniu-customization-location/SKILL.md +410 -0
  239. package/.codex/skills/leniu-data-permission/SKILL.md +341 -0
  240. package/.codex/skills/leniu-database-ops/SKILL.md +426 -0
  241. package/.codex/skills/leniu-error-handler/SKILL.md +462 -0
  242. package/.codex/skills/leniu-java-amount-handling/SKILL.md +461 -0
  243. package/.codex/skills/leniu-java-code-style/SKILL.md +510 -0
  244. package/.codex/skills/leniu-java-concurrent/SKILL.md +400 -0
  245. package/.codex/skills/leniu-java-entity/SKILL.md +237 -0
  246. package/.codex/skills/leniu-java-entity/references/templates.md +237 -0
  247. package/.codex/skills/leniu-java-logging/SKILL.md +229 -0
  248. package/.codex/skills/leniu-java-logging/references/data-mask.md +46 -0
  249. package/.codex/skills/leniu-java-logging/references/logging-scenarios.md +113 -0
  250. package/.codex/skills/leniu-java-mq/SKILL.md +338 -0
  251. package/.codex/skills/leniu-java-mybatis/SKILL.md +267 -0
  252. package/.codex/skills/leniu-java-mybatis/references/report-mapper.md +88 -0
  253. package/.codex/skills/leniu-java-task/SKILL.md +367 -0
  254. package/.codex/skills/leniu-marketing-scenario/SKILL.md +448 -0
  255. package/.codex/skills/leniu-marketing-scenario/references/pay-meal-rules.md +197 -0
  256. package/.codex/skills/leniu-marketing-scenario/references/price-rules.md +286 -0
  257. package/.codex/skills/leniu-marketing-scenario/references/recharge-rules.md +188 -0
  258. package/.codex/skills/leniu-redis-cache/SKILL.md +331 -0
  259. package/.codex/skills/leniu-report-scenario/SKILL.md +508 -0
  260. package/.codex/skills/leniu-report-scenario/references/amount-handling.md +448 -0
  261. package/.codex/skills/leniu-report-scenario/references/analysis-module.md +64 -0
  262. package/.codex/skills/leniu-report-scenario/references/customization-table-fields.md +93 -0
  263. package/.codex/skills/leniu-report-scenario/references/customization.md +356 -0
  264. package/.codex/skills/leniu-report-scenario/references/data-permission.md +182 -0
  265. package/.codex/skills/leniu-report-scenario/references/export.md +553 -0
  266. package/.codex/skills/leniu-report-scenario/references/mealtime.md +197 -0
  267. package/.codex/skills/leniu-report-scenario/references/query-param.md +274 -0
  268. package/.codex/skills/leniu-report-scenario/references/report-tables.md +162 -0
  269. package/.codex/skills/leniu-report-scenario/references/standard-customization.md +112 -0
  270. package/.codex/skills/leniu-report-scenario/references/standard-table-fields.md +113 -0
  271. package/.codex/skills/leniu-report-scenario/references/total-line.md +179 -0
  272. package/.codex/skills/leniu-security-guard/SKILL.md +306 -0
  273. package/.codex/skills/leniu-utils-toolkit/SKILL.md +380 -0
  274. package/.codex/skills/loki-log-query/SKILL.md +430 -0
  275. package/.codex/skills/loki-log-query/environments.json +45 -0
  276. package/.codex/skills/mysql-debug/SKILL.md +406 -0
  277. package/.codex/skills/next/SKILL.md +137 -0
  278. package/.codex/skills/openspec-apply-change/SKILL.md +165 -0
  279. package/.codex/skills/openspec-archive-change/SKILL.md +122 -0
  280. package/.codex/skills/openspec-bulk-archive-change/SKILL.md +254 -0
  281. package/.codex/skills/openspec-continue-change/SKILL.md +126 -0
  282. package/.codex/skills/openspec-explore/SKILL.md +299 -0
  283. package/.codex/skills/openspec-ff-change/SKILL.md +109 -0
  284. package/.codex/skills/openspec-new-change/SKILL.md +82 -0
  285. package/.codex/skills/openspec-onboard/SKILL.md +414 -0
  286. package/.codex/skills/openspec-sync-specs/SKILL.md +146 -0
  287. package/.codex/skills/openspec-verify-change/SKILL.md +176 -0
  288. package/.codex/skills/performance-doctor/SKILL.md +297 -0
  289. package/.codex/skills/progress/SKILL.md +193 -0
  290. package/.codex/skills/project-navigator/SKILL.md +211 -0
  291. package/.codex/skills/redis-cache/SKILL.md +282 -0
  292. package/.codex/skills/redis-cache/references/listeners.md +23 -0
  293. package/.codex/skills/scheduled-jobs/SKILL.md +277 -0
  294. package/.codex/skills/security-guard/SKILL.md +245 -0
  295. package/.codex/skills/security-guard/references/encrypt-config.md +103 -0
  296. package/.codex/skills/security-guard/references/sensitive-strategies.md +42 -0
  297. package/.codex/skills/skill-creator/LICENSE.txt +202 -0
  298. package/.codex/skills/skill-creator/SKILL.md +479 -0
  299. package/.codex/skills/skill-creator/agents/analyzer.md +274 -0
  300. package/.codex/skills/skill-creator/agents/comparator.md +202 -0
  301. package/.codex/skills/skill-creator/agents/grader.md +223 -0
  302. package/.codex/skills/skill-creator/assets/eval_review.html +146 -0
  303. package/.codex/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  304. package/.codex/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  305. package/.codex/skills/skill-creator/references/schemas.md +430 -0
  306. package/.codex/skills/skill-creator/scripts/__init__.py +0 -0
  307. package/.codex/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  308. package/.codex/skills/skill-creator/scripts/generate_report.py +326 -0
  309. package/.codex/skills/skill-creator/scripts/improve_description.py +248 -0
  310. package/.codex/skills/skill-creator/scripts/package_skill.py +136 -0
  311. package/.codex/skills/skill-creator/scripts/quick_validate.py +103 -0
  312. package/.codex/skills/skill-creator/scripts/run_eval.py +310 -0
  313. package/.codex/skills/skill-creator/scripts/run_loop.py +332 -0
  314. package/.codex/skills/skill-creator/scripts/utils.py +47 -0
  315. package/.codex/skills/sms-mail/SKILL.md +346 -0
  316. package/.codex/skills/sms-mail/references/mail-config.md +88 -0
  317. package/.codex/skills/sms-mail/references/sms-config.md +74 -0
  318. package/.codex/skills/social-login/SKILL.md +328 -0
  319. package/.codex/skills/social-login/references/provider-configs.md +118 -0
  320. package/.codex/skills/start/SKILL.md +154 -0
  321. package/.codex/skills/store-pc/SKILL.md +366 -0
  322. package/.codex/skills/sync/SKILL.md +149 -0
  323. package/.codex/skills/sync-back-merge/SKILL.md +66 -0
  324. package/.codex/skills/task-tracker/SKILL.md +307 -0
  325. package/.codex/skills/tech-decision/SKILL.md +393 -0
  326. package/.codex/skills/tenant-management/SKILL.md +272 -0
  327. package/.codex/skills/tenant-management/references/tenant-scenarios.md +91 -0
  328. package/.codex/skills/test-development/SKILL.md +301 -0
  329. package/.codex/skills/test-development/references/parameterized-examples.md +119 -0
  330. package/.codex/skills/ui-pc/SKILL.md +438 -0
  331. package/.codex/skills/update-status/SKILL.md +159 -0
  332. package/.codex/skills/utils-toolkit/SKILL.md +354 -0
  333. package/.codex/skills/utils-toolkit/references/redis-utils-api.md +56 -0
  334. package/.codex/skills/websocket-sse/SKILL.md +350 -0
  335. package/.codex/skills/workflow-engine/SKILL.md +249 -0
  336. package/.codex/skills/yunxiao-task-management/SKILL.md +401 -0
  337. package/.codex/skills/yunxiao-task-management/templates//346/217/220/346/265/213/345/215/225/346/250/241/346/235/277.html +17 -0
  338. package/.cursor/agents/bug-analyzer.md +102 -0
  339. package/.cursor/agents/code-reviewer.md +122 -0
  340. package/.cursor/agents/code-scanner.md +145 -0
  341. package/.cursor/agents/image-reader.md +154 -0
  342. package/.cursor/agents/loki-runner.md +80 -0
  343. package/.cursor/agents/mysql-runner.md +81 -0
  344. package/.cursor/agents/project-manager.md +159 -0
  345. package/.cursor/agents/requirements-analyzer.md +141 -0
  346. package/.cursor/agents/task-fetcher.md +75 -0
  347. package/.cursor/audio/completed.wav +0 -0
  348. package/.cursor/commands/opsx-apply.md +152 -0
  349. package/.cursor/commands/opsx-archive.md +157 -0
  350. package/.cursor/commands/opsx-bulk-archive.md +242 -0
  351. package/.cursor/commands/opsx-continue.md +114 -0
  352. package/.cursor/commands/opsx-explore.md +174 -0
  353. package/.cursor/commands/opsx-ff.md +94 -0
  354. package/.cursor/commands/opsx-new.md +69 -0
  355. package/.cursor/commands/opsx-onboard.md +525 -0
  356. package/.cursor/commands/opsx-sync.md +134 -0
  357. package/.cursor/commands/opsx-verify.md +164 -0
  358. package/.cursor/hooks/cursor-pre-tool-use.js +122 -0
  359. package/.cursor/hooks/cursor-skill-eval.js +466 -0
  360. package/.cursor/hooks/lib/notify.js +310 -0
  361. package/.cursor/hooks/stop.js +55 -0
  362. package/.cursor/hooks.json +23 -0
  363. package/.cursor/mcp.json +22 -0
  364. package/.cursor/rules/skill-activation.mdc +99 -0
  365. package/.cursor/skills/add-skill/SKILL.md +488 -0
  366. package/.cursor/skills/analyze-requirements/SKILL.md +112 -0
  367. package/.cursor/skills/api-development/SKILL.md +315 -0
  368. package/.cursor/skills/architecture-design/SKILL.md +152 -0
  369. package/.cursor/skills/auto-test/SKILL.md +453 -0
  370. package/.cursor/skills/auto-test/references/api-conventions.md +260 -0
  371. package/.cursor/skills/backend-annotations/SKILL.md +248 -0
  372. package/.cursor/skills/banana-image/CHANGELOG.md +37 -0
  373. package/.cursor/skills/banana-image/README.md +146 -0
  374. package/.cursor/skills/banana-image/SKILL.md +171 -0
  375. package/.cursor/skills/banana-image/assets/logo.png +0 -0
  376. package/.cursor/skills/banana-image/references/advanced-usage.md +189 -0
  377. package/.cursor/skills/banana-image/scripts/apply_template.py +125 -0
  378. package/.cursor/skills/banana-image/scripts/banana_image_exec.ts +412 -0
  379. package/.cursor/skills/banana-image/scripts/batch_prep.py +82 -0
  380. package/.cursor/skills/banana-image/scripts/package-lock.json +1437 -0
  381. package/.cursor/skills/banana-image/scripts/package.json +18 -0
  382. package/.cursor/skills/banana-image/scripts/requirements.txt +10 -0
  383. package/.cursor/skills/banana-image/templates/poster.json +22 -0
  384. package/.cursor/skills/banana-image/templates/product.json +17 -0
  385. package/.cursor/skills/banana-image/templates/social.json +22 -0
  386. package/.cursor/skills/banana-image/templates/thumbnail.json +17 -0
  387. package/.cursor/skills/brainstorm/SKILL.md +216 -0
  388. package/.cursor/skills/bug-detective/SKILL.md +295 -0
  389. package/.cursor/skills/bug-detective/references/error-patterns.md +242 -0
  390. package/.cursor/skills/code-patterns/SKILL.md +163 -0
  391. package/.cursor/skills/code-patterns/references/leniu-code-patterns.md +87 -0
  392. package/.cursor/skills/collaborating-with-codex/SKILL.md +180 -0
  393. package/.cursor/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
  394. package/.cursor/skills/collaborating-with-gemini/SKILL.md +194 -0
  395. package/.cursor/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
  396. package/.cursor/skills/crud-development/SKILL.md +328 -0
  397. package/.cursor/skills/data-permission/SKILL.md +221 -0
  398. package/.cursor/skills/data-permission/references/custom-data-scope.md +90 -0
  399. package/.cursor/skills/database-ops/SKILL.md +210 -0
  400. package/.cursor/skills/error-handler/SKILL.md +310 -0
  401. package/.cursor/skills/file-oss-management/SKILL.md +260 -0
  402. package/.cursor/skills/file-oss-management/references/entities.md +105 -0
  403. package/.cursor/skills/file-oss-management/references/service-impl.md +104 -0
  404. package/.cursor/skills/fix-bug/SKILL.md +269 -0
  405. package/.cursor/skills/git-workflow/SKILL.md +179 -0
  406. package/.cursor/skills/jenkins-deploy/SKILL.md +134 -0
  407. package/.cursor/skills/json-serialization/SKILL.md +341 -0
  408. package/.cursor/skills/lanhu-design/SKILL.md +99 -0
  409. package/.cursor/skills/leniu-api-development/SKILL.md +319 -0
  410. package/.cursor/skills/leniu-api-development/references/real-examples.md +273 -0
  411. package/.cursor/skills/leniu-architecture-design/SKILL.md +383 -0
  412. package/.cursor/skills/leniu-backend-annotations/SKILL.md +277 -0
  413. package/.cursor/skills/leniu-brainstorm/SKILL.md +242 -0
  414. package/.cursor/skills/leniu-brainstorm/references/business-scenarios.md +162 -0
  415. package/.cursor/skills/leniu-code-patterns/SKILL.md +411 -0
  416. package/.cursor/skills/leniu-crud-development/SKILL.md +404 -0
  417. package/.cursor/skills/leniu-crud-development/references/templates.md +597 -0
  418. package/.cursor/skills/leniu-customization-location/SKILL.md +410 -0
  419. package/.cursor/skills/leniu-data-permission/SKILL.md +341 -0
  420. package/.cursor/skills/leniu-database-ops/SKILL.md +426 -0
  421. package/.cursor/skills/leniu-error-handler/SKILL.md +462 -0
  422. package/.cursor/skills/leniu-java-amount-handling/SKILL.md +461 -0
  423. package/.cursor/skills/leniu-java-code-style/SKILL.md +510 -0
  424. package/.cursor/skills/leniu-java-concurrent/SKILL.md +400 -0
  425. package/.cursor/skills/leniu-java-entity/SKILL.md +237 -0
  426. package/.cursor/skills/leniu-java-entity/references/templates.md +237 -0
  427. package/.cursor/skills/leniu-java-logging/SKILL.md +229 -0
  428. package/.cursor/skills/leniu-java-logging/references/data-mask.md +46 -0
  429. package/.cursor/skills/leniu-java-logging/references/logging-scenarios.md +113 -0
  430. package/.cursor/skills/leniu-java-mq/SKILL.md +338 -0
  431. package/.cursor/skills/leniu-java-mybatis/SKILL.md +267 -0
  432. package/.cursor/skills/leniu-java-mybatis/references/report-mapper.md +88 -0
  433. package/.cursor/skills/leniu-java-task/SKILL.md +367 -0
  434. package/.cursor/skills/leniu-marketing-scenario/SKILL.md +448 -0
  435. package/.cursor/skills/leniu-marketing-scenario/references/pay-meal-rules.md +197 -0
  436. package/.cursor/skills/leniu-marketing-scenario/references/price-rules.md +286 -0
  437. package/.cursor/skills/leniu-marketing-scenario/references/recharge-rules.md +188 -0
  438. package/.cursor/skills/leniu-redis-cache/SKILL.md +331 -0
  439. package/.cursor/skills/leniu-report-scenario/SKILL.md +508 -0
  440. package/.cursor/skills/leniu-report-scenario/references/amount-handling.md +448 -0
  441. package/.cursor/skills/leniu-report-scenario/references/analysis-module.md +64 -0
  442. package/.cursor/skills/leniu-report-scenario/references/customization-table-fields.md +93 -0
  443. package/.cursor/skills/leniu-report-scenario/references/customization.md +356 -0
  444. package/.cursor/skills/leniu-report-scenario/references/data-permission.md +182 -0
  445. package/.cursor/skills/leniu-report-scenario/references/export.md +553 -0
  446. package/.cursor/skills/leniu-report-scenario/references/mealtime.md +197 -0
  447. package/.cursor/skills/leniu-report-scenario/references/query-param.md +274 -0
  448. package/.cursor/skills/leniu-report-scenario/references/report-tables.md +162 -0
  449. package/.cursor/skills/leniu-report-scenario/references/standard-customization.md +112 -0
  450. package/.cursor/skills/leniu-report-scenario/references/standard-table-fields.md +113 -0
  451. package/.cursor/skills/leniu-report-scenario/references/total-line.md +179 -0
  452. package/.cursor/skills/leniu-security-guard/SKILL.md +306 -0
  453. package/.cursor/skills/leniu-utils-toolkit/SKILL.md +380 -0
  454. package/.cursor/skills/loki-log-query/SKILL.md +430 -0
  455. package/.cursor/skills/loki-log-query/environments.json +45 -0
  456. package/.cursor/skills/mysql-debug/SKILL.md +406 -0
  457. package/.cursor/skills/openspec-apply-change/SKILL.md +165 -0
  458. package/.cursor/skills/openspec-archive-change/SKILL.md +122 -0
  459. package/.cursor/skills/openspec-bulk-archive-change/SKILL.md +254 -0
  460. package/.cursor/skills/openspec-continue-change/SKILL.md +126 -0
  461. package/.cursor/skills/openspec-explore/SKILL.md +299 -0
  462. package/.cursor/skills/openspec-ff-change/SKILL.md +109 -0
  463. package/.cursor/skills/openspec-new-change/SKILL.md +82 -0
  464. package/.cursor/skills/openspec-onboard/SKILL.md +414 -0
  465. package/.cursor/skills/openspec-sync-specs/SKILL.md +146 -0
  466. package/.cursor/skills/openspec-verify-change/SKILL.md +176 -0
  467. package/.cursor/skills/performance-doctor/SKILL.md +297 -0
  468. package/.cursor/skills/project-navigator/SKILL.md +211 -0
  469. package/.cursor/skills/redis-cache/SKILL.md +282 -0
  470. package/.cursor/skills/redis-cache/references/listeners.md +23 -0
  471. package/.cursor/skills/scheduled-jobs/SKILL.md +277 -0
  472. package/.cursor/skills/security-guard/SKILL.md +245 -0
  473. package/.cursor/skills/security-guard/references/encrypt-config.md +103 -0
  474. package/.cursor/skills/security-guard/references/sensitive-strategies.md +42 -0
  475. package/.cursor/skills/skill-creator/LICENSE.txt +202 -0
  476. package/.cursor/skills/skill-creator/SKILL.md +479 -0
  477. package/.cursor/skills/skill-creator/agents/analyzer.md +274 -0
  478. package/.cursor/skills/skill-creator/agents/comparator.md +202 -0
  479. package/.cursor/skills/skill-creator/agents/grader.md +223 -0
  480. package/.cursor/skills/skill-creator/assets/eval_review.html +146 -0
  481. package/.cursor/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  482. package/.cursor/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  483. package/.cursor/skills/skill-creator/references/schemas.md +430 -0
  484. package/.cursor/skills/skill-creator/scripts/__init__.py +0 -0
  485. package/.cursor/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  486. package/.cursor/skills/skill-creator/scripts/generate_report.py +326 -0
  487. package/.cursor/skills/skill-creator/scripts/improve_description.py +248 -0
  488. package/.cursor/skills/skill-creator/scripts/package_skill.py +136 -0
  489. package/.cursor/skills/skill-creator/scripts/quick_validate.py +103 -0
  490. package/.cursor/skills/skill-creator/scripts/run_eval.py +310 -0
  491. package/.cursor/skills/skill-creator/scripts/run_loop.py +332 -0
  492. package/.cursor/skills/skill-creator/scripts/utils.py +47 -0
  493. package/.cursor/skills/sms-mail/SKILL.md +346 -0
  494. package/.cursor/skills/sms-mail/references/mail-config.md +88 -0
  495. package/.cursor/skills/sms-mail/references/sms-config.md +74 -0
  496. package/.cursor/skills/social-login/SKILL.md +328 -0
  497. package/.cursor/skills/social-login/references/provider-configs.md +118 -0
  498. package/.cursor/skills/store-pc/SKILL.md +366 -0
  499. package/.cursor/skills/sync-back-merge/SKILL.md +66 -0
  500. package/.cursor/skills/task-tracker/SKILL.md +307 -0
  501. package/.cursor/skills/tech-decision/SKILL.md +393 -0
  502. package/.cursor/skills/tenant-management/SKILL.md +272 -0
  503. package/.cursor/skills/tenant-management/references/tenant-scenarios.md +91 -0
  504. package/.cursor/skills/test-development/SKILL.md +301 -0
  505. package/.cursor/skills/test-development/references/parameterized-examples.md +119 -0
  506. package/.cursor/skills/ui-pc/SKILL.md +438 -0
  507. package/.cursor/skills/utils-toolkit/SKILL.md +354 -0
  508. package/.cursor/skills/utils-toolkit/references/redis-utils-api.md +56 -0
  509. package/.cursor/skills/websocket-sse/SKILL.md +350 -0
  510. package/.cursor/skills/workflow-engine/SKILL.md +249 -0
  511. package/.cursor/skills/yunxiao-task-management/SKILL.md +401 -0
  512. package/.cursor/skills/yunxiao-task-management/templates//346/217/220/346/265/213/345/215/225/346/250/241/346/235/277.html +17 -0
  513. package/.cursor/templates/env-config.md +27 -0
  514. package/AGENTS.md +275 -0
  515. package/CLAUDE.md +285 -0
  516. package/README.md +104 -0
  517. package/bin/index.js +3069 -0
  518. package/init.sh +178 -0
  519. package/package.json +40 -0
  520. package/scripts/build-skills.js +180 -0
  521. package/src/platform-map.json +100 -0
  522. package/src/skills/add-skill/SKILL.md +488 -0
  523. package/src/skills/add-todo/SKILL.md +269 -0
  524. package/src/skills/analyze-requirements/SKILL.md +112 -0
  525. package/src/skills/api-development/SKILL.md +315 -0
  526. package/src/skills/architecture-design/SKILL.md +152 -0
  527. package/src/skills/backend-annotations/SKILL.md +248 -0
  528. package/src/skills/banana-image/CHANGELOG.md +37 -0
  529. package/src/skills/banana-image/README.md +146 -0
  530. package/src/skills/banana-image/SKILL.md +171 -0
  531. package/src/skills/banana-image/assets/logo.png +0 -0
  532. package/src/skills/banana-image/references/advanced-usage.md +189 -0
  533. package/src/skills/banana-image/scripts/apply_template.py +125 -0
  534. package/src/skills/banana-image/scripts/banana_image_exec.ts +412 -0
  535. package/src/skills/banana-image/scripts/batch_prep.py +82 -0
  536. package/src/skills/banana-image/scripts/package-lock.json +1437 -0
  537. package/src/skills/banana-image/scripts/package.json +18 -0
  538. package/src/skills/banana-image/scripts/requirements.txt +10 -0
  539. package/src/skills/banana-image/templates/poster.json +22 -0
  540. package/src/skills/banana-image/templates/product.json +17 -0
  541. package/src/skills/banana-image/templates/social.json +22 -0
  542. package/src/skills/banana-image/templates/thumbnail.json +17 -0
  543. package/src/skills/brainstorm/SKILL.md +216 -0
  544. package/src/skills/bug-detective/SKILL.md +295 -0
  545. package/src/skills/bug-detective/references/error-patterns.md +242 -0
  546. package/src/skills/check/SKILL.md +367 -0
  547. package/src/skills/code-patterns/SKILL.md +163 -0
  548. package/src/skills/code-patterns/references/leniu-code-patterns.md +87 -0
  549. package/src/skills/codex-code-review/SKILL.md +327 -0
  550. package/src/skills/collaborating-with-codex/SKILL.md +180 -0
  551. package/src/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
  552. package/src/skills/collaborating-with-gemini/SKILL.md +194 -0
  553. package/src/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
  554. package/src/skills/crud/SKILL.md +265 -0
  555. package/src/skills/crud-development/SKILL.md +328 -0
  556. package/src/skills/data-permission/SKILL.md +221 -0
  557. package/src/skills/data-permission/references/custom-data-scope.md +90 -0
  558. package/src/skills/database-ops/SKILL.md +210 -0
  559. package/src/skills/dev/SKILL.md +187 -0
  560. package/src/skills/error-handler/SKILL.md +310 -0
  561. package/src/skills/file-oss-management/SKILL.md +260 -0
  562. package/src/skills/file-oss-management/references/entities.md +105 -0
  563. package/src/skills/file-oss-management/references/service-impl.md +104 -0
  564. package/src/skills/fix-bug/SKILL.md +269 -0
  565. package/src/skills/git-workflow/SKILL.md +179 -0
  566. package/src/skills/init-docs/SKILL.md +194 -0
  567. package/src/skills/json-serialization/SKILL.md +341 -0
  568. package/src/skills/leniu-api-development/SKILL.md +319 -0
  569. package/src/skills/leniu-api-development/references/real-examples.md +273 -0
  570. package/src/skills/leniu-architecture-design/SKILL.md +383 -0
  571. package/src/skills/leniu-backend-annotations/SKILL.md +277 -0
  572. package/src/skills/leniu-brainstorm/SKILL.md +242 -0
  573. package/src/skills/leniu-brainstorm/references/business-scenarios.md +162 -0
  574. package/src/skills/leniu-code-patterns/SKILL.md +411 -0
  575. package/src/skills/leniu-crud-development/SKILL.md +404 -0
  576. package/src/skills/leniu-crud-development/references/templates.md +597 -0
  577. package/src/skills/leniu-customization-location/SKILL.md +410 -0
  578. package/src/skills/leniu-data-permission/SKILL.md +341 -0
  579. package/src/skills/leniu-database-ops/SKILL.md +426 -0
  580. package/src/skills/leniu-error-handler/SKILL.md +462 -0
  581. package/src/skills/leniu-java-amount-handling/SKILL.md +461 -0
  582. package/src/skills/leniu-java-code-style/SKILL.md +510 -0
  583. package/src/skills/leniu-java-concurrent/SKILL.md +400 -0
  584. package/src/skills/leniu-java-entity/SKILL.md +237 -0
  585. package/src/skills/leniu-java-entity/references/templates.md +237 -0
  586. package/src/skills/leniu-java-export/SKILL.md +570 -0
  587. package/src/skills/leniu-java-logging/SKILL.md +229 -0
  588. package/src/skills/leniu-java-logging/references/data-mask.md +46 -0
  589. package/src/skills/leniu-java-logging/references/logging-scenarios.md +113 -0
  590. package/src/skills/leniu-java-mq/SKILL.md +338 -0
  591. package/src/skills/leniu-java-mybatis/SKILL.md +267 -0
  592. package/src/skills/leniu-java-mybatis/references/report-mapper.md +88 -0
  593. package/src/skills/leniu-java-report-query-param/SKILL.md +291 -0
  594. package/src/skills/leniu-java-task/SKILL.md +367 -0
  595. package/src/skills/leniu-java-total-line/SKILL.md +196 -0
  596. package/src/skills/leniu-marketing-price-rule-customizer/SKILL.md +301 -0
  597. package/src/skills/leniu-marketing-recharge-rule-customizer/SKILL.md +285 -0
  598. package/src/skills/leniu-mealtime/SKILL.md +215 -0
  599. package/src/skills/leniu-redis-cache/SKILL.md +331 -0
  600. package/src/skills/leniu-report-customization/SKILL.md +415 -0
  601. package/src/skills/leniu-report-customization/references/table-fields.md +93 -0
  602. package/src/skills/leniu-report-standard-customization/SKILL.md +391 -0
  603. package/src/skills/leniu-report-standard-customization/references/analysis-module.md +64 -0
  604. package/src/skills/leniu-report-standard-customization/references/table-fields.md +113 -0
  605. package/src/skills/leniu-security-guard/SKILL.md +306 -0
  606. package/src/skills/leniu-utils-toolkit/SKILL.md +380 -0
  607. package/src/skills/loki-log-query/SKILL.md +400 -0
  608. package/src/skills/loki-log-query/environments.json +45 -0
  609. package/src/skills/mysql-debug/SKILL.md +400 -0
  610. package/src/skills/next/SKILL.md +137 -0
  611. package/src/skills/openspec-apply-change/SKILL.md +165 -0
  612. package/src/skills/openspec-archive-change/SKILL.md +122 -0
  613. package/src/skills/openspec-bulk-archive-change/SKILL.md +254 -0
  614. package/src/skills/openspec-continue-change/SKILL.md +126 -0
  615. package/src/skills/openspec-explore/SKILL.md +299 -0
  616. package/src/skills/openspec-ff-change/SKILL.md +109 -0
  617. package/src/skills/openspec-new-change/SKILL.md +82 -0
  618. package/src/skills/openspec-onboard/SKILL.md +414 -0
  619. package/src/skills/openspec-sync-specs/SKILL.md +146 -0
  620. package/src/skills/openspec-verify-change/SKILL.md +176 -0
  621. package/src/skills/performance-doctor/SKILL.md +297 -0
  622. package/src/skills/progress/SKILL.md +193 -0
  623. package/src/skills/project-navigator/SKILL.md +211 -0
  624. package/src/skills/redis-cache/SKILL.md +282 -0
  625. package/src/skills/redis-cache/references/listeners.md +23 -0
  626. package/src/skills/scheduled-jobs/SKILL.md +277 -0
  627. package/src/skills/security-guard/SKILL.md +245 -0
  628. package/src/skills/security-guard/references/encrypt-config.md +103 -0
  629. package/src/skills/security-guard/references/sensitive-strategies.md +42 -0
  630. package/src/skills/skill-creator/LICENSE.txt +202 -0
  631. package/src/skills/skill-creator/SKILL.md +479 -0
  632. package/src/skills/skill-creator/agents/analyzer.md +274 -0
  633. package/src/skills/skill-creator/agents/comparator.md +202 -0
  634. package/src/skills/skill-creator/agents/grader.md +223 -0
  635. package/src/skills/skill-creator/assets/eval_review.html +146 -0
  636. package/src/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  637. package/src/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  638. package/src/skills/skill-creator/references/schemas.md +430 -0
  639. package/src/skills/skill-creator/scripts/__init__.py +0 -0
  640. package/src/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  641. package/src/skills/skill-creator/scripts/generate_report.py +326 -0
  642. package/src/skills/skill-creator/scripts/improve_description.py +248 -0
  643. package/src/skills/skill-creator/scripts/package_skill.py +136 -0
  644. package/src/skills/skill-creator/scripts/quick_validate.py +103 -0
  645. package/src/skills/skill-creator/scripts/run_eval.py +310 -0
  646. package/src/skills/skill-creator/scripts/run_loop.py +332 -0
  647. package/src/skills/skill-creator/scripts/utils.py +47 -0
  648. package/src/skills/sms-mail/SKILL.md +346 -0
  649. package/src/skills/sms-mail/references/mail-config.md +88 -0
  650. package/src/skills/sms-mail/references/sms-config.md +74 -0
  651. package/src/skills/social-login/SKILL.md +328 -0
  652. package/src/skills/social-login/references/provider-configs.md +118 -0
  653. package/src/skills/start/SKILL.md +154 -0
  654. package/src/skills/store-pc/SKILL.md +366 -0
  655. package/src/skills/sync/SKILL.md +149 -0
  656. package/src/skills/sync-back-merge/SKILL.md +66 -0
  657. package/src/skills/task-tracker/SKILL.md +307 -0
  658. package/src/skills/tech-decision/SKILL.md +393 -0
  659. package/src/skills/tenant-management/SKILL.md +272 -0
  660. package/src/skills/tenant-management/references/tenant-scenarios.md +91 -0
  661. package/src/skills/test-development/SKILL.md +301 -0
  662. package/src/skills/test-development/references/parameterized-examples.md +119 -0
  663. package/src/skills/ui-pc/SKILL.md +438 -0
  664. package/src/skills/update-status/SKILL.md +159 -0
  665. package/src/skills/utils-toolkit/SKILL.md +354 -0
  666. package/src/skills/utils-toolkit/references/redis-utils-api.md +56 -0
  667. package/src/skills/websocket-sse/SKILL.md +350 -0
  668. package/src/skills/workflow-engine/SKILL.md +249 -0
  669. package/src/skills/yunxiao-task-management/SKILL.md +401 -0
  670. package/src/skills/yunxiao-task-management/templates//346/217/220/346/265/213/345/215/225/346/250/241/346/235/277.html +17 -0
@@ -0,0 +1,163 @@
1
+ ---
2
+ name: code-patterns
3
+ description: |
4
+ 通用编码规范指南。涵盖 RESTful API 设计、命名规范、Git 提交规范、代码风格等。
5
+ 触发场景:代码审查、规范检查、命名讨论、API 设计。
6
+ 触发词:编码规范、代码风格、命名规范、RESTful、Git 提交。
7
+ 注意:如果项目有专属技能(如 `leniu-code-patterns`),优先使用专属版本。
8
+ ---
9
+
10
+ # 编码规范指南
11
+
12
+ > 通用模板。如果项目有专属技能(如 `leniu-code-patterns`),优先使用。
13
+
14
+ ## 核心规范
15
+
16
+ ### RESTful API 设计
17
+
18
+ | 操作 | HTTP 方法 | URL 示例 | 说明 |
19
+ |------|----------|---------|------|
20
+ | 创建 | POST | `/api/v1/orders` | 请求体传参 |
21
+ | 查询列表 | GET | `/api/v1/orders` | Query 参数分页 |
22
+ | 查询详情 | GET | `/api/v1/orders/{id}` | 路径参数 |
23
+ | 全量更新 | PUT | `/api/v1/orders/{id}` | 请求体传参 |
24
+ | 部分更新 | PATCH | `/api/v1/orders/{id}` | 请求体传参 |
25
+ | 删除 | DELETE | `/api/v1/orders/{id}` | 路径参数 |
26
+
27
+ **URL 规范**:
28
+ - 使用名词复数:`/orders` 而非 `/order`
29
+ - 使用小写连字符:`/order-items` 而非 `/orderItems`
30
+ - 版本号放 URL 前缀:`/api/v1/`
31
+ - 嵌套资源不超过两层:`/orders/{id}/items`
32
+
33
+ ### 命名规范
34
+
35
+ | 类型 | 风格 | 示例 |
36
+ |------|------|------|
37
+ | 类名 | UpperCamelCase | `OrderService`, `UserController` |
38
+ | 方法名 | lowerCamelCase | `createOrder()`, `getUserById()` |
39
+ | 变量名 | lowerCamelCase | `orderNo`, `userName` |
40
+ | 常量 | UPPER_SNAKE_CASE | `MAX_RETRY_COUNT`, `DEFAULT_PAGE_SIZE` |
41
+ | 包名 | 全小写 | `com.example.order` |
42
+ | 数据库表/字段 | lower_snake_case | `t_order`, `order_no` |
43
+
44
+ **类命名约定**:
45
+
46
+ | 后缀 | 用途 | 示例 |
47
+ |------|------|------|
48
+ | `Controller` | 控制器 | `OrderController` |
49
+ | `Service` / `ServiceImpl` | 服务层 | `OrderServiceImpl` |
50
+ | `Mapper` / `Repository` | 数据访问 | `OrderMapper` |
51
+ | `DTO` | 请求参数 | `OrderCreateDTO` |
52
+ | `VO` | 响应对象 | `OrderVO` |
53
+ | `Enum` | 枚举 | `OrderStatusEnum` |
54
+ | `Config` | 配置类 | `RedisConfig` |
55
+ | `Handler` | 处理器 | `GlobalExceptionHandler` |
56
+ | `Interceptor` | 拦截器 | `AuthInterceptor` |
57
+ | `Utils` / `Helper` | 工具类 | `DateUtils` |
58
+
59
+ ### 方法命名约定
60
+
61
+ | 前缀 | 含义 | 示例 |
62
+ |------|------|------|
63
+ | `create` / `add` | 创建 | `createOrder()` |
64
+ | `update` / `modify` | 更新 | `updateStatus()` |
65
+ | `delete` / `remove` | 删除 | `deleteById()` |
66
+ | `get` / `find` / `query` | 查询 | `getById()`, `findByName()` |
67
+ | `list` | 查询列表 | `listByStatus()` |
68
+ | `page` | 分页查询 | `pageQuery()` |
69
+ | `count` | 计数 | `countByStatus()` |
70
+ | `is` / `has` / `can` | 布尔判断 | `isValid()`, `hasPermission()` |
71
+ | `check` / `validate` | 校验 | `checkDuplicate()` |
72
+ | `convert` / `to` | 转换 | `convertToVO()`, `toDTO()` |
73
+
74
+ ### Git 提交规范(Conventional Commits)
75
+
76
+ ```
77
+ <type>(<scope>): <subject>
78
+
79
+ <body>
80
+
81
+ <footer>
82
+ ```
83
+
84
+ | type | 说明 |
85
+ |------|------|
86
+ | `feat` | 新功能 |
87
+ | `fix` | 修复 Bug |
88
+ | `docs` | 文档变更 |
89
+ | `style` | 代码格式(不影响逻辑) |
90
+ | `refactor` | 重构(非新功能、非修复) |
91
+ | `perf` | 性能优化 |
92
+ | `test` | 测试相关 |
93
+ | `chore` | 构建/工具变更 |
94
+
95
+ **示例**:
96
+ ```
97
+ feat(order): 新增订单导出功能
98
+
99
+ 支持按时间范围导出订单数据为 Excel 格式。
100
+
101
+ Closes #123
102
+ ```
103
+
104
+ ## 代码示例
105
+
106
+ ### 统一响应格式
107
+
108
+ ```java
109
+ @Data
110
+ @AllArgsConstructor
111
+ @NoArgsConstructor
112
+ public class Result<T> {
113
+ private int code;
114
+ private String message;
115
+ private T data;
116
+
117
+ public static <T> Result<T> ok(T data) {
118
+ return new Result<>(200, "success", data);
119
+ }
120
+
121
+ public static <T> Result<T> fail(int code, String message) {
122
+ return new Result<>(code, message, null);
123
+ }
124
+ }
125
+ ```
126
+
127
+ ### 枚举定义规范
128
+
129
+ ```java
130
+ @Getter
131
+ @AllArgsConstructor
132
+ public enum OrderStatusEnum {
133
+
134
+ PENDING(0, "待处理"),
135
+ COMPLETED(1, "已完成"),
136
+ CANCELLED(2, "已取消");
137
+
138
+ private final int code;
139
+ private final String desc;
140
+
141
+ public static OrderStatusEnum of(int code) {
142
+ for (OrderStatusEnum status : values()) {
143
+ if (status.code == code) {
144
+ return status;
145
+ }
146
+ }
147
+ throw new IllegalArgumentException("未知状态码: " + code);
148
+ }
149
+ }
150
+ ```
151
+
152
+ ## 常见错误
153
+
154
+ | 错误 | 正确做法 |
155
+ |------|---------|
156
+ | URL 用动词:`/getOrder` | 用名词 + HTTP 方法:`GET /orders/{id}` |
157
+ | 方法名含义不清:`process()` | 明确动作:`calculateTotalAmount()` |
158
+ | 魔法数字:`if (status == 1)` | 用枚举或常量 |
159
+ | 一个方法超过 80 行 | 拆分为多个私有方法 |
160
+ | 注释描述"做了什么" | 注释描述"为什么这样做" |
161
+ | Git 提交信息写"fix bug" | 写清楚修了什么:`fix(order): 修复金额计算精度丢失` |
162
+ | Boolean 变量名:`flag` | 有意义的名字:`isActive`, `hasPermission` |
163
+ | 缩写命名:`usr`, `mgr` | 完整命名:`user`, `manager` |
@@ -0,0 +1,87 @@
1
+ # leniu-tengyun-core 代码模式详解
2
+
3
+ ## Hutool 工具类完整用法
4
+
5
+ ```java
6
+ import cn.hutool.core.collection.CollUtil;
7
+ import cn.hutool.core.util.ObjectUtil;
8
+ import cn.hutool.core.util.StrUtil;
9
+ import cn.hutool.core.bean.BeanUtil;
10
+
11
+ // 1. 集合操作
12
+ if (CollUtil.isEmpty(list)) {
13
+ throw new LeException("列表不能为空");
14
+ }
15
+ if (CollUtil.isNotEmpty(list)) {
16
+ // 处理列表
17
+ }
18
+
19
+ // 2. 对象判空
20
+ if (ObjectUtil.isNull(user)) {
21
+ throw new LeException("用户不存在");
22
+ }
23
+
24
+ // 3. 字符串操作
25
+ if (StrUtil.isBlank(name)) {
26
+ throw new LeException("名称不能为空");
27
+ }
28
+ String trimmed = StrUtil.trim(name);
29
+ String joined = StrUtil.join(",", list);
30
+
31
+ // 4. 对象拷贝
32
+ TargetDTO target = BeanUtil.copyProperties(source, TargetDTO.class);
33
+ List<TargetDTO> targets = BeanUtil.copyToList(sources, TargetDTO.class);
34
+
35
+ // 5. 集合创建
36
+ List<String> list = CollUtil.newArrayList("a", "b", "c");
37
+ Map<String, Object> map = CollUtil.newHashMap();
38
+ ```
39
+
40
+ ## 国际化消息
41
+
42
+ ```java
43
+ import net.xnzn.core.common.i18n.I18n;
44
+
45
+ // RuoYi-Vue-Plus 风格
46
+ throw new ServiceException(MessageUtils.message("user.not.exists"));
47
+
48
+ // leniu-tengyun-core 风格
49
+ throw new LeException(I18n.getMessage("user.not.exists"));
50
+
51
+ // 带参数
52
+ throw new LeException(I18n.getMessage("user.password.retry.limit.exceed", maxRetryCount));
53
+ ```
54
+
55
+ ## 租户上下文
56
+
57
+ ```java
58
+ import net.xnzn.core.context.TenantContextHolder;
59
+
60
+ Long tenantId = TenantContextHolder.getTenantId();
61
+ TenantContextHolder.setTenantId(tenantId);
62
+ TenantContextHolder.clear();
63
+ ```
64
+
65
+ ## 分页参数处理
66
+
67
+ ```java
68
+ @Data
69
+ public class XxxQueryParam implements Serializable {
70
+ @ApiModelProperty(value = "分页参数", required = true)
71
+ @NotNull(message = "分页参数不能为空")
72
+ private PageDTO page;
73
+
74
+ @ApiModelProperty("关键字")
75
+ private String keyword;
76
+
77
+ @ApiModelProperty("状态")
78
+ private Integer status;
79
+ }
80
+
81
+ // Service 层
82
+ public Page<XxxVO> pageList(XxxQueryParam param) {
83
+ PageMethod.startPage(param.getPage().getPageNum(), param.getPage().getPageSize());
84
+ List<XxxEntity> list = xxxMapper.selectList(buildWrapper(param));
85
+ return new Page<>(list);
86
+ }
87
+ ```
@@ -0,0 +1,180 @@
1
+ ---
2
+ name: collaborating-with-codex
3
+ description: |
4
+ 与 Codex MCP 协同开发。通过 GuDaStudio/codexmcp 集成,使用 mcp__codex__codex 工具。
5
+ 默认沙箱:read-only(严禁 codex 修改真实代码)。
6
+
7
+ 触发场景:
8
+ - 需要算法实现或复杂逻辑分析
9
+ - 需要代码审查和 Bug 分析
10
+ - 需要生成 Unified Diff 补丁
11
+ - 用户明确要求使用 Codex 协作
12
+ - 复杂后端逻辑的原型设计
13
+
14
+ 触发词:Codex、协作、多模型、原型、Diff、算法分析、代码审查、codex协同
15
+
16
+ 前置要求:
17
+ - 已通过 `claude mcp add codex -s user --transport stdio -- uvx --from git+https://github.com/GuDaStudio/codexmcp.git codexmcp` 注册
18
+ - ~/.claude/settings.json 的 permissions.allow 已加入 mcp__codex__codex
19
+ ---
20
+
21
+ # 与 Codex MCP 协同开发
22
+
23
+ > 通过 `mcp__codex__codex` 工具直接调用,无需命令行。始终使用 `read-only` 沙箱,要求 codex 只输出 unified diff patch。
24
+
25
+ ---
26
+
27
+ ## MCP 工具说明
28
+
29
+ ### 工具名
30
+ `mcp__codex__codex`
31
+
32
+ ### 参数
33
+
34
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
35
+ |------|------|------|--------|------|
36
+ | `PROMPT` | string | ✅ | - | 发送给 Codex 的任务指令(建议用英语) |
37
+ | `cd` | Path | ✅ | - | 工作目录根路径(必须存在) |
38
+ | `sandbox` | string | ❌ | `read-only` | `read-only` / `workspace-write` / `danger-full-access` |
39
+ | `SESSION_ID` | UUID | ❌ | None | 继续之前的会话,保持上下文 |
40
+ | `return_all_messages` | bool | ❌ | False | 是否返回推理过程和工具调用详情 |
41
+ | `model` | string | ❌ | None | 指定模型(None 使用用户默认配置) |
42
+ | `image` | List[Path] | ❌ | None | 附加图片文件 |
43
+ | `yolo` | bool | ❌ | False | 跳过沙箱审批(危险,不推荐) |
44
+ | `profile` | string | ❌ | None | 从 `~/.codex/config.toml` 加载的配置名 |
45
+ | `skip_git_repo_check` | bool | ❌ | False | 允许在非 Git 仓库中运行 |
46
+
47
+ ### 返回值
48
+
49
+ ```json
50
+ // 成功
51
+ {
52
+ "success": true,
53
+ "SESSION_ID": "uuid-string", // 必须保存,用于多轮交互
54
+ "agent_messages": "codex回复内容"
55
+ }
56
+
57
+ // 失败
58
+ {
59
+ "success": false,
60
+ "error": "错误信息"
61
+ }
62
+ ```
63
+
64
+ ---
65
+
66
+ ## 标准协作流程
67
+
68
+ ```
69
+ 1. 需求分析阶段
70
+ Claude 形成初步分析 → 告知 codex → codex 完善方案
71
+
72
+ 2. 编码前(原型阶段)
73
+ 调用 codex(read-only)→ 要求输出 unified diff patch
74
+ Claude 以 diff 为逻辑参考 → 重写为生产级代码
75
+
76
+ 3. 编码后(审查阶段)
77
+ 调用 codex review 改动 → 验证需求完成度和代码质量
78
+ ```
79
+
80
+ ---
81
+
82
+ ## 调用示例
83
+
84
+ ### 场景一:需求分析完善
85
+
86
+ ```
87
+ PROMPT: "Here is my requirement: [需求描述]. My initial approach: [初步思路].
88
+ Please review and improve the analysis and implementation plan.
89
+ Output: structured analysis with potential risks."
90
+
91
+ cd: /path/to/project
92
+ sandbox: read-only
93
+ ```
94
+
95
+ ### 场景二:获取代码原型(Diff)
96
+
97
+ ```
98
+ PROMPT: "Generate a unified diff patch to implement [功能描述].
99
+ File: [目标文件路径]
100
+ Requirements:
101
+ - [要求1]
102
+ - [要求2]
103
+
104
+ IMPORTANT: Output unified diff patch ONLY. Do NOT modify any real files.
105
+ IMPORTANT: All Java comments and SQL COMMENTs MUST be in Chinese."
106
+
107
+ cd: /path/to/project
108
+ sandbox: read-only
109
+ ```
110
+
111
+ ### 场景三:代码审查
112
+
113
+ ```
114
+ PROMPT: "Review the following code changes for correctness, performance, and security.
115
+ [粘贴代码或说明文件路径]
116
+
117
+ Check:
118
+ 1. Logic correctness
119
+ 2. Edge cases
120
+ 3. Performance issues
121
+ 4. Security vulnerabilities
122
+
123
+ Output: review with line numbers and severity (CRITICAL/WARNING/INFO)."
124
+
125
+ cd: /path/to/project
126
+ sandbox: read-only
127
+ ```
128
+
129
+ ### 场景四:多轮交互(继续会话)
130
+
131
+ ```
132
+ // 第一轮
133
+ SESSION_ID: None → 保存返回的 SESSION_ID
134
+
135
+ // 第二轮
136
+ SESSION_ID: "上一轮返回的 uuid"
137
+ PROMPT: "Now refine the diff based on the feedback: [反馈内容]"
138
+ ```
139
+
140
+ ---
141
+
142
+ ## 协作分工原则
143
+
144
+ | 角色 | Claude Code 负责 | Codex 负责 |
145
+ |------|-----------------|-----------|
146
+ | **架构** | 设计决策、规范审校 | 分析现有代码结构 |
147
+ | **开发** | 规范重写、最终代码实施 | 输出原型 diff(只读参考) |
148
+ | **审查** | 规范检查、最终判定 | 逐文件逻辑审查 |
149
+ | **调试** | 日志分析、问题定位 | 深度代码分析、补丁建议 |
150
+
151
+ ### 重要约束
152
+
153
+ 1. **只读优先**:始终使用 `sandbox="read-only"`
154
+ 2. **英语 Prompt**:与 codex 交互用英语,代码注释要求中文
155
+ 3. **脏原型思维**:codex 输出视为草稿,Claude 按项目规范重构
156
+ 4. **保存 SESSION_ID**:每次调用后记录,多轮对话时传入
157
+ 5. **质疑 codex**:codex 仅供参考,必须有独立判断
158
+
159
+ ---
160
+
161
+ ## 故障排除
162
+
163
+ | 问题 | 解决方案 |
164
+ |------|---------|
165
+ | 工具未出现 | 重启 Claude Code,检查 `~/.claude.json` 中 codex 配置 |
166
+ | `cd` 参数报错 | 确认目录存在,使用绝对路径 |
167
+ | 连接超时 | 检查网络,`uvx --from git+https://github.com/GuDaStudio/codexmcp.git codexmcp` 手动测试 |
168
+ | SESSION_ID 失效 | 重新开启新会话(不传 SESSION_ID) |
169
+ | codex 修改了文件 | 确认 `sandbox="read-only"` 已设置 |
170
+
171
+ ## 安装验证
172
+
173
+ ```bash
174
+ # 查看 MCP 配置
175
+ cat ~/.claude.json | python3 -c "import json,sys; d=json.load(sys.stdin); print(d.get('mcpServers', {}).get('codex', 'not found'))"
176
+
177
+ # 重启后运行
178
+ claude mcp list
179
+ # 期望看到: codex: uvx ... - ✓ Connected
180
+ ```
@@ -0,0 +1,275 @@
1
+ """
2
+ Codex Bridge Script for Claude Agent Skills.
3
+ Wraps the Codex CLI to provide a JSON-based interface for Claude.
4
+ """
5
+ from __future__ import annotations
6
+
7
+ import json
8
+ import re
9
+ import os
10
+ import sys
11
+ import queue
12
+ import subprocess
13
+ import threading
14
+ import time
15
+ import shutil
16
+ import argparse
17
+ from pathlib import Path
18
+ from typing import Generator, List, Optional
19
+
20
+
21
+ def _get_windows_npm_paths() -> List[Path]:
22
+ """Return candidate directories for npm global installs on Windows."""
23
+ if os.name != "nt":
24
+ return []
25
+ paths: List[Path] = []
26
+ env = os.environ
27
+ if prefix := env.get("NPM_CONFIG_PREFIX") or env.get("npm_config_prefix"):
28
+ paths.append(Path(prefix))
29
+ if appdata := env.get("APPDATA"):
30
+ paths.append(Path(appdata) / "npm")
31
+ if localappdata := env.get("LOCALAPPDATA"):
32
+ paths.append(Path(localappdata) / "npm")
33
+ if programfiles := env.get("ProgramFiles"):
34
+ paths.append(Path(programfiles) / "nodejs")
35
+ return paths
36
+
37
+
38
+ def _augment_path_env(env: dict) -> None:
39
+ """Prepend npm global directories to PATH if missing."""
40
+ if os.name != "nt":
41
+ return
42
+ path_key = next((k for k in env if k.upper() == "PATH"), "PATH")
43
+ path_entries = [p for p in env.get(path_key, "").split(os.pathsep) if p]
44
+ lower_set = {p.lower() for p in path_entries}
45
+ for candidate in _get_windows_npm_paths():
46
+ if candidate.is_dir() and str(candidate).lower() not in lower_set:
47
+ path_entries.insert(0, str(candidate))
48
+ lower_set.add(str(candidate).lower())
49
+ env[path_key] = os.pathsep.join(path_entries)
50
+
51
+
52
+ def _resolve_executable(name: str, env: dict) -> str:
53
+ """Resolve executable path, checking npm directories for .cmd/.bat on Windows."""
54
+ if os.path.isabs(name) or os.sep in name or (os.altsep and os.altsep in name):
55
+ return name
56
+ path_key = next((k for k in env if k.upper() == "PATH"), "PATH")
57
+ if resolved := shutil.which(name, path=env.get(path_key)):
58
+ return resolved
59
+ if os.name == "nt":
60
+ for base in _get_windows_npm_paths():
61
+ for ext in (".cmd", ".bat", ".exe"):
62
+ candidate = base / f"{name}{ext}"
63
+ if candidate.is_file():
64
+ return str(candidate)
65
+ return name
66
+
67
+
68
+ def run_shell_command(cmd: List[str], stdin_data: Optional[str] = None) -> Generator[str, None, None]:
69
+ """Execute a command and stream its output line-by-line.
70
+
71
+ Args:
72
+ cmd: Command and arguments as a list
73
+ stdin_data: Optional string to pass to the process via stdin
74
+ """
75
+ env = os.environ.copy()
76
+ _augment_path_env(env)
77
+
78
+ popen_cmd = cmd.copy()
79
+ exe_path = _resolve_executable(cmd[0], env)
80
+ popen_cmd[0] = exe_path
81
+
82
+ process = subprocess.Popen(
83
+ popen_cmd,
84
+ shell=False,
85
+ stdin=subprocess.PIPE if stdin_data else subprocess.DEVNULL,
86
+ stdout=subprocess.PIPE,
87
+ stderr=subprocess.STDOUT,
88
+ universal_newlines=True,
89
+ encoding='utf-8',
90
+ errors='replace',
91
+ env=env,
92
+ )
93
+
94
+ # Write stdin data if provided, then close stdin
95
+ if stdin_data and process.stdin:
96
+ try:
97
+ process.stdin.write(stdin_data)
98
+ process.stdin.close()
99
+ except (BrokenPipeError, OSError):
100
+ pass
101
+
102
+ output_queue: queue.Queue[Optional[str]] = queue.Queue()
103
+ GRACEFUL_SHUTDOWN_DELAY = 0.3
104
+
105
+ def is_turn_completed(line: str) -> bool:
106
+ try:
107
+ data = json.loads(line)
108
+ return data.get("type") == "turn.completed"
109
+ except (json.JSONDecodeError, AttributeError, TypeError):
110
+ return False
111
+
112
+ def read_output() -> None:
113
+ if process.stdout:
114
+ for line in iter(process.stdout.readline, ""):
115
+ stripped = line.strip()
116
+ output_queue.put(stripped)
117
+ if is_turn_completed(stripped):
118
+ time.sleep(GRACEFUL_SHUTDOWN_DELAY)
119
+ process.terminate()
120
+ break
121
+ process.stdout.close()
122
+ output_queue.put(None)
123
+
124
+ thread = threading.Thread(target=read_output)
125
+ thread.start()
126
+
127
+ while True:
128
+ try:
129
+ line = output_queue.get(timeout=0.5)
130
+ if line is None:
131
+ break
132
+ yield line
133
+ except queue.Empty:
134
+ if process.poll() is not None and not thread.is_alive():
135
+ break
136
+
137
+ try:
138
+ process.wait(timeout=5)
139
+ except subprocess.TimeoutExpired:
140
+ process.kill()
141
+ process.wait()
142
+ thread.join(timeout=5)
143
+
144
+ while not output_queue.empty():
145
+ try:
146
+ line = output_queue.get_nowait()
147
+ if line is not None:
148
+ yield line
149
+ except queue.Empty:
150
+ break
151
+
152
+ def windows_escape(prompt):
153
+ """Windows style string escaping for newlines and special chars in prompt text."""
154
+ result = prompt.replace('\n', '\\n')
155
+ result = result.replace('\r', '\\r')
156
+ result = result.replace('\t', '\\t')
157
+ return result
158
+
159
+
160
+ def configure_windows_stdio() -> None:
161
+ """Configure stdout/stderr to use UTF-8 encoding on Windows."""
162
+ if os.name != "nt":
163
+ return
164
+ for stream in (sys.stdout, sys.stderr):
165
+ reconfigure = getattr(stream, "reconfigure", None)
166
+ if callable(reconfigure):
167
+ try:
168
+ reconfigure(encoding="utf-8")
169
+ except (ValueError, OSError):
170
+ pass
171
+
172
+
173
+ def main():
174
+ configure_windows_stdio()
175
+ parser = argparse.ArgumentParser(description="Codex Bridge")
176
+ parser.add_argument("--PROMPT", required=True, help="Instruction for the task to send to codex.")
177
+ parser.add_argument("--cd", required=True, help="Set the workspace root for codex before executing the task.")
178
+ parser.add_argument("--sandbox", default="read-only", choices=["read-only", "workspace-write", "danger-full-access"], help="Sandbox policy for model-generated commands. Defaults to `read-only`.")
179
+ parser.add_argument("--SESSION_ID", default="", help="Resume the specified session of the codex. Defaults to `None`, start a new session.")
180
+ parser.add_argument("--skip-git-repo-check", action="store_true", default=True, help="Allow codex running outside a Git repository (useful for one-off directories).")
181
+ parser.add_argument("--return-all-messages", action="store_true", help="Return all messages (e.g. reasoning, tool calls, etc.) from the codex session. Set to `False` by default, only the agent's final reply message is returned.")
182
+ parser.add_argument("--image", action="append", default=[], help="Attach one or more image files to the initial prompt. Separate multiple paths with commas or repeat the flag.")
183
+ parser.add_argument("--model", default="", help="The model to use for the codex session. This parameter is strictly prohibited unless explicitly specified by the user.")
184
+ parser.add_argument("--yolo", action="store_true", help="Run every command without approvals or sandboxing. Only use when `sandbox` couldn't be applied.")
185
+ parser.add_argument("--profile", default="", help="Configuration profile name to load from `~/.codex/config.toml`. This parameter is strictly prohibited unless explicitly specified by the user.")
186
+
187
+ args = parser.parse_args()
188
+
189
+ cmd = ["codex", "exec", "--sandbox", args.sandbox, "--cd", args.cd, "--json"]
190
+
191
+ if args.image:
192
+ cmd.extend(["--image", ",".join(args.image)])
193
+
194
+ if args.model:
195
+ cmd.extend(["--model", args.model])
196
+
197
+ if args.profile:
198
+ cmd.extend(["--profile", args.profile])
199
+
200
+ if args.yolo:
201
+ cmd.append("--yolo")
202
+
203
+ if args.skip_git_repo_check:
204
+ cmd.append("--skip-git-repo-check")
205
+
206
+ if args.SESSION_ID:
207
+ cmd.extend(["resume", args.SESSION_ID])
208
+
209
+ PROMPT = args.PROMPT
210
+
211
+ # Use stdin to pass PROMPT (use '-' as placeholder) to avoid shell argument parsing issues
212
+ cmd.append('-')
213
+
214
+ # Execution Logic
215
+ all_messages = []
216
+ agent_messages = ""
217
+ success = True
218
+ err_message = ""
219
+ thread_id = None
220
+
221
+ for line in run_shell_command(cmd, stdin_data=PROMPT):
222
+ try:
223
+ line_dict = json.loads(line.strip())
224
+ all_messages.append(line_dict)
225
+ item = line_dict.get("item", {})
226
+ item_type = item.get("type", "")
227
+ if item_type == "agent_message":
228
+ agent_messages = agent_messages + item.get("text", "")
229
+ if line_dict.get("thread_id") is not None:
230
+ thread_id = line_dict.get("thread_id")
231
+ if "fail" in line_dict.get("type", ""):
232
+ success = False if len(agent_messages) == 0 else success
233
+ err_message += "\n\n[codex error] " + line_dict.get("error", {}).get("message", "")
234
+ if "error" in line_dict.get("type", ""):
235
+ error_msg = line_dict.get("message", "")
236
+ is_reconnecting = bool(re.match(r'^Reconnecting\.\.\.\s+\d+/\d+$', error_msg))
237
+
238
+ if not is_reconnecting:
239
+ success = False if len(agent_messages) == 0 else success
240
+ err_message += "\n\n[codex error] " + error_msg
241
+
242
+ except json.JSONDecodeError:
243
+ err_message += "\n\n[json decode error] " + line
244
+ continue
245
+
246
+ except Exception as error:
247
+ err_message += "\n\n[unexpected error] " + f"Unexpected error: {error}. Line: {line!r}"
248
+ success = False
249
+ break
250
+
251
+ if thread_id is None:
252
+ success = False
253
+ err_message = "Failed to get `SESSION_ID` from the codex session. \n\n" + err_message
254
+
255
+ if len(agent_messages) == 0:
256
+ success = False
257
+ err_message = "Failed to get `agent_messages` from the codex session. \n\n You can try to set `return_all_messages` to `True` to get the full reasoning information. " + err_message
258
+
259
+ if success:
260
+ result = {
261
+ "success": True,
262
+ "SESSION_ID": thread_id,
263
+ "agent_messages": agent_messages,
264
+ }
265
+
266
+ else:
267
+ result = {"success": False, "error": err_message}
268
+
269
+ if args.return_all_messages:
270
+ result["all_messages"] = all_messages
271
+
272
+ print(json.dumps(result, indent=2, ensure_ascii=False))
273
+
274
+ if __name__ == "__main__":
275
+ main()