@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,708 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require "digest"
5
+ require "json"
6
+ require "ripper"
7
+
8
+ # `Ripper.sexp` omits positions from tokenless statement nodes such as
9
+ # `return0` and `zsuper`. Append an inert location child to every semantic parser
10
+ # node so dead-subtree line collection also covers those statements without
11
+ # changing the event's existing child indexes.
12
+ class PositionedRubySexpBuilder < Ripper::SexpBuilderPP
13
+ Ripper::PARSER_EVENTS.each do |event|
14
+ define_method("on_#{event}") do |*arguments|
15
+ node = super(*arguments)
16
+ if node.is_a?(Array) && node[0].is_a?(Symbol) && !node[0].to_s.start_with?("@")
17
+ node << [:@__location, "", [lineno, column]]
18
+ end
19
+ node
20
+ end
21
+ end
22
+ end
23
+
24
+ #
25
+ # Register firing-path RESOLUTION gate: every `firing-path:` locator recorded in
26
+ # `references/source-register.md` must still resolve, for the WHOLE ledger — not
27
+ # only for rows added in the current diff.
28
+ #
29
+ # Why this exists as a separate gate from impact-chain-gate.rb: that gate is
30
+ # diff-scoped by design (it adjudicates whether an ADDED row earns its landing),
31
+ # so a historical row is validated exactly once, at the commit that wrote it.
32
+ # Nothing re-checks it afterwards. The ledger is append-only while the prose it
33
+ # anchors into is living text, so any later edit that MOVES or REWORDS an
34
+ # anchored sentence silently voids that row's firing evidence: the row keeps
35
+ # asserting a mechanical firing path that no longer exists, and every gate stays
36
+ # green because no gate looks. Observed shape: an entrypoint-slimming change
37
+ # relocated an anchored rule out of a `SKILL.md` into a reference and reworded it
38
+ # in the same commit; the full checker passed, and the break was found only by a
39
+ # human reading the register by hand.
40
+ #
41
+ # Contract: exits 1 and names every unresolved locator; exits 0 when all resolve.
42
+ # Invoked by check-ccl-skills.sh with the target repo root as ARGV[0].
43
+ #
44
+ # Locator forms accepted (mirroring the impact-chain gate's vocabulary):
45
+ # command:<repo-relative path> -> must exist and be executable
46
+ # file:<repo-relative path>#<anchor> -> file must exist and carry the anchor
47
+ # file:<path>.rb#line-sha256:<hex> -> a trimmed Ruby code line must hash to hex
48
+ #
49
+ # An anchor resolves EITHER as literal text in the file (the convention the
50
+ # impact-chain gate enforces on added rows) OR as a GitHub-style heading slug
51
+ # naming a real heading. The slug form is accepted because the ledger is
52
+ # append-only: a historical row that spelled its anchor as `#some-heading-slug`
53
+ # cannot be rewritten to the literal form, and the section it names genuinely
54
+ # exists, so failing it would be a false red with no legal repair.
55
+ #
56
+ # One declaration may carry several comma-separated locators; each is resolved
57
+ # independently. The split is on a comma that INTRODUCES another locator
58
+ # (`,` followed by `file:`/`command:`), never on every comma: literal anchors are
59
+ # natural-language rule text and three in this ledger already contain a comma
60
+ # ("...before landing it, not after challenge rounds"). Splitting naively would
61
+ # validate only the fragment before the comma, so deleting the rest of the
62
+ # anchored sentence would still pass — a false negative in exactly the direction
63
+ # this gate exists to close.
64
+ #
65
+ # `line-sha256:` is intentionally exact-line rather than substring evidence. It
66
+ # is for Ruby guard implementation lines where replacing executable-looking text
67
+ # with a comment must not preserve the locator. The digest is SHA-256 over
68
+ # `line.strip` bytes and may group its lowercase hex in four-character chunks
69
+ # with hyphens; whitespace-only reindentation is allowed, while commenting,
70
+ # rewording, or deleting the line turns the whole-ledger gate red. The matching
71
+ # line must also carry at least one Ripper token outside whitespace, comments,
72
+ # embedded docs, and heredoc/string content, and it must not sit in a statically
73
+ # unreachable branch or an uncalled lambda body. Other target languages fail
74
+ # closed until they have an equivalent classifier.
75
+
76
+ root = ARGV.fetch(0) { abort "usage: register-firing-path-resolution.rb <repo-root>" }
77
+
78
+ REGISTER = "skills/skill-extraction-workflow/references/source-register.md"
79
+
80
+ register_path = File.join(root, REGISTER)
81
+ unless File.file?(register_path)
82
+ warn "register_firing_path_gate_failed: #{REGISTER} not found under #{root}"
83
+ exit 1
84
+ end
85
+
86
+ # Waivers are intentionally empty in the distributed repository. A repository
87
+ # that adopts an append-only register may add reviewed, row-bound waivers here.
88
+ EXEMPT = {}.freeze
89
+
90
+ # `\p{Word}` rather than `[a-z0-9]`: GitHub keeps non-ASCII characters in a slug,
91
+ # and most headings in this repository are Chinese. Stripping them would collapse
92
+ # a CJK heading to an empty slug and permanently false-red a locator that names
93
+ # it — unrepairable, because the ledger row cannot be edited.
94
+ def slugify(heading)
95
+ heading.downcase.gsub(/[^[[:word:]]\s-]/, "").strip.gsub(/\s+/, "-")
96
+ end
97
+
98
+ # Fenced blocks are examples, not operative text. Both the anchor search and the
99
+ # heading scan run against the stripped body: a rule that was deleted but still
100
+ # appears inside a code sample is NOT a living carrier, and a `## Heading` inside
101
+ # a fence is not a real heading. Fence matching follows CommonMark — a fence
102
+ # closes only on a run of the SAME character at least as long as the opener — so
103
+ # a shorter inner run cannot terminate a longer outer fence.
104
+ def strip_fences(body)
105
+ out = []
106
+ opener = nil
107
+ body.each_line do |line|
108
+ if (m = line.match(/\A\s{0,3}(`{3,}|~{3,})/))
109
+ run = m[1]
110
+ if opener.nil?
111
+ opener = run
112
+ next
113
+ elsif run[0] == opener[0] && run.length >= opener.length
114
+ opener = nil
115
+ next
116
+ end
117
+ end
118
+ out << line if opener.nil?
119
+ end
120
+ out.join
121
+ end
122
+
123
+ # GitHub's own duplicate-heading disambiguation: the first `## Setup` is `setup`,
124
+ # the second `setup-1`, the third `setup-2`. Reproduced exactly rather than by
125
+ # stripping a trailing `-N`, because stripping accepts `#setup-99` when no such
126
+ # anchor exists — trading a false positive for a false negative in a gate whose
127
+ # whole job is detecting dead anchors.
128
+ def heading_slugs(body)
129
+ seen = Hash.new(0)
130
+ body.scan(/^\#+\s+(.+?)\s*$/).flatten.map do |h|
131
+ base = slugify(h)
132
+ n = seen[base]
133
+ seen[base] += 1
134
+ n.zero? ? base : "#{base}-#{n}"
135
+ end
136
+ end
137
+
138
+ # Repo-relative containment. A locator that escapes the repository would resolve
139
+ # against content this gate does not govern, so a dead in-repo anchor could be
140
+ # "satisfied" from outside. Rejects absolute paths, `..` traversal, and symlinked
141
+ # targets that land outside the root.
142
+ # Split deliberately in two so a MISSING target reports "not found" rather than
143
+ # a misleading containment error: the two failures need different fixes.
144
+ def syntactically_contained?(rel)
145
+ !rel.start_with?("/") && !rel.split("/").include?("..")
146
+ end
147
+
148
+ def resolves_inside?(root, rel)
149
+ real_root = File.realpath(root)
150
+ real = File.realpath(File.join(root, rel))
151
+ real == real_root || real.start_with?(real_root + File::SEPARATOR)
152
+ rescue Errno::ENOENT, Errno::ELOOP, Errno::ENAMETOOLONG
153
+ false
154
+ end
155
+
156
+ RUBY_NON_CODE_LINE_TOKENS = %i[
157
+ on_sp on_ignored_sp on_comment on_nl on_ignored_nl
158
+ on_tstring_content on_words_sep on_heredoc_end
159
+ on_embdoc on_embdoc_beg on_embdoc_end
160
+ ].freeze
161
+
162
+ def ruby_code_line_numbers(body)
163
+ Ripper.lex(body).each_with_object({}) do |((line_number, _column), token_type, _text, _state), lines|
164
+ lines[line_number] = true unless RUBY_NON_CODE_LINE_TOKENS.include?(token_type)
165
+ end
166
+ end
167
+
168
+ def ruby_ast_each(node, &block)
169
+ return unless node.is_a?(Array)
170
+
171
+ yield node if node.first.is_a?(Symbol)
172
+ node.each { |child| ruby_ast_each(child, &block) if child.is_a?(Array) }
173
+ end
174
+
175
+ def ruby_ast_each_with_ancestors(node, ancestors = [], &block)
176
+ return unless node.is_a?(Array)
177
+
178
+ node_type = node.first if node.first.is_a?(Symbol)
179
+ yield node, ancestors if node_type
180
+ child_ancestors = node_type ? ancestors + [node] : ancestors
181
+ node.each do |child|
182
+ ruby_ast_each_with_ancestors(child, child_ancestors, &block) if child.is_a?(Array)
183
+ end
184
+ end
185
+
186
+ def ruby_ast_line_numbers(node)
187
+ lines = {}
188
+ ruby_ast_each(node) do |child|
189
+ next unless child.first.to_s.start_with?("@")
190
+ next unless child[2].is_a?(Array) && child[2][0].is_a?(Integer)
191
+
192
+ lines[child[2][0]] = true
193
+ end
194
+ lines
195
+ end
196
+
197
+ def ruby_dead_body_line_numbers(body, preceding, code_lines)
198
+ body_lines = ruby_ast_line_numbers(body)
199
+ return {} if body_lines.empty?
200
+
201
+ preceding_line = ruby_ast_line_numbers(preceding).keys.max || 0
202
+ last_body_line = body_lines.keys.max
203
+ code_lines.select do |line_number, _|
204
+ line_number > preceding_line && line_number <= last_body_line
205
+ end
206
+ end
207
+
208
+ def ruby_local_name(node, wrapper)
209
+ return unless node.is_a?(Array) && node[0] == wrapper
210
+
211
+ token = node[1]
212
+ token[1] if token.is_a?(Array) && token[0] == :@ident
213
+ end
214
+
215
+ def ruby_condition_truthiness(node)
216
+ return :unknown unless node.is_a?(Array)
217
+
218
+ if node[0] == :var_ref && node[1].is_a?(Array) && node[1][0] == :@kw
219
+ return :falsey if %w[false nil].include?(node[1][1])
220
+ return :truthy if node[1][1] == "true"
221
+ end
222
+
223
+ return ruby_condition_truthiness(node[1][0]) if node[0] == :paren &&
224
+ node[1].is_a?(Array) &&
225
+ node[1].length == 1
226
+
227
+ :unknown
228
+ end
229
+
230
+ def ruby_method_definition_name(node)
231
+ return unless node.is_a?(Array) && node[0] == :def
232
+
233
+ token = node[1]
234
+ token[1] if token.is_a?(Array) && token[0] == :@ident
235
+ end
236
+
237
+ def ruby_direct_method_call(node)
238
+ token = case node[0]
239
+ when :vcall, :fcall, :command then node[1]
240
+ end
241
+ return unless token.is_a?(Array) && token[0] == :@ident
242
+
243
+ [token[1], token[2][0]]
244
+ end
245
+
246
+ def ruby_reachable_method_definition_ids(ast, unreachable)
247
+ definitions = Hash.new { |hash, key| hash[key] = [] }
248
+ top_level_calls = []
249
+ method_calls = Hash.new { |hash, key| hash[key] = [] }
250
+
251
+ ruby_ast_each_with_ancestors(ast) do |node, ancestors|
252
+ if (name = ruby_method_definition_name(node))
253
+ definition_line = node[1][2][0]
254
+ deferred = ancestors.any? do |ancestor|
255
+ %i[class module sclass def defs lambda].include?(ancestor[0])
256
+ end
257
+ definitions[name] << [node.object_id, definition_line] unless
258
+ deferred || unreachable[definition_line]
259
+ end
260
+
261
+ call = ruby_direct_method_call(node)
262
+ next unless call
263
+
264
+ name, call_line = call
265
+ next if unreachable[call_line]
266
+ next if ancestors.any? { |ancestor| %i[class module sclass defs lambda].include?(ancestor[0]) }
267
+
268
+ enclosing_definitions = ancestors.select { |ancestor| ancestor[0] == :def }
269
+ if enclosing_definitions.empty?
270
+ top_level_calls << [name, call_line]
271
+ elsif enclosing_definitions.length == 1
272
+ method_calls[enclosing_definitions[0].object_id] << name
273
+ end
274
+ end
275
+
276
+ reachable = {}
277
+ pending = top_level_calls.filter_map do |name, entry_line|
278
+ target = definitions[name].select { |_id, line| line < entry_line }.max_by(&:last)
279
+ [target[0], entry_line] if target
280
+ end
281
+ visited = {}
282
+
283
+ until pending.empty?
284
+ definition_id, entry_line = pending.shift
285
+ next if visited[[definition_id, entry_line]]
286
+
287
+ visited[[definition_id, entry_line]] = true
288
+ reachable[definition_id] = true
289
+ method_calls[definition_id].each do |name|
290
+ target = definitions[name].select { |_id, line| line < entry_line }.max_by(&:last)
291
+ pending << [target[0], entry_line] if target
292
+ end
293
+ end
294
+
295
+ reachable
296
+ end
297
+
298
+ def ruby_direct_lambda_receiver(receiver)
299
+ candidate = receiver
300
+ loop do
301
+ return candidate if candidate.is_a?(Array) && candidate[0] == :lambda
302
+ return unless candidate.is_a?(Array) && candidate[0] == :paren
303
+ return unless candidate[1].is_a?(Array) && candidate[1].length == 1
304
+
305
+ candidate = candidate[1][0]
306
+ end
307
+ end
308
+
309
+ def ruby_lambda_invocations(ast, unreachable)
310
+ bindings = {}
311
+ assignments = Hash.new { |hash, key| hash[key] = [] }
312
+ invocation_lines = Hash.new { |hash, key| hash[key] = [] }
313
+ invoked_lambdas = {}
314
+ reachable_methods = ruby_reachable_method_definition_ids(ast, unreachable)
315
+
316
+ ruby_ast_each_with_ancestors(ast) do |node, ancestors|
317
+ enclosing_scope = ancestors.reverse.find do |ancestor|
318
+ %i[lambda def defs].include?(ancestor[0])
319
+ end
320
+ scope_id = enclosing_scope&.object_id
321
+
322
+ if node[0] == :assign
323
+ name = ruby_local_name(node[1], :var_field)
324
+ if name
325
+ assignment_line = node[1][1][2][0]
326
+ next if unreachable[assignment_line]
327
+
328
+ assignments[[scope_id, name]] << assignment_line
329
+ bindings[node[2].object_id] = [scope_id, name, assignment_line] if
330
+ node[2].is_a?(Array) && node[2][0] == :lambda
331
+ end
332
+ end
333
+
334
+ next unless node[0] == :call
335
+ next unless node[3].is_a?(Array) && node[3][0] == :@ident && node[3][1] == "call"
336
+ next if unreachable[node[3][2][0]]
337
+ next if ancestors.any? { |ancestor| ancestor[0] == :lambda }
338
+ next if enclosing_scope&.first == :defs
339
+ next if enclosing_scope&.first == :def && !reachable_methods[scope_id]
340
+
341
+ receiver = node[1]
342
+ name = ruby_local_name(receiver, :var_ref)
343
+ invocation_lines[[scope_id, name]] << node[3][2][0] if name
344
+ direct_lambda = ruby_direct_lambda_receiver(receiver)
345
+ invoked_lambdas[direct_lambda.object_id] = true if direct_lambda
346
+ end
347
+
348
+ bindings.each do |lambda_id, (scope_id, name, binding_line)|
349
+ key = [scope_id, name]
350
+ next_assignment = assignments[key].select { |line| line > binding_line }.min
351
+ called = invocation_lines[key].any? do |line|
352
+ line > binding_line && (next_assignment.nil? || line < next_assignment)
353
+ end
354
+ invoked_lambdas[lambda_id] = true if called
355
+ end
356
+
357
+ invoked_lambdas
358
+ end
359
+
360
+ def ruby_unreachable_line_numbers(ast, code_lines)
361
+ unreachable = {}
362
+
363
+ ruby_ast_each(ast) do |node|
364
+ case node[0]
365
+ when :if, :elsif, :unless
366
+ truthiness = ruby_condition_truthiness(node[1])
367
+ body = node[2]
368
+ alternate = node[3]
369
+ positive_condition = %i[if elsif].include?(node[0])
370
+ unreachable.merge!(ruby_dead_body_line_numbers(body, node[1], code_lines)) if
371
+ (positive_condition && truthiness == :falsey) ||
372
+ (node[0] == :unless && truthiness == :truthy)
373
+ unreachable.merge!(ruby_dead_body_line_numbers(alternate, [node[1], body], code_lines)) if
374
+ (positive_condition && truthiness == :truthy) ||
375
+ (node[0] == :unless && truthiness == :falsey)
376
+ when :if_mod, :unless_mod
377
+ truthiness = ruby_condition_truthiness(node[1])
378
+ statement = node[2]
379
+ unreachable.merge!(ruby_ast_line_numbers(statement)) if
380
+ (node[0] == :if_mod && truthiness == :falsey) ||
381
+ (node[0] == :unless_mod && truthiness == :truthy)
382
+ when :while
383
+ unreachable.merge!(ruby_dead_body_line_numbers(node[2], node[1], code_lines)) if
384
+ ruby_condition_truthiness(node[1]) == :falsey
385
+ when :while_mod
386
+ unreachable.merge!(ruby_ast_line_numbers(node[2])) if
387
+ node[2][0] != :begin && ruby_condition_truthiness(node[1]) == :falsey
388
+ when :until
389
+ unreachable.merge!(ruby_dead_body_line_numbers(node[2], node[1], code_lines)) if
390
+ ruby_condition_truthiness(node[1]) == :truthy
391
+ when :until_mod
392
+ unreachable.merge!(ruby_ast_line_numbers(node[2])) if
393
+ node[2][0] != :begin && ruby_condition_truthiness(node[1]) == :truthy
394
+ end
395
+ end
396
+
397
+ invoked_lambdas = ruby_lambda_invocations(ast, unreachable)
398
+ ruby_ast_each(ast) do |node|
399
+ next unless node[0] == :lambda
400
+ next if invoked_lambdas[node.object_id]
401
+
402
+ unreachable.merge!(ruby_dead_body_line_numbers(node[2], node[1], code_lines))
403
+ end
404
+
405
+ unreachable
406
+ end
407
+
408
+ def ruby_line_classification(body)
409
+ code_lines = ruby_code_line_numbers(body)
410
+ builder = PositionedRubySexpBuilder.new(body)
411
+ ast = builder.parse
412
+ return [code_lines, {}, false] if ast.nil? || builder.error?
413
+
414
+ unreachable = ruby_unreachable_line_numbers(ast, code_lines)
415
+ reachable = code_lines.reject { |line_number, _| unreachable[line_number] }
416
+ [code_lines, reachable, true]
417
+ end
418
+
419
+ unresolved = []
420
+ malformed = []
421
+ locator_count = 0
422
+ # Where each EXEMPT locator was actually cited. A waiver is written for ONE
423
+ # historical row that can no longer be repaired; a second row quoting the same
424
+ # retired locator is a new claim, not that row, and must not inherit the waiver.
425
+ # Counting uses is what makes that decidable without a row identity — the ledger
426
+ # is append-only and its line numbers shift, so nothing else is stable.
427
+ exempt_uses = {}
428
+ EXEMPT_USE_ALLOWANCE = 1
429
+ EXEMPT_ROW_DIGESTS = {}.freeze
430
+ # TRUST BOUNDARY. The count answers "one row"; it cannot answer "WHICH row", so
431
+ # it is paired with the digest of the citing row in EXEMPT_ROW_DIGESTS below.
432
+ # An earlier version of this comment argued the opposite — that no stable
433
+ # identity exists because any candidate drifts or must be regenerated by the
434
+ # author it constrains. That was wrong for a digest specifically: the ledger is
435
+ # append-only, so rows added elsewhere do not change this line, and the failure
436
+ # this defends against is an accidental reflow or a repurposed row, which reds
437
+ # without anyone touching code.
438
+ # What it does NOT defend against is an author who edits EXEMPT and its digest
439
+ # together — a visible code change under normal review, the same posture the two
440
+ # legacy anchorless entries have carried since they landed.
441
+ fence = nil
442
+
443
+ File.foreach(register_path).with_index(1) do |line, lineno|
444
+ # Same CommonMark rule as strip_fences: a naive boolean toggle would close a
445
+ # ```` fence on an inner ``` run and then treat the REAL closing run as an
446
+ # opener, silently skipping every live row after it.
447
+ if (m = line.match(/\A\s{0,3}(`{3,}|~{3,})/))
448
+ run = m[1]
449
+ if fence.nil?
450
+ fence = run
451
+ next
452
+ elsif run[0] == fence[0] && run.length >= fence.length
453
+ fence = nil
454
+ next
455
+ end
456
+ end
457
+ # Only table rows carry declarations; fenced examples and narrative prose do
458
+ # not, and treating a documentation example as a live locator would be an
459
+ # unrepairable false positive.
460
+ next unless fence.nil?
461
+ next unless line.start_with?("|")
462
+
463
+ # `(?<!`)` skips an inline-code mention such as `` `firing-path:` `` — that is
464
+ # prose ABOUT the key (this file's own methodology rows do it), not a
465
+ # declaration, and must not be demanded to yield a locator.
466
+ line.scan(/(?<!`)firing-path:\s*([^|;]*)/) do |(value)|
467
+ locators = value.split(/,(?=\s*(?:file|command):)/)
468
+ .map(&:strip)
469
+ .select { |l| l.start_with?("file:", "command:") }
470
+
471
+ # A declaration that parses to nothing is not "clean" — it is a row whose
472
+ # firing evidence this gate silently failed to check.
473
+ if locators.empty?
474
+ malformed << [lineno, value.strip]
475
+ next
476
+ end
477
+
478
+ locators.each do |locator|
479
+ locator_count += 1
480
+ anchor_waived = EXEMPT.key?(locator)
481
+ if anchor_waived
482
+ exempt_uses[locator] ||= []
483
+ exempt_uses[locator] << lineno
484
+ end
485
+
486
+ kind, _, rest = locator.partition(":")
487
+ if kind == "command"
488
+ rel = rest.strip
489
+ target = File.join(root, rel)
490
+ if !syntactically_contained?(rel)
491
+ unresolved << [lineno, locator, "path escapes the repository"]
492
+ elsif !File.file?(target)
493
+ unresolved << [lineno, locator, "executable not found"]
494
+ elsif !resolves_inside?(root, rel)
495
+ unresolved << [lineno, locator, "path escapes the repository"]
496
+ elsif !File.executable?(target)
497
+ unresolved << [lineno, locator, "not executable"]
498
+ end
499
+ else
500
+ rel, _, anchor = rest.partition("#")
501
+ rel = rel.strip
502
+ anchor = anchor.strip
503
+ if anchor.empty? && !anchor_waived
504
+ unresolved << [lineno, locator, "file locator carries no #anchor"]
505
+ next
506
+ end
507
+ target = File.join(root, rel)
508
+ if !syntactically_contained?(rel)
509
+ unresolved << [lineno, locator, "path escapes the repository"]
510
+ next
511
+ end
512
+ if !File.file?(target)
513
+ unresolved << [lineno, locator, "file not found"]
514
+ next
515
+ end
516
+ if !resolves_inside?(root, rel)
517
+ unresolved << [lineno, locator, "path escapes the repository"]
518
+ next
519
+ end
520
+
521
+ next if anchor.empty? # exempt legacy locator: existence checked above
522
+ # An EXEMPT entry that names the anchor waives the anchor-CONTENT check
523
+ # as well: the rule was deliberately relocated, so the recorded text
524
+ # will never sit at this path again and the append-only row cannot be
525
+ # repaired. File existence (checked above) still applies, so deleting or
526
+ # renaming the target still reds, and the use-count check below stops a
527
+ # NEW row from inheriting the waiver by quoting the retired locator.
528
+ next if anchor_waived
529
+
530
+ raw_body = File.read(target)
531
+ body = strip_fences(raw_body)
532
+ if anchor.start_with?("line-sha256:")
533
+ encoded_line_sha256 = anchor.delete_prefix("line-sha256:")
534
+ expected_line_sha256 = encoded_line_sha256.delete("-")
535
+ unless expected_line_sha256.match?(/\A[0-9a-f]{64}\z/)
536
+ unresolved << [lineno, locator, "line-sha256 anchor is not 64 lowercase hex characters after grouping"]
537
+ next
538
+ end
539
+
540
+ unless File.extname(target) == ".rb"
541
+ unresolved << [lineno, locator, "line-sha256 target language has no code-token classifier"]
542
+ next
543
+ end
544
+
545
+ ruby_code_lines, ruby_reachable_lines, ruby_parsed = ruby_line_classification(raw_body)
546
+ digest_lines = raw_body.each_line.with_index(1).filter_map do |source_line, line_number|
547
+ normalized_line = source_line.strip
548
+ next if normalized_line.empty?
549
+ next unless Digest::SHA256.hexdigest(normalized_line) == expected_line_sha256
550
+
551
+ line_number
552
+ end
553
+ next if digest_lines.any? { |line_number| ruby_reachable_lines[line_number] }
554
+
555
+ if digest_lines.any? { |line_number| ruby_code_lines[line_number] }
556
+ reason = if ruby_parsed
557
+ "line-sha256 source line is not statically reachable"
558
+ else
559
+ "line-sha256 target Ruby did not parse"
560
+ end
561
+ unresolved << [lineno, locator, reason]
562
+ next
563
+ end
564
+
565
+ unresolved << [lineno, locator, "line-sha256 source line absent from target"]
566
+ next
567
+ end
568
+ next if body.include?(anchor)
569
+ next if heading_slugs(body).include?(anchor.downcase)
570
+
571
+ unresolved << [lineno, locator, "anchor text absent from target"]
572
+ end
573
+ end
574
+ end
575
+ end
576
+
577
+ # Over-use of a waiver is a violation, reported against the EXTRA citations only
578
+ # (the first use is the historical row the waiver was written for). Reporting
579
+ # every use would red the legitimate row and leave no repair path in an
580
+ # append-only ledger.
581
+ # Over-use of a waiver is a violation, reported against the EXTRA rows only
582
+ # (the first row is the historical one the waiver was written for). Reporting
583
+ # every use would red the legitimate row and leave no repair path in an
584
+ # append-only ledger. Distinct ROWS, not raw citations: one row that happens to
585
+ # name the same retired locator twice is still that one unrepairable row, and
586
+ # counting citations would false-red it.
587
+ register_lines = File.readlines(register_path)
588
+ # The digest table is INJECTED, not self-calibrated. An earlier version enabled
589
+ # the layer only once some recorded row still matched, so that a synthetic
590
+ # fixture ledger would not red — but that made "rewrite every waived row at
591
+ # once" disable the whole layer, which is precisely the case it should catch.
592
+ # Production takes the built-in table and enforces it unconditionally; a test or
593
+ # a repository vendoring this gate supplies its own table (an empty one means it
594
+ # binds no waivers). Injection is a declared seam, visible in the environment and
595
+ # never set in CI, rather than an inference the gate makes about which ledger it
596
+ # is looking at.
597
+ digest_table_path = ENV["REGISTER_FIRING_PATH_EXEMPT_DIGESTS"].to_s
598
+ exempt_row_digests =
599
+ if digest_table_path.empty?
600
+ EXEMPT_ROW_DIGESTS
601
+ else
602
+ begin
603
+ parsed = JSON.parse(File.read(digest_table_path))
604
+ raise TypeError, "not an object" unless parsed.is_a?(Hash)
605
+ parsed
606
+ rescue StandardError => e
607
+ warn "register_firing_path_exempt_digest_table_unreadable: #{digest_table_path}: #{e.message}"
608
+ exit 2
609
+ end
610
+ end
611
+ # The seam is usable but never silent: an injected table can only ever be weaker
612
+ # than the built-in one for this ledger, so a run that used it is not a clean
613
+ # landing — including the case where a test environment leaks into a real run.
614
+ # The caller keys off this line and downgrades to interim; without it the seam
615
+ # would be a quiet bypass of the digest and missing-row layers.
616
+ unless digest_table_path.empty?
617
+ puts "register_firing_path_exempt_digests_injected: #{digest_table_path} " \
618
+ "(built-in waiver-row bindings not enforced; this run is interim, not clean-landing)"
619
+ end
620
+ # Iterate the EXPECTED entries, not only the ones still cited: a waived row that
621
+ # was DELETED leaves its locator out of `exempt_uses` entirely, so a loop over
622
+ # observed uses would never look at it and the run would report success while a
623
+ # recorded historical row silently vanished. Only meaningful once the digest
624
+ # layer is calibrated to this ledger; on a foreign register every entry is
625
+ # legitimately uncited.
626
+ exempt_row_digests.each_key do |locator|
627
+ next unless (exempt_uses[locator] || []).empty?
628
+ unresolved << [1, locator,
629
+ "EXEMPT entry has no citing row in the ledger; the waived historical row was deleted " \
630
+ "or its locator was edited, so the waiver now covers nothing — restore the row, or " \
631
+ "retire the EXEMPT entry and its digest in the same change"]
632
+ end
633
+
634
+ exempt_uses.each do |locator, linenos|
635
+ rows = linenos.uniq.sort
636
+ if rows.length > EXEMPT_USE_ALLOWANCE
637
+ rows.drop(EXEMPT_USE_ALLOWANCE).each do |lineno|
638
+ unresolved << [lineno, locator,
639
+ "EXEMPT locator cited by #{rows.length} rows (allowance #{EXEMPT_USE_ALLOWANCE}); " \
640
+ "a waiver covers the one unrepairable historical row at line #{rows.first}, " \
641
+ "not a new row quoting the same retired locator"]
642
+ end
643
+ next
644
+ end
645
+ # The count says "one row"; the digest says WHICH row. Without it, deleting the
646
+ # historical row and writing a different claim that cites the same locator keeps
647
+ # the count at 1 and silently inherits the waiver.
648
+ expected = exempt_row_digests[locator]
649
+ unless expected
650
+ # A waiver with no recorded row identity keeps only the use-count layer,
651
+ # which cannot tell a rewritten or repurposed row from the one that was
652
+ # waived. On the BUILT-IN table that is a silent downgrade, so a new EXEMPT
653
+ # entry added without its digest fails here rather than quietly landing
654
+ # weaker than its siblings. An INJECTED table is the injector's declaration
655
+ # about its own ledger — the missing binding is the point, and that run is
656
+ # already downgraded to interim by the announcement above.
657
+ if digest_table_path.empty?
658
+ unresolved << [rows.first, locator,
659
+ "EXEMPT entry has no recorded citing-row digest; every waiver must bind the row it " \
660
+ "covers — add the row's SHA-256 to EXEMPT_ROW_DIGESTS in the same change"]
661
+ end
662
+ next
663
+ end
664
+ lineno = rows.first
665
+ actual = Digest::SHA256.hexdigest(register_lines[lineno - 1].to_s.rstrip)
666
+ next if actual == expected
667
+ unresolved << [lineno, locator,
668
+ "EXEMPT citing row does not match the waived row (digest #{actual[0, 12]} != #{expected[0, 12]}); " \
669
+ "a waiver covers one specific unrepairable historical row, so a rewritten or replaced row " \
670
+ "does not inherit it — restore the row, or land a new waiver entry with its own digest and reason"]
671
+ end
672
+
673
+ # Both groups print before exiting. Bailing out on `malformed` alone would hide
674
+ # every unresolved locator and every EXEMPT over-use in the same run, so a fixer
675
+ # would have to rerun the gate once per class to discover them.
676
+ unless malformed.empty?
677
+ warn "register_firing_path_malformed: a firing-path declaration parsed to zero locators"
678
+ warn " cause: the value is not `file:<repo-relative path>#<anchor>` or `command:<repo-relative path>`."
679
+ warn " An anchor containing `;` or `|` is truncated by the cell grammar — reword it."
680
+ malformed.each { |lineno, value| warn " #{REGISTER}:#{lineno}: #{value.inspect}" }
681
+ end
682
+
683
+ unless unresolved.empty?
684
+ warn "register_firing_path_unresolved: a recorded firing path no longer resolves"
685
+ warn " cause: the anchored rule was moved, reworded, or deleted after its row landed,"
686
+ warn " so that row now asserts firing evidence that does not exist."
687
+ warn " fix: restore the anchored text at its recorded location, or (when the move was"
688
+ warn " intended) append a superseding row and add the old locator to EXEMPT with a reason."
689
+ unresolved.each do |lineno, locator, why|
690
+ warn " #{REGISTER}:#{lineno}: #{why}: #{locator}"
691
+ end
692
+ end
693
+
694
+ exit 1 unless malformed.empty? && unresolved.empty?
695
+
696
+ # NO zero-locator self-check here, deliberately. Two rounds of it each shipped a
697
+ # false RED: as a caller-side non-zero floor it red a legitimately
698
+ # declaration-free register, and as a marker count here it red a register whose
699
+ # only declaration-looking row was a fenced example — because any oracle cheap
700
+ # enough to be independent of the row/cell parser is also too cheap to tell a
701
+ # live declaration from an illustration of one, and any oracle that CAN tell
702
+ # them apart has re-implemented the parser it was meant to check.
703
+ # The threat it chased is "the parser stopped recognizing the ledger", which is
704
+ # a code defect in this file, caught by the resolution suite's own RED cases
705
+ # (an anchor mutation must turn the gate red) rather than by the gate grading
706
+ # its own eyesight at runtime.
707
+
708
+ puts "register_firing_path_resolution_ok (#{locator_count} locators resolved)"