@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,833 @@
1
+ #!/usr/bin/env bash
2
+ # Integration test for check-size-budget.sh (the block extracted from
3
+ # check-ccl-skills.sh). The script has TWO layers and this suite pins both.
4
+ #
5
+ # Layer 1 — advisory counters stay MACHINE-READABLE and NON-BLOCKING (cases a-d2):
6
+ # - small entrypoint => exit 0, debt_count=0, severe_debt_count=0, marker
7
+ # - changed entrypoint body>5k => exit 0, changed_entrypoint_above_recommended, debt=1
8
+ # - base/head trend tokens => advisory base/head/delta counters + per-file deltas
9
+ # - an UNCHANGED entrypoint >50000 bytes => exit 0, severe_debt_count=1 + severe token
10
+ # - bootstrap over the tripwire BAND but UNCHANGED => exit 0, band advisory only
11
+ # (an untouched over-band file must never hard-red an unrelated MR)
12
+ # - bootstrap missing => exit 0, size_budget_advisory_partial
13
+ #
14
+ # Layer 2 — delta-BLOCKING verdict on CHANGED skills/*/SKILL.md (cases e1-e8):
15
+ # - new/crossing over 50000 bytes, or growth of an already-severe entrypoint
16
+ # => exit 1 + entrypoint_size_block
17
+ # - shrink / sub-severe growth / same-size edit / rename-without-growth => exit 0
18
+ # - unresolvable base with a severe changed file => exit 1 partial, and NO ok marker
19
+ # - unresolvable base with a CLEAN tree => nothing was evaluated, so the run
20
+ # reports entrypoint_size_blocking_unevaluated and never the ok marker
21
+ # - e8 anchors the check-ccl-skills.sh wiring (rc propagation, no `|| true`)
22
+ #
23
+ # Layer 2b — delta-BLOCKING verdict on CHANGED agent-context/session-start.md (cases d3-d8): the
24
+ # every-session injection is permanently severe — ANY net growth blocks;
25
+ # shrink / same-size edit / tracked deletion => exit 0; a agent-context/session-start.md absent
26
+ # from base blocks as a NEW every-session injection; unresolvable base with a
27
+ # changed agent-context/session-start.md => exit 1 partial, and NO ok marker. Base resolution
28
+ # is merge-base, so growth landing on the TARGET branch after divergence
29
+ # (merged in or not) never reddens the branch — only the MR's own diff counts.
30
+ #
31
+ # Builds a throwaway git repo so debt counts are DETERMINISTIC and do NOT depend on
32
+ # the real repository's actual file sizes/counts. Calls check-size-budget.sh directly
33
+ # (not the full validator) so unrelated blocking gates do not interfere.
34
+ set -euo pipefail
35
+
36
+ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd -P)"
37
+ SIZE_SCRIPT="$SCRIPT_DIR/check-size-budget.sh"
38
+ [ -f "$SIZE_SCRIPT" ] || { echo "FAIL: size script not found: $SIZE_SCRIPT" >&2; exit 1; }
39
+
40
+ TMP="$(mktemp -d "${TMPDIR:-/tmp}/sizebudget.XXXXXX")"
41
+ trap 'rm -rf "$TMP"' EXIT
42
+
43
+ fail() { echo "FAIL: $*" >&2; exit 1; }
44
+ assert_rc() { [ "$1" = "$2" ] || fail "expected rc=$2 got rc=$1${3:+ ($3)}"; }
45
+ assert_contains() { case "$2" in *"$1"*) : ;; *) fail "expected output to contain: $1${3:+ ($3)}";; esac; }
46
+ assert_not_contains() { case "$2" in *"$1"*) fail "expected output NOT to contain: $1${3:+ ($3)}";; *) : ;; esac; }
47
+
48
+ # repeat_char <single-byte-char> <count> — emit copies with no newline.
49
+ repeat_char() { head -c "$2" /dev/zero | tr '\0' "$1"; }
50
+
51
+ # repeat_word <word> <count> — emit whitespace-delimited words with one newline.
52
+ repeat_word() {
53
+ awk -v word="$1" -v count="$2" 'BEGIN {
54
+ for (i = 1; i <= count; i++) printf "%s%s", word, (i == count ? "\n" : " ")
55
+ }'
56
+ }
57
+
58
+ # Run the size script with a guaranteed-unset base ref env; capture stdout+stderr+rc.
59
+ run_size() {
60
+ set +e
61
+ out="$(env -u CCL_SKILL_BASE_REF "$@" bash "$SIZE_SCRIPT" "$REPO" 2>&1)"
62
+ rc=$?
63
+ set -e
64
+ }
65
+
66
+ REPO="$TMP/repo"
67
+ mkdir -p "$REPO/skills/demo-skill" "$REPO/agent-context"
68
+ git init -q -b main "$REPO"
69
+ git -C "$REPO" config user.email test@example.invalid
70
+ git -C "$REPO" config user.name "Test User"
71
+
72
+ SKILL_MD="$REPO/skills/demo-skill/SKILL.md"
73
+ cat > "$SKILL_MD" <<'EOF'
74
+ ---
75
+ name: demo-skill
76
+ description: baseline skill body for the size-budget integration test.
77
+ ---
78
+
79
+ Small clean body well under the recommended ceiling.
80
+ EOF
81
+ git -C "$REPO" add -A
82
+ git -C "$REPO" commit -qm "baseline demo skill"
83
+ git -C "$REPO" checkout -qb feature
84
+
85
+ # Case a: small committed entrypoint, nothing changed => clean counts, marker, exit 0.
86
+ run_size
87
+ assert_rc "$rc" 0 "small entrypoint should pass non-blocking"
88
+ assert_contains "entrypoint_size_debt_count=0" "$out" "no body-char debt"
89
+ assert_contains "entrypoint_size_severe_debt_count=0" "$out" "no severe byte debt"
90
+ assert_contains "entrypoint_size_debt_count_base=0" "$out" "trend base count available"
91
+ assert_contains "entrypoint_size_debt_count_head=0" "$out" "trend head count available"
92
+ assert_contains "entrypoint_size_debt_count_delta=+0" "$out" "trend delta is signed"
93
+ assert_contains "entrypoint_size_severe_debt_count_base=0" "$out" "severe trend base count available"
94
+ assert_contains "entrypoint_size_severe_debt_count_head=0" "$out" "severe trend head count available"
95
+ assert_contains "entrypoint_size_severe_debt_count_delta=+0" "$out" "severe trend delta is signed"
96
+ assert_contains "entrypoint_size_budget_advisory_ok" "$out" "final advisory marker present"
97
+ assert_contains "entrypoint_word_budget_over_limit_count_head=0" "$out" "no body-word debt"
98
+ assert_contains "entrypoint_word_budget_blocking_ok" "$out" "word-budget verdict is clean"
99
+ assert_not_contains "changed_entrypoint_above_recommended" "$out" "no changed-entrypoint token when nothing changed"
100
+
101
+ # Case b: baseline small -> head grows above recommended (tracked, uncommitted) =>
102
+ # stable token + debt_count_delta=+1 + positive per-file delta, still non-blocking.
103
+ { printf '\n'; repeat_char 'A' 6000; printf '\n'; } >> "$SKILL_MD"
104
+ run_size
105
+ assert_rc "$rc" 0 "changed oversize entrypoint must stay non-blocking"
106
+ assert_contains "changed_entrypoint_above_recommended: skills/demo-skill/SKILL.md" "$out" "stable changed-entrypoint token"
107
+ assert_contains "recommended_max=5000" "$out" "token cites recommended ceiling"
108
+ assert_contains "entrypoint_size_debt_count=1" "$out" "body-char debt counted"
109
+ assert_contains "entrypoint_size_debt_count_base=0" "$out" "base debt count is from main"
110
+ assert_contains "entrypoint_size_debt_count_head=1" "$out" "head debt count sees working tree"
111
+ assert_contains "entrypoint_size_debt_count_delta=+1" "$out" "growth into debt is visible"
112
+ assert_contains "entrypoint_size_severe_debt_count_delta=+0" "$out" "non-severe growth leaves severe count unchanged"
113
+ assert_contains "changed_entrypoint_size_delta: skills/demo-skill/SKILL.md" "$out" "per-file delta token emitted"
114
+ assert_contains "delta_body_chars=+" "$out" "per-file body delta is positive"
115
+ assert_contains "delta_bytes=+" "$out" "per-file byte delta is positive"
116
+ assert_contains "entrypoint_size_budget_advisory_ok" "$out" "advisory marker still present"
117
+ git -C "$REPO" checkout -- "skills/demo-skill/SKILL.md"
118
+
119
+ # Case b-minus: baseline above recommended -> head shrinks below recommended =>
120
+ # debt_count_delta=-1 + negative per-file delta. Create a dedicated baseline branch so
121
+ # the aggregate base/head delta is deterministic without depending on repo history.
122
+ git -C "$REPO" checkout -qb shrink-baseline main
123
+ { printf '\n'; repeat_char 'C' 6000; printf '\n'; } >> "$SKILL_MD"
124
+ git -C "$REPO" add -A
125
+ git -C "$REPO" commit -qm "large baseline"
126
+ git -C "$REPO" checkout -qb shrink-head
127
+ python3 - <<'PY' > "$SKILL_MD"
128
+ print("---")
129
+ print("name: demo-skill")
130
+ print("description: shrink changed entrypoint fixture.")
131
+ print("---")
132
+ print()
133
+ print("Small body after shrink.")
134
+ PY
135
+ set +e
136
+ out="$(CCL_SKILL_BASE_REF=shrink-baseline bash "$SIZE_SCRIPT" "$REPO" 2>&1)"
137
+ rc=$?
138
+ set -e
139
+ assert_rc "$rc" 0 "shrinking oversize entrypoint must stay non-blocking"
140
+ assert_contains "changed_entrypoint_below_recommended: skills/demo-skill/SKILL.md" "$out" "shrunk file can also be below recommended"
141
+ assert_contains "entrypoint_size_debt_count_base=1" "$out" "base was over recommended"
142
+ assert_contains "entrypoint_size_debt_count_head=0" "$out" "head is below recommended"
143
+ assert_contains "entrypoint_size_debt_count_delta=-1" "$out" "shrink out of debt is visible"
144
+ assert_contains "changed_entrypoint_size_delta: skills/demo-skill/SKILL.md" "$out" "per-file shrink delta token emitted"
145
+ assert_contains "delta_body_chars=-" "$out" "per-file body delta is negative"
146
+ assert_contains "delta_bytes=-" "$out" "per-file byte delta is negative"
147
+ git -C "$REPO" reset --hard -q HEAD
148
+ git -C "$REPO" checkout -B feature main
149
+
150
+ # Case b2: changed entrypoint with body < 1000 chars => stable below-recommended
151
+ # token, still non-blocking. This proves the distinct warning branch is covered
152
+ # without snapshotting incidental current repository sizes.
153
+ python3 - <<'PY' > "$SKILL_MD"
154
+ print("---")
155
+ print("name: demo-skill")
156
+ print("description: tiny changed entrypoint fixture.")
157
+ print("---")
158
+ print()
159
+ print("Tiny body.")
160
+ PY
161
+ run_size
162
+ assert_rc "$rc" 0 "changed tiny entrypoint must stay non-blocking"
163
+ assert_contains "changed_entrypoint_below_recommended: skills/demo-skill/SKILL.md" "$out" "stable below-recommended token"
164
+ assert_contains "recommended_min=1000" "$out" "token cites recommended floor"
165
+ assert_contains "entrypoint_size_debt_count=0" "$out" "tiny body is not over-size debt"
166
+ git -C "$REPO" checkout -- "skills/demo-skill/SKILL.md"
167
+
168
+ # Case c: baseline severe >50KB -> head still severe but smaller => severe count delta
169
+ # remains 0 while per-file delta_bytes is negative. Use a second skill so the count is
170
+ # exactly 1.
171
+ mkdir -p "$REPO/skills/big-skill"
172
+ BIG_MD="$REPO/skills/big-skill/SKILL.md"
173
+ {
174
+ printf '%s\n' '---'
175
+ printf '%s\n' 'name: big-skill'
176
+ printf '%s\n' 'description: oversized historical entrypoint fixture.'
177
+ printf '%s\n' '---'
178
+ printf '\n'
179
+ repeat_char 'B' 60000
180
+ printf '\n'
181
+ } > "$BIG_MD"
182
+ git -C "$REPO" add -A
183
+ git -C "$REPO" commit -qm "add severe baseline"
184
+ git -C "$REPO" branch -f severe-baseline HEAD
185
+ {
186
+ printf '%s\n' '---'
187
+ printf '%s\n' 'name: big-skill'
188
+ printf '%s\n' 'description: still oversized historical entrypoint fixture.'
189
+ printf '%s\n' '---'
190
+ printf '\n'
191
+ repeat_char 'D' 55000
192
+ printf '\n'
193
+ } > "$BIG_MD"
194
+ set +e
195
+ out="$(CCL_SKILL_BASE_REF=severe-baseline bash "$SIZE_SCRIPT" "$REPO" 2>&1)"
196
+ rc=$?
197
+ set -e
198
+ assert_rc "$rc" 0 "severe-debt entrypoint must stay non-blocking"
199
+ assert_contains "entrypoint_size_severe_debt_count=1" "$out" "severe byte debt counted"
200
+ assert_contains "entrypoint_size_severe_debt_count_base=1" "$out" "severe base counted"
201
+ assert_contains "entrypoint_size_severe_debt_count_head=1" "$out" "severe head counted"
202
+ assert_contains "entrypoint_size_severe_debt_count_delta=+0" "$out" "still-severe shrink does not change severe count"
203
+ assert_contains "entrypoint_size_severe_debt: skills/big-skill/SKILL.md" "$out" "per-file severe debt token"
204
+ assert_contains "changed_entrypoint_size_delta: skills/big-skill/SKILL.md" "$out" "severe per-file delta token emitted"
205
+ assert_contains "delta_bytes=-" "$out" "severe shrink byte delta is negative"
206
+ assert_contains "size_budget_info:" "$out" "legacy 50KB info header preserved"
207
+ assert_contains "entrypoint_size_budget_advisory_ok" "$out" "advisory marker still present"
208
+ git -C "$REPO" reset --hard -q HEAD
209
+ rm -rf "$REPO/skills/big-skill"
210
+ git -C "$REPO" add -A
211
+ git -C "$REPO" commit -qm "remove severe fixture"
212
+ git -C "$REPO" checkout -B feature main
213
+
214
+ # Case c2: added SKILL.md => base missing/head present/delta unknown, while aggregate
215
+ # delta remains computable.
216
+ mkdir -p "$REPO/skills/added-skill"
217
+ ADDED_MD="$REPO/skills/added-skill/SKILL.md"
218
+ cat > "$ADDED_MD" <<'EOF'
219
+ ---
220
+ name: added-skill
221
+ description: added entrypoint fixture.
222
+ ---
223
+
224
+ Added body.
225
+ EOF
226
+ run_size
227
+ assert_rc "$rc" 0 "added entrypoint must stay non-blocking"
228
+ assert_contains "changed_entrypoint_size_delta: skills/added-skill/SKILL.md" "$out" "added file delta token emitted"
229
+ assert_contains "base_body_chars=missing" "$out" "added file base is missing"
230
+ assert_contains "head_body_chars=" "$out" "added file head metric present"
231
+ assert_contains "delta_body_chars=unknown" "$out" "added file body delta is unknown, not zero"
232
+ assert_contains "base_bytes=missing" "$out" "added file base bytes missing"
233
+ assert_contains "head_bytes=" "$out" "added file head bytes present"
234
+ assert_contains "delta_bytes=unknown" "$out" "added file byte delta is unknown, not zero"
235
+ rm -rf "$REPO/skills/added-skill"
236
+
237
+ # Case c3: deleted SKILL.md => base present/head missing; aggregate count delta is
238
+ # still computable from the working tree.
239
+ git -C "$REPO" checkout -B delete-baseline main
240
+ mkdir -p "$REPO/skills/delete-skill"
241
+ DELETE_MD="$REPO/skills/delete-skill/SKILL.md"
242
+ {
243
+ printf '%s\n' '---'
244
+ printf '%s\n' 'name: delete-skill'
245
+ printf '%s\n' 'description: deleted oversize entrypoint fixture.'
246
+ printf '%s\n' '---'
247
+ printf '\n'
248
+ repeat_char 'E' 6000
249
+ printf '\n'
250
+ } > "$DELETE_MD"
251
+ git -C "$REPO" add -A
252
+ git -C "$REPO" commit -qm "delete baseline"
253
+ git -C "$REPO" checkout -qb delete-head
254
+ rm -f "$DELETE_MD"
255
+ set +e
256
+ out="$(CCL_SKILL_BASE_REF=delete-baseline bash "$SIZE_SCRIPT" "$REPO" 2>&1)"
257
+ rc=$?
258
+ set -e
259
+ assert_rc "$rc" 0 "deleted entrypoint must stay non-blocking"
260
+ assert_contains "entrypoint_size_debt_count_base=1" "$out" "deleted baseline debt counted"
261
+ assert_contains "entrypoint_size_debt_count_head=0" "$out" "deleted head debt removed"
262
+ assert_contains "entrypoint_size_debt_count_delta=-1" "$out" "deleted debt count delta computable"
263
+ assert_contains "changed_entrypoint_size_delta: skills/delete-skill/SKILL.md" "$out" "deleted file delta token emitted"
264
+ assert_contains "head_body_chars=missing" "$out" "deleted file head is missing"
265
+ assert_contains "delta_body_chars=unknown" "$out" "deleted file body delta is unknown, not zero"
266
+ assert_contains "head_bytes=missing" "$out" "deleted file head bytes missing"
267
+ assert_contains "delta_bytes=unknown" "$out" "deleted file byte delta is unknown, not zero"
268
+ git -C "$REPO" reset --hard -q HEAD
269
+ git -C "$REPO" checkout -B feature main
270
+
271
+ # Case c4: no git / merge-base unavailable => base/delta unknown/partial marker, rc 0.
272
+ NONGIT="$TMP/nongit"
273
+ mkdir -p "$NONGIT/skills/nogit-skill"
274
+ cat > "$NONGIT/skills/nogit-skill/SKILL.md" <<'EOF'
275
+ ---
276
+ name: nogit-skill
277
+ description: non git fixture.
278
+ ---
279
+
280
+ Body.
281
+ EOF
282
+ OLD_REPO="$REPO"
283
+ REPO="$NONGIT"
284
+ run_size
285
+ REPO="$OLD_REPO"
286
+ assert_rc "$rc" 0 "non-git directory must stay non-blocking"
287
+ assert_not_contains "entrypoint_size_blocking_ok" "$out" "a non-git run evaluated no delta and must not claim a blocking pass"
288
+ assert_contains "entrypoint_size_trend_partial: base=unknown" "$out" "non-git base is partial/unknown"
289
+ assert_contains "entrypoint_size_debt_count_base=unknown" "$out" "non-git base count unknown"
290
+ assert_contains "entrypoint_size_debt_count_delta=unknown" "$out" "non-git delta unknown"
291
+
292
+ set +e
293
+ out="$(CCL_SKILL_BASE_REF=refs/heads/does-not-exist bash "$SIZE_SCRIPT" "$REPO" 2>&1)"
294
+ rc=$?
295
+ set -e
296
+ assert_rc "$rc" 0 "unavailable merge-base must stay non-blocking"
297
+ assert_contains "entrypoint_size_trend_partial: base=unknown" "$out" "missing base ref is partial/unknown"
298
+ assert_contains "entrypoint_size_debt_count_base=unknown" "$out" "missing base ref count unknown"
299
+ assert_contains "entrypoint_size_debt_count_delta=unknown" "$out" "missing base ref delta unknown"
300
+
301
+ # Case d1: agent-context/session-start.md over the tripwire band but UNCHANGED vs base => band
302
+ # advisory only, exit 0, marker. (Force the band low so a small fixture trips it
303
+ # deterministically. The file is committed on main and never touched on the
304
+ # branch: an over-band but UNTOUCHED agent-context/session-start.md must never hard-red an
305
+ # unrelated MR — only net growth blocks, see d3.)
306
+ git -C "$REPO" checkout -q main
307
+ printf 'every-session injection content that exceeds the tiny tripwire band.\n' > "$REPO/agent-context/session-start.md"
308
+ git -C "$REPO" add -A
309
+ git -C "$REPO" commit -qm "bootstrap baseline on main"
310
+ git -C "$REPO" checkout -qB feature
311
+ run_size BOOTSTRAP_BYTE_TRIPWIRE=10
312
+ assert_rc "$rc" 0 "over-band but unchanged bootstrap must stay non-blocking"
313
+ assert_contains "size_budget_advisory: agent-context/session-start.md is" "$out" "over-band advisory emitted"
314
+ assert_contains "tripwire" "$out" "advisory names the tripwire band"
315
+ assert_contains "size_budget_advisory_ok" "$out" "readable bootstrap keeps ok state"
316
+ assert_contains "entrypoint_size_budget_advisory_ok" "$out" "advisory marker present"
317
+ assert_not_contains "entrypoint_size_block: " "$out" "untouched bootstrap must not enter the blocking verdict"
318
+ assert_not_contains "changed_bootstrap_size_delta" "$out" "unchanged bootstrap emits no delta token"
319
+
320
+ # Case d2: tracked agent-context/session-start.md deleted (uncommitted) => nothing left to
321
+ # size-gate; partial marker (equivalent legacy signal), exit 0, no block.
322
+ rm -f "$REPO/agent-context/session-start.md"
323
+ run_size
324
+ assert_rc "$rc" 0 "missing bootstrap must stay non-blocking"
325
+ assert_contains "size_budget_advisory_partial" "$out" "missing bootstrap yields partial marker"
326
+ assert_contains "agent-context/session-start.md missing or unreadable" "$out" "partial reason reported"
327
+ assert_not_contains "entrypoint_size_block: " "$out" "deleted bootstrap has no size-gate object"
328
+
329
+ # Case d3: agent-context/session-start.md net GROWTH (uncommitted append) => block, rc 1. The
330
+ # every-session injection is permanently severe: any head_bytes > base_bytes
331
+ # fails the gate, regardless of the (advisory) band.
332
+ git -C "$REPO" checkout -- agent-context/session-start.md
333
+ printf 'one more line of always-on growth.\n' >> "$REPO/agent-context/session-start.md"
334
+ run_size
335
+ assert_rc "$rc" 1 "bootstrap net growth must block"
336
+ assert_contains "entrypoint_size_block: agent-context/session-start.md grew base_bytes=" "$out" "bootstrap-growth block token names base/head bytes"
337
+ assert_contains "changed_bootstrap_size_delta: agent-context/session-start.md" "$out" "bootstrap delta token emitted"
338
+ assert_contains "entrypoint_size_blocking_failed" "$out" "failed marker present"
339
+ assert_not_contains "entrypoint_size_blocking_ok" "$out" "no ok marker next to a block"
340
+ git -C "$REPO" checkout -- agent-context/session-start.md
341
+
342
+ # Case d4: agent-context/session-start.md shrink => allowed, rc 0 (shrinking the always-on layer
343
+ # is the encouraged direction, same family rule as severe entrypoints).
344
+ printf 'tiny.\n' > "$REPO/agent-context/session-start.md"
345
+ run_size
346
+ assert_rc "$rc" 0 "shrinking bootstrap must pass"
347
+ assert_contains "bootstrap_size_delta_ok: agent-context/session-start.md" "$out" "no-net-growth token emitted"
348
+ assert_contains "entrypoint_size_blocking_ok" "$out" "shrink is allowed"
349
+ git -C "$REPO" checkout -- agent-context/session-start.md
350
+
351
+ # Case d5: same byte size, different content (edited, not grown) => allowed.
352
+ boot_base_bytes=$(git -C "$REPO" show main:agent-context/session-start.md | wc -c | tr -d ' ')
353
+ { repeat_char 'z' $(( boot_base_bytes - 1 )); printf '\n'; } > "$REPO/agent-context/session-start.md.tmp"
354
+ mv "$REPO/agent-context/session-start.md.tmp" "$REPO/agent-context/session-start.md"
355
+ [ "$(wc -c < "$REPO/agent-context/session-start.md" | tr -d ' ')" = "$boot_base_bytes" ] || fail "d5 fixture: byte count drifted from base"
356
+ run_size
357
+ assert_rc "$rc" 0 "same-size edit of bootstrap must pass"
358
+ assert_contains "bootstrap_size_delta_ok: agent-context/session-start.md" "$out" "same-size edit emits no-net-growth token"
359
+ assert_contains "entrypoint_size_blocking_ok" "$out" "same-size edit allowed"
360
+ git -C "$REPO" checkout -- agent-context/session-start.md
361
+
362
+ # Case d6: agent-context/session-start.md absent from BASE (new every-session-injection file,
363
+ # untracked) => block like a new severe entrypoint. Fresh repo for a clean base.
364
+ REPO2="$TMP/repo-bootstrap-new"
365
+ mkdir -p "$REPO2/skills/demo-skill" "$REPO2/agent-context"
366
+ git init -q -b main "$REPO2"
367
+ git -C "$REPO2" config user.email test@example.invalid
368
+ git -C "$REPO2" config user.name "Test User"
369
+ cp "$SKILL_MD" "$REPO2/skills/demo-skill/SKILL.md"
370
+ git -C "$REPO2" add -A
371
+ git -C "$REPO2" commit -qm "baseline without bootstrap"
372
+ git -C "$REPO2" checkout -qb feature
373
+ printf 'brand-new always-on injection surface.\n' > "$REPO2/agent-context/session-start.md"
374
+ set +e
375
+ out="$(env -u CCL_SKILL_BASE_REF bash "$SIZE_SCRIPT" "$REPO2" 2>&1)"
376
+ rc=$?
377
+ set -e
378
+ assert_rc "$rc" 1 "a agent-context/session-start.md absent from base must block as a new every-session injection"
379
+ assert_contains "entrypoint_size_block: agent-context/session-start.md: new every-session-injection file" "$out" "new-injection block token"
380
+ assert_not_contains "entrypoint_size_blocking_ok" "$out" "no ok marker next to a block"
381
+
382
+ # Case d7: changed agent-context/session-start.md with an UNRESOLVABLE base => fail-closed
383
+ # partial, rc 1, NO ok markers (same family rule as a severe changed file).
384
+ printf 'growth under a lost base.\n' >> "$REPO/agent-context/session-start.md"
385
+ set +e
386
+ out="$(env CCL_SKILL_BASE_REF=definitely-not-a-ref bash "$SIZE_SCRIPT" "$REPO" 2>&1)"
387
+ rc=$?
388
+ set -e
389
+ assert_rc "$rc" 1 "changed bootstrap with unknown base must fail closed"
390
+ assert_contains "entrypoint_size_block_partial: agent-context/session-start.md: base unknown" "$out" "partial names agent-context/session-start.md"
391
+ assert_contains "entrypoint_size_blocking_failed" "$out" "failed marker present"
392
+ assert_not_contains "entrypoint_size_blocking_ok" "$out" "no false ok next to partial"
393
+ assert_not_contains "entrypoint_size_budget_advisory_ok" "$out" "no legacy ok next to failure"
394
+ git -C "$REPO" checkout -- agent-context/session-start.md
395
+
396
+ # Case d8: growth landing on the BASE side after divergence never reddens the
397
+ # branch — base resolution is merge-base, so only the MR's own diff counts.
398
+ # Not merged => the target-branch growth is unreachable from HEAD (invisible);
399
+ # merged => the merge-base absorbs it. Only growth inside the branch's own diff
400
+ # blocks (d3).
401
+ git -C "$REPO" checkout -q main
402
+ printf 'growth landing on main after the branch diverged.\n' >> "$REPO/agent-context/session-start.md"
403
+ git -C "$REPO" commit -qam "main-side growth after divergence"
404
+ git -C "$REPO" checkout -q feature
405
+ run_size
406
+ assert_rc "$rc" 0 "base-side growth must not red the branch"
407
+ assert_contains "entrypoint_size_blocking_ok" "$out" "not-merged inherited growth is invisible"
408
+ git -C "$REPO" merge -q -m "merge main into feature" main
409
+ run_size
410
+ assert_rc "$rc" 0 "merged base-side growth must not red the branch either"
411
+ assert_contains "entrypoint_size_blocking_ok" "$out" "merged inherited growth is absorbed by merge-base"
412
+
413
+ # Case d9: committed bootstrap growth with an UNRESOLVABLE base and a CLEAN
414
+ # tree => nothing was delta-checked: bootstrap-scoped unevaluated token, rc 0,
415
+ # and NEVER the ok token (the base-less state is a caller-side pipeline
416
+ # responsibility; CI always exports CCL_SKILL_BASE_REF).
417
+ [ -z "$(git -C "$REPO" status --porcelain)" ] || fail "d9 fixture: tree must be clean"
418
+ set +e
419
+ out="$(env CCL_SKILL_BASE_REF=definitely-not-a-ref bash "$SIZE_SCRIPT" "$REPO" 2>&1)"
420
+ rc=$?
421
+ set -e
422
+ assert_rc "$rc" 0 "base-less clean tree keeps the advisory exit contract"
423
+ assert_contains "bootstrap_size_delta_unevaluated: base=unknown — agent-context/session-start.md committed changes were NOT delta-checked" "$out" "bootstrap-scoped unevaluated token present"
424
+ assert_not_contains "entrypoint_size_blocking_ok" "$out" "a base-less run must never claim a blocking pass"
425
+
426
+ # Case d10: the baseline is the SAME path at base and nothing else, so a git mv
427
+ # of the always-on layer BLOCKS as a new every-session injection. That is the
428
+ # intended verdict, not a gap: a relocation is rare, deliberate, and worth a
429
+ # human decision, whereas every automatic recogniser tried here became a way for
430
+ # a candidate to nominate its own baseline (see d11). The first half pins that a
431
+ # byte-identical move still blocks; the second pins that git's rename pairing is
432
+ # never consulted, so an unrelated source cannot be adopted as the yardstick.
433
+ REPO3="$TMP/repo-bootstrap-move"
434
+ mkdir -p "$REPO3/skills/demo-skill"
435
+ git init -q -b main "$REPO3"
436
+ git -C "$REPO3" config user.email test@example.invalid
437
+ git -C "$REPO3" config user.name "Test User"
438
+ cp "$SKILL_MD" "$REPO3/skills/demo-skill/SKILL.md"
439
+ printf 'always-on injection body that is about to move, unchanged.\n' > "$REPO3/bootstrap.md"
440
+ git -C "$REPO3" add -A
441
+ git -C "$REPO3" commit -qm "baseline with bootstrap at the old path"
442
+ git -C "$REPO3" checkout -qb feature
443
+ mkdir -p "$REPO3/agent-context"
444
+ git -C "$REPO3" mv bootstrap.md agent-context/session-start.md
445
+ set +e
446
+ out="$(env -u CCL_SKILL_BASE_REF bash "$SIZE_SCRIPT" "$REPO3" 2>&1)"
447
+ rc=$?
448
+ set -e
449
+ assert_rc "$rc" 1 "relocating the always-on layer must block — the baseline is the same path at base, nothing else"
450
+ assert_contains "new every-session-injection file" "$out" "a relocation reads as a new injection surface and needs a human decision"
451
+ assert_not_contains "renamed_from=" "$out" "the gate must not consult git rename pairing at all"
452
+ assert_not_contains "entrypoint_size_blocking_ok" "$out" "a relocation must never earn the blocking-ok token"
453
+
454
+ # Case d11: the budget must not be settable by CHOOSING a baseline. git detects
455
+ # renames by content similarity, not identity, so an unrelated tracked file moved
456
+ # onto the injection path is reported as a rename of that file. Any mechanism
457
+ # that believed such a pairing would let a candidate import a large blob as its
458
+ # own yardstick and inject far more than the real bootstrap while the delta still
459
+ # read non-positive. Independent review and adversarial challenge both landed on
460
+ # that bypass; the gate answers it by having no baseline-nomination path at all.
461
+ REPO4="$TMP/repo-bootstrap-baseline-swap"
462
+ mkdir -p "$REPO4/skills/demo-skill" "$REPO4/docs"
463
+ git init -q -b main "$REPO4"
464
+ git -C "$REPO4" config user.email test@example.invalid
465
+ git -C "$REPO4" config user.name "Test User"
466
+ cp "$SKILL_MD" "$REPO4/skills/demo-skill/SKILL.md"
467
+ printf 'the real always-on injection, deliberately small.\n' > "$REPO4/bootstrap.md"
468
+ { printf 'unrelated reference document.\n'; repeat_char y 9000; printf '\n'; } > "$REPO4/docs/big-unrelated.md"
469
+ git -C "$REPO4" add -A
470
+ git -C "$REPO4" commit -qm "baseline: small bootstrap plus a large unrelated doc"
471
+ git -C "$REPO4" checkout -qb feature
472
+ mkdir -p "$REPO4/agent-context"
473
+ # Byte-identical content makes git report a 100% rename — exactly the pairing a
474
+ # rename-following gate would have believed.
475
+ git -C "$REPO4" rm -q bootstrap.md
476
+ git -C "$REPO4" mv docs/big-unrelated.md agent-context/session-start.md
477
+ set +e
478
+ out="$(env -u CCL_SKILL_BASE_REF bash "$SIZE_SCRIPT" "$REPO4" 2>&1)"
479
+ rc=$?
480
+ set -e
481
+ assert_rc "$rc" 1 "an unrelated file moved onto the injection path must not become its own baseline"
482
+ assert_contains "new every-session-injection file" "$out" "the swap is refused, not measured against the imported blob"
483
+ assert_not_contains "docs/big-unrelated.md" "$out" "the unrelated rename source must never appear as a baseline"
484
+
485
+ # ---------------------------------------------------------------------------
486
+ # Delta-blocking series (fresh repo, deterministic): new/crossing severe and
487
+ # severe growth block; shrink, sub-severe growth, and same-size edits pass.
488
+ REPO="$TMP/repo-blocking"
489
+ mkdir -p "$REPO/skills/demo-skill"
490
+ git init -q -b main "$REPO"
491
+ git -C "$REPO" config user.email test@example.invalid
492
+ git -C "$REPO" config user.name "Test User"
493
+ SKILL_MD="$REPO/skills/demo-skill/SKILL.md"
494
+
495
+ write_skill_with_body_bytes() { # <path> <total-bytes-approx>
496
+ {
497
+ printf -- '---\nname: demo-skill\ndescription: blocking series fixture.\n---\n\n'
498
+ repeat_char x "$2"
499
+ } > "$1"
500
+ }
501
+
502
+ # Baseline: 49KB (sub-severe).
503
+ write_skill_with_body_bytes "$SKILL_MD" 49000
504
+ git -C "$REPO" add -A
505
+ git -C "$REPO" commit -qm "baseline 49k"
506
+ git -C "$REPO" checkout -qb feature
507
+
508
+ # Case e1: 49KB -> 51KB crosses the severe threshold => block, rc 1.
509
+ write_skill_with_body_bytes "$SKILL_MD" 51000
510
+ run_size
511
+ assert_rc "$rc" 1 "crossing into severe must block"
512
+ assert_contains "entrypoint_size_block: skills/demo-skill/SKILL.md: new severe entrypoint" "$out" "new-severe block token"
513
+ assert_contains "entrypoint_size_blocking_failed" "$out" "failed marker present"
514
+
515
+ # Case e2: back to 49KB => clean again, rc 0, blocking_ok.
516
+ write_skill_with_body_bytes "$SKILL_MD" 49000
517
+ run_size
518
+ assert_rc "$rc" 0 "sub-severe entrypoint must pass"
519
+ assert_contains "entrypoint_size_blocking_ok" "$out" "blocking ok marker"
520
+
521
+ # Case e3: 51KB on MAIN (inside the merge-base), then grow to 52KB on a branch
522
+ # => growth of an already-severe entrypoint blocks. (A 51KB commit merely on the
523
+ # feature branch is a new-severe introduction instead — merge-base semantics.)
524
+ git -C "$REPO" checkout -q main
525
+ write_skill_with_body_bytes "$SKILL_MD" 51000
526
+ git -C "$REPO" add -A
527
+ git -C "$REPO" commit -qm "base 51k severe on main"
528
+ git -C "$REPO" checkout -qb feature2
529
+ write_skill_with_body_bytes "$SKILL_MD" 52000
530
+ run_size
531
+ assert_rc "$rc" 1 "severe growth must block"
532
+ assert_contains "entrypoint_size_block: skills/demo-skill/SKILL.md: severe entrypoint grew" "$out" "severe-growth block token"
533
+ assert_contains "entrypoint_size_blocking_failed" "$out" "failed marker present"
534
+
535
+ # Case e4: shrink 52KB -> 50KB (still severe but smaller) => allowed, rc 0.
536
+ write_skill_with_body_bytes "$SKILL_MD" 50050
537
+ run_size
538
+ assert_rc "$rc" 0 "shrinking a severe entrypoint must pass"
539
+ assert_contains "entrypoint_size_blocking_ok" "$out" "shrink is allowed"
540
+
541
+ # Case e5: a brand-new severe file (untracked) => new-severe block.
542
+ mkdir -p "$REPO/skills/fresh-skill"
543
+ write_skill_with_body_bytes "$REPO/skills/fresh-skill/SKILL.md" 60000
544
+ run_size
545
+ assert_rc "$rc" 1 "untracked severe file must block"
546
+ assert_contains "entrypoint_size_block: skills/fresh-skill/SKILL.md: new severe entrypoint" "$out" "untracked new-severe block"
547
+ rm -f "$REPO/skills/fresh-skill/SKILL.md"
548
+
549
+ # Case e6: same byte size, different content (edited, not grown) => allowed.
550
+ # Rebuild the file to the EXACT same byte count (header + padded body).
551
+ # Rebuild to EXACTLY the base byte count with different content (true
552
+ # same-size edit, not a shrink): merge-base holds the 51k severe state.
553
+ base_bytes=$(git -C "$REPO" show "$(git -C "$REPO" merge-base main HEAD):skills/demo-skill/SKILL.md" | wc -c | tr -d ' ')
554
+ header_bytes=$(printf -- '---\nname: demo-skill\ndescription: edited same size variant.\n---\n\n' | wc -c | tr -d ' ')
555
+ { printf -- '---\nname: demo-skill\ndescription: edited same size variant.\n---\n\n'; repeat_char y $(( base_bytes - header_bytes )); } > "$SKILL_MD.tmp"
556
+ mv "$SKILL_MD.tmp" "$SKILL_MD"
557
+ [ "$(wc -c < "$SKILL_MD" | tr -d ' ')" = "$base_bytes" ] || fail "e6 fixture: byte count drifted from base"
558
+ run_size
559
+ assert_rc "$rc" 0 "same-size edit of a severe entrypoint must pass"
560
+ assert_contains "entrypoint_size_blocking_ok" "$out" "same-size edit allowed"
561
+
562
+ # Case e7b: rename a severe entrypoint to a new path => move_ok, not a block.
563
+ # The severe deletion in the same diff covers the new severe file; a net-new
564
+ # severe would still block (e1).
565
+ git -C "$REPO" checkout -q main 2>/dev/null || git -C "$REPO" checkout -q -b main
566
+ write_skill_with_body_bytes "$SKILL_MD" 50050
567
+ git -C "$REPO" add -A && git -C "$REPO" commit -qm "50k on main for rename case"
568
+ git -C "$REPO" checkout -qb feature3
569
+ mkdir -p "$REPO/skills/moved-skill"
570
+ git -C "$REPO" mv skills/demo-skill/SKILL.md skills/moved-skill/SKILL.md
571
+ run_size
572
+ assert_rc "$rc" 0 "rename of a severe entrypoint must pass as move"
573
+ assert_contains "entrypoint_size_move_ok: skills/moved-skill/SKILL.md" "$out" "move token names the new path"
574
+ assert_contains "entrypoint_size_blocking_ok" "$out" "move does not block"
575
+
576
+ # Case e7d: the file STAYS at the renamed path and grows => the move credit is
577
+ # withdrawn and it blocks as a NEW severe entrypoint (the R pair no longer covers
578
+ # it because head > source). This is the real rename-and-grow shape; e7c below
579
+ # moves the file BACK to its base path, which git reports as an ordinary same-path
580
+ # modification and therefore exercises the growth branch instead — keep both, they
581
+ # are different branches of the verdict.
582
+ write_skill_with_body_bytes "$REPO/skills/moved-skill/SKILL.md" 62000
583
+ run_size
584
+ assert_rc "$rc" 1 "rename that also grows must block"
585
+ assert_contains "entrypoint_size_block: skills/moved-skill/SKILL.md: new severe entrypoint" "$out" "rename+growth blocks as new-severe, not as growth"
586
+ assert_not_contains "entrypoint_size_move_ok" "$out" "move credit must not survive growth"
587
+ assert_not_contains "entrypoint_size_blocking_ok" "$out" "no ok marker next to a block"
588
+ write_skill_with_body_bytes "$REPO/skills/moved-skill/SKILL.md" 50050
589
+
590
+ # Case e7c: moving the file BACK to a path that is already severe in base, and
591
+ # growing it, blocks on the severe-growth branch (same-path modification).
592
+ git -C "$REPO" mv skills/moved-skill/SKILL.md skills/demo-skill/SKILL.md
593
+ write_skill_with_body_bytes "$REPO/skills/demo-skill/SKILL.md" 62000
594
+ run_size
595
+ assert_rc "$rc" 1 "move-back-and-grow must block"
596
+ assert_contains "entrypoint_size_block: skills/demo-skill/SKILL.md: severe entrypoint grew" "$out" "an already-severe base path that grows blocks as growth"
597
+
598
+ # Case e7: base unknown (bad CCL_SKILL_BASE_REF) + severe UNTRACKED file
599
+ # (visible in `changed` regardless of base) => fail-closed partial, rc 1, NO ok
600
+ # markers (the P0 false-pass shape). Note: committed-only changes without a
601
+ # resolvable base are invisible to the delta gate by design — CI always exports
602
+ # CCL_SKILL_BASE_REF.
603
+ mkdir -p "$REPO/skills/rogue-skill"
604
+ write_skill_with_body_bytes "$REPO/skills/rogue-skill/SKILL.md" 51000
605
+ set +e
606
+ out="$(env CCL_SKILL_BASE_REF=definitely-not-a-ref bash "$SIZE_SCRIPT" "$REPO" 2>&1)"
607
+ rc=$?
608
+ set -e
609
+ assert_rc "$rc" 1 "unknown base must fail closed"
610
+ assert_contains "entrypoint_size_block_partial: skills/rogue-skill/SKILL.md: base unknown" "$out" "partial names the file"
611
+ assert_contains "entrypoint_size_blocking_failed" "$out" "failed marker present"
612
+ assert_not_contains "entrypoint_size_blocking_ok" "$out" "no false ok next to partial"
613
+ assert_not_contains "entrypoint_size_budget_advisory_ok" "$out" "no legacy ok next to failure"
614
+ rm -rf "$REPO/skills/rogue-skill"
615
+
616
+ # Case e9: committed-only severe growth with an UNRESOLVABLE base and a CLEAN
617
+ # tree. The delta gate cannot see the committed change at all, so it evaluates
618
+ # nothing — it must NOT print entrypoint_size_blocking_ok, because a consumer
619
+ # gating on that token would otherwise earn a pass simply by losing its base.
620
+ # The exit code stays 0 on purpose (the script also runs outside a worktree);
621
+ # reddening this state is the caller's pipeline decision, and CI always exports
622
+ # CCL_SKILL_BASE_REF.
623
+ git -C "$REPO" add -A
624
+ git -C "$REPO" commit -qm "commit the severe growth so the tree is clean"
625
+ [ -z "$(git -C "$REPO" status --porcelain)" ] || fail "e9 fixture: tree must be clean"
626
+ set +e
627
+ out="$(env CCL_SKILL_BASE_REF=definitely-not-a-ref bash "$SIZE_SCRIPT" "$REPO" 2>&1)"
628
+ rc=$?
629
+ set -e
630
+ assert_rc "$rc" 0 "base-less clean tree keeps the advisory exit contract"
631
+ assert_contains "entrypoint_size_blocking_unevaluated" "$out" "un-evaluated delta gate says so"
632
+ assert_not_contains "entrypoint_size_blocking_ok" "$out" "a base-less run must never claim a blocking pass"
633
+
634
+ # ---------------------------------------------------------------------------
635
+ # C3 body-word budget series (fresh repos, deterministic): frontmatter is out
636
+ # of scope; a new/within-limit entrypoint may not exceed 5000 body words; a
637
+ # historical over-limit entrypoint may stay level or shrink but may not grow.
638
+ WORD_REPO="$TMP/repo-word-budget"
639
+ mkdir -p "$WORD_REPO/skills/demo-skill" "$WORD_REPO/skills/legacy-unchanged"
640
+ git init -q -b main "$WORD_REPO"
641
+ git -C "$WORD_REPO" config user.email test@example.invalid
642
+ git -C "$WORD_REPO" config user.name "Test User"
643
+ WORD_SKILL="$WORD_REPO/skills/demo-skill/SKILL.md"
644
+ LEGACY_UNCHANGED_WORD_SKILL="$WORD_REPO/skills/legacy-unchanged/SKILL.md"
645
+
646
+ write_skill_with_body_words() { # <path> <body-word-count> [word]
647
+ local skill_name
648
+ skill_name="$(basename "$(dirname "$1")")"
649
+ {
650
+ printf -- '---\nname: %s\ndescription: word-budget fixture.\n---\n\n' "$skill_name"
651
+ repeat_word "${3:-word}" "$2"
652
+ } > "$1"
653
+ }
654
+
655
+ write_skill_with_body_words "$WORD_SKILL" 2
656
+ write_skill_with_body_words "$LEGACY_UNCHANGED_WORD_SKILL" 5001 legacy
657
+ git -C "$WORD_REPO" add -A
658
+ git -C "$WORD_REPO" commit -qm "small word-budget baseline"
659
+ git -C "$WORD_REPO" checkout -qb feature
660
+
661
+ # Case f1: frontmatter words do not consume the body budget. The changed-file
662
+ # token pins the exact metric so silently counting YAML makes this test red.
663
+ {
664
+ printf -- '---\nname: demo-skill\ndescription: '
665
+ repeat_word meta 6000
666
+ printf -- '---\n\nonly two\n'
667
+ } > "$WORD_SKILL"
668
+ set +e
669
+ out="$(env -u CCL_SKILL_BASE_REF bash "$SIZE_SCRIPT" "$WORD_REPO" 2>&1)"
670
+ rc=$?
671
+ set -e
672
+ assert_rc "$rc" 0 "frontmatter words must not consume the body-word budget"
673
+ assert_contains "changed_entrypoint_word_delta: skills/demo-skill/SKILL.md" "$out" "body-word delta token emitted"
674
+ assert_contains "head_body_words=2" "$out" "only body words are counted"
675
+ assert_contains "entrypoint_word_budget_over_limit_count_head=1" "$out" "unchanged historical over-limit entrypoint remains visible"
676
+ assert_contains "entrypoint_word_budget_blocking_ok" "$out" "frontmatter-only growth remains within the word budget"
677
+ git -C "$WORD_REPO" checkout -- skills/demo-skill/SKILL.md
678
+
679
+ # Case f2: a new entrypoint above the uniform limit blocks with path, actual,
680
+ # and allowed counts in a machine-readable diagnostic.
681
+ mkdir -p "$WORD_REPO/skills/fresh-skill"
682
+ FRESH_WORD_SKILL="$WORD_REPO/skills/fresh-skill/SKILL.md"
683
+ write_skill_with_body_words "$FRESH_WORD_SKILL" 5001
684
+ set +e
685
+ out="$(env -u CCL_SKILL_BASE_REF bash "$SIZE_SCRIPT" "$WORD_REPO" 2>&1)"
686
+ rc=$?
687
+ set -e
688
+ assert_rc "$rc" 1 "new entrypoint above the word limit must block"
689
+ assert_contains "entrypoint_word_budget_block: skills/fresh-skill/SKILL.md" "$out" "word-budget block names the file"
690
+ assert_contains "head_body_words=5001" "$out" "word-budget block reports actual words"
691
+ assert_contains "allowed_body_words=5000" "$out" "word-budget block reports the uniform allowance"
692
+ assert_contains "entrypoint_word_budget_blocking_failed" "$out" "word-budget failed marker present"
693
+ assert_contains "entrypoint_size_blocking_failed" "$out" "legacy aggregate marker also reports a word-only size-budget failure"
694
+ assert_not_contains "entrypoint_size_block: skills/fresh-skill/SKILL.md" "$out" "word-only failure does not fabricate a byte-specific block line"
695
+ assert_not_contains "entrypoint_word_budget_blocking_ok" "$out" "no word-budget ok marker next to a block"
696
+ rm -rf "$WORD_REPO/skills/fresh-skill"
697
+
698
+ # Case f3: the metric cannot be bypassed with unspaced Han text. Each Han
699
+ # ideograph is one deterministic word-equivalent unit; no language segmenter or
700
+ # optional runtime dependency is required.
701
+ mkdir -p "$WORD_REPO/skills/han-skill"
702
+ HAN_WORD_SKILL="$WORD_REPO/skills/han-skill/SKILL.md"
703
+ {
704
+ printf -- '---\nname: han-skill\ndescription: Han fixture.\n---\n\n'
705
+ ruby -e 'print([0x5B57].pack("U") * 5001)'
706
+ printf '\n'
707
+ } > "$HAN_WORD_SKILL"
708
+ ruby -e 's = File.binread(ARGV.fetch(0)).force_encoding(Encoding::UTF_8); exit(s.valid_encoding? ? 0 : 1)' "$HAN_WORD_SKILL" \
709
+ || fail "f3 fixture: generated invalid UTF-8"
710
+ set +e
711
+ out="$(env -u CCL_SKILL_BASE_REF LC_ALL=C bash "$SIZE_SCRIPT" "$WORD_REPO" 2>&1)"
712
+ rc=$?
713
+ set -e
714
+ assert_rc "$rc" 1 "unspaced Han body above the word-equivalent limit must block under the C locale"
715
+ assert_contains "entrypoint_word_budget_block: skills/han-skill/SKILL.md" "$out" "Han over-limit block names the file"
716
+ assert_contains "head_body_words=5001" "$out" "Han units are counted deterministically"
717
+ rm -rf "$WORD_REPO/skills/han-skill"
718
+
719
+ # Case f3b: invalid UTF-8 must not crash the existing raw-byte gate or disappear
720
+ # from the body-word metric. Each invalid byte becomes one counted replacement
721
+ # unit, so 5000 valid words plus one invalid byte crosses the uniform limit.
722
+ mkdir -p "$WORD_REPO/skills/invalid-utf8-skill"
723
+ INVALID_UTF8_WORD_SKILL="$WORD_REPO/skills/invalid-utf8-skill/SKILL.md"
724
+ write_skill_with_body_words "$INVALID_UTF8_WORD_SKILL" 5000
725
+ ruby -e 'File.open(ARGV.fetch(0), "ab") { |f| f.write([0xFF].pack("C")) }' "$INVALID_UTF8_WORD_SKILL"
726
+ set +e
727
+ out="$(env -u CCL_SKILL_BASE_REF LC_ALL=C bash "$SIZE_SCRIPT" "$WORD_REPO" 2>&1)"
728
+ rc=$?
729
+ set -e
730
+ assert_rc "$rc" 1 "invalid UTF-8 byte must be counted without crashing the size gate"
731
+ assert_contains "entrypoint_word_budget_block: skills/invalid-utf8-skill/SKILL.md" "$out" "invalid UTF-8 fixture blocks as a word-budget violation"
732
+ assert_contains "head_body_words=5001" "$out" "each invalid byte contributes one deterministic replacement unit"
733
+ assert_not_contains "entrypoint_size_gate_error" "$out" "invalid UTF-8 must not disable the raw-byte gate"
734
+ rm -rf "$WORD_REPO/skills/invalid-utf8-skill"
735
+
736
+ # Case f4: a historical over-limit entrypoint is frozen at its merge-base
737
+ # count. Same-count edits and shrinkage pass; one added word blocks.
738
+ git -C "$WORD_REPO" checkout -q main
739
+ write_skill_with_body_words "$WORD_SKILL" 5001 legacy
740
+ git -C "$WORD_REPO" add -A
741
+ git -C "$WORD_REPO" commit -qm "historical over-limit word baseline"
742
+ git -C "$WORD_REPO" checkout -qb legacy-feature
743
+ write_skill_with_body_words "$WORD_SKILL" 5001 changed
744
+ set +e
745
+ out="$(env -u CCL_SKILL_BASE_REF bash "$SIZE_SCRIPT" "$WORD_REPO" 2>&1)"
746
+ rc=$?
747
+ set -e
748
+ assert_rc "$rc" 0 "same-count edit of historical over-limit entrypoint must pass"
749
+ assert_contains "entrypoint_word_budget_legacy_ok: skills/demo-skill/SKILL.md" "$out" "legacy allowance is explicit"
750
+ assert_contains "allowed_body_words=5001" "$out" "legacy allowance equals the base count"
751
+
752
+ write_skill_with_body_words "$WORD_SKILL" 5002 changed
753
+ set +e
754
+ out="$(env -u CCL_SKILL_BASE_REF bash "$SIZE_SCRIPT" "$WORD_REPO" 2>&1)"
755
+ rc=$?
756
+ set -e
757
+ assert_rc "$rc" 1 "historical over-limit entrypoint growth must block"
758
+ assert_contains "entrypoint_word_budget_block: skills/demo-skill/SKILL.md" "$out" "legacy growth block names the file"
759
+ assert_contains "base_body_words=5001" "$out" "legacy growth reports base words"
760
+ assert_contains "head_body_words=5002" "$out" "legacy growth reports head words"
761
+ assert_contains "allowed_body_words=5001" "$out" "legacy growth allowance is frozen at base"
762
+
763
+ write_skill_with_body_words "$WORD_SKILL" 4999 changed
764
+ set +e
765
+ out="$(env -u CCL_SKILL_BASE_REF bash "$SIZE_SCRIPT" "$WORD_REPO" 2>&1)"
766
+ rc=$?
767
+ set -e
768
+ assert_rc "$rc" 0 "historical over-limit entrypoint may shrink below the uniform limit"
769
+ assert_contains "entrypoint_word_budget_blocking_ok" "$out" "shrink below the limit passes"
770
+
771
+ # Case f4b: an actual git rename carries the historical allowance to its own new
772
+ # path, but adding a word during that rename still blocks.
773
+ git -C "$WORD_REPO" reset --hard -q HEAD
774
+ mkdir -p "$WORD_REPO/skills/moved-skill"
775
+ git -C "$WORD_REPO" mv skills/demo-skill/SKILL.md skills/moved-skill/SKILL.md
776
+ set +e
777
+ out="$(env -u CCL_SKILL_BASE_REF bash "$SIZE_SCRIPT" "$WORD_REPO" 2>&1)"
778
+ rc=$?
779
+ set -e
780
+ assert_rc "$rc" 0 "rename of historical over-limit entrypoint without growth must pass"
781
+ assert_contains "entrypoint_word_budget_move_ok: skills/moved-skill/SKILL.md" "$out" "rename carries only its own historical allowance"
782
+ write_skill_with_body_words "$WORD_REPO/skills/moved-skill/SKILL.md" 5002 legacy
783
+ set +e
784
+ out="$(env -u CCL_SKILL_BASE_REF bash "$SIZE_SCRIPT" "$WORD_REPO" 2>&1)"
785
+ rc=$?
786
+ set -e
787
+ assert_rc "$rc" 1 "rename plus word growth must block"
788
+ assert_contains "entrypoint_word_budget_block: skills/moved-skill/SKILL.md" "$out" "rename growth block names the new path"
789
+ assert_contains "base_body_words=5001" "$out" "rename growth uses the moved historical baseline"
790
+ assert_contains "allowed_body_words=5001" "$out" "rename growth allowance is frozen at the moved baseline"
791
+ assert_contains "moved_from=skills/demo-skill/SKILL.md" "$out" "rename growth diagnostic proves the rename branch ran"
792
+ git -C "$WORD_REPO" reset --hard -q HEAD
793
+
794
+ # Case f5: after a shrink is in the baseline, the historical allowance is gone;
795
+ # growing back above the uniform limit blocks even if an older revision was larger.
796
+ git -C "$WORD_REPO" checkout -q main
797
+ write_skill_with_body_words "$WORD_SKILL" 5000 landed
798
+ git -C "$WORD_REPO" add -A
799
+ git -C "$WORD_REPO" commit -qm "land shrink to uniform word limit"
800
+ git -C "$WORD_REPO" checkout -qb within-limit-feature
801
+ write_skill_with_body_words "$WORD_SKILL" 5001 regrown
802
+ set +e
803
+ out="$(env -u CCL_SKILL_BASE_REF bash "$SIZE_SCRIPT" "$WORD_REPO" 2>&1)"
804
+ rc=$?
805
+ set -e
806
+ assert_rc "$rc" 1 "entrypoint whose base is within limit may not regrow above it"
807
+ assert_contains "allowed_body_words=5000" "$out" "uniform allowance replaces historical allowance"
808
+
809
+ # Case f6: a changed over-limit entrypoint with an unresolvable base fails
810
+ # closed. Losing the baseline must not turn compatibility into a waiver.
811
+ set +e
812
+ out="$(env CCL_SKILL_BASE_REF=definitely-not-a-ref bash "$SIZE_SCRIPT" "$WORD_REPO" 2>&1)"
813
+ rc=$?
814
+ set -e
815
+ assert_rc "$rc" 1 "over-limit word budget with unknown base must fail closed"
816
+ assert_contains "entrypoint_word_budget_block_partial: skills/demo-skill/SKILL.md: base unknown" "$out" "word-budget partial names the file"
817
+ assert_contains "entrypoint_word_budget_blocking_failed" "$out" "word-budget partial emits failed marker"
818
+ assert_not_contains "entrypoint_word_budget_blocking_ok" "$out" "unknown baseline never earns a word-budget pass"
819
+
820
+ # Case e8: gate wiring anchors — the validator must fail the gate on non-zero
821
+ # and must not demote the size gate back to advisory.
822
+ validator="$SCRIPT_DIR/check-ccl-skills.sh"
823
+ grep -q '|| size_budget_rc=\$?' "$validator" || fail "validator no longer records size-gate rc"
824
+ grep -q 'entrypoint_size_budget_blocking_failed (block or partial' "$validator" || fail "validator missing blocking failure message"
825
+ grep -q 'check-size-budget.sh missing' "$validator" || fail "validator missing missing-script fail-closed branch"
826
+ grep -q 'entrypoint_size_budget_infra_failed' "$validator" || fail "validator missing infra-failure distinction (ruby crash/missing must not read as size block)"
827
+ size_wiring_line="$(grep -F 'bash "$size_budget_script" "$root" ||' "$validator")"
828
+ [ -n "$size_wiring_line" ] || fail "validator size-gate invocation line not found (wiring anchor moved?)"
829
+ case "$size_wiring_line" in
830
+ *"|| true"*) fail "validator demoted size gate back to || true advisory" ;;
831
+ esac
832
+
833
+ echo "test_check_ccl_size_budget: ok"