@ccoalm/ccl-skills 0.1.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 (561) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +49 -0
  3. package/dist/assets/marketplace/.agents/plugins/marketplace.json +12 -0
  4. package/dist/assets/marketplace/.claude-plugin/marketplace.json +13 -0
  5. package/dist/assets/marketplace/marketplace-manifest.json +12 -0
  6. package/dist/assets/marketplace/plugins/ccl-skills/.claude-plugin/marketplace.json +16 -0
  7. package/dist/assets/marketplace/plugins/ccl-skills/.claude-plugin/plugin.json +5 -0
  8. package/dist/assets/marketplace/plugins/ccl-skills/.codex-plugin/plugin.json +5 -0
  9. package/dist/assets/marketplace/plugins/ccl-skills/.worktree-only +3 -0
  10. package/dist/assets/marketplace/plugins/ccl-skills/agent-context/session-start.md +45 -0
  11. package/dist/assets/marketplace/plugins/ccl-skills/agent-context/subagent-start.md +12 -0
  12. package/dist/assets/marketplace/plugins/ccl-skills/hooks/AGENTS.md +19 -0
  13. package/dist/assets/marketplace/plugins/ccl-skills/hooks/guard-delegation-owner.sh +125 -0
  14. package/dist/assets/marketplace/plugins/ccl-skills/hooks/guard-edit-isolation.sh +102 -0
  15. package/dist/assets/marketplace/plugins/ccl-skills/hooks/guard-merge-authorization.sh +1156 -0
  16. package/dist/assets/marketplace/plugins/ccl-skills/hooks/hooks.json +131 -0
  17. package/dist/assets/marketplace/plugins/ccl-skills/hooks/merge-authorization-prompt.sh +142 -0
  18. package/dist/assets/marketplace/plugins/ccl-skills/hooks/owner-dispatch-guard.sh +12 -0
  19. package/dist/assets/marketplace/plugins/ccl-skills/hooks/owner-dispatch-stop.sh +13 -0
  20. package/dist/assets/marketplace/plugins/ccl-skills/hooks/remind-post-merge-cleanup.sh +144 -0
  21. package/dist/assets/marketplace/plugins/ccl-skills/hooks/session-context.sh +87 -0
  22. package/dist/assets/marketplace/plugins/ccl-skills/hooks/session-start.sh +86 -0
  23. package/dist/assets/marketplace/plugins/ccl-skills/hooks/skill-extraction-gate-stop.sh +69 -0
  24. package/dist/assets/marketplace/plugins/ccl-skills/hooks/subagent-start.sh +26 -0
  25. package/dist/assets/marketplace/plugins/ccl-skills/hooks/test_guard_delegation_owner.sh +329 -0
  26. package/dist/assets/marketplace/plugins/ccl-skills/hooks/test_guard_edit_isolation.sh +322 -0
  27. package/dist/assets/marketplace/plugins/ccl-skills/hooks/test_guard_merge_authorization.sh +902 -0
  28. package/dist/assets/marketplace/plugins/ccl-skills/hooks/test_merge_authorization_prompt.sh +178 -0
  29. package/dist/assets/marketplace/plugins/ccl-skills/hooks/test_remind_post_merge_cleanup.sh +121 -0
  30. package/dist/assets/marketplace/plugins/ccl-skills/hooks/test_session_start.sh +170 -0
  31. package/dist/assets/marketplace/plugins/ccl-skills/packages/opencode-plugin/AGENTS.md +17 -0
  32. package/dist/assets/marketplace/plugins/ccl-skills/packages/opencode-plugin/ccl-skills.ts +564 -0
  33. package/dist/assets/marketplace/plugins/ccl-skills/packages/opencode-plugin/commands/ccl-install-skills.md +14 -0
  34. package/dist/assets/marketplace/plugins/ccl-skills/packages/opencode-plugin/commands/ccl-update-skills.md +44 -0
  35. package/dist/assets/marketplace/plugins/ccl-skills/packages/opencode-plugin/commands/ccl-verify-skills.md +109 -0
  36. package/dist/assets/marketplace/plugins/ccl-skills/packages/opencode-plugin/commands/ccl-worktree-check.md +36 -0
  37. package/dist/assets/marketplace/plugins/ccl-skills/scripts/owner-dispatch/AGENTS.md +28 -0
  38. package/dist/assets/marketplace/plugins/ccl-skills/scripts/owner-dispatch/README.md +276 -0
  39. package/dist/assets/marketplace/plugins/ccl-skills/scripts/owner-dispatch/owner-dispatch.example.json +10 -0
  40. package/dist/assets/marketplace/plugins/ccl-skills/scripts/owner-dispatch/owner-dispatch.sh +1307 -0
  41. package/dist/assets/marketplace/plugins/ccl-skills/scripts/owner-dispatch/test.sh +941 -0
  42. package/dist/assets/marketplace/plugins/ccl-skills/skills/agents-file-coverage-gate/SKILL.md +45 -0
  43. package/dist/assets/marketplace/plugins/ccl-skills/skills/agents-file-coverage-gate/agents/openai.yaml +4 -0
  44. package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/SKILL.md +188 -0
  45. package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/agents/openai.yaml +4 -0
  46. package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/android-dev.md +92 -0
  47. package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/flutter-dev.md +80 -0
  48. package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/ios-dev.md +72 -0
  49. package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/kotlin-multiplatform.md +93 -0
  50. package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/mobile-platform-boundaries.md +77 -0
  51. package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/mobile-quality-release.md +77 -0
  52. package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/source-evidence-map.md +64 -0
  53. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/SKILL.md +353 -0
  54. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/agents/openai.yaml +4 -0
  55. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/client-routing.md +419 -0
  56. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/manual-invocation-and-prompts.md +126 -0
  57. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/staged-review-contract.md +197 -0
  58. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/timeout-auth-and-capabilities.md +179 -0
  59. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/AGENTS.md +98 -0
  60. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/classify_envelope.py +93 -0
  61. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/classify_timeout_exit.sh +15 -0
  62. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/claude_review.sh +1438 -0
  63. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/codex_review.sh +324 -0
  64. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/concern_excerpt.py +295 -0
  65. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/egress_schema.py +214 -0
  66. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/init_policy_matrix.py +642 -0
  67. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/kimi_packet_mcp.py +181 -0
  68. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/kimi_review.sh +1165 -0
  69. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/opencode_review.sh +1190 -0
  70. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/parse_cli_review.py +946 -0
  71. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/parse_opencode_review.py +474 -0
  72. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/parse_probe_result.py +1899 -0
  73. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/parse_review_json.py +200 -0
  74. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/review_gate.py +2845 -0
  75. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/review_gate.sh +6 -0
  76. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/run_claude_capture.py +71 -0
  77. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/runtime-surface-verification-design.md +53 -0
  78. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_classify_envelope.sh +68 -0
  79. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_claude_review_probe.sh +2311 -0
  80. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_cli_review_wrappers.sh +1832 -0
  81. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_code_review_identity.sh +73 -0
  82. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_concern_excerpt.sh +245 -0
  83. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_egress_schema.sh +177 -0
  84. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_init_policy_matrix.sh +272 -0
  85. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_kimi_packet_mcp.py +195 -0
  86. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_opencode_review_concurrency.sh +120 -0
  87. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_opencode_review_retry.sh +1005 -0
  88. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_parse_opencode_review.sh +258 -0
  89. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_parse_probe_result.sh +574 -0
  90. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_parse_review_json.sh +349 -0
  91. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_client_compat.py +434 -0
  92. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_client_order.sh +264 -0
  93. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_gate.sh +2412 -0
  94. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/verify_native_skill_binding.py +123 -0
  95. package/dist/assets/marketplace/plugins/ccl-skills/skills/defect-diagnosis/SKILL.md +153 -0
  96. package/dist/assets/marketplace/plugins/ccl-skills/skills/defect-diagnosis/agents/openai.yaml +4 -0
  97. package/dist/assets/marketplace/plugins/ccl-skills/skills/defect-diagnosis/references/diagnosis-playbook.md +54 -0
  98. package/dist/assets/marketplace/plugins/ccl-skills/skills/defect-diagnosis/references/prevention-routing.md +36 -0
  99. package/dist/assets/marketplace/plugins/ccl-skills/skills/feature-risk-router/SKILL.md +69 -0
  100. package/dist/assets/marketplace/plugins/ccl-skills/skills/feature-risk-router/agents/openai.yaml +4 -0
  101. package/dist/assets/marketplace/plugins/ccl-skills/skills/feature-risk-router/references/security-review-gate.md +41 -0
  102. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/SKILL.md +165 -0
  103. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/agents/openai.yaml +4 -0
  104. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/api-security-boundaries.md +47 -0
  105. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/architecture-playbook.md +160 -0
  106. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/artifact-generation-architecture.md +37 -0
  107. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/audit-history-architecture.md +29 -0
  108. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/bulk-workflow-architecture.md +33 -0
  109. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/config-rule-routing-architecture.md +34 -0
  110. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/cross-cutting-concerns.md +72 -0
  111. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/data-modeling-and-migrations.md +79 -0
  112. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/data-platform-architecture.md +210 -0
  113. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/dependency-platform.md +105 -0
  114. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/developer-tooling-architecture.md +38 -0
  115. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/error-contract-architecture.md +36 -0
  116. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/event-driven-architecture.md +260 -0
  117. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/http-gateway-architecture.md +74 -0
  118. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/mq-consumer-architecture.md +38 -0
  119. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/multi-tenant-isolation.md +275 -0
  120. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/notification-architecture.md +25 -0
  121. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/ops-checklist.md +57 -0
  122. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/performance-capacity-architecture.md +38 -0
  123. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/protobuf-contract-architecture.md +119 -0
  124. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/redis-cache-coordination.md +93 -0
  125. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/release-runtime-readiness.md +65 -0
  126. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/replay-comparison-architecture.md +26 -0
  127. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/runtime-observability.md +94 -0
  128. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/service-scaffold.md +76 -0
  129. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/source-evidence-map.md +55 -0
  130. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/workflow-state-architecture.md +38 -0
  131. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/SKILL.md +159 -0
  132. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/agents/openai.yaml +4 -0
  133. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/artifact-generation-patterns.md +37 -0
  134. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/audit-history-patterns.md +28 -0
  135. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/bulk-import-export-patterns.md +56 -0
  136. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/config-rule-routing-patterns.md +38 -0
  137. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/data-access-patterns.md +55 -0
  138. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/db-schema-and-dal-patterns.md +109 -0
  139. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/dependency-client-patterns.md +130 -0
  140. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/developer-tooling-patterns.md +70 -0
  141. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/domain-feature-patterns.md +78 -0
  142. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/engineering-patterns.md +119 -0
  143. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/error-contract-patterns.md +55 -0
  144. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/feature-playbook.md +61 -0
  145. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/http-gateway-client-patterns.md +76 -0
  146. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/mq-consumer-patterns.md +55 -0
  147. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/notification-patterns.md +42 -0
  148. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/observability-implementation-patterns.md +101 -0
  149. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/performance-capacity-patterns.md +44 -0
  150. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/protobuf-contract-patterns.md +72 -0
  151. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/public-api-integration-patterns.md +56 -0
  152. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/quality-and-testing-patterns.md +91 -0
  153. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/redis-cache-lock-patterns.md +123 -0
  154. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/release-ops-patterns.md +112 -0
  155. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/reliability-patterns.md +83 -0
  156. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/replay-comparison-patterns.md +32 -0
  157. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/scaffold-and-codegen.md +86 -0
  158. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/source-evidence-map.md +54 -0
  159. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/state-machine-task-patterns.md +45 -0
  160. package/dist/assets/marketplace/plugins/ccl-skills/skills/grill-me/SKILL.md +80 -0
  161. package/dist/assets/marketplace/plugins/ccl-skills/skills/grill-me/agents/openai.yaml +4 -0
  162. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/SKILL.md +117 -0
  163. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/agents/openai.yaml +4 -0
  164. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-approval-auto-reviewer.md +106 -0
  165. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-command-sandbox.md +441 -0
  166. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-context-freshness.md +47 -0
  167. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-credentials-auth.md +13 -0
  168. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-extensions-skills.md +13 -0
  169. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-file-edit-protocol.md +129 -0
  170. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-ide-integration.md +5 -0
  171. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-input-ingestion.md +13 -0
  172. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-instruction-composition.md +13 -0
  173. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-lifecycle-hooks.md +92 -0
  174. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-messaging.md +5 -0
  175. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-runtime-bootstrap.md +5 -0
  176. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-session-persistence.md +448 -0
  177. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-task-orchestration.md +13 -0
  178. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-tool-dispatch.md +123 -0
  179. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-turn-lifecycle.md +131 -0
  180. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/inference-capacity-operations.md +162 -0
  181. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/llm-client-gateway.md +156 -0
  182. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/model-prompt-evaluation.md +146 -0
  183. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/retrieval-agent-safety.md +273 -0
  184. package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/SKILL.md +202 -0
  185. package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/agents/openai.yaml +4 -0
  186. package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/contracts-and-state.md +62 -0
  187. package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/cross-stack-alignment.md +94 -0
  188. package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/framework-choice.md +76 -0
  189. package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/online-practice-uptake.md +56 -0
  190. package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/platform-capabilities.md +91 -0
  191. package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/product-page-checklist.md +40 -0
  192. package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/qa-release.md +72 -0
  193. package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/source-evidence-map.md +82 -0
  194. package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-agent-delegation/SKILL.md +103 -0
  195. package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-agent-delegation/agents/openai.yaml +5 -0
  196. package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-agent-delegation/references/multi-agent-delegation-playbook.md +100 -0
  197. package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-perspective-research/SKILL.md +70 -0
  198. package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-perspective-research/agents/openai.yaml +4 -0
  199. package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-perspective-research/references/public-data-acquisition.md +549 -0
  200. package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-perspective-research/references/public-disclosure-channels.md +97 -0
  201. package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-perspective-research/references/research-prompts.md +66 -0
  202. package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-perspective-research/scripts/AGENTS.md +32 -0
  203. package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-perspective-research/scripts/test-public-data-acquisition-recipes.sh +379 -0
  204. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/SKILL.md +244 -0
  205. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/agents/openai.yaml +4 -0
  206. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/alerting-and-on-call.md +76 -0
  207. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/framework-middleware-checklist.md +142 -0
  208. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/infra-component-deployment.md +268 -0
  209. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/log-correlation-recipe.md +124 -0
  210. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/log-schema-canonical.md +208 -0
  211. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/metrics-conventions.md +105 -0
  212. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/obs-stack-architecture.md +107 -0
  213. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/sli-slo-design.md +95 -0
  214. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/source-register.md +11 -0
  215. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/SKILL.md +303 -0
  216. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/agents/openai.yaml +4 -0
  217. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/canary-and-rollout-strategy.md +163 -0
  218. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/config-center-via-etcd.md +245 -0
  219. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/custom-control-plane-boundary.md +298 -0
  220. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/deploy-cli-concrete-recipe.md +312 -0
  221. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/deploy-pipeline.md +165 -0
  222. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/env-and-lane-matrix.md +126 -0
  223. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/lane-orchestration-control-plane.md +383 -0
  224. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/multi-region-and-cluster.md +135 -0
  225. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/promotion-gate-and-review.md +149 -0
  226. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/python-package-registry-release.md +462 -0
  227. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/rollback-playbook.md +123 -0
  228. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/secret-and-config-management.md +231 -0
  229. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/version-authority-and-deprecation.md +21 -0
  230. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/SKILL.md +276 -0
  231. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/agents/openai.yaml +4 -0
  232. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/dual-sidecar-and-traffic-config-center.md +127 -0
  233. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/framework-middleware.md +143 -0
  234. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/grpc-authority-workaround.md +90 -0
  235. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/http-response-envelope-contract.md +24 -0
  236. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/mesh-architecture.md +127 -0
  237. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/multi-env-routing.md +192 -0
  238. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/protobuf-http-contract-signals.md +64 -0
  239. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/retry-timeout-circuit-breaker.md +124 -0
  240. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/rpc-framework-recipe.md +494 -0
  241. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/service-discovery-choice.md +113 -0
  242. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/service-discovery-migration-playbook.md +231 -0
  243. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/service-discovery-recipe.md +131 -0
  244. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/SKILL.md +235 -0
  245. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/agents/openai.yaml +4 -0
  246. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/adr-convention.md +146 -0
  247. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/algorithm-launch-checklist.md +30 -0
  248. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/algorithm-launch-evaluation-report-template.md +25 -0
  249. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/algorithm-launch-execution-spec.md +108 -0
  250. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/algorithm-launch-sop.md +457 -0
  251. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/algorithm-launch-templates.md +24 -0
  252. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/artifact-egress-confidentiality.md +58 -0
  253. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/code-review-checklist.md +86 -0
  254. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/cross-repo-coordination.md +46 -0
  255. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/delivery-lifecycle.md +192 -0
  256. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/design-review-gate-mechanics.md +62 -0
  257. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/design-routing-and-readiness.md +45 -0
  258. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/diagnostic-spec-match-gate.md +36 -0
  259. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/dispatch-owner-skills.md +35 -0
  260. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/dormant-code-activation.md +47 -0
  261. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/existing-project-assessment-report.md +223 -0
  262. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/external-skill-augmentation.md +46 -0
  263. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/feature-deprecation-cascade.md +15 -0
  264. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/high-risk-resilience-gates.md +73 -0
  265. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/implementation-completeness-and-minimality.md +120 -0
  266. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/implementation-entry-reentry-gate.md +122 -0
  267. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/modular-monolith-heuristic.md +105 -0
  268. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/pre-final-continuation-gate.md +115 -0
  269. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/problem-resolution-and-learning.md +62 -0
  270. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/quality-attributes.md +112 -0
  271. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/quality-remediation-program.md +88 -0
  272. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/rd-standards-doc-family-checklist.md +27 -0
  273. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/refactoring-discipline.md +52 -0
  274. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/review-reception.md +34 -0
  275. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/shared-gate-artifact-classification.md +76 -0
  276. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/source-evidence-map.md +31 -0
  277. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/status-tracker-sync.md +77 -0
  278. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/sync-spec-repo-contract.md +25 -0
  279. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/verify-developer-experience.md +34 -0
  280. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/worktree-mechanics.md +55 -0
  281. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/scripts/AGENTS.md +18 -0
  282. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/scripts/check-agent-contract-coverage.sh +213 -0
  283. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/SKILL.md +136 -0
  284. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/agents/openai.yaml +9 -0
  285. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/analytics-visualization-interactions.md +206 -0
  286. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/behavioral-aesthetic-logic.md +108 -0
  287. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/complex-creation-interactions.md +194 -0
  288. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-execution-checklist.md +214 -0
  289. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-impl-naming-and-versioning.md +53 -0
  290. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-intake-and-acceptance.md +129 -0
  291. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-system-source-of-truth.md +97 -0
  292. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/external-ui-ux-quality-benchmarks.md +79 -0
  293. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/frontend-code-evidence-map.md +63 -0
  294. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/interaction-design-patterns.md +146 -0
  295. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/layout-recipes-and-screenshot-acceptance.md +250 -0
  296. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/multi-project-token-consistency.md +237 -0
  297. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/multi-stack-strategy.md +65 -0
  298. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/operational-processing-workflows.md +237 -0
  299. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/platform-mobile-patterns.md +324 -0
  300. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/platform-web-desktop-patterns.md +456 -0
  301. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/product-lifecycle-acceptance-and-iteration.md +114 -0
  302. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/product-surface-patterns.md +79 -0
  303. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/resource-management-interactions.md +113 -0
  304. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/scenario-community-patterns.md +133 -0
  305. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/source-map.md +130 -0
  306. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/tokens-and-components.md +47 -0
  307. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/trust-sensitive-ai-and-data-patterns.md +96 -0
  308. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/ui-ux-audit.md +106 -0
  309. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/ui-ux-design-development.md +176 -0
  310. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/visual-craft.md +111 -0
  311. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/SKILL.md +157 -0
  312. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/agents/openai.yaml +4 -0
  313. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/ai-service-integration-boundaries.md +57 -0
  314. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/api-contract-and-schema.md +62 -0
  315. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/api-security-boundaries.md +39 -0
  316. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/architecture-playbook.md +46 -0
  317. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/async-execution-model.md +24 -0
  318. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/background-jobs-and-scheduling.md +18 -0
  319. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/batch-and-pipeline-architecture.md +11 -0
  320. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/config-secrets-runtime.md +22 -0
  321. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/data-modeling-and-migrations.md +64 -0
  322. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/data-platform-architecture.md +211 -0
  323. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/event-driven-architecture.md +263 -0
  324. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/multi-tenant-isolation.md +281 -0
  325. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/observability-and-ops.md +26 -0
  326. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/packaging-runtime-readiness.md +20 -0
  327. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/redis-cache-coordination.md +41 -0
  328. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/reliability-and-error-contract.md +17 -0
  329. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/source-evidence-map.md +55 -0
  330. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/web-framework-boundaries.md +26 -0
  331. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/SKILL.md +143 -0
  332. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/agents/openai.yaml +4 -0
  333. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/ai-service-wiring-patterns.md +16 -0
  334. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/async-and-worker-patterns.md +24 -0
  335. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/background-job-patterns.md +18 -0
  336. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/batch-and-artifact-patterns.md +13 -0
  337. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/dependency-client-patterns.md +39 -0
  338. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/error-handling-patterns.md +26 -0
  339. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/feature-playbook.md +43 -0
  340. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/observability-implementation-patterns.md +31 -0
  341. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/project-structure-and-tooling.md +24 -0
  342. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/public-api-security-patterns.md +52 -0
  343. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/redis-cache-lock-patterns.md +78 -0
  344. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/schema-and-validation-patterns.md +23 -0
  345. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/source-evidence-map.md +56 -0
  346. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/sqlalchemy-and-migrations-patterns.md +99 -0
  347. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/testing-and-quality-patterns.md +61 -0
  348. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/web-framework-patterns.md +35 -0
  349. package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/SKILL.md +91 -0
  350. package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/agents/openai.yaml +4 -0
  351. package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/config-runtime-readback.md +20 -0
  352. package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/mr-merge-authorization.md +31 -0
  353. package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/post-release-env-reset.md +31 -0
  354. package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/release-closeout-evidence.md +20 -0
  355. package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/release-scope-confirmation.md +21 -0
  356. package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/tag-and-prod-pipeline-gate.md +20 -0
  357. package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/test-scope-prompt.md +24 -0
  358. package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/watcher-discipline.md +14 -0
  359. package/dist/assets/marketplace/plugins/ccl-skills/skills/release-doc-writer/SKILL.md +64 -0
  360. package/dist/assets/marketplace/plugins/ccl-skills/skills/release-doc-writer/agents/openai.yaml +4 -0
  361. package/dist/assets/marketplace/plugins/ccl-skills/skills/release-doc-writer/references/comment-safe-release-doc.md +19 -0
  362. package/dist/assets/marketplace/plugins/ccl-skills/skills/release-doc-writer/references/release-evidence-workflow.md +23 -0
  363. package/dist/assets/marketplace/plugins/ccl-skills/skills/release-doc-writer/references/release-testing-scope-section.md +15 -0
  364. package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-baseline/SKILL.md +87 -0
  365. package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-baseline/agents/openai.yaml +4 -0
  366. package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-doc-writer/SKILL.md +130 -0
  367. package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-doc-writer/agents/openai.yaml +4 -0
  368. package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-doc-writer/references/prd-composition-contract.md +35 -0
  369. package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-doc-writer/references/requirement-closure-contract.md +86 -0
  370. package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-doc-writer/references/security-four-questions.md +38 -0
  371. package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-intent/SKILL.md +91 -0
  372. package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-intent/agents/openai.yaml +4 -0
  373. package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-scope/SKILL.md +88 -0
  374. package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-scope/agents/openai.yaml +4 -0
  375. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/SKILL.md +337 -0
  376. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/agents/openai.yaml +4 -0
  377. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/analysis-parse-fix-test-challenge-replay.md +47 -0
  378. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/attribution-verification.md +69 -0
  379. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/bootstrap-slim-c3-obligation-table.md +112 -0
  380. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/coverage-exhaustion-traps.md +45 -0
  381. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/description-authoring.md +162 -0
  382. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/dual-track-review-gate.md +507 -0
  383. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/eval-routing.md +86 -0
  384. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/evidence-card-template.md +51 -0
  385. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/example-domain-preselect.md +79 -0
  386. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/external-practice-controls.md +57 -0
  387. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/extraction-lifecycle-handoff.md +65 -0
  388. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/extraction-quickstart.md +194 -0
  389. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/firing-point-placement.md +75 -0
  390. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/harness-patterns-and-eval.md +286 -0
  391. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/incident-postmortem-extraction.md +190 -0
  392. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/l0-l1-l2-routing.md +114 -0
  393. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/online-skill-review.md +47 -0
  394. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/parallel-stack-references-pattern.md +164 -0
  395. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/r0-leakage-audit.md +90 -0
  396. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/recurring-anti-patterns-checklist.md +320 -0
  397. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/resume-paused-delivery.md +16 -0
  398. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/review-feedback-mining.md +33 -0
  399. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/review-finding-standards.md +57 -0
  400. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/review-rubric.md +40 -0
  401. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/rule-consolidation.md +118 -0
  402. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/skill-listing-budget.md +19 -0
  403. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-register.md +254 -0
  404. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-to-skill-extraction.md +658 -0
  405. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/two-source-extraction-pattern.md +167 -0
  406. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/uiux-judgment-extraction.md +179 -0
  407. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/uiux-routing-map.md +51 -0
  408. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/validation-and-landing.md +180 -0
  409. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/AGENTS.md +18 -0
  410. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/check-ccl-skills.sh +1452 -0
  411. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/check-evidence-card-leak.sh +491 -0
  412. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/check-mr-target-freshness.sh +173 -0
  413. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/check-size-budget.sh +488 -0
  414. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/check-sync-pointers.sh +419 -0
  415. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/eval-golden-trace.rb +197 -0
  416. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/eval-health.rb +327 -0
  417. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/eval-routing-bank.rb +401 -0
  418. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/eval-routing.rb +248 -0
  419. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/generic-r0-leak-scan.sh +282 -0
  420. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/governing-chain-diff.py +321 -0
  421. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/impact-chain-gate.rb +964 -0
  422. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/register-firing-path-resolution.rb +708 -0
  423. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/skill-behavior-eval.py +540 -0
  424. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/source-register-lifecycle.rb +51 -0
  425. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/source-register-pending-status.rb +55 -0
  426. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_ai_coding_implementation_gates.sh +829 -0
  427. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_impact_chain_refscripts.sh +1203 -0
  428. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_r0_status.sh +75 -0
  429. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_register_pending_exclusion.sh +137 -0
  430. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_regressions.sh +173 -0
  431. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_route_drift.sh +377 -0
  432. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_size_budget.sh +833 -0
  433. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_skill_catalog.sh +491 -0
  434. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_source_register_lifecycle.sh +114 -0
  435. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_mr_target_freshness.sh +261 -0
  436. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_sync_pointers.sh +538 -0
  437. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_controlled_escalation_pins.sh +154 -0
  438. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_eval_routing_bank_grader_diagnostics.sh +190 -0
  439. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_eval_routing_bank_surface_binding.sh +178 -0
  440. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_eval_routing_prose_target.sh +86 -0
  441. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_generic_r0_leak_scan.sh +131 -0
  442. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_git_identity_predicate_gate.sh +243 -0
  443. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_governing_chain_diff.sh +419 -0
  444. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_impact_chain_gate_dateless_host.sh +120 -0
  445. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_register_firing_path_resolution.sh +724 -0
  446. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_register_firing_path_wiring.sh +414 -0
  447. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_regression_runner_registration.sh +34 -0
  448. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_routing_bank_integrity.sh +205 -0
  449. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_routing_pointer_integrity.sh +194 -0
  450. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_validate_skill_credential_cwd.sh +61 -0
  451. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_validate_skill_cross_refs.sh +111 -0
  452. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_validate_skill_root_depth.sh +53 -0
  453. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/validate-skill.sh +257 -0
  454. package/dist/assets/marketplace/plugins/ccl-skills/skills/terminal-cli-dev/SKILL.md +98 -0
  455. package/dist/assets/marketplace/plugins/ccl-skills/skills/terminal-cli-dev/agents/openai.yaml +4 -0
  456. package/dist/assets/marketplace/plugins/ccl-skills/skills/terminal-cli-dev/references/input-state-machines.md +36 -0
  457. package/dist/assets/marketplace/plugins/ccl-skills/skills/terminal-cli-dev/references/streaming-rich-output.md +130 -0
  458. package/dist/assets/marketplace/plugins/ccl-skills/skills/terminal-cli-dev/references/terminal-side-channels.md +96 -0
  459. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/SKILL.md +408 -0
  460. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/agents/openai.yaml +4 -0
  461. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/AGENTS.md +18 -0
  462. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/bitable-setup.md +573 -0
  463. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/ci_templates/README.md +120 -0
  464. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/ci_templates/github-actions.yml +119 -0
  465. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/ci_templates/gitlab-ci.yml +76 -0
  466. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/ci_templates/jenkins.Jenkinsfile +106 -0
  467. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/classical-test-design-techniques.md +279 -0
  468. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/gen_report.py +2807 -0
  469. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/makefile-template.md +200 -0
  470. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/report-config-schema.md +272 -0
  471. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/run_pytestless.py +475 -0
  472. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/source-to-case-workflows.md +258 -0
  473. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/tc-marker-conventions.md +316 -0
  474. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/tc-review-and-prioritization.md +145 -0
  475. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/tc_helpers/AGENTS.md +16 -0
  476. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/tc_helpers/tc.dart +129 -0
  477. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/tc_helpers/tc.go +197 -0
  478. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/tc_helpers/tc.py +135 -0
  479. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/tc_helpers/tc.ts +285 -0
  480. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/test_gen_report.py +2144 -0
  481. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/update-lifecycle.md +62 -0
  482. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/SKILL.md +212 -0
  483. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/agents/openai.yaml +4 -0
  484. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/ci-fixtures-and-flake-control.md +75 -0
  485. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/client-runtime-test-matrices.md +50 -0
  486. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/data-and-workflow-testing.md +34 -0
  487. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/design-closed-contract-oracles.md +31 -0
  488. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/e2e-real-flow-testing.md +71 -0
  489. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/fitness-functions.md +240 -0
  490. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/integration-contract-testing.md +235 -0
  491. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/non-functional-specialized-scenarios.md +296 -0
  492. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/rd-testing-standard-template.md +126 -0
  493. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/run-killing-mutation-walk.md +43 -0
  494. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/scenario-testing.md +136 -0
  495. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/source-evidence-map.md +59 -0
  496. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/structured-tc-input-translation.md +67 -0
  497. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/test-code-authoring-patterns.md +392 -0
  498. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/test-data-and-determinism.md +39 -0
  499. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/test-topology-and-commands.md +92 -0
  500. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/unit-testing.md +46 -0
  501. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/vendored-contract-drift-checklist.md +64 -0
  502. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/verify-enforcement-mechanisms.md +18 -0
  503. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/scripts/AGENTS.md +17 -0
  504. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/scripts/client-terminal-ansi-check.py +140 -0
  505. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/scripts/client-terminal-ansi-check.test.sh +75 -0
  506. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/scripts/lang-basics-ast-check.py +170 -0
  507. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/scripts/lang-basics-ast-check.test.sh +87 -0
  508. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/scripts/lang-basics-go-check.go +198 -0
  509. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/scripts/lang-basics-go-check.test.sh +109 -0
  510. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/scripts/test_mutation_backup_recipe.sh +237 -0
  511. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/SKILL.md +184 -0
  512. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/agents/openai.yaml +4 -0
  513. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/comment-safe-feishu.md +93 -0
  514. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/cross-model-co-review.md +3 -0
  515. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/delivery-face-closeout.md +60 -0
  516. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/doc-charter-first.md +17 -0
  517. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/session-vantage-leakage.md +58 -0
  518. package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/SKILL.md +126 -0
  519. package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/agents/openai.yaml +4 -0
  520. package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/complex-workspace-patterns.md +47 -0
  521. package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/embedded-h5-in-host.md +87 -0
  522. package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/react-architecture.md +194 -0
  523. package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/source-evidence-map.md +60 -0
  524. package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/web-quality-release.md +190 -0
  525. package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/web-ui-quality.md +83 -0
  526. package/dist/assets/marketplace/plugins/ccl-skills/skills/worktree-isolation/SKILL.md +179 -0
  527. package/dist/assets/marketplace/plugins/ccl-skills/skills/worktree-isolation/agents/openai.yaml +4 -0
  528. package/dist/assets/marketplace/plugins/ccl-skills/skills/worktree-isolation/references/shared-branch-rebase.md +25 -0
  529. package/dist/assets/marketplace/plugins/ccl-skills/skills/worktree-isolation/scripts/AGENTS.md +23 -0
  530. package/dist/assets/marketplace/plugins/ccl-skills/skills/worktree-isolation/scripts/test_worktree_status.sh +207 -0
  531. package/dist/assets/marketplace/plugins/ccl-skills/skills/worktree-isolation/scripts/test_worktree_sweep.sh +481 -0
  532. package/dist/assets/marketplace/plugins/ccl-skills/skills/worktree-isolation/scripts/worktree-status.sh +325 -0
  533. package/dist/assets/marketplace/plugins/ccl-skills/skills/worktree-isolation/scripts/worktree-sweep.sh +245 -0
  534. package/dist/assets/release.json +2797 -0
  535. package/dist/claude-adapter.d.ts +9 -0
  536. package/dist/claude-adapter.js +240 -0
  537. package/dist/cli-worker.d.ts +1 -0
  538. package/dist/cli-worker.js +32 -0
  539. package/dist/cli.d.ts +22 -0
  540. package/dist/cli.js +214 -0
  541. package/dist/codex-host.d.ts +30 -0
  542. package/dist/codex-host.js +162 -0
  543. package/dist/fs-safe.d.ts +21 -0
  544. package/dist/fs-safe.js +241 -0
  545. package/dist/index.d.ts +2 -0
  546. package/dist/index.js +1 -0
  547. package/dist/manifest.d.ts +8 -0
  548. package/dist/manifest.js +135 -0
  549. package/dist/opencode-adapter.d.ts +10 -0
  550. package/dist/opencode-adapter.js +416 -0
  551. package/dist/operations.d.ts +3 -0
  552. package/dist/operations.js +956 -0
  553. package/dist/paths.d.ts +20 -0
  554. package/dist/paths.js +4 -0
  555. package/dist/types.d.ts +58 -0
  556. package/dist/types.js +1 -0
  557. package/dist/unified.d.ts +4 -0
  558. package/dist/unified.js +64 -0
  559. package/dist/version.d.ts +2 -0
  560. package/dist/version.js +5 -0
  561. package/package.json +35 -0
@@ -0,0 +1,946 @@
1
+ #!/usr/bin/env python3
2
+ """Fail-closed parser for dedicated Kimi and Codex CLI review wrappers."""
3
+
4
+ from __future__ import annotations
5
+
6
+ import argparse
7
+ import json
8
+ from pathlib import Path, PurePosixPath
9
+ import re
10
+ from typing import Any
11
+
12
+ from concern_excerpt import bounded_reason_detail, concern_fields
13
+ from kimi_packet_mcp import MAX_CHUNK_BYTES
14
+
15
+
16
+ FAMILIES = {
17
+ "anthropic": "claude",
18
+ "claude": "claude",
19
+ "codex": "openai",
20
+ "deepseek": "deepseek",
21
+ "gemini": "gemini",
22
+ "google": "gemini",
23
+ "kimi": "moonshot",
24
+ "moonshot": "moonshot",
25
+ "openai": "openai",
26
+ "grok": "grok",
27
+ "xai": "grok",
28
+ "groq": "groq",
29
+ "mistral": "mistral",
30
+ }
31
+ FINDING_RE = re.compile(r"^(P[0-2])\s+(\S+):(\d+)\s+(.+?)\s+\|\s+(.+)$")
32
+ CONCERN_RESULT_RE = re.compile(
33
+ r"^CHECK\s+([a-z][a-z0-9_]*)\s+\|\s+(.+)$", re.IGNORECASE
34
+ )
35
+ CODEX_STREAM_GAP_RE = re.compile(
36
+ r"^in-process app-server event stream lagged; dropped [1-9]\d* events?$",
37
+ re.IGNORECASE,
38
+ )
39
+ CODEX_BENIGN_ERROR_ITEMS = {
40
+ "Skill descriptions were shortened to fit the 2% skills context budget. "
41
+ "Codex can still see every skill, but some descriptions are shorter. "
42
+ "Disable unused skills or plugins to leave more room for the rest."
43
+ }
44
+ # The skills-context-budget notice is advisory, and its wording drifts with the
45
+ # CLI: an earlier release said "the 2% skills context budget", a later one dropped
46
+ # the number. The exact-sentence set above could not see that, so every Codex
47
+ # review lane died on `invalid_model_output` after a routine upstream release —
48
+ # with a complete verdict already in hand. Per scripts/AGENTS.md, match the
49
+ # invariant claim, not the release's phrasing. The anchor plus the required
50
+ # subject keep this from swallowing a real error item.
51
+ # Both ends are anchored and the tail is bounded: matching only the prefix would
52
+ # let a crafted error item append arbitrary content and still be waved through.
53
+ # Only the release-variable numeric slot is optional, so this does not re-pin the
54
+ # wording that broke last time.
55
+ # A free tail let a real fault ride along behind the benign prefix, so the
56
+ # advisory's own continuation is required. That does re-pin some vocabulary — the
57
+ # trade is deliberate: an upstream reword now fails LOUDLY as an item-level error
58
+ # whose text is carried in `client_diagnostic`, which is exactly the silent
59
+ # failure this slice removed. Only the release-variable numeric slot stays free.
60
+ CODEX_BENIGN_ERROR_RES = (
61
+ re.compile(
62
+ r"^skill descriptions were shortened to fit the (?:\d{1,3}% )?"
63
+ r"skills context budget\.\s*"
64
+ r"codex can still see every skill, but some descriptions are shorter\.\s*"
65
+ r"disable unused skills or plugins to leave more room for the rest\.?$",
66
+ re.IGNORECASE,
67
+ ),
68
+ )
69
+
70
+
71
+ def is_benign_codex_error(message: object) -> bool:
72
+ if not isinstance(message, str):
73
+ return False
74
+ normalized = " ".join(message.split())
75
+ if normalized in CODEX_BENIGN_ERROR_ITEMS:
76
+ return True
77
+ return any(pattern.search(normalized) for pattern in CODEX_BENIGN_ERROR_RES)
78
+ CODEX_HOOK_TRUST_WARNING = (
79
+ "`--dangerously-bypass-hook-trust` is enabled. Enabled hooks may run "
80
+ "without review for this invocation."
81
+ )
82
+ TOOL_ACTIVITY_KEYS = {"function_call", "function_calls", "tool_call", "tool_calls"}
83
+ TOOL_ACTIVITY_TYPES = {"function_call", "tool_call", "tool_use"}
84
+ KIMI_ASSISTANT_KEYS = {"role", "content", "tool_calls"}
85
+ KIMI_TOOL_KEYS = {"role", "content", "tool_call_id"}
86
+ KIMI_RETRY_KEYS = {
87
+ "role",
88
+ "type",
89
+ "failed_attempt",
90
+ "next_attempt",
91
+ "max_attempts",
92
+ "delay_ms",
93
+ "error_name",
94
+ "error_message",
95
+ "status_code",
96
+ }
97
+ KIMI_RESUME_KEYS = {"role", "type", "session_id", "command", "content"}
98
+ KIMI_HOOK_PREFIX = "UserPromptSubmit hook\n"
99
+
100
+
101
+ def normalize_family(value: str | None) -> str | None:
102
+ if not value:
103
+ return None
104
+ candidate = value.strip().lower()
105
+ return FAMILIES.get(candidate)
106
+
107
+
108
+ def result(
109
+ args: argparse.Namespace,
110
+ status: str,
111
+ *,
112
+ reason: str | None = None,
113
+ reason_code: str | None = None,
114
+ cascade_eligible: bool = False,
115
+ **extra: Any,
116
+ ) -> dict[str, Any]:
117
+ if extra.get("concern_results") == []:
118
+ extra.pop("concern_results")
119
+ payload: dict[str, Any] = {
120
+ "reviewer": args.client,
121
+ "mode": args.mode,
122
+ "status": status,
123
+ "reviewer_family": args.reviewer_family or None,
124
+ "provider": args.provider or None,
125
+ "model": args.model or None,
126
+ **extra,
127
+ }
128
+ if reason is not None:
129
+ payload["reason"] = reason
130
+ if reason_code is not None:
131
+ payload["reason_code"] = reason_code
132
+ payload["cascade_eligible"] = cascade_eligible
133
+ return payload
134
+
135
+
136
+ def inconclusive(
137
+ args: argparse.Namespace,
138
+ reason: str,
139
+ reason_code: str,
140
+ cascade_eligible: bool,
141
+ **extra: Any,
142
+ ) -> dict[str, Any]:
143
+ return result(
144
+ args,
145
+ "inconclusive",
146
+ reason=reason,
147
+ reason_code=reason_code,
148
+ cascade_eligible=cascade_eligible,
149
+ **extra,
150
+ )
151
+
152
+
153
+ def invalid_model_output(
154
+ args: argparse.Namespace, reason: str, raw_verdict: str = ""
155
+ ) -> dict[str, Any]:
156
+ # Carry the concern-shaped lines with the stop. The lane refuses to cascade
157
+ # precisely because this output may hold a finding; without the excerpt the
158
+ # operator is told a finding exists but not what it says, which leaves
159
+ # reject-and-rerun as the only move and hides a false positive entirely.
160
+ fields = concern_fields(raw_verdict)
161
+ return inconclusive(
162
+ args,
163
+ reason,
164
+ "invalid_model_output",
165
+ not fields["concern_evidence"],
166
+ **fields,
167
+ )
168
+
169
+
170
+ def load_json_lines(
171
+ path: Path,
172
+ ) -> tuple[list[dict[str, Any]] | None, str | None, str]:
173
+ events: list[dict[str, Any]] = []
174
+ try:
175
+ raw_events = path.read_bytes().decode("utf-8", "replace")
176
+ for raw in raw_events.splitlines():
177
+ if not raw.strip():
178
+ continue
179
+ item = json.loads(raw)
180
+ if not isinstance(item, dict):
181
+ return None, "non_object_event", raw_events
182
+ events.append(item)
183
+ except OSError:
184
+ return None, "invalid_event_stream", ""
185
+ except json.JSONDecodeError:
186
+ return None, "invalid_event_stream", raw_events
187
+ return events, None, raw_events
188
+
189
+
190
+ def tool_name_and_arguments(
191
+ call: dict[str, Any],
192
+ ) -> tuple[str | None, dict[str, Any] | None]:
193
+ function = call.get("function")
194
+ if isinstance(function, dict):
195
+ name = function.get("name")
196
+ arguments = function.get("arguments")
197
+ else:
198
+ name = call.get("name")
199
+ arguments = call.get("arguments") or call.get("input")
200
+ if isinstance(arguments, str):
201
+ try:
202
+ arguments = json.loads(arguments)
203
+ except json.JSONDecodeError:
204
+ return name if isinstance(name, str) else None, None
205
+ return name if isinstance(name, str) else None, arguments if isinstance(
206
+ arguments, dict
207
+ ) else None
208
+
209
+
210
+ def has_unrecognized_tool_activity(value: Any) -> bool:
211
+ if isinstance(value, dict):
212
+ event_type = value.get("type")
213
+ if isinstance(event_type, str) and event_type.lower() in TOOL_ACTIVITY_TYPES:
214
+ return True
215
+ for key, child in value.items():
216
+ if isinstance(key, str) and key.lower() in TOOL_ACTIVITY_KEYS:
217
+ return True
218
+ if has_unrecognized_tool_activity(child):
219
+ return True
220
+ elif isinstance(value, list):
221
+ return any(has_unrecognized_tool_activity(item) for item in value)
222
+ return False
223
+
224
+
225
+ def is_safe_kimi_metadata_event(event: dict[str, Any]) -> bool:
226
+ """Accept the version announcement without constraining its version value."""
227
+ version = event.get("version")
228
+ return (
229
+ event.get("role") == "meta"
230
+ and event.get("type") == "system.version"
231
+ and set(event) == {"role", "type", "version"}
232
+ and isinstance(version, str)
233
+ and 0 < len(version) <= 256
234
+ )
235
+
236
+
237
+ def safe_kimi_metadata_kind(event: dict[str, Any]) -> str | None:
238
+ """Classify the bounded metadata envelopes accepted from Kimi."""
239
+ if is_safe_kimi_metadata_event(event):
240
+ return "version"
241
+ event_type = event.get("type")
242
+ if event.get("role") != "meta":
243
+ return None
244
+ if event_type == "turn.step.retrying" and not set(event) - KIMI_RETRY_KEYS:
245
+ return "retry"
246
+ if event_type == "session.resume_hint" and not set(event) - KIMI_RESUME_KEYS:
247
+ metadata = (
248
+ event.get("session_id"),
249
+ event.get("command"),
250
+ event.get("content"),
251
+ )
252
+ if all(isinstance(value, str) and value.strip() for value in metadata):
253
+ return "resume"
254
+ return None
255
+
256
+
257
+ def parse_kimi_tool_calls(
258
+ event: dict[str, Any],
259
+ ) -> tuple[
260
+ list[tuple[str, str | None, dict[str, Any] | None]] | None,
261
+ str | None,
262
+ ]:
263
+ """Validate and normalize Kimi's function-call envelope."""
264
+ calls = event["tool_calls"] if "tool_calls" in event else []
265
+ if not isinstance(calls, list):
266
+ return None, "invalid_container"
267
+ parsed = []
268
+ for call in calls:
269
+ if not isinstance(call, dict):
270
+ return None, "invalid_call"
271
+ function = call.get("function")
272
+ if (
273
+ set(call) - {"type", "id", "function"}
274
+ or call.get("type") != "function"
275
+ or not isinstance(call.get("id"), str)
276
+ or not call["id"]
277
+ or not isinstance(function, dict)
278
+ or set(function) - {"name", "arguments"}
279
+ ):
280
+ return None, "invalid_call"
281
+ name, arguments = tool_name_and_arguments(call)
282
+ parsed.append((call["id"], name, arguments))
283
+ return parsed, None
284
+
285
+
286
+ def kimi_text(
287
+ args: argparse.Namespace, events: list[dict[str, Any]]
288
+ ) -> tuple[str | None, dict[str, Any] | None]:
289
+ packet_tool = "mcp__code_review_packet__read_packet"
290
+ assistant_texts: list[str] = []
291
+ packet_path = Path(args.packet).resolve()
292
+ try:
293
+ packet_bytes = packet_path.read_bytes()
294
+ packet_bytes.decode("utf-8")
295
+ except (OSError, UnicodeDecodeError):
296
+ return None, inconclusive(
297
+ args, "Kimi packet could not be inspected", "binding_mismatch", False
298
+ )
299
+ packet_byte_count = len(packet_bytes)
300
+ packet_read = False
301
+ packet_read_started = False
302
+ packet_read_ids: dict[str, tuple[int, int]] = {}
303
+ covered_ranges: list[tuple[int, int]] = []
304
+ premature_texts: list[str] = []
305
+
306
+ def full_packet_covered() -> bool:
307
+ if packet_byte_count == 0:
308
+ return True
309
+ cursor = 0
310
+ for start, end in sorted(covered_ranges):
311
+ if start > cursor:
312
+ return False
313
+ cursor = max(cursor, end)
314
+ if cursor >= packet_byte_count:
315
+ return True
316
+ return cursor >= packet_byte_count
317
+ for event in events:
318
+ role = event.get("role")
319
+ metadata_kind = safe_kimi_metadata_kind(event)
320
+ is_resume_hint = False
321
+ if role == "assistant":
322
+ allowed_keys = KIMI_ASSISTANT_KEYS
323
+ elif role == "tool":
324
+ allowed_keys = KIMI_TOOL_KEYS
325
+ elif metadata_kind == "retry":
326
+ allowed_keys = KIMI_RETRY_KEYS
327
+ elif metadata_kind == "resume":
328
+ allowed_keys = KIMI_RESUME_KEYS
329
+ is_resume_hint = True
330
+ elif metadata_kind == "version":
331
+ continue
332
+ else:
333
+ return None, inconclusive(
334
+ args,
335
+ "Kimi emitted an event outside the stream allowlist",
336
+ "tool_boundary_violation",
337
+ False,
338
+ )
339
+ if set(event) - allowed_keys:
340
+ return None, inconclusive(
341
+ args,
342
+ "Kimi emitted fields outside the stream allowlist",
343
+ "tool_boundary_violation",
344
+ False,
345
+ )
346
+
347
+ if is_resume_hint:
348
+ continue
349
+
350
+ parsed_calls, call_error = parse_kimi_tool_calls(event)
351
+ if call_error == "invalid_container":
352
+ return None, inconclusive(
353
+ args, "invalid Kimi tool-call shape", "invalid_model_output", True
354
+ )
355
+ if call_error is not None or parsed_calls is None:
356
+ return None, inconclusive(
357
+ args,
358
+ "Kimi emitted a tool call outside the stream allowlist",
359
+ "tool_boundary_violation",
360
+ False,
361
+ )
362
+ calls = event.get("tool_calls") or []
363
+ content = event.get("content")
364
+ if (
365
+ role == "assistant"
366
+ and not packet_read_started
367
+ and not calls
368
+ and isinstance(content, str)
369
+ and content.startswith(KIMI_HOOK_PREFIX)
370
+ ):
371
+ # Kimi 0.27 emits trusted UserPromptSubmit hook context as an
372
+ # assistant-shaped prelude before the model reads the packet. It is
373
+ # workstation input, not reviewer verdict text. The pre-read/order
374
+ # guard prevents a later model concern from hiding behind the same
375
+ # prefix.
376
+ continue
377
+ for call_id, name, arguments in parsed_calls:
378
+ argument_keys = set(arguments or {})
379
+ page_span: tuple[int, int] | None = None
380
+ if name == packet_tool:
381
+ if argument_keys == {"byte_offset", "max_bytes"}:
382
+ byte_offset = (arguments or {}).get("byte_offset")
383
+ max_bytes = (arguments or {}).get("max_bytes")
384
+ if (
385
+ isinstance(byte_offset, int)
386
+ and not isinstance(byte_offset, bool)
387
+ and byte_offset >= 0
388
+ and (
389
+ byte_offset < packet_byte_count
390
+ or (
391
+ byte_offset == packet_byte_count
392
+ and full_packet_covered()
393
+ )
394
+ )
395
+ and isinstance(max_bytes, int)
396
+ and not isinstance(max_bytes, bool)
397
+ and 1 <= max_bytes <= MAX_CHUNK_BYTES
398
+ ):
399
+ page_span = (byte_offset, max_bytes)
400
+ if page_span is None:
401
+ return None, inconclusive(
402
+ args,
403
+ "Kimi attempted a tool outside the exact packet pagination boundary",
404
+ "tool_boundary_violation",
405
+ False,
406
+ attempted_tool=name,
407
+ )
408
+ packet_read_started = True
409
+ packet_read_ids[call_id] = page_span
410
+ if role == "tool":
411
+ tool_call_id = event.get("tool_call_id")
412
+ if not isinstance(tool_call_id, str) or tool_call_id not in packet_read_ids:
413
+ return None, inconclusive(
414
+ args,
415
+ "Kimi emitted an unbound tool result",
416
+ "tool_boundary_violation",
417
+ False,
418
+ )
419
+ tool_content = event.get("content")
420
+ if not isinstance(tool_content, str):
421
+ return None, inconclusive(
422
+ args,
423
+ "Kimi emitted an unreadable packet page",
424
+ "tool_boundary_violation",
425
+ False,
426
+ )
427
+ expected_start, requested_bytes = packet_read_ids[tool_call_id]
428
+ header, separator, chunk = tool_content.partition("\n")
429
+ match = re.fullmatch(r"PACKET_CHUNK ([0-9]+):([0-9]+)/([0-9]+)", header)
430
+ if match is not None and separator:
431
+ returned_start, returned_end, returned_total = map(int, match.groups())
432
+ valid_page = (
433
+ returned_start == expected_start
434
+ and returned_total == packet_byte_count
435
+ and returned_start < returned_end <= min(
436
+ returned_start + requested_bytes, packet_byte_count
437
+ )
438
+ and chunk.encode("utf-8") == packet_bytes[returned_start:returned_end]
439
+ )
440
+ valid_eof_confirmation = (
441
+ returned_start == expected_start == packet_byte_count
442
+ and returned_end == packet_byte_count
443
+ and chunk == ""
444
+ and full_packet_covered()
445
+ )
446
+ if valid_page:
447
+ covered_ranges.append((returned_start, returned_end))
448
+ packet_read = full_packet_covered()
449
+ elif valid_eof_confirmation:
450
+ packet_read = True
451
+ remaining_event = {
452
+ key: value for key, value in event.items() if key != "tool_calls"
453
+ }
454
+ if has_unrecognized_tool_activity(remaining_event):
455
+ return None, inconclusive(
456
+ args,
457
+ "Kimi emitted an unrecognized tool activity shape",
458
+ "tool_boundary_violation",
459
+ False,
460
+ )
461
+ if role != "assistant":
462
+ continue
463
+ if isinstance(content, str) and content.strip():
464
+ if not packet_read:
465
+ premature_texts.append(content.strip())
466
+ else:
467
+ assistant_texts.append(content.strip())
468
+ if not packet_read:
469
+ concern_text = "\n".join(
470
+ line
471
+ for text in premature_texts
472
+ for line in text.splitlines()
473
+ if not CONCERN_RESULT_RE.match(line.strip())
474
+ and line.strip() != "NO_BLOCKING_FINDINGS"
475
+ )
476
+ if premature_texts:
477
+ return None, invalid_model_output(
478
+ args,
479
+ "Kimi produced verdict text before reading the full frozen packet",
480
+ concern_text,
481
+ )
482
+ return None, inconclusive(
483
+ args,
484
+ "Kimi did not read the full frozen packet",
485
+ "invalid_model_output",
486
+ True,
487
+ )
488
+ if premature_texts:
489
+ concern_text = "\n".join(
490
+ line
491
+ for text in premature_texts
492
+ for line in text.splitlines()
493
+ if not CONCERN_RESULT_RE.match(line.strip())
494
+ and line.strip() != "NO_BLOCKING_FINDINGS"
495
+ )
496
+ return None, invalid_model_output(
497
+ args,
498
+ "Kimi produced verdict text before reading the full frozen packet",
499
+ concern_text,
500
+ )
501
+ if not assistant_texts:
502
+ return None, inconclusive(
503
+ args, "Kimi produced no final assistant text", "invalid_model_output", True
504
+ )
505
+ combined_text = "\n".join(assistant_texts)
506
+ expected_receipt = getattr(args, "packet_receipt", "")
507
+ if expected_receipt:
508
+ output_lines = combined_text.splitlines()
509
+ if not output_lines or output_lines[0].strip() != expected_receipt:
510
+ concern_text = "\n".join(
511
+ line
512
+ for line in output_lines
513
+ if not CONCERN_RESULT_RE.match(line.strip())
514
+ and line.strip() != "NO_BLOCKING_FINDINGS"
515
+ and not line.strip().startswith("KIMI_PACKET_RECEIPT_")
516
+ )
517
+ return None, invalid_model_output(
518
+ args,
519
+ "Kimi did not echo the terminal packet receipt first",
520
+ concern_text,
521
+ )
522
+ combined_text = "\n".join(output_lines[1:]).strip()
523
+ if not combined_text:
524
+ return None, inconclusive(
525
+ args,
526
+ "Kimi echoed the packet receipt without a review verdict",
527
+ "invalid_model_output",
528
+ True,
529
+ )
530
+ return combined_text, None
531
+
532
+
533
+ def kimi_inline_text(
534
+ args: argparse.Namespace, events: list[dict[str, Any]]
535
+ ) -> tuple[str | None, dict[str, Any] | None]:
536
+ """Audit a no-tools Kimi stream with a pre-delivered frozen packet."""
537
+ assistant_texts: list[str] = []
538
+ for event in events:
539
+ role = event.get("role")
540
+ if role == "meta":
541
+ if safe_kimi_metadata_kind(event) is None:
542
+ return None, inconclusive(
543
+ args,
544
+ "Kimi emitted metadata outside the no-tools stream allowlist",
545
+ "tool_boundary_violation",
546
+ False,
547
+ )
548
+ continue
549
+ if role != "assistant" or set(event) - KIMI_ASSISTANT_KEYS:
550
+ return None, inconclusive(
551
+ args,
552
+ "Kimi emitted an event outside the no-tools packet boundary",
553
+ "tool_boundary_violation",
554
+ False,
555
+ )
556
+ calls, call_error = parse_kimi_tool_calls(event)
557
+ if call_error == "invalid_container":
558
+ return None, inconclusive(
559
+ args,
560
+ "Kimi emitted an invalid tool-call container during no-tools review",
561
+ "invalid_model_output",
562
+ True,
563
+ )
564
+ if call_error is not None:
565
+ return None, inconclusive(
566
+ args,
567
+ "Kimi emitted an invalid tool-call envelope during no-tools review",
568
+ "tool_boundary_violation",
569
+ False,
570
+ )
571
+ if calls:
572
+ return None, inconclusive(
573
+ args,
574
+ "Kimi attempted tool activity during no-tools review",
575
+ "tool_boundary_violation",
576
+ False,
577
+ attempted_tool=calls[0][1],
578
+ )
579
+ remaining_event = {
580
+ key: value for key, value in event.items() if key != "tool_calls"
581
+ }
582
+ if has_unrecognized_tool_activity(remaining_event):
583
+ return None, inconclusive(
584
+ args,
585
+ "Kimi emitted nested tool activity during no-tools review",
586
+ "tool_boundary_violation",
587
+ False,
588
+ )
589
+ content = event.get("content")
590
+ if content is not None and not isinstance(content, str):
591
+ return None, inconclusive(
592
+ args,
593
+ "Kimi emitted non-text no-tools review content",
594
+ "tool_boundary_violation",
595
+ False,
596
+ )
597
+ if isinstance(content, str) and content.strip():
598
+ assistant_texts.append(content.strip())
599
+ if not assistant_texts:
600
+ return None, inconclusive(
601
+ args, "Kimi produced no no-tools review text", "invalid_model_output", True
602
+ )
603
+ combined_text = "\n".join(assistant_texts)
604
+ expected_receipt = getattr(args, "packet_receipt", "")
605
+ if expected_receipt:
606
+ output_lines = combined_text.splitlines()
607
+ if not output_lines or output_lines[0].strip() != expected_receipt:
608
+ concern_text = "\n".join(
609
+ line
610
+ for line in output_lines
611
+ if not CONCERN_RESULT_RE.match(line.strip())
612
+ and line.strip() != "NO_BLOCKING_FINDINGS"
613
+ and not line.strip().startswith("KIMI_PACKET_RECEIPT_")
614
+ )
615
+ return None, invalid_model_output(
616
+ args,
617
+ "Kimi did not echo the terminal packet receipt first",
618
+ concern_text,
619
+ )
620
+ combined_text = "\n".join(output_lines[1:]).strip()
621
+ if not combined_text:
622
+ return None, inconclusive(
623
+ args,
624
+ "Kimi echoed the packet receipt without a review verdict",
625
+ "invalid_model_output",
626
+ True,
627
+ )
628
+ return combined_text, None
629
+
630
+
631
+ def audit_codex(
632
+ args: argparse.Namespace, events: list[dict[str, Any]]
633
+ ) -> dict[str, Any] | None:
634
+ # Codex can emit known non-tool diagnostic items while still completing a
635
+ # valid response. Tool activity is represented by other item types such as
636
+ # command_execution. Unknown error items remain fail-closed even when the
637
+ # last-message file is valid.
638
+ allowed_items = {"agent_message", "reasoning"}
639
+ allowed_item_events = {"item.started", "item.updated", "item.completed"}
640
+ allowed_lifecycle_events = {"thread.started", "turn.started", "turn.completed"}
641
+ failed_lifecycle_events = {"turn.failed", "turn.cancelled", "error"}
642
+ saw_completed_agent_message = False
643
+ saw_completed_turn = False
644
+ concern_fragments: list[str] = []
645
+ try:
646
+ concern_fragments.append(
647
+ Path(args.result_file).read_bytes().decode("utf-8", "replace")
648
+ )
649
+ except OSError:
650
+ pass
651
+
652
+ def invalid(reason: str) -> dict[str, Any]:
653
+ return invalid_model_output(args, reason, "\n".join(concern_fragments))
654
+
655
+ for event in events:
656
+ event_type = event.get("type")
657
+ if event_type == "turn.completed":
658
+ saw_completed_turn = True
659
+ item = event.get("item")
660
+ if not isinstance(item, dict):
661
+ if event_type in failed_lifecycle_events:
662
+ return invalid("Codex reported a failed review lifecycle")
663
+ if event_type in allowed_lifecycle_events:
664
+ continue
665
+ return inconclusive(
666
+ args,
667
+ "Codex emitted an event outside the packet-only boundary",
668
+ "tool_boundary_violation",
669
+ False,
670
+ attempted_tool=event_type,
671
+ )
672
+ if event_type not in allowed_item_events:
673
+ return inconclusive(
674
+ args,
675
+ "Codex emitted an unrecognized item event",
676
+ "tool_boundary_violation",
677
+ False,
678
+ attempted_tool=event_type,
679
+ )
680
+ item_type = item.get("type")
681
+ if item_type == "agent_message":
682
+ item_text = item.get("text")
683
+ if isinstance(item_text, str) and item_text.strip():
684
+ concern_fragments.append(item_text.strip())
685
+ if item_type == "error":
686
+ message = item.get("message")
687
+ # The hook-trust stop must fire on any allowed item event: gating
688
+ # it on item.completed would let the same warning delivered as
689
+ # item.started/item.updated degrade into cascade-eligible
690
+ # invalid_model_output instead of a terminal boundary stop.
691
+ if message == CODEX_HOOK_TRUST_WARNING:
692
+ return inconclusive(
693
+ args,
694
+ "Codex hooks were enabled without persisted trust during packet-only review",
695
+ "tool_boundary_violation",
696
+ False,
697
+ # Same defect class as the malformed-output stop: a boundary
698
+ # violation that swallowed a concern leaves nothing to triage.
699
+ **concern_fields("\n".join(concern_fragments)),
700
+ )
701
+ if event_type == "item.completed" and is_benign_codex_error(message):
702
+ continue
703
+ if (
704
+ event_type == "item.completed"
705
+ and isinstance(message, str)
706
+ and CODEX_STREAM_GAP_RE.fullmatch(message.strip())
707
+ ):
708
+ return inconclusive(
709
+ args,
710
+ "Codex event stream reported dropped events",
711
+ "transport_unverifiable",
712
+ False,
713
+ )
714
+ # Name the error, but not in `reason`. The events file dies with the
715
+ # run dir, so this string is otherwise unrecoverable — yet it is
716
+ # untrusted client text that may quote packet content, and `reason`
717
+ # is a stable field consumers display and compare. Keep `reason`
718
+ # fixed and carry the text in its own labelled field.
719
+ payload = invalid("Codex reported an item-level review error")
720
+ payload["client_diagnostic"] = bounded_reason_detail(message)
721
+ return payload
722
+ if item_type not in allowed_items:
723
+ return inconclusive(
724
+ args,
725
+ "Codex attempted tool activity during packet-only review",
726
+ "tool_boundary_violation",
727
+ False,
728
+ attempted_tool=item_type,
729
+ )
730
+ if event_type == "item.completed" and item_type == "agent_message":
731
+ saw_completed_agent_message = True
732
+ if not saw_completed_agent_message or not saw_completed_turn:
733
+ return inconclusive(
734
+ args,
735
+ "Codex event stream lacked positive completion evidence",
736
+ "transport_unverifiable",
737
+ False,
738
+ )
739
+ return None
740
+
741
+
742
+ def parse_text_contract(args: argparse.Namespace, text: str) -> dict[str, Any]:
743
+ concern_results: list[dict[str, str]] = []
744
+ verdict_lines: list[str] = []
745
+ seen_verdict = False
746
+ seen_concerns: set[str] = set()
747
+ for line in text.splitlines():
748
+ normalized = line.strip()
749
+ if not normalized:
750
+ continue
751
+ concern_match = CONCERN_RESULT_RE.fullmatch(normalized)
752
+ if concern_match and not seen_verdict:
753
+ concern, conclusion = concern_match.groups()
754
+ concern = concern.lower()
755
+ conclusion = conclusion.strip()
756
+ if concern in seen_concerns or not conclusion or len(conclusion) > 2000:
757
+ return invalid_model_output(
758
+ args, "review concern result used invalid values", text
759
+ )
760
+ seen_concerns.add(concern)
761
+ concern_results.append({"concern": concern, "conclusion": conclusion})
762
+ continue
763
+ seen_verdict = True
764
+ verdict_lines.append(normalized)
765
+ if verdict_lines == ["NO_BLOCKING_FINDINGS"]:
766
+ return result(args, "passed", concern_results=concern_results, findings=[])
767
+ findings: list[dict[str, Any]] = []
768
+ for line in verdict_lines:
769
+ match = FINDING_RE.fullmatch(line)
770
+ if not match:
771
+ return invalid_model_output(
772
+ args, "review verdict violated the output contract", text
773
+ )
774
+ severity, file_name, line_number, failure_path, smallest_fix = match.groups()
775
+ path = PurePosixPath(file_name)
776
+ if path.is_absolute() or ".." in path.parts:
777
+ return invalid_model_output(
778
+ args, "review finding used an unsafe file path", text
779
+ )
780
+ findings.append(
781
+ {
782
+ "severity": severity,
783
+ "file": file_name,
784
+ "line": int(line_number),
785
+ "failure_path": failure_path,
786
+ "smallest_fix": smallest_fix,
787
+ }
788
+ )
789
+ if not findings:
790
+ return invalid_model_output(args, "review verdict was empty", text)
791
+ return result(args, "findings", concern_results=concern_results, findings=findings)
792
+
793
+
794
+ def parse_json_contract(args: argparse.Namespace) -> dict[str, Any]:
795
+ try:
796
+ raw_verdict = Path(args.result_file).read_text(encoding="utf-8")
797
+ except (OSError, UnicodeError):
798
+ return invalid_model_output(args, "review verdict was not readable")
799
+ try:
800
+ payload = json.loads(raw_verdict)
801
+ except json.JSONDecodeError:
802
+ return invalid_model_output(
803
+ args, "review verdict was not valid JSON", raw_verdict
804
+ )
805
+ allowed = {"status", "findings", "concern_results"}
806
+ if (
807
+ not isinstance(payload, dict)
808
+ or not {"status", "findings"}.issubset(payload)
809
+ or set(payload) - allowed
810
+ ):
811
+ return invalid_model_output(
812
+ args, "review verdict used an invalid schema", raw_verdict
813
+ )
814
+ status = payload.get("status")
815
+ findings = payload.get("findings")
816
+ if status not in {"passed", "findings"} or not isinstance(findings, list):
817
+ return invalid_model_output(
818
+ args, "review verdict used an invalid schema", raw_verdict
819
+ )
820
+ if (status == "passed" and findings) or (status == "findings" and not findings):
821
+ return invalid_model_output(
822
+ args, "review status did not match findings", raw_verdict
823
+ )
824
+ required = {"severity", "file", "line", "failure_path", "smallest_fix"}
825
+ for finding in findings:
826
+ if not isinstance(finding, dict) or set(finding) != required:
827
+ return invalid_model_output(
828
+ args, "review finding used an invalid schema", raw_verdict
829
+ )
830
+ path = PurePosixPath(str(finding.get("file", "")))
831
+ if (
832
+ finding.get("severity") not in {"P0", "P1", "P2"}
833
+ or not isinstance(finding.get("line"), int)
834
+ or finding["line"] < 1
835
+ or not isinstance(finding.get("failure_path"), str)
836
+ or not finding["failure_path"].strip()
837
+ or not isinstance(finding.get("smallest_fix"), str)
838
+ or not finding["smallest_fix"].strip()
839
+ or path.is_absolute()
840
+ or ".." in path.parts
841
+ ):
842
+ return invalid_model_output(
843
+ args, "review finding used invalid values", raw_verdict
844
+ )
845
+ concern_results = payload.get("concern_results", [])
846
+ if not isinstance(concern_results, list):
847
+ return invalid_model_output(
848
+ args, "review concern results used an invalid schema", raw_verdict
849
+ )
850
+ seen_concerns: set[str] = set()
851
+ normalized_concerns: list[dict[str, str]] = []
852
+ for item in concern_results:
853
+ if not isinstance(item, dict) or set(item) != {"concern", "conclusion"}:
854
+ return invalid_model_output(
855
+ args, "review concern result used an invalid schema", raw_verdict
856
+ )
857
+ concern = item.get("concern")
858
+ conclusion = item.get("conclusion")
859
+ if (
860
+ not isinstance(concern, str)
861
+ or not re.fullmatch(r"[a-z][a-z0-9_]*", concern)
862
+ or concern in seen_concerns
863
+ or not isinstance(conclusion, str)
864
+ or not conclusion.strip()
865
+ or len(conclusion.strip()) > 2000
866
+ ):
867
+ return invalid_model_output(
868
+ args, "review concern result used invalid values", raw_verdict
869
+ )
870
+ seen_concerns.add(concern)
871
+ normalized_concerns.append(
872
+ {"concern": concern, "conclusion": conclusion.strip()}
873
+ )
874
+ return result(args, status, concern_results=normalized_concerns, findings=findings)
875
+
876
+
877
+ def judge(args: argparse.Namespace) -> dict[str, Any]:
878
+ reviewer_family = normalize_family(args.reviewer_family)
879
+ implementer_family = normalize_family(args.implementer_family)
880
+ args.reviewer_family = reviewer_family or ""
881
+ if not reviewer_family:
882
+ payload = inconclusive(
883
+ args,
884
+ "reviewer family could not be attributed",
885
+ "missing_or_unmapped_reviewer_family",
886
+ True,
887
+ )
888
+ payload["candidate_ineligible"] = True
889
+ return payload
890
+ if not implementer_family:
891
+ return inconclusive(
892
+ args, "implementer family is unmapped", "unmapped_implementer_family", False
893
+ )
894
+ if reviewer_family == implementer_family:
895
+ payload = inconclusive(
896
+ args,
897
+ "reviewer belongs to the implementer model family",
898
+ "same_family_as_implementer",
899
+ True,
900
+ )
901
+ payload["candidate_ineligible"] = True
902
+ return payload
903
+
904
+ events, event_error, raw_events = load_json_lines(Path(args.events))
905
+ if event_error is not None or events is None:
906
+ return invalid_model_output(
907
+ args, event_error or "invalid_event_stream", raw_events
908
+ )
909
+ if args.client == "kimi":
910
+ if args.packet_delivery == "mcp":
911
+ text, failure = kimi_text(args, events)
912
+ else:
913
+ text, failure = kimi_inline_text(args, events)
914
+ return failure or parse_text_contract(args, text or "")
915
+ failure = audit_codex(args, events)
916
+ return failure or parse_json_contract(args)
917
+
918
+
919
+ def main() -> int:
920
+ parser = argparse.ArgumentParser(description=__doc__)
921
+ parser.add_argument("--client", required=True, choices=("kimi", "codex"))
922
+ parser.add_argument("--mode", required=True, choices=("review", "challenge"))
923
+ parser.add_argument("--implementer-family", required=True)
924
+ parser.add_argument("--reviewer-family", required=True)
925
+ parser.add_argument("--provider", default="")
926
+ parser.add_argument("--model", default="")
927
+ parser.add_argument("--events", required=True)
928
+ parser.add_argument("--packet")
929
+ parser.add_argument("--packet-delivery", choices=("mcp", "inline"), default="mcp")
930
+ parser.add_argument("--packet-receipt", default="")
931
+ parser.add_argument("--result-file")
932
+ args = parser.parse_args()
933
+ if args.client == "kimi" and not args.packet:
934
+ parser.error("--packet is required for Kimi")
935
+ if args.client == "kimi" and not args.packet_receipt:
936
+ parser.error("--packet-receipt is required for Kimi delivery")
937
+ if args.client == "codex" and not args.result_file:
938
+ parser.error("--result-file is required for Codex")
939
+
940
+ payload = judge(args)
941
+ print(json.dumps(payload, ensure_ascii=False, separators=(",", ":")))
942
+ return 0 if payload["status"] in {"passed", "findings"} else 2
943
+
944
+
945
+ if __name__ == "__main__":
946
+ raise SystemExit(main())