@danmoisan/drm-copilot-mcp 0.0.1

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 (380) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +50 -0
  3. package/out/mcp-server.js +17323 -0
  4. package/package.json +36 -0
  5. package/resources/claude-customizations/.claude/agent-memory/orchestrator/MEMORY.md +3 -0
  6. package/resources/claude-customizations/.claude/agent-memory/orchestrator/feedback_repo_root_is_source_of_truth.md +11 -0
  7. package/resources/claude-customizations/.claude/agent-memory/orchestrator/feedback_vsce_verify_package_location.md +19 -0
  8. package/resources/claude-customizations/.claude/agent-memory/orchestrator/project_extension_location.md +11 -0
  9. package/resources/claude-customizations/.claude/agent-memory/prd-feature/MEMORY.md +1 -0
  10. package/resources/claude-customizations/.claude/agent-memory/prd-feature/project_push_down_pattern.md +13 -0
  11. package/resources/claude-customizations/.claude/agent-memory/task-researcher/MEMORY.md +3 -0
  12. package/resources/claude-customizations/.claude/agent-memory/task-researcher/project_push_down_claude_dir.md +11 -0
  13. package/resources/claude-customizations/.claude/agents/atomic-executor.md +135 -0
  14. package/resources/claude-customizations/.claude/agents/atomic-planner.md +71 -0
  15. package/resources/claude-customizations/.claude/agents/csharp-typed-engineer.md +69 -0
  16. package/resources/claude-customizations/.claude/agents/epic-review.md +40 -0
  17. package/resources/claude-customizations/.claude/agents/feature-review.md +136 -0
  18. package/resources/claude-customizations/.claude/agents/orchestrator.md +83 -0
  19. package/resources/claude-customizations/.claude/agents/powershell-typed-engineer.md +80 -0
  20. package/resources/claude-customizations/.claude/agents/prd-feature.md +42 -0
  21. package/resources/claude-customizations/.claude/agents/python-typed-engineer.md +72 -0
  22. package/resources/claude-customizations/.claude/agents/staged-review.md +41 -0
  23. package/resources/claude-customizations/.claude/agents/status-updater.md +41 -0
  24. package/resources/claude-customizations/.claude/agents/task-researcher.md +81 -0
  25. package/resources/claude-customizations/.claude/agents/typescript-engineer.md +24 -0
  26. package/resources/claude-customizations/.claude/hooks/check-powershell-test-purity.ps1 +111 -0
  27. package/resources/claude-customizations/.claude/hooks/check-python-test-purity.ps1 +146 -0
  28. package/resources/claude-customizations/.claude/hooks/enforce-evidence-locations.ps1 +150 -0
  29. package/resources/claude-customizations/.claude/hooks/enforce-powershell-batch-budget.ps1 +238 -0
  30. package/resources/claude-customizations/.claude/hooks/enforce-promotion-mcp-only.ps1 +147 -0
  31. package/resources/claude-customizations/.claude/hooks/enforce-python-batch-budget.ps1 +235 -0
  32. package/resources/claude-customizations/.claude/hooks/validate-bash.ps1 +69 -0
  33. package/resources/claude-customizations/.claude/hooks/validate-executor-output.ps1 +296 -0
  34. package/resources/claude-customizations/.claude/hooks/validate-feature-review-coverage.ps1 +389 -0
  35. package/resources/claude-customizations/.claude/hooks/validate-orchestrator-output.ps1 +141 -0
  36. package/resources/claude-customizations/.claude/hooks/validate-planner-output.ps1 +288 -0
  37. package/resources/claude-customizations/.claude/hooks/validate-required-artifact-output.ps1 +171 -0
  38. package/resources/claude-customizations/.claude/hooks/validate-task-researcher-output.ps1 +142 -0
  39. package/resources/claude-customizations/.claude/rules/csharp.md +62 -0
  40. package/resources/claude-customizations/.claude/rules/general-code-change.md +71 -0
  41. package/resources/claude-customizations/.claude/rules/general-unit-test.md +60 -0
  42. package/resources/claude-customizations/.claude/rules/powershell.md +97 -0
  43. package/resources/claude-customizations/.claude/rules/python-suppressions.md +143 -0
  44. package/resources/claude-customizations/.claude/rules/python.md +99 -0
  45. package/resources/claude-customizations/.claude/rules/self-explanatory-code-commenting.md +97 -0
  46. package/resources/claude-customizations/.claude/rules/tonality.md +80 -0
  47. package/resources/claude-customizations/.claude/rules/typescript-suppressions.md +66 -0
  48. package/resources/claude-customizations/.claude/rules/typescript.md +45 -0
  49. package/resources/claude-customizations/.claude/settings.json +144 -0
  50. package/resources/claude-customizations/.claude/skills/acceptance-criteria-tracking/SKILL.md +102 -0
  51. package/resources/claude-customizations/.claude/skills/atomic-plan-contract/SKILL.md +189 -0
  52. package/resources/claude-customizations/.claude/skills/commit-message/SKILL.md +65 -0
  53. package/resources/claude-customizations/.claude/skills/csharp-change-budget-router/SKILL.md +90 -0
  54. package/resources/claude-customizations/.claude/skills/csharp-orchestration-state-machine/SKILL.md +58 -0
  55. package/resources/claude-customizations/.claude/skills/csharp-qa-gate/SKILL.md +77 -0
  56. package/resources/claude-customizations/.claude/skills/evidence-and-timestamp-conventions/SKILL.md +164 -0
  57. package/resources/claude-customizations/.claude/skills/execute-hard-lock/SKILL.md +82 -0
  58. package/resources/claude-customizations/.claude/skills/feature-promotion-lifecycle/SKILL.md +115 -0
  59. package/resources/claude-customizations/.claude/skills/feature-review-workflow/SKILL.md +167 -0
  60. package/resources/claude-customizations/.claude/skills/fill-feature-docs/SKILL.md +22 -0
  61. package/resources/claude-customizations/.claude/skills/invoke-csharp-engineer/SKILL.md +64 -0
  62. package/resources/claude-customizations/.claude/skills/invoke-powershell-engineer/SKILL.md +65 -0
  63. package/resources/claude-customizations/.claude/skills/invoke-python-engineer/SKILL.md +64 -0
  64. package/resources/claude-customizations/.claude/skills/make-skill-template/SKILL.md +147 -0
  65. package/resources/claude-customizations/.claude/skills/orchestrate/SKILL.md +132 -0
  66. package/resources/claude-customizations/.claude/skills/policy-audit-template-usage/SKILL.md +49 -0
  67. package/resources/claude-customizations/.claude/skills/policy-compliance-order/SKILL.md +40 -0
  68. package/resources/claude-customizations/.claude/skills/powershell-change-budget-router/SKILL.md +49 -0
  69. package/resources/claude-customizations/.claude/skills/powershell-orchestration-state-machine/SKILL.md +58 -0
  70. package/resources/claude-customizations/.claude/skills/powershell-qa-gate/SKILL.md +77 -0
  71. package/resources/claude-customizations/.claude/skills/pr-author/SKILL.md +50 -0
  72. package/resources/claude-customizations/.claude/skills/pr-base-branch-merge-base/SKILL.md +56 -0
  73. package/resources/claude-customizations/.claude/skills/pr-context-artifacts/SKILL.md +30 -0
  74. package/resources/claude-customizations/.claude/skills/python-change-budget-router/SKILL.md +79 -0
  75. package/resources/claude-customizations/.claude/skills/python-qa-gate/SKILL.md +77 -0
  76. package/resources/claude-customizations/.claude/skills/remediation-handoff-atomic-planner/SKILL.md +40 -0
  77. package/resources/claude-customizations/.claude/skills/research-issue/SKILL.md +67 -0
  78. package/resources/claude-customizations/.claude/skills/review-epic/SKILL.md +21 -0
  79. package/resources/claude-customizations/.claude/skills/review-feature/SKILL.md +25 -0
  80. package/resources/claude-customizations/.claude/skills/review-staged/SKILL.md +21 -0
  81. package/resources/claude-customizations/.claude/skills/skill-canonical-location-audit/SKILL.md +49 -0
  82. package/resources/claude-customizations/.claude/skills/translate-copilot-to-claude/SKILL.md +295 -0
  83. package/resources/claude-customizations/.claude/skills/update-status/SKILL.md +21 -0
  84. package/resources/claude-dir-customizations/.mcp.json +8 -0
  85. package/resources/codex-and-agents-customizations/.agents/README.md +86 -0
  86. package/resources/codex-and-agents-customizations/.agents/skills/README.md +49 -0
  87. package/resources/codex-and-agents-customizations/.agents/skills/acceptance-criteria-tracking/SKILL.md +107 -0
  88. package/resources/codex-and-agents-customizations/.agents/skills/atomic-executor/SKILL.md +73 -0
  89. package/resources/codex-and-agents-customizations/.agents/skills/atomic-plan-contract/SKILL.md +194 -0
  90. package/resources/codex-and-agents-customizations/.agents/skills/atomic-planner/SKILL.md +87 -0
  91. package/resources/codex-and-agents-customizations/.agents/skills/commit-message/SKILL.md +70 -0
  92. package/resources/codex-and-agents-customizations/.agents/skills/commit-message-conventions/SKILL.md +95 -0
  93. package/resources/codex-and-agents-customizations/.agents/skills/csharp/SKILL.md +67 -0
  94. package/resources/codex-and-agents-customizations/.agents/skills/csharp-change-budget-router/SKILL.md +94 -0
  95. package/resources/codex-and-agents-customizations/.agents/skills/csharp-orchestration-state-machine/SKILL.md +64 -0
  96. package/resources/codex-and-agents-customizations/.agents/skills/csharp-qa-gate/SKILL.md +82 -0
  97. package/resources/codex-and-agents-customizations/.agents/skills/evidence-and-timestamp-conventions/SKILL.md +168 -0
  98. package/resources/codex-and-agents-customizations/.agents/skills/execute-hard-lock/SKILL.md +88 -0
  99. package/resources/codex-and-agents-customizations/.agents/skills/feature-promotion-lifecycle/SKILL.md +129 -0
  100. package/resources/codex-and-agents-customizations/.agents/skills/feature-review/SKILL.md +106 -0
  101. package/resources/codex-and-agents-customizations/.agents/skills/feature-review-workflow/SKILL.md +181 -0
  102. package/resources/codex-and-agents-customizations/.agents/skills/fill-feature-docs/SKILL.md +27 -0
  103. package/resources/codex-and-agents-customizations/.agents/skills/invoke-csharp-engineer/SKILL.md +73 -0
  104. package/resources/codex-and-agents-customizations/.agents/skills/invoke-powershell-engineer/SKILL.md +74 -0
  105. package/resources/codex-and-agents-customizations/.agents/skills/invoke-python-engineer/SKILL.md +73 -0
  106. package/resources/codex-and-agents-customizations/.agents/skills/make-skill-template/SKILL.md +152 -0
  107. package/resources/codex-and-agents-customizations/.agents/skills/orchestrate/SKILL.md +143 -0
  108. package/resources/codex-and-agents-customizations/.agents/skills/orchestrator-workflow/SKILL.md +317 -0
  109. package/resources/codex-and-agents-customizations/.agents/skills/policy-audit-template-usage/SKILL.md +53 -0
  110. package/resources/codex-and-agents-customizations/.agents/skills/policy-compliance-order/SKILL.md +49 -0
  111. package/resources/codex-and-agents-customizations/.agents/skills/powershell/SKILL.md +102 -0
  112. package/resources/codex-and-agents-customizations/.agents/skills/powershell-change-budget-router/SKILL.md +53 -0
  113. package/resources/codex-and-agents-customizations/.agents/skills/powershell-orchestration-state-machine/SKILL.md +64 -0
  114. package/resources/codex-and-agents-customizations/.agents/skills/powershell-qa-gate/SKILL.md +83 -0
  115. package/resources/codex-and-agents-customizations/.agents/skills/pr-author/SKILL.md +55 -0
  116. package/resources/codex-and-agents-customizations/.agents/skills/pr-authoring/SKILL.md +124 -0
  117. package/resources/codex-and-agents-customizations/.agents/skills/pr-base-branch-merge-base/SKILL.md +60 -0
  118. package/resources/codex-and-agents-customizations/.agents/skills/pr-context-artifacts/SKILL.md +34 -0
  119. package/resources/codex-and-agents-customizations/.agents/skills/python/SKILL.md +104 -0
  120. package/resources/codex-and-agents-customizations/.agents/skills/python-change-budget-router/SKILL.md +84 -0
  121. package/resources/codex-and-agents-customizations/.agents/skills/python-qa-gate/SKILL.md +82 -0
  122. package/resources/codex-and-agents-customizations/.agents/skills/python-suppressions/SKILL.md +148 -0
  123. package/resources/codex-and-agents-customizations/.agents/skills/remediation-handoff-atomic-planner/SKILL.md +49 -0
  124. package/resources/codex-and-agents-customizations/.agents/skills/repo-automation-adapter/SKILL.md +142 -0
  125. package/resources/codex-and-agents-customizations/.agents/skills/repo-automation-adapter/agents/openai.yaml +5 -0
  126. package/resources/codex-and-agents-customizations/.agents/skills/research-issue/SKILL.md +72 -0
  127. package/resources/codex-and-agents-customizations/.agents/skills/review-epic/SKILL.md +26 -0
  128. package/resources/codex-and-agents-customizations/.agents/skills/review-feature/SKILL.md +30 -0
  129. package/resources/codex-and-agents-customizations/.agents/skills/review-staged/SKILL.md +26 -0
  130. package/resources/codex-and-agents-customizations/.agents/skills/self-explanatory-code-commenting/SKILL.md +102 -0
  131. package/resources/codex-and-agents-customizations/.agents/skills/skill-canonical-location-audit/SKILL.md +52 -0
  132. package/resources/codex-and-agents-customizations/.agents/skills/translate-copilot-to-claude/SKILL.md +317 -0
  133. package/resources/codex-and-agents-customizations/.agents/skills/typescript/SKILL.md +50 -0
  134. package/resources/codex-and-agents-customizations/.agents/skills/typescript-suppressions/SKILL.md +71 -0
  135. package/resources/codex-and-agents-customizations/.agents/skills/update-status/SKILL.md +26 -0
  136. package/resources/codex-and-agents-customizations/.codex/agents/5.1-beast-adjusted.toml +23 -0
  137. package/resources/codex-and-agents-customizations/.codex/agents/5.1-thinking-beast-mode-adjusted.toml +23 -0
  138. package/resources/codex-and-agents-customizations/.codex/agents/api-architect.toml +23 -0
  139. package/resources/codex-and-agents-customizations/.codex/agents/atomic-executor.toml +151 -0
  140. package/resources/codex-and-agents-customizations/.codex/agents/atomic-planner.toml +93 -0
  141. package/resources/codex-and-agents-customizations/.codex/agents/atomic-planning.toml +24 -0
  142. package/resources/codex-and-agents-customizations/.codex/agents/commentary-remediation.toml +23 -0
  143. package/resources/codex-and-agents-customizations/.codex/agents/commit-steward.toml +20 -0
  144. package/resources/codex-and-agents-customizations/.codex/agents/csharp-atomic-executor.toml +24 -0
  145. package/resources/codex-and-agents-customizations/.codex/agents/csharp-atomic-planning.toml +25 -0
  146. package/resources/codex-and-agents-customizations/.codex/agents/csharp-orchestrator.toml +56 -0
  147. package/resources/codex-and-agents-customizations/.codex/agents/csharp-typed-engineer.toml +97 -0
  148. package/resources/codex-and-agents-customizations/.codex/agents/epic-review.toml +52 -0
  149. package/resources/codex-and-agents-customizations/.codex/agents/expert-nextjs-developer.toml +23 -0
  150. package/resources/codex-and-agents-customizations/.codex/agents/expert-react-frontend-engineer.toml +23 -0
  151. package/resources/codex-and-agents-customizations/.codex/agents/feature-review.toml +149 -0
  152. package/resources/codex-and-agents-customizations/.codex/agents/feature-reviewer.toml +60 -0
  153. package/resources/codex-and-agents-customizations/.codex/agents/gpt-5-beast-mode.toml +23 -0
  154. package/resources/codex-and-agents-customizations/.codex/agents/hlbpa.toml +23 -0
  155. package/resources/codex-and-agents-customizations/.codex/agents/mentor.toml +23 -0
  156. package/resources/codex-and-agents-customizations/.codex/agents/orchestrator.toml +121 -0
  157. package/resources/codex-and-agents-customizations/.codex/agents/powershell-atomic-executor.toml +24 -0
  158. package/resources/codex-and-agents-customizations/.codex/agents/powershell-atomic-planning.toml +25 -0
  159. package/resources/codex-and-agents-customizations/.codex/agents/powershell-di-unit-test-engineer.toml +24 -0
  160. package/resources/codex-and-agents-customizations/.codex/agents/powershell-orchestrator.toml +56 -0
  161. package/resources/codex-and-agents-customizations/.codex/agents/powershell-typed-engineer.toml +108 -0
  162. package/resources/codex-and-agents-customizations/.codex/agents/pr-author.toml +26 -0
  163. package/resources/codex-and-agents-customizations/.codex/agents/prd-feature.toml +53 -0
  164. package/resources/codex-and-agents-customizations/.codex/agents/prd.toml +23 -0
  165. package/resources/codex-and-agents-customizations/.codex/agents/pytest-unit-test-coding.toml +24 -0
  166. package/resources/codex-and-agents-customizations/.codex/agents/python-atomic-executor.toml +24 -0
  167. package/resources/codex-and-agents-customizations/.codex/agents/python-atomic-planning.toml +25 -0
  168. package/resources/codex-and-agents-customizations/.codex/agents/python-execution-only-typed.toml +24 -0
  169. package/resources/codex-and-agents-customizations/.codex/agents/python-orchestrator.toml +54 -0
  170. package/resources/codex-and-agents-customizations/.codex/agents/python-typed-engineer.toml +100 -0
  171. package/resources/codex-and-agents-customizations/.codex/agents/staged-review.toml +53 -0
  172. package/resources/codex-and-agents-customizations/.codex/agents/status-updater.toml +53 -0
  173. package/resources/codex-and-agents-customizations/.codex/agents/task-researcher.toml +103 -0
  174. package/resources/codex-and-agents-customizations/.codex/agents/tdd-green.toml +23 -0
  175. package/resources/codex-and-agents-customizations/.codex/agents/tdd-red.toml +23 -0
  176. package/resources/codex-and-agents-customizations/.codex/agents/tdd-refactor.toml +23 -0
  177. package/resources/codex-and-agents-customizations/.codex/agents/typescript-engineer.toml +48 -0
  178. package/resources/codex-and-agents-customizations/.codex/agents/voidbeast-gpt41enhanced.toml +23 -0
  179. package/resources/codex-and-agents-customizations/.codex/codex-web-setup.plan.md +26 -0
  180. package/resources/codex-and-agents-customizations/.codex/codex-web-setup.sh +384 -0
  181. package/resources/codex-and-agents-customizations/.codex/config.toml +137 -0
  182. package/resources/codex-and-agents-customizations/.codex/hooks/check-powershell-test-purity.ps1 +113 -0
  183. package/resources/codex-and-agents-customizations/.codex/hooks/check-python-test-purity.ps1 +149 -0
  184. package/resources/codex-and-agents-customizations/.codex/hooks/enforce-evidence-locations.ps1 +153 -0
  185. package/resources/codex-and-agents-customizations/.codex/hooks/enforce-powershell-batch-budget.ps1 +241 -0
  186. package/resources/codex-and-agents-customizations/.codex/hooks/enforce-promotion-mcp-only.ps1 +150 -0
  187. package/resources/codex-and-agents-customizations/.codex/hooks/enforce-python-batch-budget.ps1 +238 -0
  188. package/resources/codex-and-agents-customizations/.codex/hooks/validate-bash.ps1 +72 -0
  189. package/resources/codex-and-agents-customizations/.codex/hooks/validate-feature-review-coverage.ps1 +265 -0
  190. package/resources/codex-and-agents-customizations/.codex/prompts/feature-review-remediate.md +10 -0
  191. package/resources/codex-and-agents-customizations/.codex/prompts/generate-commit-message-repo.md +11 -0
  192. package/resources/codex-and-agents-customizations/.codex/prompts/generate-pr.md +15 -0
  193. package/resources/codex-and-agents-customizations/.codex/prompts/orchestrate-work.md +22 -0
  194. package/resources/codex-and-agents-customizations/AGENTS.md +317 -0
  195. package/resources/customizations/.github/agents/5.1-Beast-adjusted.agent.md +181 -0
  196. package/resources/customizations/.github/agents/5.1-Thinking-Beast-Mode-adjusted.agent.md +361 -0
  197. package/resources/customizations/.github/agents/Powershell DI Unit Test Engineer.agent.md +192 -0
  198. package/resources/customizations/.github/agents/api-architect.agent.md +40 -0
  199. package/resources/customizations/.github/agents/atomic_executor.agent.md +251 -0
  200. package/resources/customizations/.github/agents/atomic_planning.agent.md +658 -0
  201. package/resources/customizations/.github/agents/commentary-remediation.agent.md +35 -0
  202. package/resources/customizations/.github/agents/commit-steward.agent.md +200 -0
  203. package/resources/customizations/.github/agents/csharp-atomic-executor.agent.md +288 -0
  204. package/resources/customizations/.github/agents/csharp-atomic-planning.agent.md +354 -0
  205. package/resources/customizations/.github/agents/csharp-orchestrator.agent.md +375 -0
  206. package/resources/customizations/.github/agents/csharp-typed-engineer.agent.md +285 -0
  207. package/resources/customizations/.github/agents/epic-review.agent.md +374 -0
  208. package/resources/customizations/.github/agents/expert-nextjs-developer.agent.md +477 -0
  209. package/resources/customizations/.github/agents/expert-react-frontend-engineer.agent.md +739 -0
  210. package/resources/customizations/.github/agents/feature-review.agent.md +49 -0
  211. package/resources/customizations/.github/agents/gpt-5-beast-mode.agent.md +116 -0
  212. package/resources/customizations/.github/agents/hlbpa.agent.md +219 -0
  213. package/resources/customizations/.github/agents/mentor.agent.md +32 -0
  214. package/resources/customizations/.github/agents/orchestrator.agent.md +449 -0
  215. package/resources/customizations/.github/agents/powershell-atomic-executor.agent.md +287 -0
  216. package/resources/customizations/.github/agents/powershell-atomic-planning.agent.md +647 -0
  217. package/resources/customizations/.github/agents/powershell-orchestrator.agent.md +382 -0
  218. package/resources/customizations/.github/agents/powershell-typed-engineer.agent.md +293 -0
  219. package/resources/customizations/.github/agents/pr-author.agent.md +138 -0
  220. package/resources/customizations/.github/agents/prd-feature.agent.md +52 -0
  221. package/resources/customizations/.github/agents/prd.agent.md +202 -0
  222. package/resources/customizations/.github/agents/pytest-unit-test-coding.agent.md +202 -0
  223. package/resources/customizations/.github/agents/python-atomic-executor.agent.md +289 -0
  224. package/resources/customizations/.github/agents/python-atomic-planning.agent.md +429 -0
  225. package/resources/customizations/.github/agents/python-execution-only-typed.agent.md +217 -0
  226. package/resources/customizations/.github/agents/python-orchestrator.agent.md +380 -0
  227. package/resources/customizations/.github/agents/python-typed-engineer.agent.md +271 -0
  228. package/resources/customizations/.github/agents/staged-review.agent.md +246 -0
  229. package/resources/customizations/.github/agents/status_updater.agent.md +279 -0
  230. package/resources/customizations/.github/agents/task-researcher.agent.md +298 -0
  231. package/resources/customizations/.github/agents/tdd-green.agent.md +60 -0
  232. package/resources/customizations/.github/agents/tdd-red.agent.md +66 -0
  233. package/resources/customizations/.github/agents/tdd-refactor.agent.md +94 -0
  234. package/resources/customizations/.github/agents/typescript-engineer.agent.md +167 -0
  235. package/resources/customizations/.github/agents/voidbeast-gpt41enhanced.agent.md +230 -0
  236. package/resources/customizations/.github/codex/execute-hard-lock.prompt.md +105 -0
  237. package/resources/customizations/.github/codex/resume-hard-lock.prompt.md +92 -0
  238. package/resources/customizations/.github/copilot-instructions.md +7 -0
  239. package/resources/customizations/.github/instructions/csharp-code-change.instructions.md +184 -0
  240. package/resources/customizations/.github/instructions/csharp-unit-test.instructions.md +52 -0
  241. package/resources/customizations/.github/instructions/general-code-change.instructions.md +290 -0
  242. package/resources/customizations/.github/instructions/general-unit-test.instructions.md +106 -0
  243. package/resources/customizations/.github/instructions/github-actions-ci-cd-best-practices.instructions.md +607 -0
  244. package/resources/customizations/.github/instructions/github-actions.instructions.md +23 -0
  245. package/resources/customizations/.github/instructions/powershell-code-change.instructions.md +81 -0
  246. package/resources/customizations/.github/instructions/powershell-unit-test.instructions.md +69 -0
  247. package/resources/customizations/.github/instructions/python-code-change.instructions.md +232 -0
  248. package/resources/customizations/.github/instructions/python-suppressions.instructions.md +609 -0
  249. package/resources/customizations/.github/instructions/python-unit-test.instructions.md +71 -0
  250. package/resources/customizations/.github/instructions/self-explanatory-code-commenting.instructions.md +238 -0
  251. package/resources/customizations/.github/instructions/tonality.instructions.md +133 -0
  252. package/resources/customizations/.github/instructions/typescript-code-change.instructions.md +203 -0
  253. package/resources/customizations/.github/instructions/typescript-suppressions.instructions.md +157 -0
  254. package/resources/customizations/.github/instructions/typescript-unit-test.instructions.md +112 -0
  255. package/resources/customizations/.github/prompts/add-educational-comments.prompt.md +129 -0
  256. package/resources/customizations/.github/prompts/breakdown-bug-prd.prompt.md +29 -0
  257. package/resources/customizations/.github/prompts/breakdown-epic-arch.prompt.md +66 -0
  258. package/resources/customizations/.github/prompts/breakdown-epic-pm.prompt.md +58 -0
  259. package/resources/customizations/.github/prompts/breakdown-feature-implementation.prompt.md +128 -0
  260. package/resources/customizations/.github/prompts/breakdown-feature-prd.prompt.md +61 -0
  261. package/resources/customizations/.github/prompts/code-exemplars-blueprint-generator.prompt.md +126 -0
  262. package/resources/customizations/.github/prompts/drafts/create-github-issues-feature-from-implementation-plan.prompt.md +28 -0
  263. package/resources/customizations/.github/prompts/drafts/create-implementation-plan.prompt.md +158 -0
  264. package/resources/customizations/.github/prompts/drafts/create-technical-spike.prompt.md +231 -0
  265. package/resources/customizations/.github/prompts/drafts/potential-feature-prd.prompt.md +19 -0
  266. package/resources/customizations/.github/prompts/drafts/update-implementation-plan.prompt.md +158 -0
  267. package/resources/customizations/.github/prompts/execute-plan-template.md +21 -0
  268. package/resources/customizations/.github/prompts/export-chat.prompt.md +7 -0
  269. package/resources/customizations/.github/prompts/fillout-prd-feature.prompt.md +46 -0
  270. package/resources/customizations/.github/prompts/generate-atomic-plan.prompt.md +96 -0
  271. package/resources/customizations/.github/prompts/generate-commit-message-repo.prompt.md +108 -0
  272. package/resources/customizations/.github/prompts/generate-pr.prompt.md +151 -0
  273. package/resources/customizations/.github/prompts/javascript-typescript-jest.prompt.md +44 -0
  274. package/resources/customizations/.github/prompts/orchestrate-csharp-work.prompt.md +66 -0
  275. package/resources/customizations/.github/prompts/orchestrate-powershell-work.prompt.md +50 -0
  276. package/resources/customizations/.github/prompts/orchestrate-python-work.prompt.md +50 -0
  277. package/resources/customizations/.github/prompts/orchestrate-work.prompt.md +66 -0
  278. package/resources/customizations/.github/prompts/remediate-comments.prompt.md +53 -0
  279. package/resources/customizations/.github/prompts/research-issue.prompt.md +125 -0
  280. package/resources/customizations/.github/prompts/review-epic.prompt.md +94 -0
  281. package/resources/customizations/.github/prompts/review-feature.prompt.md +130 -0
  282. package/resources/customizations/.github/prompts/review-staged.prompt.md +43 -0
  283. package/resources/customizations/.github/prompts/update_status.prompt.md +68 -0
  284. package/resources/customizations/.github/skills/README.md +26 -0
  285. package/resources/customizations/.github/skills/acceptance-criteria-tracking/SKILL.md +102 -0
  286. package/resources/customizations/.github/skills/atomic-plan-contract/SKILL.md +174 -0
  287. package/resources/customizations/.github/skills/csharp-change-budget-router/SKILL.md +48 -0
  288. package/resources/customizations/.github/skills/csharp-orchestration-state-machine/SKILL.md +57 -0
  289. package/resources/customizations/.github/skills/evidence-and-timestamp-conventions/SKILL.md +135 -0
  290. package/resources/customizations/.github/skills/feature-promotion-lifecycle/SKILL.md +121 -0
  291. package/resources/customizations/.github/skills/feature-review-workflow/SKILL.md +153 -0
  292. package/resources/customizations/.github/skills/make-skill-template/SKILL.md +147 -0
  293. package/resources/customizations/.github/skills/policy-audit-template-usage/SKILL.md +48 -0
  294. package/resources/customizations/.github/skills/policy-compliance-order/SKILL.md +37 -0
  295. package/resources/customizations/.github/skills/powershell-change-budget-router/SKILL.md +48 -0
  296. package/resources/customizations/.github/skills/powershell-orchestration-state-machine/SKILL.md +57 -0
  297. package/resources/customizations/.github/skills/pr-base-branch-merge-base/SKILL.md +55 -0
  298. package/resources/customizations/.github/skills/pr-context-artifacts/SKILL.md +29 -0
  299. package/resources/customizations/.github/skills/remediation-handoff-atomic-planner/SKILL.md +39 -0
  300. package/resources/customizations/.github/skills/skill-canonical-location-audit/SKILL.md +48 -0
  301. package/resources/feature-templates/bug/plan.yyyy-MM-ddTHH-mm.md +44 -0
  302. package/resources/feature-templates/bug/potential_bug.md +59 -0
  303. package/resources/feature-templates/bug/spec.md +99 -0
  304. package/resources/feature-templates/epic/initiative.md +43 -0
  305. package/resources/feature-templates/feature/plan.yyyy-MM-ddTHH-mm.md +53 -0
  306. package/resources/feature-templates/feature/spec.md +66 -0
  307. package/resources/feature-templates/feature/user-story.md +42 -0
  308. package/resources/feature-templates/potential/template.md +33 -0
  309. package/resources/feature-templates/refactor/plan.yyyy-MM-ddTHH-mm.md +52 -0
  310. package/resources/feature-templates/refactor/spec.md +69 -0
  311. package/resources/powershell/PoshQC/PoshQC.Analyzer.psm1 +254 -0
  312. package/resources/powershell/PoshQC/PoshQC.FileDiscovery.psm1 +138 -0
  313. package/resources/powershell/PoshQC/PoshQC.Testing.psm1 +409 -0
  314. package/resources/powershell/PoshQC/PoshQC.psd1 +31 -0
  315. package/resources/powershell/PoshQC/PoshQC.psm1 +101 -0
  316. package/resources/powershell/PoshQC/README.md +80 -0
  317. package/resources/powershell/PoshQC/settings/pester.runsettings.psd1 +59 -0
  318. package/resources/powershell/PoshQC/settings/pssa.settings.psd1 +55 -0
  319. package/resources/scripts/dev_tools/__init__.py +0 -0
  320. package/resources/scripts/dev_tools/agentic_sync.py +819 -0
  321. package/resources/scripts/dev_tools/codex_native_converter/__init__.py +11 -0
  322. package/resources/scripts/dev_tools/codex_native_converter/__main__.py +6 -0
  323. package/resources/scripts/dev_tools/codex_native_converter/cli.py +11 -0
  324. package/resources/scripts/dev_tools/new_active_feature_folder.py +79 -0
  325. package/resources/scripts/dev_tools/new_active_feature_folder_docs.py +268 -0
  326. package/resources/scripts/dev_tools/new_active_feature_folder_flow.py +366 -0
  327. package/resources/scripts/dev_tools/new_active_feature_folder_io.py +306 -0
  328. package/resources/scripts/dev_tools/new_active_feature_folder_markdown.py +252 -0
  329. package/resources/scripts/dev_tools/new_active_feature_folder_models.py +136 -0
  330. package/resources/scripts/dev_tools/new_potential_bug_entry.py +465 -0
  331. package/resources/scripts/dev_tools/potential_to_issue.py +421 -0
  332. package/resources/scripts/dev_tools/potential_to_issue_content.py +212 -0
  333. package/resources/scripts/dev_tools/pr_context/__init__.py +0 -0
  334. package/resources/scripts/dev_tools/pr_context/collector.py +619 -0
  335. package/resources/scripts/dev_tools/pr_context/feature_docs.py +349 -0
  336. package/resources/scripts/dev_tools/pr_context/git.py +153 -0
  337. package/resources/scripts/dev_tools/pr_context/github.py +549 -0
  338. package/resources/scripts/dev_tools/pr_context/models.py +198 -0
  339. package/resources/scripts/dev_tools/pr_context/render.py +342 -0
  340. package/resources/scripts/dev_tools/pr_context/render_feature_excerpts.py +256 -0
  341. package/resources/scripts/dev_tools/pr_context/render_pr_helpers.py +291 -0
  342. package/resources/scripts/dev_tools/pr_context/summary_helpers.py +386 -0
  343. package/resources/scripts/dev_tools/pr_context/verification_evidence.py +171 -0
  344. package/resources/scripts/dev_tools/prompt_mode_contract.py +152 -0
  345. package/resources/scripts/dev_tools/push_down_claude_customizations.py +188 -0
  346. package/resources/scripts/dev_tools/push_down_codex_and_agents_customizations.py +139 -0
  347. package/resources/scripts/dev_tools/push_down_copilot_customizations.py +504 -0
  348. package/resources/scripts/dev_tools/push_down_copilot_customizations_filesystem.py +217 -0
  349. package/resources/scripts/dev_tools/push_down_copilot_customizations_rewrites.py +293 -0
  350. package/resources/scripts/dev_tools/resolve_file_prompt.py +457 -0
  351. package/resources/scripts/dev_tools/resolve_hard_lock_prompt.py +444 -0
  352. package/resources/scripts/dev_tools/validate_orchestration_artifacts.py +554 -0
  353. package/resources/templates/codex_native_converter.py +35 -0
  354. package/resources/templates/collect_commit_context.py +212 -0
  355. package/resources/templates/collect_pr_context.py +74 -0
  356. package/resources/templates/hello_pwsh.ps1 +3 -0
  357. package/resources/templates/hello_python.py +11 -0
  358. package/resources/templates/link-parent-child.ps1 +480 -0
  359. package/resources/templates/new-claude-worktree-session.ps1 +232 -0
  360. package/resources/templates/new-potential-entry.ps1 +187 -0
  361. package/resources/templates/new_active_feature_folder.py +67 -0
  362. package/resources/templates/new_potential_bug_entry.py +54 -0
  363. package/resources/templates/policy_audit/AGENTS.md +117 -0
  364. package/resources/templates/policy_audit/code-review.yyyy-MM-ddTHH-mm.md +165 -0
  365. package/resources/templates/policy_audit/feature-audit.yyyy-MM-ddTHH-mm.md +124 -0
  366. package/resources/templates/policy_audit/policy-audit.yyyy-MM-ddTHH-mm.md +649 -0
  367. package/resources/templates/potential_to_issue.py +55 -0
  368. package/resources/templates/push_down_claude_customizations.py +188 -0
  369. package/resources/templates/push_down_codex_and_agents_customizations.py +95 -0
  370. package/resources/templates/push_down_copilot_customizations.py +124 -0
  371. package/resources/templates/resolve_atomic_plan_prompt.py +75 -0
  372. package/resources/templates/resolve_hard_lock_prompt.py +65 -0
  373. package/resources/templates/run-poshqc-analyze-autofix.ps1 +16 -0
  374. package/resources/templates/run-poshqc-analyze.ps1 +26 -0
  375. package/resources/templates/run-poshqc-format.ps1 +26 -0
  376. package/resources/templates/run-poshqc-suite.ps1 +24 -0
  377. package/resources/templates/run-poshqc-test.ps1 +32 -0
  378. package/resources/templates/sync-agents-from-instructions.ps1 +400 -0
  379. package/resources/templates/validate_orchestration_artifacts.py +55 -0
  380. package/resources/templates/vscode-cli.helpers.ps1 +63 -0
@@ -0,0 +1,238 @@
1
+ # Converted hook
2
+ # Review the generated hook behavior before enabling it.
3
+
4
+ <#
5
+ .SYNOPSIS
6
+ Pre-tool-use hook that enforces the Python per-batch change budget.
7
+
8
+ .DESCRIPTION
9
+ This script is invoked by the Claude Code PreToolUse hook before any Write or Edit
10
+ operation. When the target file is a Python file, it classifies the file as either
11
+ production or test and checks the running count against the per-batch cap:
12
+ - 3 production .py files per batch
13
+ - 3 test .py files per batch
14
+
15
+ A "batch" is scoped to the current Claude Code session. The running count is
16
+ persisted under .claude/state/python-batch-budget.<session_id>.json. Only distinct
17
+ file paths are counted; repeated edits to the same file consume one slot.
18
+
19
+ Test files are those matching:
20
+ - tests/**/*.py
21
+ - test_*.py
22
+
23
+ All other .py files are treated as production files. Non-Python paths pass through.
24
+
25
+ The cap may be overridden per session by setting the environment variable
26
+ CLAUDE_PYTHON_BUDGET_PROD or CLAUDE_PYTHON_BUDGET_TEST to a positive integer before
27
+ the session starts, or by writing {"prodCap": N, "testCap": M} into the state file.
28
+
29
+ When the cap would be exceeded by a new file, the script emits a JSON response with
30
+ 'decision': 'block' and exits 0. The session must explicitly reset the counter by
31
+ deleting the state file before starting a new batch. Files already counted are
32
+ always allowed through.
33
+
34
+ .NOTES
35
+ Compatible with PowerShell 7+.
36
+ #>
37
+ [CmdletBinding()]
38
+ param()
39
+
40
+ function Get-PythonBatchBudgetState {
41
+ [CmdletBinding()]
42
+ [OutputType([System.Collections.Specialized.OrderedDictionary])]
43
+ param(
44
+ [Parameter(Mandatory)]
45
+ [int] $ProdCap,
46
+
47
+ [Parameter(Mandatory)]
48
+ [int] $TestCap
49
+ )
50
+
51
+ [ordered]@{
52
+ prodCap = $ProdCap
53
+ testCap = $TestCap
54
+ prodFiles = @()
55
+ testFiles = @()
56
+ }
57
+ }
58
+
59
+ function ConvertTo-PythonBatchBudgetState {
60
+ [CmdletBinding()]
61
+ [OutputType([System.Collections.Specialized.OrderedDictionary])]
62
+ param(
63
+ [Parameter(Mandatory)]
64
+ $InputObject,
65
+
66
+ [Parameter(Mandatory)]
67
+ [int] $ProdCap,
68
+
69
+ [Parameter(Mandatory)]
70
+ [int] $TestCap
71
+ )
72
+
73
+ $state = Get-PythonBatchBudgetState -ProdCap $ProdCap -TestCap $TestCap
74
+ if ($null -ne $InputObject.prodCap) { $state.prodCap = [int]$InputObject.prodCap }
75
+ if ($null -ne $InputObject.testCap) { $state.testCap = [int]$InputObject.testCap }
76
+ if ($null -ne $InputObject.prodFiles) { $state.prodFiles = @($InputObject.prodFiles) }
77
+ if ($null -ne $InputObject.testFiles) { $state.testFiles = @($InputObject.testFiles) }
78
+
79
+ return $state
80
+ }
81
+
82
+ function Get-PythonBatchBudgetBlockDecision {
83
+ [CmdletBinding()]
84
+ [OutputType([System.Collections.Specialized.OrderedDictionary])]
85
+ param(
86
+ [Parameter(Mandatory)]
87
+ [string] $Reason,
88
+
89
+ [System.Collections.IDictionary] $State
90
+ )
91
+
92
+ $decision = [ordered]@{
93
+ decision = 'block'
94
+ reason = $Reason
95
+ }
96
+ if ($State) {
97
+ $decision.state = $State
98
+ }
99
+
100
+ return $decision
101
+ }
102
+
103
+ function Invoke-PythonBatchBudgetDecision {
104
+ [CmdletBinding()]
105
+ [OutputType([System.Collections.Specialized.OrderedDictionary])]
106
+ param(
107
+ [Parameter(Mandatory)]
108
+ [string] $FilePath,
109
+
110
+ [Parameter(Mandatory)]
111
+ [System.Collections.IDictionary] $State,
112
+
113
+ [Parameter(Mandatory)]
114
+ [string] $StateFile
115
+ )
116
+
117
+ $normalized = $FilePath -replace '\\', '/'
118
+ if ($normalized -notmatch '\.py$') {
119
+ return [ordered]@{ decision = 'allow'; state = $State; shouldWriteState = $false }
120
+ }
121
+
122
+ $isTestFile = ($normalized -match '(^|/)tests/.*\.py$') -or ($normalized -match '(^|/)test_[^/]+\.py$')
123
+ $targetList = if ($isTestFile) { @($State.testFiles) } else { @($State.prodFiles) }
124
+ $cap = if ($isTestFile) { [int]$State.testCap } else { [int]$State.prodCap }
125
+ $kind = if ($isTestFile) { 'test' } else { 'production' }
126
+
127
+ if ($targetList -contains $normalized) {
128
+ return [ordered]@{ decision = 'allow'; state = $State; shouldWriteState = $false }
129
+ }
130
+
131
+ if ($targetList.Count -ge $cap) {
132
+ $currentFiles = ($targetList -join ', ')
133
+ $kindUpper = $kind.ToUpperInvariant()
134
+ $reason = "Python per-batch budget exceeded: $kind file cap is $cap and is already full ($currentFiles). Requested new file: $normalized. Split the work into a new batch, raise the cap via CLAUDE_PYTHON_BUDGET_$kindUpper environment variable with approved scope, or reset the batch by deleting $StateFile."
135
+ return Get-PythonBatchBudgetBlockDecision -Reason $reason -State $State
136
+ }
137
+
138
+ if ($isTestFile) {
139
+ $State.testFiles = @($State.testFiles) + @($normalized)
140
+ } else {
141
+ $State.prodFiles = @($State.prodFiles) + @($normalized)
142
+ }
143
+
144
+ return [ordered]@{ decision = 'allow'; state = $State; shouldWriteState = $true }
145
+ }
146
+
147
+ function Invoke-PythonBatchBudgetHook {
148
+ [CmdletBinding()]
149
+ [OutputType([System.Collections.Specialized.OrderedDictionary])]
150
+ param(
151
+ [string] $ToolInputRaw,
152
+ [string] $SessionId = 'default',
153
+ [string] $Root = (Get-Location).Path,
154
+ [int] $ProdCap = 3,
155
+ [int] $TestCap = 3,
156
+ [scriptblock] $TestPathExists = { param([string] $Path) Test-Path -Path $Path },
157
+ [scriptblock] $EnsureDirectory = { param([string] $Path) New-Item -ItemType Directory -Path $Path -Force | Out-Null },
158
+ [scriptblock] $ReadState = { param([string] $Path) Get-Content -Path $Path -Raw },
159
+ [scriptblock] $WriteState = {
160
+ param([string] $Path, [System.Collections.IDictionary] $State)
161
+ $State | ConvertTo-Json -Depth 5 | Set-Content -Path $Path -Encoding UTF8
162
+ }
163
+ )
164
+
165
+ if (-not $ToolInputRaw) {
166
+ return [ordered]@{ decision = 'allow' }
167
+ }
168
+
169
+ try {
170
+ $toolInput = $ToolInputRaw | ConvertFrom-Json -ErrorAction Stop
171
+ } catch {
172
+ return Get-PythonBatchBudgetBlockDecision -Reason 'Python batch-budget hook received malformed JSON in CLAUDE_TOOL_INPUT.'
173
+ }
174
+
175
+ $filePath = $toolInput.file_path
176
+ if (-not $filePath) {
177
+ return [ordered]@{ decision = 'allow' }
178
+ }
179
+
180
+ $normalized = $filePath -replace '\\', '/'
181
+ if ($normalized -notmatch '\.py$') {
182
+ return [ordered]@{ decision = 'allow' }
183
+ }
184
+
185
+ $stateDir = Join-Path -Path $Root -ChildPath '.claude/state'
186
+ if (-not (& $TestPathExists $stateDir)) {
187
+ & $EnsureDirectory $stateDir
188
+ }
189
+
190
+ $stateFile = Join-Path -Path $stateDir -ChildPath ("python-batch-budget.$SessionId.json")
191
+ $state = Get-PythonBatchBudgetState -ProdCap $ProdCap -TestCap $TestCap
192
+
193
+ if (& $TestPathExists $stateFile) {
194
+ try {
195
+ $loaded = & $ReadState $stateFile | ConvertFrom-Json -ErrorAction Stop
196
+ $state = ConvertTo-PythonBatchBudgetState -InputObject $loaded -ProdCap $ProdCap -TestCap $TestCap
197
+ } catch {
198
+ Write-Verbose "Ignoring unreadable Python batch-budget state file '$stateFile': $($_.Exception.Message)"
199
+ }
200
+ }
201
+
202
+ $decision = Invoke-PythonBatchBudgetDecision -FilePath $filePath -State $state -StateFile $stateFile
203
+ if ($decision.shouldWriteState) {
204
+ try {
205
+ & $WriteState $stateFile $decision.state
206
+ } catch {
207
+ Write-Verbose "Unable to write Python batch-budget state file '$stateFile': $($_.Exception.Message)"
208
+ }
209
+ }
210
+
211
+ return $decision
212
+ }
213
+
214
+ if ($MyInvocation.InvocationName -eq '.') {
215
+ return
216
+ }
217
+
218
+ $sessionId = $env:CLAUDE_SESSION_ID
219
+ if (-not $sessionId) {
220
+ $sessionId = 'default'
221
+ }
222
+
223
+ $prodCap = 3
224
+ $testCap = 3
225
+ if ($env:CLAUDE_PYTHON_BUDGET_PROD -match '^\d+$') {
226
+ $prodCap = [int]$env:CLAUDE_PYTHON_BUDGET_PROD
227
+ }
228
+ if ($env:CLAUDE_PYTHON_BUDGET_TEST -match '^\d+$') {
229
+ $testCap = [int]$env:CLAUDE_PYTHON_BUDGET_TEST
230
+ }
231
+
232
+ $decision = Invoke-PythonBatchBudgetHook -ToolInputRaw $env:CLAUDE_TOOL_INPUT -SessionId $sessionId -ProdCap $prodCap -TestCap $testCap
233
+ if ($decision.decision -eq 'block') {
234
+ $decision.Remove('state')
235
+ $decision | ConvertTo-Json -Compress | Write-Output
236
+ }
237
+
238
+ exit 0
@@ -0,0 +1,72 @@
1
+ # Converted hook
2
+ # Review the generated hook behavior before enabling it.
3
+
4
+ <#
5
+ .SYNOPSIS
6
+ Pre-tool-use hook for Claude Code that blocks dangerous Bash commands.
7
+
8
+ .DESCRIPTION
9
+ This script is invoked by the Claude Code PreToolUse hook before any Bash
10
+ command is executed. It reads the proposed command string from the
11
+ CLAUDE_TOOL_INPUT environment variable (JSON with a 'command' field) or
12
+ falls back to the first positional argument. If the command matches any
13
+ blocked pattern (destructive operations such as forced deletions, forced
14
+ pushes, or hard resets), the script exits with code 1 to prevent execution.
15
+ Safe commands exit with code 0.
16
+
17
+ .NOTES
18
+ Compatible with PowerShell 7+.
19
+ This script must not modify any state; it is a read-only validation gate.
20
+ #>
21
+ [CmdletBinding()]
22
+ param(
23
+ [Parameter(Position = 0, Mandatory = $false)]
24
+ [string]$CommandInput
25
+ )
26
+
27
+ # Blocked patterns that represent destructive or irreversible operations.
28
+ $blockedPatterns = @(
29
+ 'rm -rf',
30
+ 'git push --force',
31
+ 'git push origin --force',
32
+ 'Remove-Item -Recurse -Force',
33
+ 'git reset --hard',
34
+ 'git push -f'
35
+ )
36
+
37
+ # Resolve the command string from CLAUDE_TOOL_INPUT JSON or positional argument.
38
+ $commandToCheck = ''
39
+
40
+ if ($env:CLAUDE_TOOL_INPUT) {
41
+ try {
42
+ $parsed = $env:CLAUDE_TOOL_INPUT | ConvertFrom-Json
43
+ if ($parsed.command) {
44
+ $commandToCheck = $parsed.command
45
+ }
46
+ }
47
+ catch {
48
+ # If JSON parsing fails, treat the raw environment variable as the command.
49
+ $commandToCheck = $env:CLAUDE_TOOL_INPUT
50
+ }
51
+ }
52
+
53
+ # Fall back to positional argument when the environment variable is absent or empty.
54
+ if (-not $commandToCheck -and $CommandInput) {
55
+ $commandToCheck = $CommandInput
56
+ }
57
+
58
+ # When no command is provided, allow execution (nothing to validate).
59
+ if (-not $commandToCheck) {
60
+ exit 0
61
+ }
62
+
63
+ # Check the command against each blocked pattern.
64
+ foreach ($pattern in $blockedPatterns) {
65
+ if ($commandToCheck.Contains($pattern)) {
66
+ Write-Error "Blocked dangerous command pattern detected: '$pattern'"
67
+ exit 1
68
+ }
69
+ }
70
+
71
+ # Command passed all checks.
72
+ exit 0
@@ -0,0 +1,265 @@
1
+ # Converted hook
2
+ # Review the generated hook behavior before enabling it.
3
+
4
+ <#
5
+ .SYNOPSIS
6
+ SubagentStop hook that validates feature-review coverage verdicts against the branch diff.
7
+
8
+ .DESCRIPTION
9
+ Runs when the feature-review subagent terminates. Cross-checks the most recent
10
+ policy-audit.<timestamp>.md under docs/features/active/**/ against the PR context
11
+ summary at artifacts/pr_context.summary.txt and against existing coverage artifacts.
12
+
13
+ Validation rules:
14
+ - Enumerate languages that have changed files in the branch diff:
15
+ .ts / .tsx -> TypeScript
16
+ .py -> Python
17
+ .ps1 / .psm1 -> PowerShell
18
+ .cs -> CSharp
19
+ - For each language with one or more changed files, the policy audit must contain
20
+ a coverage-scoped row or line that states an explicit PASS or FAIL verdict for
21
+ that language. Scope-narrowing phrases on those rows are treated as validation
22
+ failures:
23
+ "informational only", "context only", "out of plan scope", "out of scope",
24
+ "not applicable", "N/A", "UNVERIFIED".
25
+ - If the coverage artifact for a language is present, repo-wide line coverage is
26
+ parsed and compared against the 80 percent floor. When repo-wide coverage is
27
+ below 80 percent and the audit does not carry a FAIL verdict on a coverage row
28
+ for that language, validation fails.
29
+
30
+ Coverage artifact paths by language:
31
+ TypeScript coverage/lcov.info (LCOV text)
32
+ Python artifacts/python/lcov.info (LCOV text)
33
+ PowerShell artifacts/pester/powershell-coverage.xml (JaCoCo XML)
34
+ CSharp artifacts/csharp/coverage.xml (JaCoCo XML)
35
+
36
+ On a validation failure the script writes a block decision to stdout and exits 1.
37
+ Read-only: inspects artifacts on disk and never modifies state.
38
+
39
+ .NOTES
40
+ Compatible with PowerShell 7+.
41
+ #>
42
+ [CmdletBinding()]
43
+ param()
44
+
45
+ $ErrorActionPreference = 'Stop'
46
+
47
+ function Get-RepoRoot {
48
+ $start = (Get-Location).Path
49
+ $current = $start
50
+ while ($true) {
51
+ if (Test-Path (Join-Path $current '.claude')) { return $current }
52
+ $parent = Split-Path $current -Parent
53
+ if (-not $parent -or $parent -eq $current) { break }
54
+ $current = $parent
55
+ }
56
+ return $start
57
+ }
58
+
59
+ function Get-LatestPolicyAudit {
60
+ [OutputType([System.IO.FileInfo])]
61
+ param([string]$RepoRoot)
62
+
63
+ $activeRoot = Join-Path $RepoRoot 'docs/features/active'
64
+ if (-not (Test-Path $activeRoot)) { return $null }
65
+
66
+ Get-ChildItem -Path $activeRoot -Recurse -File -Filter 'policy-audit.*.md' |
67
+ Sort-Object LastWriteTime -Descending |
68
+ Select-Object -First 1
69
+ }
70
+
71
+ function Get-ChangedLanguageSet {
72
+ [OutputType([System.Collections.Hashtable])]
73
+ param([string]$RepoRoot)
74
+
75
+ $prSummary = Join-Path $RepoRoot 'artifacts/pr_context.summary.txt'
76
+ $langs = [ordered]@{}
77
+ if (-not (Test-Path $prSummary)) { return $langs }
78
+
79
+ foreach ($line in Get-Content -Path $prSummary) {
80
+ if ($line -notmatch '^\s*-\s+(\S+)\s+\(\+\d+/-\d+\)\s*$') { continue }
81
+ $path = $matches[1]
82
+ $ext = [IO.Path]::GetExtension($path).ToLowerInvariant()
83
+ switch -Regex ($ext) {
84
+ '^\.(ts|tsx)$' { $langs['TypeScript'] = $true }
85
+ '^\.py$' { $langs['Python'] = $true }
86
+ '^\.(ps1|psm1)$' { $langs['PowerShell'] = $true }
87
+ '^\.cs$' { $langs['CSharp'] = $true }
88
+ }
89
+ }
90
+ return $langs
91
+ }
92
+
93
+ function Get-LcovRepoCoverage {
94
+ [OutputType([Nullable[double]])]
95
+ param([string]$Path)
96
+
97
+ if (-not (Test-Path $Path)) { return $null }
98
+
99
+ $totalFound = 0
100
+ $totalHit = 0
101
+ foreach ($line in Get-Content -Path $Path) {
102
+ if ($line.StartsWith('LF:')) {
103
+ $totalFound += [int]($line.Substring(3))
104
+ }
105
+ elseif ($line.StartsWith('LH:')) {
106
+ $totalHit += [int]($line.Substring(3))
107
+ }
108
+ }
109
+ if ($totalFound -le 0) { return $null }
110
+ return [math]::Round(($totalHit * 100.0) / $totalFound, 2)
111
+ }
112
+
113
+ function Get-JacocoRepoCoverage {
114
+ [OutputType([Nullable[double]])]
115
+ param([string]$Path)
116
+
117
+ if (-not (Test-Path $Path)) { return $null }
118
+
119
+ [xml]$doc = Get-Content -Path $Path -Raw
120
+ $counters = $doc.SelectNodes('//counter[@type="LINE"]')
121
+ if (-not $counters -or $counters.Count -eq 0) { return $null }
122
+
123
+ $missed = 0
124
+ $covered = 0
125
+ foreach ($counter in $counters) {
126
+ $missed += [int]$counter.missed
127
+ $covered += [int]$counter.covered
128
+ }
129
+ $total = $missed + $covered
130
+ if ($total -le 0) { return $null }
131
+ return [math]::Round(($covered * 100.0) / $total, 2)
132
+ }
133
+
134
+ function Get-LanguageRepoCoverage {
135
+ [OutputType([Nullable[double]])]
136
+ param(
137
+ [string]$RepoRoot,
138
+ [string]$Language
139
+ )
140
+
141
+ switch ($Language) {
142
+ 'TypeScript' { return Get-LcovRepoCoverage -Path (Join-Path $RepoRoot 'coverage/lcov.info') }
143
+ 'Python' { return Get-LcovRepoCoverage -Path (Join-Path $RepoRoot 'artifacts/python/lcov.info') }
144
+ 'PowerShell' { return Get-JacocoRepoCoverage -Path (Join-Path $RepoRoot 'artifacts/pester/powershell-coverage.xml') }
145
+ 'CSharp' { return Get-JacocoRepoCoverage -Path (Join-Path $RepoRoot 'artifacts/csharp/coverage.xml') }
146
+ }
147
+ return $null
148
+ }
149
+
150
+ function Test-LanguageCoverageRow {
151
+ [OutputType([System.Collections.Hashtable])]
152
+ param(
153
+ [string]$AuditText,
154
+ [string]$Language,
155
+ [Nullable[double]]$RepoWidePct
156
+ )
157
+
158
+ $languageLabelMap = @{
159
+ 'TypeScript' = @('TypeScript', 'typescript')
160
+ 'Python' = @('Python', 'python', 'pytest')
161
+ 'PowerShell' = @('PowerShell', 'powershell', 'pester')
162
+ 'CSharp' = @('C#', 'CSharp', 'csharp', '\.NET', 'dotnet')
163
+ }
164
+
165
+ $labels = $languageLabelMap[$Language]
166
+ $labelPattern = '(?i)(' + (($labels | ForEach-Object { [regex]::Escape($_) }) -join '|') + ')'
167
+
168
+ $lines = $AuditText -split "`r?`n"
169
+ $languageLines = $lines | Where-Object { $_ -match $labelPattern }
170
+
171
+ if (-not $languageLines -or $languageLines.Count -eq 0) {
172
+ return @{
173
+ Ok = $false
174
+ Reason = "$Language has changed files on the branch but the policy-audit does not mention $Language."
175
+ }
176
+ }
177
+
178
+ $coverageLines = $languageLines | Where-Object { $_ -match '(?i)(coverage|lcov|line[s]?\s+hit|pester)' }
179
+ if (-not $coverageLines -or $coverageLines.Count -eq 0) {
180
+ return @{
181
+ Ok = $false
182
+ Reason = "$Language has changed files on the branch but no coverage-scoped row in the policy-audit mentions $Language."
183
+ }
184
+ }
185
+
186
+ $narrowingPattern = '(?i)(informational only|context only|out of plan scope|out of scope|not applicable|\bN/A\b|\bUNVERIFIED\b)'
187
+ $narrowing = $coverageLines | Where-Object { $_ -match $narrowingPattern }
188
+ if ($narrowing -and $narrowing.Count -gt 0) {
189
+ $first = ($narrowing | Select-Object -First 1).ToString().Trim()
190
+ return @{
191
+ Ok = $false
192
+ Reason = "$Language has changed files on the branch but a coverage-scoped row narrows scope: '$first'. Scope narrowing is not permitted for languages with changed files."
193
+ }
194
+ }
195
+
196
+ $verdictLines = $coverageLines | Where-Object { $_ -match '\b(PASS|FAIL)\b' }
197
+ if (-not $verdictLines -or $verdictLines.Count -eq 0) {
198
+ return @{
199
+ Ok = $false
200
+ Reason = "$Language coverage rows contain neither a PASS nor a FAIL verdict."
201
+ }
202
+ }
203
+
204
+ if ($null -ne $RepoWidePct -and $RepoWidePct -lt 80.0) {
205
+ $failLines = $coverageLines | Where-Object { $_ -match '\bFAIL\b' }
206
+ if (-not $failLines -or $failLines.Count -eq 0) {
207
+ return @{
208
+ Ok = $false
209
+ Reason = ("{0} repo-wide coverage is {1}% (below the 80% floor) but the policy-audit contains no FAIL verdict on a coverage row for {0}." -f $Language, $RepoWidePct)
210
+ }
211
+ }
212
+ }
213
+
214
+ return @{ Ok = $true; Reason = $null }
215
+ }
216
+
217
+ function Write-BlockDecision {
218
+ param([string]$Reason)
219
+
220
+ $payload = [ordered]@{
221
+ decision = 'block'
222
+ reason = $Reason
223
+ } | ConvertTo-Json -Compress
224
+ Write-Output $payload
225
+ }
226
+
227
+ try {
228
+ $repoRoot = Get-RepoRoot
229
+ $audit = Get-LatestPolicyAudit -RepoRoot $repoRoot
230
+ if (-not $audit) {
231
+ # No audit to validate. The existing SubagentStop artifact-presence hook covers this case.
232
+ exit 0
233
+ }
234
+
235
+ $auditText = Get-Content -Path $audit.FullName -Raw
236
+ $changedLanguages = Get-ChangedLanguageSet -RepoRoot $repoRoot
237
+
238
+ if ($changedLanguages.Count -eq 0) {
239
+ exit 0
240
+ }
241
+
242
+ $failures = [System.Collections.Generic.List[string]]::new()
243
+
244
+ foreach ($lang in $changedLanguages.Keys) {
245
+ $repoPct = Get-LanguageRepoCoverage -RepoRoot $repoRoot -Language $lang
246
+ $result = Test-LanguageCoverageRow -AuditText $auditText -Language $lang -RepoWidePct $repoPct
247
+ if (-not $result.Ok) {
248
+ $failures.Add($result.Reason)
249
+ }
250
+ }
251
+
252
+ if ($failures.Count -gt 0) {
253
+ $header = "Feature-review coverage validation failed against branch diff."
254
+ $body = " - " + ($failures -join "`n - ")
255
+ $footer = "Audit file: $($audit.FullName)`nFix the policy-audit to carry an explicit PASS or FAIL verdict per language with changed files, and reflect repo-wide coverage below 80% as FAIL."
256
+ Write-BlockDecision -Reason ("{0}`n{1}`n{2}" -f $header, $body, $footer)
257
+ exit 1
258
+ }
259
+
260
+ exit 0
261
+ }
262
+ catch {
263
+ Write-BlockDecision -Reason ("Feature-review coverage validator error: {0}" -f $_.Exception.Message)
264
+ exit 1
265
+ }
@@ -0,0 +1,10 @@
1
+ ---
2
+ description: Run feature review and, if needed, remediation planning with executor preflight
3
+ ---
4
+
5
+ $feature-review
6
+ Use pr_context as authoritative if present and valid. Only fall back to an explicit base branch if pr_context is missing, stale, or ambiguous.
7
+ If remediation is required, explicitly spawn atomic-planner to create or revise the remediation plan.
8
+ Before atomic-planner finalizes the plan, it must explicitly spawn atomic-executor in preflight-validation-only mode against that same file.
9
+ If atomic-executor returns PREFLIGHT: REVISIONS REQUIRED, atomic-planner must revise the same file and repeat until PREFLIGHT: ALL CLEAR.
10
+ Only then finalize the remediation plan and report all generated artifacts.
@@ -0,0 +1,11 @@
1
+ ---
2
+ description: Generate a conventional commit message for the current repository by spawning commit-steward
3
+ ---
4
+
5
+ Spawn `commit-steward` to generate a single audit-quality conventional commit message for the current repository.
6
+
7
+ Use an explicitly supplied commit-context artifact as the primary input when one is provided.
8
+ If no explicit commit-context artifact is provided, prefer `artifacts/commit_context.txt` when that file exists in the workspace.
9
+ If no commit-context artifact is available, have `commit-steward` inspect staged changes directly and scope the message to staged changes only.
10
+
11
+ Return exactly one fenced `text` code block containing only the commit message.
@@ -0,0 +1,15 @@
1
+ ---
2
+ description: Generate a GitHub-ready PR body from the canonical PR-context bundle by spawning pr-author
3
+ argument-hint: Optional notes or PR intent edits to apply while writing the PR body
4
+ ---
5
+
6
+ Spawn `pr-author` to generate a GitHub-ready pull request body.
7
+
8
+ Use only:
9
+ - the canonical PR-context bundle
10
+ - the additional context files enumerated inside that bundle
11
+ - any explicit user directives supplied with this prompt invocation
12
+
13
+ If the PR-context bundle is missing or stale, refresh it using the canonical mechanism before generating the PR body.
14
+
15
+ Return exactly one fenced `markdown` code block containing only the pull request message.
@@ -0,0 +1,22 @@
1
+ ---
2
+ description: Route a request through budget-based orchestration and persist until the selected delivery path is complete
3
+ argument-hint: Provide objective, likely files, feature-or-bug hint, constraints, and whether small-path execution should stop after Phase 0 for manual bootstrap
4
+ ---
5
+
6
+ Spawn `orchestrator` to coordinate the current request from intake through completion.
7
+
8
+ Inputs to provide or infer:
9
+ - request summary and expected outcome
10
+ - likely affected production and test files, when known
11
+ - initial classification hint: `feature` or `bug`, when known
12
+ - constraints, preserved APIs, or forbidden changes
13
+ - whether small-path execution should stop after Phase 0 for manual bootstrap
14
+
15
+ Required behavior:
16
+ - estimate change budget first and choose the correct small or large path
17
+ - maintain and resume from the canonical orchestration checkpoint
18
+ - use migrated Codex subagents when available
19
+ - route host-specific lifecycle automation through the shared adapter rules
20
+ - continue until planning, execution, validation, and review are complete for the selected path, unless the request explicitly requires a manual-bootstrap pause
21
+
22
+ On completion, report the selected route, branch, key variables, `plan-path` when applicable, checkpoint path, created or updated artifact paths, and final readiness summary.