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.
- package/.claude/agents/auto-test-generator.md +315 -0
- package/.claude/agents/bug-analyzer.md +103 -0
- package/.claude/agents/code-reviewer.md +122 -0
- package/.claude/agents/code-scanner.md +145 -0
- package/.claude/agents/image-reader.md +154 -0
- package/.claude/agents/loki-runner.md +80 -0
- package/.claude/agents/mysql-runner.md +81 -0
- package/.claude/agents/project-manager.md +159 -0
- package/.claude/agents/requirements-analyzer.md +175 -0
- package/.claude/agents/task-fetcher.md +75 -0
- package/.claude/audio/completed.wav +0 -0
- package/.claude/commands/add-todo.md +255 -0
- package/.claude/commands/auto-test.md +252 -0
- package/.claude/commands/check.md +210 -0
- package/.claude/commands/crud.md +454 -0
- package/.claude/commands/dev.md +532 -0
- package/.claude/commands/init-config.md +154 -0
- package/.claude/commands/init-docs.md +681 -0
- package/.claude/commands/next.md +281 -0
- package/.claude/commands/opsx-apply.md +147 -0
- package/.claude/commands/opsx-archive.md +105 -0
- package/.claude/commands/opsx-bulk-archive.md +237 -0
- package/.claude/commands/opsx-continue.md +109 -0
- package/.claude/commands/opsx-explore.md +281 -0
- package/.claude/commands/opsx-ff.md +92 -0
- package/.claude/commands/opsx-new.md +65 -0
- package/.claude/commands/opsx-onboard.md +397 -0
- package/.claude/commands/opsx-sync.md +129 -0
- package/.claude/commands/opsx-verify.md +159 -0
- package/.claude/commands/progress.md +264 -0
- package/.claude/commands/release.md +109 -0
- package/.claude/commands/start.md +199 -0
- package/.claude/commands/sync.md +307 -0
- package/.claude/commands/update-status.md +428 -0
- package/.claude/docs/Mixin/344/275/277/347/224/250/346/214/207/345/215/227.md +299 -0
- package/.claude/docs/README.md +167 -0
- package/.claude/docs//345/211/215/347/253/257/345/274/200/345/217/221/346/214/207/345/215/227.md +599 -0
- package/.claude/docs//345/220/216/347/253/257/345/274/200/345/217/221/346/214/207/345/215/227.md +726 -0
- 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
- 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
- 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
- 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
- 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
- package/.claude/docs//346/241/206/346/236/266/350/257/264/346/230/216.md +393 -0
- package/.claude/docs//350/267/257/347/224/261/351/205/215/347/275/256/346/214/207/345/215/227.md +246 -0
- package/.claude/framework-config.json +73 -0
- package/.claude/hooks/lib/notify.js +310 -0
- package/.claude/hooks/pre-tool-use.js +117 -0
- package/.claude/hooks/skill-forced-eval.js +161 -0
- package/.claude/hooks/stop.js +55 -0
- package/.claude/notify-config.json +9 -0
- package/.claude/settings.json +57 -0
- package/.claude/skills/add-skill/SKILL.md +488 -0
- package/.claude/skills/analyze-requirements/SKILL.md +112 -0
- package/.claude/skills/api-development/SKILL.md +315 -0
- package/.claude/skills/architecture-design/SKILL.md +152 -0
- package/.claude/skills/auto-test/SKILL.md +625 -0
- package/.claude/skills/auto-test/references/api-conventions.md +260 -0
- package/.claude/skills/backend-annotations/SKILL.md +248 -0
- package/.claude/skills/banana-image/CHANGELOG.md +37 -0
- package/.claude/skills/banana-image/README.md +146 -0
- package/.claude/skills/banana-image/SKILL.md +171 -0
- package/.claude/skills/banana-image/assets/logo.png +0 -0
- package/.claude/skills/banana-image/references/advanced-usage.md +189 -0
- package/.claude/skills/banana-image/scripts/apply_template.py +125 -0
- package/.claude/skills/banana-image/scripts/banana_image_exec.ts +412 -0
- package/.claude/skills/banana-image/scripts/batch_prep.py +82 -0
- package/.claude/skills/banana-image/scripts/package-lock.json +1437 -0
- package/.claude/skills/banana-image/scripts/package.json +18 -0
- package/.claude/skills/banana-image/scripts/requirements.txt +10 -0
- package/.claude/skills/banana-image/templates/poster.json +22 -0
- package/.claude/skills/banana-image/templates/product.json +17 -0
- package/.claude/skills/banana-image/templates/social.json +22 -0
- package/.claude/skills/banana-image/templates/thumbnail.json +17 -0
- package/.claude/skills/brainstorm/SKILL.md +216 -0
- package/.claude/skills/bug-detective/SKILL.md +295 -0
- package/.claude/skills/bug-detective/references/error-patterns.md +242 -0
- package/.claude/skills/chrome-cdp/SKILL.md +81 -0
- package/.claude/skills/chrome-cdp/scripts/cdp.mjs +838 -0
- package/.claude/skills/chrome-cdp/scripts/run-cdp.sh +7 -0
- package/.claude/skills/code-patterns/SKILL.md +163 -0
- package/.claude/skills/code-patterns/references/leniu-code-patterns.md +87 -0
- package/.claude/skills/codex-code-review/SKILL.md +327 -0
- package/.claude/skills/collaborating-with-codex/SKILL.md +180 -0
- package/.claude/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
- package/.claude/skills/collaborating-with-gemini/SKILL.md +194 -0
- package/.claude/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
- package/.claude/skills/crud-development/SKILL.md +328 -0
- package/.claude/skills/data-permission/SKILL.md +221 -0
- package/.claude/skills/data-permission/references/custom-data-scope.md +90 -0
- package/.claude/skills/database-ops/SKILL.md +210 -0
- package/.claude/skills/error-handler/SKILL.md +310 -0
- package/.claude/skills/file-oss-management/SKILL.md +260 -0
- package/.claude/skills/file-oss-management/references/entities.md +105 -0
- package/.claude/skills/file-oss-management/references/service-impl.md +104 -0
- package/.claude/skills/fix-bug/SKILL.md +269 -0
- package/.claude/skills/git-workflow/SKILL.md +179 -0
- package/.claude/skills/jenkins-deploy/SKILL.md +134 -0
- package/.claude/skills/jenkins-deploy/assets/env_param.template.json +51 -0
- package/.claude/skills/jenkins-deploy/assets/jk_build.py +400 -0
- package/.claude/skills/json-serialization/SKILL.md +341 -0
- package/.claude/skills/lanhu-design/SKILL.md +99 -0
- package/.claude/skills/leniu-api-development/SKILL.md +319 -0
- package/.claude/skills/leniu-api-development/references/real-examples.md +273 -0
- package/.claude/skills/leniu-architecture-design/SKILL.md +383 -0
- package/.claude/skills/leniu-backend-annotations/SKILL.md +277 -0
- package/.claude/skills/leniu-brainstorm/SKILL.md +242 -0
- package/.claude/skills/leniu-brainstorm/references/business-scenarios.md +162 -0
- package/.claude/skills/leniu-code-patterns/SKILL.md +411 -0
- package/.claude/skills/leniu-crud-development/SKILL.md +404 -0
- package/.claude/skills/leniu-crud-development/references/templates.md +597 -0
- package/.claude/skills/leniu-customization-location/SKILL.md +410 -0
- package/.claude/skills/leniu-data-permission/SKILL.md +341 -0
- package/.claude/skills/leniu-database-ops/SKILL.md +426 -0
- package/.claude/skills/leniu-error-handler/SKILL.md +462 -0
- package/.claude/skills/leniu-java-concurrent/SKILL.md +400 -0
- package/.claude/skills/leniu-java-entity/SKILL.md +237 -0
- package/.claude/skills/leniu-java-entity/references/templates.md +237 -0
- package/.claude/skills/leniu-java-logging/SKILL.md +229 -0
- package/.claude/skills/leniu-java-logging/references/data-mask.md +46 -0
- package/.claude/skills/leniu-java-logging/references/logging-scenarios.md +113 -0
- package/.claude/skills/leniu-java-mq/SKILL.md +338 -0
- package/.claude/skills/leniu-java-mybatis/SKILL.md +267 -0
- package/.claude/skills/leniu-java-mybatis/references/report-mapper.md +88 -0
- package/.claude/skills/leniu-java-task/SKILL.md +367 -0
- package/.claude/skills/leniu-marketing-scenario/SKILL.md +448 -0
- package/.claude/skills/leniu-marketing-scenario/references/pay-meal-rules.md +197 -0
- package/.claude/skills/leniu-marketing-scenario/references/price-rules.md +286 -0
- package/.claude/skills/leniu-marketing-scenario/references/recharge-rules.md +188 -0
- package/.claude/skills/leniu-redis-cache/SKILL.md +331 -0
- package/.claude/skills/leniu-report-scenario/SKILL.md +508 -0
- package/.claude/skills/leniu-report-scenario/references/amount-handling.md +448 -0
- package/.claude/skills/leniu-report-scenario/references/analysis-module.md +64 -0
- package/.claude/skills/leniu-report-scenario/references/customization-table-fields.md +93 -0
- package/.claude/skills/leniu-report-scenario/references/customization.md +356 -0
- package/.claude/skills/leniu-report-scenario/references/data-permission.md +182 -0
- package/.claude/skills/leniu-report-scenario/references/export.md +553 -0
- package/.claude/skills/leniu-report-scenario/references/mealtime.md +197 -0
- package/.claude/skills/leniu-report-scenario/references/query-param.md +274 -0
- package/.claude/skills/leniu-report-scenario/references/report-tables.md +162 -0
- package/.claude/skills/leniu-report-scenario/references/standard-customization.md +112 -0
- package/.claude/skills/leniu-report-scenario/references/standard-table-fields.md +113 -0
- package/.claude/skills/leniu-report-scenario/references/total-line.md +179 -0
- package/.claude/skills/leniu-security-guard/SKILL.md +306 -0
- package/.claude/skills/leniu-utils-toolkit/SKILL.md +380 -0
- package/.claude/skills/loki-log-query/SKILL.md +430 -0
- package/.claude/skills/mysql-debug/SKILL.md +406 -0
- package/.claude/skills/performance-doctor/SKILL.md +297 -0
- package/.claude/skills/project-navigator/SKILL.md +211 -0
- package/.claude/skills/redis-cache/SKILL.md +282 -0
- package/.claude/skills/redis-cache/references/listeners.md +23 -0
- package/.claude/skills/scheduled-jobs/SKILL.md +277 -0
- package/.claude/skills/security-guard/SKILL.md +245 -0
- package/.claude/skills/security-guard/references/encrypt-config.md +103 -0
- package/.claude/skills/security-guard/references/sensitive-strategies.md +42 -0
- package/.claude/skills/sms-mail/SKILL.md +346 -0
- package/.claude/skills/sms-mail/references/mail-config.md +88 -0
- package/.claude/skills/sms-mail/references/sms-config.md +74 -0
- package/.claude/skills/social-login/SKILL.md +328 -0
- package/.claude/skills/social-login/references/provider-configs.md +118 -0
- package/.claude/skills/store-pc/SKILL.md +366 -0
- package/.claude/skills/sync-back-merge/SKILL.md +66 -0
- package/.claude/skills/task-tracker/SKILL.md +307 -0
- package/.claude/skills/tech-decision/SKILL.md +393 -0
- package/.claude/skills/tenant-management/SKILL.md +272 -0
- package/.claude/skills/tenant-management/references/tenant-scenarios.md +91 -0
- package/.claude/skills/test-development/SKILL.md +301 -0
- package/.claude/skills/test-development/references/parameterized-examples.md +119 -0
- package/.claude/skills/ui-pc/SKILL.md +438 -0
- package/.claude/skills/utils-toolkit/SKILL.md +354 -0
- package/.claude/skills/utils-toolkit/references/redis-utils-api.md +56 -0
- package/.claude/skills/websocket-sse/SKILL.md +350 -0
- package/.claude/skills/workflow-engine/SKILL.md +249 -0
- package/.claude/skills/yunxiao-task-management/SKILL.md +401 -0
- 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
- package/.claude/templates/env-config.md +27 -0
- package/.claude/templates//345/276/205/345/212/236/346/270/205/345/215/225/346/250/241/346/235/277.md +56 -0
- package/.claude/templates//351/234/200/346/261/202/346/226/207/346/241/243/346/250/241/346/235/277.md +85 -0
- package/.claude/templates//351/241/271/347/233/256/347/212/266/346/200/201/346/250/241/346/235/277.md +43 -0
- package/.codex/skills/add-skill/SKILL.md +488 -0
- package/.codex/skills/add-todo/SKILL.md +269 -0
- package/.codex/skills/analyze-requirements/SKILL.md +112 -0
- package/.codex/skills/api-development/SKILL.md +315 -0
- package/.codex/skills/architecture-design/SKILL.md +152 -0
- package/.codex/skills/auto-test/SKILL.md +453 -0
- package/.codex/skills/auto-test/references/api-conventions.md +260 -0
- package/.codex/skills/backend-annotations/SKILL.md +248 -0
- package/.codex/skills/banana-image/CHANGELOG.md +37 -0
- package/.codex/skills/banana-image/README.md +146 -0
- package/.codex/skills/banana-image/SKILL.md +171 -0
- package/.codex/skills/banana-image/assets/logo.png +0 -0
- package/.codex/skills/banana-image/references/advanced-usage.md +189 -0
- package/.codex/skills/banana-image/scripts/apply_template.py +125 -0
- package/.codex/skills/banana-image/scripts/banana_image_exec.ts +412 -0
- package/.codex/skills/banana-image/scripts/batch_prep.py +82 -0
- package/.codex/skills/banana-image/scripts/package-lock.json +1437 -0
- package/.codex/skills/banana-image/scripts/package.json +18 -0
- package/.codex/skills/banana-image/scripts/requirements.txt +10 -0
- package/.codex/skills/banana-image/templates/poster.json +22 -0
- package/.codex/skills/banana-image/templates/product.json +17 -0
- package/.codex/skills/banana-image/templates/social.json +22 -0
- package/.codex/skills/banana-image/templates/thumbnail.json +17 -0
- package/.codex/skills/brainstorm/SKILL.md +216 -0
- package/.codex/skills/bug-detective/SKILL.md +295 -0
- package/.codex/skills/bug-detective/references/error-patterns.md +242 -0
- package/.codex/skills/check/SKILL.md +367 -0
- package/.codex/skills/code-patterns/SKILL.md +163 -0
- package/.codex/skills/code-patterns/references/leniu-code-patterns.md +87 -0
- package/.codex/skills/collaborating-with-codex/SKILL.md +180 -0
- package/.codex/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
- package/.codex/skills/collaborating-with-gemini/SKILL.md +194 -0
- package/.codex/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
- package/.codex/skills/crud/SKILL.md +265 -0
- package/.codex/skills/crud-development/SKILL.md +328 -0
- package/.codex/skills/data-permission/SKILL.md +221 -0
- package/.codex/skills/data-permission/references/custom-data-scope.md +90 -0
- package/.codex/skills/database-ops/SKILL.md +210 -0
- package/.codex/skills/dev/SKILL.md +187 -0
- package/.codex/skills/error-handler/SKILL.md +310 -0
- package/.codex/skills/file-oss-management/SKILL.md +260 -0
- package/.codex/skills/file-oss-management/references/entities.md +105 -0
- package/.codex/skills/file-oss-management/references/service-impl.md +104 -0
- package/.codex/skills/fix-bug/SKILL.md +269 -0
- package/.codex/skills/git-workflow/SKILL.md +179 -0
- package/.codex/skills/init-docs/SKILL.md +194 -0
- package/.codex/skills/jenkins-deploy/SKILL.md +134 -0
- package/.codex/skills/json-serialization/SKILL.md +341 -0
- package/.codex/skills/lanhu-design/SKILL.md +99 -0
- package/.codex/skills/leniu-api-development/SKILL.md +319 -0
- package/.codex/skills/leniu-api-development/references/real-examples.md +273 -0
- package/.codex/skills/leniu-architecture-design/SKILL.md +383 -0
- package/.codex/skills/leniu-backend-annotations/SKILL.md +277 -0
- package/.codex/skills/leniu-brainstorm/SKILL.md +242 -0
- package/.codex/skills/leniu-brainstorm/references/business-scenarios.md +162 -0
- package/.codex/skills/leniu-code-patterns/SKILL.md +411 -0
- package/.codex/skills/leniu-crud-development/SKILL.md +404 -0
- package/.codex/skills/leniu-crud-development/references/templates.md +597 -0
- package/.codex/skills/leniu-customization-location/SKILL.md +410 -0
- package/.codex/skills/leniu-data-permission/SKILL.md +341 -0
- package/.codex/skills/leniu-database-ops/SKILL.md +426 -0
- package/.codex/skills/leniu-error-handler/SKILL.md +462 -0
- package/.codex/skills/leniu-java-amount-handling/SKILL.md +461 -0
- package/.codex/skills/leniu-java-code-style/SKILL.md +510 -0
- package/.codex/skills/leniu-java-concurrent/SKILL.md +400 -0
- package/.codex/skills/leniu-java-entity/SKILL.md +237 -0
- package/.codex/skills/leniu-java-entity/references/templates.md +237 -0
- package/.codex/skills/leniu-java-logging/SKILL.md +229 -0
- package/.codex/skills/leniu-java-logging/references/data-mask.md +46 -0
- package/.codex/skills/leniu-java-logging/references/logging-scenarios.md +113 -0
- package/.codex/skills/leniu-java-mq/SKILL.md +338 -0
- package/.codex/skills/leniu-java-mybatis/SKILL.md +267 -0
- package/.codex/skills/leniu-java-mybatis/references/report-mapper.md +88 -0
- package/.codex/skills/leniu-java-task/SKILL.md +367 -0
- package/.codex/skills/leniu-marketing-scenario/SKILL.md +448 -0
- package/.codex/skills/leniu-marketing-scenario/references/pay-meal-rules.md +197 -0
- package/.codex/skills/leniu-marketing-scenario/references/price-rules.md +286 -0
- package/.codex/skills/leniu-marketing-scenario/references/recharge-rules.md +188 -0
- package/.codex/skills/leniu-redis-cache/SKILL.md +331 -0
- package/.codex/skills/leniu-report-scenario/SKILL.md +508 -0
- package/.codex/skills/leniu-report-scenario/references/amount-handling.md +448 -0
- package/.codex/skills/leniu-report-scenario/references/analysis-module.md +64 -0
- package/.codex/skills/leniu-report-scenario/references/customization-table-fields.md +93 -0
- package/.codex/skills/leniu-report-scenario/references/customization.md +356 -0
- package/.codex/skills/leniu-report-scenario/references/data-permission.md +182 -0
- package/.codex/skills/leniu-report-scenario/references/export.md +553 -0
- package/.codex/skills/leniu-report-scenario/references/mealtime.md +197 -0
- package/.codex/skills/leniu-report-scenario/references/query-param.md +274 -0
- package/.codex/skills/leniu-report-scenario/references/report-tables.md +162 -0
- package/.codex/skills/leniu-report-scenario/references/standard-customization.md +112 -0
- package/.codex/skills/leniu-report-scenario/references/standard-table-fields.md +113 -0
- package/.codex/skills/leniu-report-scenario/references/total-line.md +179 -0
- package/.codex/skills/leniu-security-guard/SKILL.md +306 -0
- package/.codex/skills/leniu-utils-toolkit/SKILL.md +380 -0
- package/.codex/skills/loki-log-query/SKILL.md +430 -0
- package/.codex/skills/loki-log-query/environments.json +45 -0
- package/.codex/skills/mysql-debug/SKILL.md +406 -0
- package/.codex/skills/next/SKILL.md +137 -0
- package/.codex/skills/openspec-apply-change/SKILL.md +165 -0
- package/.codex/skills/openspec-archive-change/SKILL.md +122 -0
- package/.codex/skills/openspec-bulk-archive-change/SKILL.md +254 -0
- package/.codex/skills/openspec-continue-change/SKILL.md +126 -0
- package/.codex/skills/openspec-explore/SKILL.md +299 -0
- package/.codex/skills/openspec-ff-change/SKILL.md +109 -0
- package/.codex/skills/openspec-new-change/SKILL.md +82 -0
- package/.codex/skills/openspec-onboard/SKILL.md +414 -0
- package/.codex/skills/openspec-sync-specs/SKILL.md +146 -0
- package/.codex/skills/openspec-verify-change/SKILL.md +176 -0
- package/.codex/skills/performance-doctor/SKILL.md +297 -0
- package/.codex/skills/progress/SKILL.md +193 -0
- package/.codex/skills/project-navigator/SKILL.md +211 -0
- package/.codex/skills/redis-cache/SKILL.md +282 -0
- package/.codex/skills/redis-cache/references/listeners.md +23 -0
- package/.codex/skills/scheduled-jobs/SKILL.md +277 -0
- package/.codex/skills/security-guard/SKILL.md +245 -0
- package/.codex/skills/security-guard/references/encrypt-config.md +103 -0
- package/.codex/skills/security-guard/references/sensitive-strategies.md +42 -0
- package/.codex/skills/skill-creator/LICENSE.txt +202 -0
- package/.codex/skills/skill-creator/SKILL.md +479 -0
- package/.codex/skills/skill-creator/agents/analyzer.md +274 -0
- package/.codex/skills/skill-creator/agents/comparator.md +202 -0
- package/.codex/skills/skill-creator/agents/grader.md +223 -0
- package/.codex/skills/skill-creator/assets/eval_review.html +146 -0
- package/.codex/skills/skill-creator/eval-viewer/generate_review.py +471 -0
- package/.codex/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/.codex/skills/skill-creator/references/schemas.md +430 -0
- package/.codex/skills/skill-creator/scripts/__init__.py +0 -0
- package/.codex/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/.codex/skills/skill-creator/scripts/generate_report.py +326 -0
- package/.codex/skills/skill-creator/scripts/improve_description.py +248 -0
- package/.codex/skills/skill-creator/scripts/package_skill.py +136 -0
- package/.codex/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/.codex/skills/skill-creator/scripts/run_eval.py +310 -0
- package/.codex/skills/skill-creator/scripts/run_loop.py +332 -0
- package/.codex/skills/skill-creator/scripts/utils.py +47 -0
- package/.codex/skills/sms-mail/SKILL.md +346 -0
- package/.codex/skills/sms-mail/references/mail-config.md +88 -0
- package/.codex/skills/sms-mail/references/sms-config.md +74 -0
- package/.codex/skills/social-login/SKILL.md +328 -0
- package/.codex/skills/social-login/references/provider-configs.md +118 -0
- package/.codex/skills/start/SKILL.md +154 -0
- package/.codex/skills/store-pc/SKILL.md +366 -0
- package/.codex/skills/sync/SKILL.md +149 -0
- package/.codex/skills/sync-back-merge/SKILL.md +66 -0
- package/.codex/skills/task-tracker/SKILL.md +307 -0
- package/.codex/skills/tech-decision/SKILL.md +393 -0
- package/.codex/skills/tenant-management/SKILL.md +272 -0
- package/.codex/skills/tenant-management/references/tenant-scenarios.md +91 -0
- package/.codex/skills/test-development/SKILL.md +301 -0
- package/.codex/skills/test-development/references/parameterized-examples.md +119 -0
- package/.codex/skills/ui-pc/SKILL.md +438 -0
- package/.codex/skills/update-status/SKILL.md +159 -0
- package/.codex/skills/utils-toolkit/SKILL.md +354 -0
- package/.codex/skills/utils-toolkit/references/redis-utils-api.md +56 -0
- package/.codex/skills/websocket-sse/SKILL.md +350 -0
- package/.codex/skills/workflow-engine/SKILL.md +249 -0
- package/.codex/skills/yunxiao-task-management/SKILL.md +401 -0
- 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
- package/.cursor/agents/bug-analyzer.md +102 -0
- package/.cursor/agents/code-reviewer.md +122 -0
- package/.cursor/agents/code-scanner.md +145 -0
- package/.cursor/agents/image-reader.md +154 -0
- package/.cursor/agents/loki-runner.md +80 -0
- package/.cursor/agents/mysql-runner.md +81 -0
- package/.cursor/agents/project-manager.md +159 -0
- package/.cursor/agents/requirements-analyzer.md +141 -0
- package/.cursor/agents/task-fetcher.md +75 -0
- package/.cursor/audio/completed.wav +0 -0
- package/.cursor/commands/opsx-apply.md +152 -0
- package/.cursor/commands/opsx-archive.md +157 -0
- package/.cursor/commands/opsx-bulk-archive.md +242 -0
- package/.cursor/commands/opsx-continue.md +114 -0
- package/.cursor/commands/opsx-explore.md +174 -0
- package/.cursor/commands/opsx-ff.md +94 -0
- package/.cursor/commands/opsx-new.md +69 -0
- package/.cursor/commands/opsx-onboard.md +525 -0
- package/.cursor/commands/opsx-sync.md +134 -0
- package/.cursor/commands/opsx-verify.md +164 -0
- package/.cursor/hooks/cursor-pre-tool-use.js +122 -0
- package/.cursor/hooks/cursor-skill-eval.js +466 -0
- package/.cursor/hooks/lib/notify.js +310 -0
- package/.cursor/hooks/stop.js +55 -0
- package/.cursor/hooks.json +23 -0
- package/.cursor/mcp.json +22 -0
- package/.cursor/rules/skill-activation.mdc +99 -0
- package/.cursor/skills/add-skill/SKILL.md +488 -0
- package/.cursor/skills/analyze-requirements/SKILL.md +112 -0
- package/.cursor/skills/api-development/SKILL.md +315 -0
- package/.cursor/skills/architecture-design/SKILL.md +152 -0
- package/.cursor/skills/auto-test/SKILL.md +453 -0
- package/.cursor/skills/auto-test/references/api-conventions.md +260 -0
- package/.cursor/skills/backend-annotations/SKILL.md +248 -0
- package/.cursor/skills/banana-image/CHANGELOG.md +37 -0
- package/.cursor/skills/banana-image/README.md +146 -0
- package/.cursor/skills/banana-image/SKILL.md +171 -0
- package/.cursor/skills/banana-image/assets/logo.png +0 -0
- package/.cursor/skills/banana-image/references/advanced-usage.md +189 -0
- package/.cursor/skills/banana-image/scripts/apply_template.py +125 -0
- package/.cursor/skills/banana-image/scripts/banana_image_exec.ts +412 -0
- package/.cursor/skills/banana-image/scripts/batch_prep.py +82 -0
- package/.cursor/skills/banana-image/scripts/package-lock.json +1437 -0
- package/.cursor/skills/banana-image/scripts/package.json +18 -0
- package/.cursor/skills/banana-image/scripts/requirements.txt +10 -0
- package/.cursor/skills/banana-image/templates/poster.json +22 -0
- package/.cursor/skills/banana-image/templates/product.json +17 -0
- package/.cursor/skills/banana-image/templates/social.json +22 -0
- package/.cursor/skills/banana-image/templates/thumbnail.json +17 -0
- package/.cursor/skills/brainstorm/SKILL.md +216 -0
- package/.cursor/skills/bug-detective/SKILL.md +295 -0
- package/.cursor/skills/bug-detective/references/error-patterns.md +242 -0
- package/.cursor/skills/code-patterns/SKILL.md +163 -0
- package/.cursor/skills/code-patterns/references/leniu-code-patterns.md +87 -0
- package/.cursor/skills/collaborating-with-codex/SKILL.md +180 -0
- package/.cursor/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
- package/.cursor/skills/collaborating-with-gemini/SKILL.md +194 -0
- package/.cursor/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
- package/.cursor/skills/crud-development/SKILL.md +328 -0
- package/.cursor/skills/data-permission/SKILL.md +221 -0
- package/.cursor/skills/data-permission/references/custom-data-scope.md +90 -0
- package/.cursor/skills/database-ops/SKILL.md +210 -0
- package/.cursor/skills/error-handler/SKILL.md +310 -0
- package/.cursor/skills/file-oss-management/SKILL.md +260 -0
- package/.cursor/skills/file-oss-management/references/entities.md +105 -0
- package/.cursor/skills/file-oss-management/references/service-impl.md +104 -0
- package/.cursor/skills/fix-bug/SKILL.md +269 -0
- package/.cursor/skills/git-workflow/SKILL.md +179 -0
- package/.cursor/skills/jenkins-deploy/SKILL.md +134 -0
- package/.cursor/skills/json-serialization/SKILL.md +341 -0
- package/.cursor/skills/lanhu-design/SKILL.md +99 -0
- package/.cursor/skills/leniu-api-development/SKILL.md +319 -0
- package/.cursor/skills/leniu-api-development/references/real-examples.md +273 -0
- package/.cursor/skills/leniu-architecture-design/SKILL.md +383 -0
- package/.cursor/skills/leniu-backend-annotations/SKILL.md +277 -0
- package/.cursor/skills/leniu-brainstorm/SKILL.md +242 -0
- package/.cursor/skills/leniu-brainstorm/references/business-scenarios.md +162 -0
- package/.cursor/skills/leniu-code-patterns/SKILL.md +411 -0
- package/.cursor/skills/leniu-crud-development/SKILL.md +404 -0
- package/.cursor/skills/leniu-crud-development/references/templates.md +597 -0
- package/.cursor/skills/leniu-customization-location/SKILL.md +410 -0
- package/.cursor/skills/leniu-data-permission/SKILL.md +341 -0
- package/.cursor/skills/leniu-database-ops/SKILL.md +426 -0
- package/.cursor/skills/leniu-error-handler/SKILL.md +462 -0
- package/.cursor/skills/leniu-java-amount-handling/SKILL.md +461 -0
- package/.cursor/skills/leniu-java-code-style/SKILL.md +510 -0
- package/.cursor/skills/leniu-java-concurrent/SKILL.md +400 -0
- package/.cursor/skills/leniu-java-entity/SKILL.md +237 -0
- package/.cursor/skills/leniu-java-entity/references/templates.md +237 -0
- package/.cursor/skills/leniu-java-logging/SKILL.md +229 -0
- package/.cursor/skills/leniu-java-logging/references/data-mask.md +46 -0
- package/.cursor/skills/leniu-java-logging/references/logging-scenarios.md +113 -0
- package/.cursor/skills/leniu-java-mq/SKILL.md +338 -0
- package/.cursor/skills/leniu-java-mybatis/SKILL.md +267 -0
- package/.cursor/skills/leniu-java-mybatis/references/report-mapper.md +88 -0
- package/.cursor/skills/leniu-java-task/SKILL.md +367 -0
- package/.cursor/skills/leniu-marketing-scenario/SKILL.md +448 -0
- package/.cursor/skills/leniu-marketing-scenario/references/pay-meal-rules.md +197 -0
- package/.cursor/skills/leniu-marketing-scenario/references/price-rules.md +286 -0
- package/.cursor/skills/leniu-marketing-scenario/references/recharge-rules.md +188 -0
- package/.cursor/skills/leniu-redis-cache/SKILL.md +331 -0
- package/.cursor/skills/leniu-report-scenario/SKILL.md +508 -0
- package/.cursor/skills/leniu-report-scenario/references/amount-handling.md +448 -0
- package/.cursor/skills/leniu-report-scenario/references/analysis-module.md +64 -0
- package/.cursor/skills/leniu-report-scenario/references/customization-table-fields.md +93 -0
- package/.cursor/skills/leniu-report-scenario/references/customization.md +356 -0
- package/.cursor/skills/leniu-report-scenario/references/data-permission.md +182 -0
- package/.cursor/skills/leniu-report-scenario/references/export.md +553 -0
- package/.cursor/skills/leniu-report-scenario/references/mealtime.md +197 -0
- package/.cursor/skills/leniu-report-scenario/references/query-param.md +274 -0
- package/.cursor/skills/leniu-report-scenario/references/report-tables.md +162 -0
- package/.cursor/skills/leniu-report-scenario/references/standard-customization.md +112 -0
- package/.cursor/skills/leniu-report-scenario/references/standard-table-fields.md +113 -0
- package/.cursor/skills/leniu-report-scenario/references/total-line.md +179 -0
- package/.cursor/skills/leniu-security-guard/SKILL.md +306 -0
- package/.cursor/skills/leniu-utils-toolkit/SKILL.md +380 -0
- package/.cursor/skills/loki-log-query/SKILL.md +430 -0
- package/.cursor/skills/loki-log-query/environments.json +45 -0
- package/.cursor/skills/mysql-debug/SKILL.md +406 -0
- package/.cursor/skills/openspec-apply-change/SKILL.md +165 -0
- package/.cursor/skills/openspec-archive-change/SKILL.md +122 -0
- package/.cursor/skills/openspec-bulk-archive-change/SKILL.md +254 -0
- package/.cursor/skills/openspec-continue-change/SKILL.md +126 -0
- package/.cursor/skills/openspec-explore/SKILL.md +299 -0
- package/.cursor/skills/openspec-ff-change/SKILL.md +109 -0
- package/.cursor/skills/openspec-new-change/SKILL.md +82 -0
- package/.cursor/skills/openspec-onboard/SKILL.md +414 -0
- package/.cursor/skills/openspec-sync-specs/SKILL.md +146 -0
- package/.cursor/skills/openspec-verify-change/SKILL.md +176 -0
- package/.cursor/skills/performance-doctor/SKILL.md +297 -0
- package/.cursor/skills/project-navigator/SKILL.md +211 -0
- package/.cursor/skills/redis-cache/SKILL.md +282 -0
- package/.cursor/skills/redis-cache/references/listeners.md +23 -0
- package/.cursor/skills/scheduled-jobs/SKILL.md +277 -0
- package/.cursor/skills/security-guard/SKILL.md +245 -0
- package/.cursor/skills/security-guard/references/encrypt-config.md +103 -0
- package/.cursor/skills/security-guard/references/sensitive-strategies.md +42 -0
- package/.cursor/skills/skill-creator/LICENSE.txt +202 -0
- package/.cursor/skills/skill-creator/SKILL.md +479 -0
- package/.cursor/skills/skill-creator/agents/analyzer.md +274 -0
- package/.cursor/skills/skill-creator/agents/comparator.md +202 -0
- package/.cursor/skills/skill-creator/agents/grader.md +223 -0
- package/.cursor/skills/skill-creator/assets/eval_review.html +146 -0
- package/.cursor/skills/skill-creator/eval-viewer/generate_review.py +471 -0
- package/.cursor/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/.cursor/skills/skill-creator/references/schemas.md +430 -0
- package/.cursor/skills/skill-creator/scripts/__init__.py +0 -0
- package/.cursor/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/.cursor/skills/skill-creator/scripts/generate_report.py +326 -0
- package/.cursor/skills/skill-creator/scripts/improve_description.py +248 -0
- package/.cursor/skills/skill-creator/scripts/package_skill.py +136 -0
- package/.cursor/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/.cursor/skills/skill-creator/scripts/run_eval.py +310 -0
- package/.cursor/skills/skill-creator/scripts/run_loop.py +332 -0
- package/.cursor/skills/skill-creator/scripts/utils.py +47 -0
- package/.cursor/skills/sms-mail/SKILL.md +346 -0
- package/.cursor/skills/sms-mail/references/mail-config.md +88 -0
- package/.cursor/skills/sms-mail/references/sms-config.md +74 -0
- package/.cursor/skills/social-login/SKILL.md +328 -0
- package/.cursor/skills/social-login/references/provider-configs.md +118 -0
- package/.cursor/skills/store-pc/SKILL.md +366 -0
- package/.cursor/skills/sync-back-merge/SKILL.md +66 -0
- package/.cursor/skills/task-tracker/SKILL.md +307 -0
- package/.cursor/skills/tech-decision/SKILL.md +393 -0
- package/.cursor/skills/tenant-management/SKILL.md +272 -0
- package/.cursor/skills/tenant-management/references/tenant-scenarios.md +91 -0
- package/.cursor/skills/test-development/SKILL.md +301 -0
- package/.cursor/skills/test-development/references/parameterized-examples.md +119 -0
- package/.cursor/skills/ui-pc/SKILL.md +438 -0
- package/.cursor/skills/utils-toolkit/SKILL.md +354 -0
- package/.cursor/skills/utils-toolkit/references/redis-utils-api.md +56 -0
- package/.cursor/skills/websocket-sse/SKILL.md +350 -0
- package/.cursor/skills/workflow-engine/SKILL.md +249 -0
- package/.cursor/skills/yunxiao-task-management/SKILL.md +401 -0
- 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
- package/.cursor/templates/env-config.md +27 -0
- package/AGENTS.md +275 -0
- package/CLAUDE.md +285 -0
- package/README.md +104 -0
- package/bin/index.js +3069 -0
- package/init.sh +178 -0
- package/package.json +40 -0
- package/scripts/build-skills.js +180 -0
- package/src/platform-map.json +100 -0
- package/src/skills/add-skill/SKILL.md +488 -0
- package/src/skills/add-todo/SKILL.md +269 -0
- package/src/skills/analyze-requirements/SKILL.md +112 -0
- package/src/skills/api-development/SKILL.md +315 -0
- package/src/skills/architecture-design/SKILL.md +152 -0
- package/src/skills/backend-annotations/SKILL.md +248 -0
- package/src/skills/banana-image/CHANGELOG.md +37 -0
- package/src/skills/banana-image/README.md +146 -0
- package/src/skills/banana-image/SKILL.md +171 -0
- package/src/skills/banana-image/assets/logo.png +0 -0
- package/src/skills/banana-image/references/advanced-usage.md +189 -0
- package/src/skills/banana-image/scripts/apply_template.py +125 -0
- package/src/skills/banana-image/scripts/banana_image_exec.ts +412 -0
- package/src/skills/banana-image/scripts/batch_prep.py +82 -0
- package/src/skills/banana-image/scripts/package-lock.json +1437 -0
- package/src/skills/banana-image/scripts/package.json +18 -0
- package/src/skills/banana-image/scripts/requirements.txt +10 -0
- package/src/skills/banana-image/templates/poster.json +22 -0
- package/src/skills/banana-image/templates/product.json +17 -0
- package/src/skills/banana-image/templates/social.json +22 -0
- package/src/skills/banana-image/templates/thumbnail.json +17 -0
- package/src/skills/brainstorm/SKILL.md +216 -0
- package/src/skills/bug-detective/SKILL.md +295 -0
- package/src/skills/bug-detective/references/error-patterns.md +242 -0
- package/src/skills/check/SKILL.md +367 -0
- package/src/skills/code-patterns/SKILL.md +163 -0
- package/src/skills/code-patterns/references/leniu-code-patterns.md +87 -0
- package/src/skills/codex-code-review/SKILL.md +327 -0
- package/src/skills/collaborating-with-codex/SKILL.md +180 -0
- package/src/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
- package/src/skills/collaborating-with-gemini/SKILL.md +194 -0
- package/src/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
- package/src/skills/crud/SKILL.md +265 -0
- package/src/skills/crud-development/SKILL.md +328 -0
- package/src/skills/data-permission/SKILL.md +221 -0
- package/src/skills/data-permission/references/custom-data-scope.md +90 -0
- package/src/skills/database-ops/SKILL.md +210 -0
- package/src/skills/dev/SKILL.md +187 -0
- package/src/skills/error-handler/SKILL.md +310 -0
- package/src/skills/file-oss-management/SKILL.md +260 -0
- package/src/skills/file-oss-management/references/entities.md +105 -0
- package/src/skills/file-oss-management/references/service-impl.md +104 -0
- package/src/skills/fix-bug/SKILL.md +269 -0
- package/src/skills/git-workflow/SKILL.md +179 -0
- package/src/skills/init-docs/SKILL.md +194 -0
- package/src/skills/json-serialization/SKILL.md +341 -0
- package/src/skills/leniu-api-development/SKILL.md +319 -0
- package/src/skills/leniu-api-development/references/real-examples.md +273 -0
- package/src/skills/leniu-architecture-design/SKILL.md +383 -0
- package/src/skills/leniu-backend-annotations/SKILL.md +277 -0
- package/src/skills/leniu-brainstorm/SKILL.md +242 -0
- package/src/skills/leniu-brainstorm/references/business-scenarios.md +162 -0
- package/src/skills/leniu-code-patterns/SKILL.md +411 -0
- package/src/skills/leniu-crud-development/SKILL.md +404 -0
- package/src/skills/leniu-crud-development/references/templates.md +597 -0
- package/src/skills/leniu-customization-location/SKILL.md +410 -0
- package/src/skills/leniu-data-permission/SKILL.md +341 -0
- package/src/skills/leniu-database-ops/SKILL.md +426 -0
- package/src/skills/leniu-error-handler/SKILL.md +462 -0
- package/src/skills/leniu-java-amount-handling/SKILL.md +461 -0
- package/src/skills/leniu-java-code-style/SKILL.md +510 -0
- package/src/skills/leniu-java-concurrent/SKILL.md +400 -0
- package/src/skills/leniu-java-entity/SKILL.md +237 -0
- package/src/skills/leniu-java-entity/references/templates.md +237 -0
- package/src/skills/leniu-java-export/SKILL.md +570 -0
- package/src/skills/leniu-java-logging/SKILL.md +229 -0
- package/src/skills/leniu-java-logging/references/data-mask.md +46 -0
- package/src/skills/leniu-java-logging/references/logging-scenarios.md +113 -0
- package/src/skills/leniu-java-mq/SKILL.md +338 -0
- package/src/skills/leniu-java-mybatis/SKILL.md +267 -0
- package/src/skills/leniu-java-mybatis/references/report-mapper.md +88 -0
- package/src/skills/leniu-java-report-query-param/SKILL.md +291 -0
- package/src/skills/leniu-java-task/SKILL.md +367 -0
- package/src/skills/leniu-java-total-line/SKILL.md +196 -0
- package/src/skills/leniu-marketing-price-rule-customizer/SKILL.md +301 -0
- package/src/skills/leniu-marketing-recharge-rule-customizer/SKILL.md +285 -0
- package/src/skills/leniu-mealtime/SKILL.md +215 -0
- package/src/skills/leniu-redis-cache/SKILL.md +331 -0
- package/src/skills/leniu-report-customization/SKILL.md +415 -0
- package/src/skills/leniu-report-customization/references/table-fields.md +93 -0
- package/src/skills/leniu-report-standard-customization/SKILL.md +391 -0
- package/src/skills/leniu-report-standard-customization/references/analysis-module.md +64 -0
- package/src/skills/leniu-report-standard-customization/references/table-fields.md +113 -0
- package/src/skills/leniu-security-guard/SKILL.md +306 -0
- package/src/skills/leniu-utils-toolkit/SKILL.md +380 -0
- package/src/skills/loki-log-query/SKILL.md +400 -0
- package/src/skills/loki-log-query/environments.json +45 -0
- package/src/skills/mysql-debug/SKILL.md +400 -0
- package/src/skills/next/SKILL.md +137 -0
- package/src/skills/openspec-apply-change/SKILL.md +165 -0
- package/src/skills/openspec-archive-change/SKILL.md +122 -0
- package/src/skills/openspec-bulk-archive-change/SKILL.md +254 -0
- package/src/skills/openspec-continue-change/SKILL.md +126 -0
- package/src/skills/openspec-explore/SKILL.md +299 -0
- package/src/skills/openspec-ff-change/SKILL.md +109 -0
- package/src/skills/openspec-new-change/SKILL.md +82 -0
- package/src/skills/openspec-onboard/SKILL.md +414 -0
- package/src/skills/openspec-sync-specs/SKILL.md +146 -0
- package/src/skills/openspec-verify-change/SKILL.md +176 -0
- package/src/skills/performance-doctor/SKILL.md +297 -0
- package/src/skills/progress/SKILL.md +193 -0
- package/src/skills/project-navigator/SKILL.md +211 -0
- package/src/skills/redis-cache/SKILL.md +282 -0
- package/src/skills/redis-cache/references/listeners.md +23 -0
- package/src/skills/scheduled-jobs/SKILL.md +277 -0
- package/src/skills/security-guard/SKILL.md +245 -0
- package/src/skills/security-guard/references/encrypt-config.md +103 -0
- package/src/skills/security-guard/references/sensitive-strategies.md +42 -0
- package/src/skills/skill-creator/LICENSE.txt +202 -0
- package/src/skills/skill-creator/SKILL.md +479 -0
- package/src/skills/skill-creator/agents/analyzer.md +274 -0
- package/src/skills/skill-creator/agents/comparator.md +202 -0
- package/src/skills/skill-creator/agents/grader.md +223 -0
- package/src/skills/skill-creator/assets/eval_review.html +146 -0
- package/src/skills/skill-creator/eval-viewer/generate_review.py +471 -0
- package/src/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/src/skills/skill-creator/references/schemas.md +430 -0
- package/src/skills/skill-creator/scripts/__init__.py +0 -0
- package/src/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/src/skills/skill-creator/scripts/generate_report.py +326 -0
- package/src/skills/skill-creator/scripts/improve_description.py +248 -0
- package/src/skills/skill-creator/scripts/package_skill.py +136 -0
- package/src/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/src/skills/skill-creator/scripts/run_eval.py +310 -0
- package/src/skills/skill-creator/scripts/run_loop.py +332 -0
- package/src/skills/skill-creator/scripts/utils.py +47 -0
- package/src/skills/sms-mail/SKILL.md +346 -0
- package/src/skills/sms-mail/references/mail-config.md +88 -0
- package/src/skills/sms-mail/references/sms-config.md +74 -0
- package/src/skills/social-login/SKILL.md +328 -0
- package/src/skills/social-login/references/provider-configs.md +118 -0
- package/src/skills/start/SKILL.md +154 -0
- package/src/skills/store-pc/SKILL.md +366 -0
- package/src/skills/sync/SKILL.md +149 -0
- package/src/skills/sync-back-merge/SKILL.md +66 -0
- package/src/skills/task-tracker/SKILL.md +307 -0
- package/src/skills/tech-decision/SKILL.md +393 -0
- package/src/skills/tenant-management/SKILL.md +272 -0
- package/src/skills/tenant-management/references/tenant-scenarios.md +91 -0
- package/src/skills/test-development/SKILL.md +301 -0
- package/src/skills/test-development/references/parameterized-examples.md +119 -0
- package/src/skills/ui-pc/SKILL.md +438 -0
- package/src/skills/update-status/SKILL.md +159 -0
- package/src/skills/utils-toolkit/SKILL.md +354 -0
- package/src/skills/utils-toolkit/references/redis-utils-api.md +56 -0
- package/src/skills/websocket-sse/SKILL.md +350 -0
- package/src/skills/workflow-engine/SKILL.md +249 -0
- package/src/skills/yunxiao-task-management/SKILL.md +401 -0
- 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,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()
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: collaborating-with-gemini
|
|
3
|
+
description: |
|
|
4
|
+
与 Google Gemini CLI 协同开发。将编码任务委托给 Gemini 进行前端原型、UI设计和代码审查。
|
|
5
|
+
|
|
6
|
+
触发场景:
|
|
7
|
+
- 需要前端/UI/样式原型设计
|
|
8
|
+
- 需要 CSS/React/Vue 组件设计
|
|
9
|
+
- 需要代码审查和 Bug 分析
|
|
10
|
+
- 用户明确要求使用 Gemini 协作
|
|
11
|
+
- 复杂前端逻辑的原型设计
|
|
12
|
+
|
|
13
|
+
触发词:Gemini、协作、多模型、前端原型、UI设计、CSS、样式、gemini协同
|
|
14
|
+
|
|
15
|
+
前置要求:
|
|
16
|
+
- 已安装 Gemini CLI (npm install -g @google/gemini-cli)
|
|
17
|
+
- 已配置 Google API Key
|
|
18
|
+
|
|
19
|
+
注意:Gemini 对后端逻辑理解有缺陷,后端任务优先使用 Codex。
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# 与 Gemini CLI 协同开发
|
|
23
|
+
|
|
24
|
+
> 通过 Python 桥接脚本调用 Gemini CLI,获取前端原型和 UI 设计建议。
|
|
25
|
+
|
|
26
|
+
## 快速开始
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# 相对路径(推荐,在项目根目录执行)
|
|
30
|
+
python .claude/skills/collaborating-with-gemini/scripts/gemini_bridge.py --cd . --PROMPT "Your task"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**输出**: JSON 格式,包含 `success`、`SESSION_ID`、`agent_messages` 和可选的 `error`。
|
|
34
|
+
|
|
35
|
+
## 参数说明
|
|
36
|
+
|
|
37
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
38
|
+
|------|------|------|--------|------|
|
|
39
|
+
| `--PROMPT` | str | ✅ | - | 发送给 Gemini 的任务指令(使用英语) |
|
|
40
|
+
| `--cd` | Path | ✅ | - | 工作目录根路径 |
|
|
41
|
+
| `--sandbox` | bool | ❌ | `False` | 是否启用沙箱模式 |
|
|
42
|
+
| `--SESSION_ID` | str | ❌ | `""` | 会话 ID(继续之前的对话) |
|
|
43
|
+
| `--return-all-messages` | bool | ❌ | `False` | 返回完整推理信息 |
|
|
44
|
+
| `--model` | str | ❌ | `None` | 指定模型(仅用户明确要求时使用) |
|
|
45
|
+
|
|
46
|
+
## 使用模式
|
|
47
|
+
|
|
48
|
+
### 1. 基础调用
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
python .claude/skills/collaborating-with-gemini/scripts/gemini_bridge.py \
|
|
52
|
+
--cd . \
|
|
53
|
+
--PROMPT "Design a responsive card component for product display"
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 2. 多轮会话
|
|
57
|
+
|
|
58
|
+
**始终保存 SESSION_ID** 用于后续对话:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# 第一轮:设计 UI
|
|
62
|
+
python .claude/skills/collaborating-with-gemini/scripts/gemini_bridge.py \
|
|
63
|
+
--cd "/project" \
|
|
64
|
+
--PROMPT "Design a mobile-first login page with form validation"
|
|
65
|
+
|
|
66
|
+
# 后续轮次:使用 SESSION_ID 继续
|
|
67
|
+
python .claude/skills/collaborating-with-gemini/scripts/gemini_bridge.py \
|
|
68
|
+
--cd "/project" \
|
|
69
|
+
--SESSION_ID "uuid-from-previous-response" \
|
|
70
|
+
--PROMPT "Add dark mode support to the login page design"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 3. 获取 Unified Diff 补丁
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
python .claude/skills/collaborating-with-gemini/scripts/gemini_bridge.py \
|
|
77
|
+
--cd "/project" \
|
|
78
|
+
--PROMPT "Generate a unified diff to improve the CSS layout of Home.vue. OUTPUT: Unified Diff Patch ONLY."
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### 4. 调试模式(返回完整信息)
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
python .claude/skills/collaborating-with-gemini/scripts/gemini_bridge.py \
|
|
85
|
+
--cd "/project" \
|
|
86
|
+
--PROMPT "Debug this styling issue: elements overflow on mobile" \
|
|
87
|
+
--return-all-messages
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## 返回值结构
|
|
91
|
+
|
|
92
|
+
**成功时:**
|
|
93
|
+
```json
|
|
94
|
+
{
|
|
95
|
+
"success": true,
|
|
96
|
+
"SESSION_ID": "550e8400-e29b-41d4-a716-446655440000",
|
|
97
|
+
"agent_messages": "模型回复内容..."
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**失败时:**
|
|
102
|
+
```json
|
|
103
|
+
{
|
|
104
|
+
"success": false,
|
|
105
|
+
"error": "错误信息描述"
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## 协作工作流
|
|
110
|
+
|
|
111
|
+
### 推荐场景
|
|
112
|
+
|
|
113
|
+
| 场景 | 说明 |
|
|
114
|
+
|------|------|
|
|
115
|
+
| **前端/UI/UX** | Gemini 擅长 CSS、样式和视觉设计 |
|
|
116
|
+
| **组件设计** | React/Vue 组件的原型设计 |
|
|
117
|
+
| **响应式布局** | 移动端适配和布局优化 |
|
|
118
|
+
| **样式审查** | CSS 代码质量和最佳实践 |
|
|
119
|
+
|
|
120
|
+
### 重要约束
|
|
121
|
+
|
|
122
|
+
1. **上下文限制**: Gemini 上下文 < 32k tokens,避免过长输入
|
|
123
|
+
2. **英语交互**: 与 Gemini 交互时使用英语,获得更好效果
|
|
124
|
+
3. **中文输出强制**: Gemini 倾向于输出英文,必须在每次 PROMPT 末尾追加以下约束:
|
|
125
|
+
```
|
|
126
|
+
IMPORTANT LANGUAGE RULES:
|
|
127
|
+
- All SQL COMMENT values MUST be in Chinese (e.g., COMMENT '用户名' NOT COMMENT 'username')
|
|
128
|
+
- All Java/code comments (Javadoc, inline //, block /* */) MUST be in Chinese
|
|
129
|
+
- All field descriptions, table descriptions MUST be in Chinese
|
|
130
|
+
- Variable names and class names remain in English (camelCase/PascalCase)
|
|
131
|
+
```
|
|
132
|
+
4. **Diff 输出**: 在 PROMPT 中明确要求 `OUTPUT: Unified Diff Patch ONLY`
|
|
133
|
+
5. **后端逻辑**: Gemini 对后端逻辑理解有缺陷,后端任务优先使用 Codex
|
|
134
|
+
6. **重构代码**: 将 Gemini 的输出视为"脏原型",由 Claude 重构为生产代码(**特别检查注释和 COMMENT 是否为中文,不是则修正**)
|
|
135
|
+
7. **后台运行**: 对于长时间任务,使用 `Run in the background`
|
|
136
|
+
|
|
137
|
+
## 与本项目的集成
|
|
138
|
+
|
|
139
|
+
### 典型用例:后端代码审查
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# 审查后端 Controller 代码
|
|
143
|
+
python .claude/skills/collaborating-with-gemini/scripts/gemini_bridge.py \
|
|
144
|
+
--cd . \
|
|
145
|
+
--PROMPT "Review the RESTful API design in ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/. Focus on path conventions (/list, /{id}) and proper use of @SaCheckPermission."
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 典型用例:Service 层代码审查
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# 审查 Service 实现
|
|
152
|
+
python .claude/skills/collaborating-with-gemini/scripts/gemini_bridge.py \
|
|
153
|
+
--cd "/project" \
|
|
154
|
+
--PROMPT "Review the XxxServiceImpl.java for buildQueryWrapper implementation, MapstructUtils usage, and adherence to three-layer architecture (no DAO layer). OUTPUT: Review comments."
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### 典型用例:Entity 设计审查
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
# 审查 Entity 设计
|
|
161
|
+
python .claude/skills/collaborating-with-gemini/scripts/gemini_bridge.py \
|
|
162
|
+
--cd "/project" \
|
|
163
|
+
--PROMPT "Review the Entity classes in ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/ for proper TenantEntity inheritance, @TableLogic usage, and field naming conventions."
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## 安装前置
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
# 安装 Gemini CLI
|
|
170
|
+
npm install -g @google/gemini-cli
|
|
171
|
+
|
|
172
|
+
# 配置 API Key
|
|
173
|
+
gemini auth login
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## 故障排除
|
|
177
|
+
|
|
178
|
+
| 问题 | 解决方案 |
|
|
179
|
+
|------|---------|
|
|
180
|
+
| `gemini: command not found` | 确保已安装并添加到 PATH |
|
|
181
|
+
| `SESSION_ID` 获取失败 | 检查网络连接和 API Key |
|
|
182
|
+
| 输出被截断 | 使用 `--return-all-messages` 获取完整信息 |
|
|
183
|
+
| 上下文过长 | 减少输入内容,分批处理 |
|
|
184
|
+
| Windows 路径问题 | 使用正斜杠 `/` 或双反斜杠 `\\` |
|
|
185
|
+
|
|
186
|
+
## Gemini vs Codex 选择指南
|
|
187
|
+
|
|
188
|
+
| 任务类型 | 推荐模型 | 原因 |
|
|
189
|
+
|---------|---------|------|
|
|
190
|
+
| 前端 UI/CSS | Gemini | 视觉设计能力强 |
|
|
191
|
+
| 后端逻辑 | Codex | 算法和逻辑分析强 |
|
|
192
|
+
| 组件样式 | Gemini | CSS 和布局专长 |
|
|
193
|
+
| API 设计 | Codex | 接口设计和架构 |
|
|
194
|
+
| 代码审查 | 两者皆可 | 双模型交叉验证更好 |
|