@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,24 @@
1
+ [CmdletBinding()]
2
+ param(
3
+ [Parameter()]
4
+ [string] $WorkspaceRoot = ".",
5
+
6
+ [Parameter()]
7
+ [string[]] $ScanFolders,
8
+
9
+ [Parameter()]
10
+ [switch] $DisableKoverageCopy,
11
+
12
+ [Parameter()]
13
+ [string] $KoverageOutputPath
14
+ )
15
+
16
+ Set-StrictMode -Version Latest
17
+ $ErrorActionPreference = "Stop"
18
+
19
+ # Keep the local entrypoint and the packaged extension wrapper identical so both
20
+ # surfaces execute the same bundled PoshQC suite.
21
+ $poshQcModulePath = Join-Path -Path $PSScriptRoot -ChildPath "..\powershell\PoshQC\PoshQC.psd1"
22
+ Import-Module $poshQcModulePath -Force
23
+
24
+ Invoke-PoshQCSuite -Root $WorkspaceRoot -ScanFolders $ScanFolders -DisableKoverageCopy:$DisableKoverageCopy -KoverageOutputPath $KoverageOutputPath
@@ -0,0 +1,32 @@
1
+ [CmdletBinding()]
2
+ param(
3
+ [Parameter()]
4
+ [string] $WorkspaceRoot = ".",
5
+
6
+ [Parameter()]
7
+ [string[]] $ScanFolders,
8
+
9
+ [Parameter()]
10
+ [string] $ScanFoldersJson,
11
+
12
+ [Parameter()]
13
+ [switch] $DisableKoverageCopy,
14
+
15
+ [Parameter()]
16
+ [string] $KoverageOutputPath
17
+ )
18
+
19
+ Set-StrictMode -Version Latest
20
+ $ErrorActionPreference = "Stop"
21
+
22
+ $poshQcModulePath = Join-Path -Path $PSScriptRoot -ChildPath "..\powershell\PoshQC\PoshQC.psd1"
23
+ Import-Module $poshQcModulePath -Force
24
+
25
+ $resolvedScanFolders = $ScanFolders
26
+ if (-not [string]::IsNullOrWhiteSpace($ScanFoldersJson)) {
27
+ $resolvedScanFolders = @(
28
+ ConvertFrom-Json -InputObject $ScanFoldersJson
29
+ ) | ForEach-Object { [string] $_ }
30
+ }
31
+
32
+ Invoke-PoshQCTest -Root $WorkspaceRoot -ScanFolders $resolvedScanFolders -DisableKoverageCopy:$DisableKoverageCopy -KoverageOutputPath $KoverageOutputPath
@@ -0,0 +1,400 @@
1
+ [CmdletBinding()]
2
+ param(
3
+ [string]$RepoRoot = (Resolve-Path "$PSScriptRoot/../..")
4
+ )
5
+
6
+ function Convert-ToDisplayPath {
7
+ [CmdletBinding()]
8
+ [OutputType([string])]
9
+ param(
10
+ [Parameter(Mandatory = $true)]
11
+ [string]$Path
12
+ )
13
+
14
+ return ($Path -replace '\\', '/')
15
+ }
16
+
17
+ function Convert-ToNormalizedRelativePath {
18
+ [CmdletBinding()]
19
+ [OutputType([string])]
20
+ param(
21
+ [Parameter(Mandatory = $true)]
22
+ [string]$RepoRootParam,
23
+
24
+ [Parameter(Mandatory = $true)]
25
+ [string]$Path
26
+ )
27
+
28
+ $normalizedRoot = (Convert-ToDisplayPath -Path $RepoRootParam).TrimEnd('/')
29
+ $normalizedPath = Convert-ToDisplayPath -Path $Path
30
+
31
+ if (-not $normalizedPath.StartsWith($normalizedRoot, [System.StringComparison]::OrdinalIgnoreCase)) {
32
+ throw "Discovered instruction file is outside the repo root: $normalizedPath"
33
+ }
34
+
35
+ return $normalizedPath.Substring($normalizedRoot.Length).TrimStart('/')
36
+ }
37
+
38
+ function Get-InstructionFileData {
39
+ [CmdletBinding()]
40
+ [OutputType([pscustomobject])]
41
+ param(
42
+ [Parameter(Mandatory = $true)]
43
+ [string]$Path,
44
+
45
+ [Parameter(Mandatory = $true)]
46
+ [string]$RepoRootParam
47
+ )
48
+
49
+ if (-not (Test-Path -LiteralPath $Path)) {
50
+ throw "Instructions file not found: $Path"
51
+ }
52
+
53
+ $rawContent = Get-Content -Raw -LiteralPath $Path
54
+ if ([string]::IsNullOrEmpty($rawContent)) {
55
+ return [pscustomobject]@{
56
+ Path = $Path
57
+ RelativePath = Convert-ToNormalizedRelativePath -RepoRootParam $RepoRootParam -Path $Path
58
+ Body = ""
59
+ FrontMatterName = $null
60
+ FirstHeading = $null
61
+ }
62
+ }
63
+
64
+ $frontMatterName = $null
65
+ $body = $rawContent
66
+ $frontMatterPattern = '^\s*---\s*(?<frontmatter>[\s\S]*?)---\s*'
67
+
68
+ if ($rawContent -match $frontMatterPattern) {
69
+ $frontMatter = $Matches['frontmatter']
70
+ if ($frontMatter -match '(?im)^\s*name:\s*["'']?(?<name>[^"''\r\n]+)["'']?\s*$') {
71
+ $frontMatterName = $Matches['name'].Trim()
72
+ }
73
+
74
+ $body = $rawContent -replace $frontMatterPattern, ''
75
+ }
76
+
77
+ $trimmedBody = if ([string]::IsNullOrEmpty($body)) { "" } else { $body.Trim() }
78
+ $firstHeading = $null
79
+
80
+ if ($trimmedBody -match '(?m)^\s{0,3}#+\s+(?<heading>.+?)\s*$') {
81
+ $firstHeading = $Matches['heading'].Trim()
82
+ }
83
+
84
+ return [pscustomobject]@{
85
+ Path = $Path
86
+ RelativePath = Convert-ToNormalizedRelativePath -RepoRootParam $RepoRootParam -Path $Path
87
+ Body = $trimmedBody
88
+ FrontMatterName = $frontMatterName
89
+ FirstHeading = $firstHeading
90
+ }
91
+ }
92
+
93
+ function Get-InstructionsBody {
94
+ [CmdletBinding()]
95
+ [OutputType([string])]
96
+ param(
97
+ [Parameter(Mandatory = $true)]
98
+ [string]$Path
99
+ )
100
+
101
+ if (-not (Test-Path -LiteralPath $Path)) {
102
+ throw "Instructions file not found: $Path"
103
+ }
104
+
105
+ $content = Get-Content -Raw -LiteralPath $Path
106
+ if ([string]::IsNullOrEmpty($content)) {
107
+ return ""
108
+ }
109
+
110
+ if ($content -match '^\s*---\s*[\s\S]*?---\s*') {
111
+ $content = $content -replace '^\s*---\s*[\s\S]*?---\s*', ''
112
+ }
113
+
114
+ if ([string]::IsNullOrEmpty($content)) {
115
+ return ""
116
+ }
117
+
118
+ return $content.Trim()
119
+ }
120
+
121
+ function Get-SectionKey {
122
+ [CmdletBinding()]
123
+ [OutputType([string])]
124
+ param(
125
+ [Parameter(Mandatory = $true)]
126
+ [string]$RelativePath
127
+ )
128
+
129
+ $fileName = [System.IO.Path]::GetFileName($RelativePath)
130
+ return ($fileName -replace '\.instructions\.md$', '')
131
+ }
132
+
133
+ function Get-SectionTitle {
134
+ [CmdletBinding()]
135
+ [OutputType([string])]
136
+ param(
137
+ [Parameter(Mandatory = $true)]
138
+ [pscustomobject]$InstructionFile
139
+ )
140
+
141
+ if (-not [string]::IsNullOrWhiteSpace($InstructionFile.FirstHeading)) {
142
+ return $InstructionFile.FirstHeading
143
+ }
144
+
145
+ if (-not [string]::IsNullOrWhiteSpace($InstructionFile.FrontMatterName)) {
146
+ return $InstructionFile.FrontMatterName
147
+ }
148
+
149
+ $baseName = [System.IO.Path]::GetFileNameWithoutExtension([System.IO.Path]::GetFileNameWithoutExtension($InstructionFile.RelativePath))
150
+ $segments = $baseName -split '[-_]+'
151
+
152
+ return (($segments | Where-Object { -not [string]::IsNullOrWhiteSpace($_) } | ForEach-Object {
153
+ $_.Substring(0, 1).ToUpperInvariant() + $_.Substring(1)
154
+ }) -join ' ')
155
+ }
156
+
157
+ function Get-InstructionSortKey {
158
+ [CmdletBinding()]
159
+ [OutputType([string])]
160
+ param(
161
+ [Parameter(Mandatory = $true)]
162
+ [string]$RelativePath
163
+ )
164
+
165
+ $fileName = [System.IO.Path]::GetFileName($RelativePath)
166
+ $groupPrefix = if ($fileName.StartsWith('general', [System.StringComparison]::OrdinalIgnoreCase)) { '0' } else { '1' }
167
+
168
+ return "$groupPrefix|$RelativePath"
169
+ }
170
+
171
+ function Get-DiscoveredInstructionFile {
172
+ [CmdletBinding()]
173
+ [OutputType([object[]])]
174
+ param(
175
+ [Parameter(Mandatory = $true)]
176
+ [string]$RepoRootParam
177
+ )
178
+
179
+ $githubRoot = Join-Path $RepoRootParam '.github'
180
+
181
+ # Discover the actual instruction sources shipped in the workspace so generated output stays aligned.
182
+ $candidateFiles = @(Get-ChildItem -LiteralPath $githubRoot -Filter '*.instructions.md' -Recurse -File)
183
+ if ($candidateFiles.Count -eq 0) {
184
+ throw "No supported instruction files were discovered under $(Convert-ToDisplayPath -Path $githubRoot)"
185
+ }
186
+
187
+ $instructionFilesByRelativePath = @{}
188
+ $sortKeysByRelativePath = @{}
189
+ $sortKeys = [System.Collections.Generic.List[string]]::new()
190
+
191
+ # Normalize discovered paths relative to the repo root before sorting so output is deterministic across platforms.
192
+ foreach ($candidateFile in $candidateFiles) {
193
+ $instructionFile = Get-InstructionFileData -Path $candidateFile.FullName -RepoRootParam $RepoRootParam
194
+ $instructionFilesByRelativePath[$instructionFile.RelativePath] = $instructionFile
195
+ $sortKey = Get-InstructionSortKey -RelativePath $instructionFile.RelativePath
196
+ $sortKeysByRelativePath[$sortKey] = $instructionFile.RelativePath
197
+ $sortKeys.Add($sortKey)
198
+ }
199
+
200
+ $sortedSortKeys = $sortKeys.ToArray()
201
+ [System.Array]::Sort($sortedSortKeys, [System.StringComparer]::Ordinal)
202
+
203
+ return @(
204
+ foreach ($sortKey in $sortedSortKeys) {
205
+ $relativePath = $sortKeysByRelativePath[$sortKey]
206
+ $instructionFilesByRelativePath[$relativePath]
207
+ }
208
+ )
209
+ }
210
+
211
+ function Compress-InstructionBody {
212
+ <#
213
+ .SYNOPSIS
214
+ Strip redundant boilerplate from an instruction body before embedding in AGENTS.md.
215
+
216
+ .DESCRIPTION
217
+ Applies deterministic regex-based transformations to remove cross-reference
218
+ boilerplate, reading-order restatements, fenced code blocks, and approved-command
219
+ lines from instruction bodies so the consolidated output is high-signal.
220
+
221
+ .PARAMETER Body
222
+ The raw instruction body text (frontmatter already stripped).
223
+
224
+ .OUTPUTS
225
+ [string] The compacted body text.
226
+ #>
227
+ [CmdletBinding()]
228
+ [OutputType([string])]
229
+ param(
230
+ [Parameter(Mandatory)]
231
+ [string]$Body
232
+ )
233
+
234
+ $result = $Body
235
+
236
+ # Strip cross-reference boilerplate lines that add no unique information to consolidated output.
237
+ $crossRefPatterns = @(
238
+ '(?m)^.*This policy \*\*extends\*\*.*$'
239
+ '(?m)^.*You must follow \*\*both\*\*:.*$'
240
+ '(?m)^.*halt and notify the user.*$'
241
+ '(?m)^.*If you encounter any conflicting instructions.*$'
242
+ )
243
+ foreach ($pattern in $crossRefPatterns) {
244
+ $result = $result -replace $pattern, ''
245
+ }
246
+
247
+ # Strip reading-order restatements that duplicate the Repository Setup header.
248
+ $readingOrderPatterns = @(
249
+ '(?m)^.*Apply this general policy first, then any language-specific.*$'
250
+ '(?m)^.*Reading order / authority:.*$'
251
+ '(?mi)^.*reading order / authority.*$'
252
+ )
253
+ foreach ($pattern in $readingOrderPatterns) {
254
+ $result = $result -replace $pattern, ''
255
+ }
256
+
257
+ # Remove fenced code blocks (``` ... ```) to condense suppression examples.
258
+ $result = $result -replace '(?ms)^```[^\n]*\n.*?^```\s*', ''
259
+
260
+ # Strip approved-command lines that duplicate toolchain commands from the general section.
261
+ $result = $result -replace '(?m)^\s*-\s+Approved command:.*$', ''
262
+
263
+ # Collapse runs of 3+ blank lines down to 2 for readability.
264
+ $result = $result -replace '(\r?\n){3,}', "`n`n"
265
+
266
+ return $result.Trim()
267
+ }
268
+
269
+ function Get-AgentContent {
270
+ [CmdletBinding()]
271
+ [OutputType([string])]
272
+ param(
273
+ [Parameter(Mandatory = $true)]
274
+ [string]$RepoRootParam
275
+ )
276
+
277
+ $copilotPath = Join-Path $RepoRootParam ".github/copilot-instructions.md"
278
+ $agentsTarget = Join-Path $RepoRootParam "AGENTS.md"
279
+ $instructionFiles = Get-DiscoveredInstructionFile -RepoRootParam $RepoRootParam
280
+
281
+ $preambleExists = Test-Path -LiteralPath $copilotPath
282
+ if ($preambleExists) {
283
+ $copilotBody = Get-InstructionsBody -Path $copilotPath
284
+ }
285
+ else {
286
+ $copilotBody = $null
287
+ }
288
+
289
+ if ($preambleExists) {
290
+ $copilotSection = @"
291
+ ## Repository Instructions (GitHub Copilot Canonical)
292
+
293
+ <!-- BEGIN: copilot-instructions -->
294
+ $copilotBody
295
+
296
+ <!-- END: copilot-instructions -->
297
+
298
+ "@
299
+ }
300
+ else {
301
+ $copilotSection = ""
302
+ }
303
+
304
+ $sectionBlocks = foreach ($instructionFile in $instructionFiles) {
305
+ $sectionKey = Get-SectionKey -RelativePath $instructionFile.RelativePath
306
+ $sectionTitle = Get-SectionTitle -InstructionFile $instructionFile
307
+ $compactedBody = Compress-InstructionBody -Body $instructionFile.Body
308
+
309
+ @"
310
+ ## $sectionTitle
311
+
312
+ <!-- BEGIN: $sectionKey -->
313
+ $compactedBody
314
+
315
+ <!-- END: $sectionKey -->
316
+
317
+ "@
318
+ }
319
+
320
+ if ($preambleExists) {
321
+ $headerSourceLines = @('.github/copilot-instructions.md') + $instructionFiles.RelativePath
322
+ }
323
+ else {
324
+ $headerSourceLines = @($instructionFiles.RelativePath)
325
+ }
326
+ $generatedSources = @(
327
+ foreach ($sourcePath in $headerSourceLines) {
328
+ "> - $sourcePath"
329
+ }
330
+ ) -join "`n"
331
+
332
+ if ($preambleExists) {
333
+ $headerInstructions = @"
334
+ > Do not edit this file manually.
335
+ > To update policies, edit the source *.instructions.md files and
336
+ > ``.github/copilot-instructions.md``, then run:
337
+ "@
338
+ }
339
+ else {
340
+ $headerInstructions = @"
341
+ > Do not edit this file manually.
342
+ > To update policies, edit the source *.instructions.md files, then run:
343
+ "@
344
+ }
345
+
346
+ $header = @"
347
+ # AGENTS.md
348
+
349
+ > NOTE: This file is **generated** from:
350
+ >
351
+ $generatedSources
352
+ >
353
+ $headerInstructions
354
+ >
355
+ > pwsh -File scripts/dev-tools/sync-agents-from-instructions.ps1
356
+
357
+ ## Repository Setup (High-Level)
358
+
359
+ - For coding and testing policies, always follow the sections below in the order:
360
+ Copilot instructions -> general policies -> language-specific policies -> CI policies.
361
+ - Use the language- and domain-specific sections for Python, PowerShell, and CI behavior.
362
+ "@
363
+
364
+ $agentsContent = $header + "`n`n" + $copilotSection + "`n" + ($sectionBlocks -join "`n")
365
+
366
+ return [pscustomobject]@{ Path = $agentsTarget; Content = $agentsContent }
367
+ }
368
+
369
+ function Invoke-SyncAgentInstruction {
370
+ [CmdletBinding(SupportsShouldProcess = $true)]
371
+ param(
372
+ [Parameter(Mandatory = $true)]
373
+ [string]$RepoRootParam
374
+ )
375
+
376
+ $result = Get-AgentContent -RepoRootParam $RepoRootParam
377
+ if (-not $PSCmdlet.ShouldProcess($result.Path, 'Update AGENTS.md')) {
378
+ return
379
+ }
380
+
381
+ Set-Content -LiteralPath $result.Path -Value $result.Content -NoNewline
382
+ Write-Output "Updated $($result.Path) from .github/copilot-instructions.md and .github/instructions/*.instructions.md"
383
+ }
384
+
385
+ if ($MyInvocation.InvocationName -eq '.') {
386
+ return
387
+ }
388
+
389
+ if ($env:POSHQC_SKIP_SCRIPT_EXECUTION) {
390
+ return
391
+ }
392
+
393
+ Invoke-SyncAgentInstruction -RepoRootParam $RepoRoot
394
+
395
+
396
+
397
+
398
+
399
+
400
+
@@ -0,0 +1,55 @@
1
+ """Compatibility wrapper for extension-side orchestration artifact validation.
2
+
3
+ Purpose:
4
+ Preserve the bundled-script entry point while delegating validation
5
+ behavior to the bundled package implementation.
6
+
7
+ Usage:
8
+ python validate_orchestration_artifacts.py <artifact_type> <path>
9
+ [--require-complete]
10
+
11
+ Flow:
12
+ 1. Ensure ``resources/scripts/`` is importable at runtime.
13
+ 2. Import ``dev_tools.validate_orchestration_artifacts`` from bundled sources.
14
+ 3. Invoke the bundled CLI entrypoint in-process with the active CLI args.
15
+
16
+ Invariants / Constraints:
17
+ - No validation business logic is implemented in this wrapper.
18
+ - Argument contract is owned by the bundled validator module and forwarded
19
+ unchanged.
20
+
21
+ Side Effects:
22
+ Imports bundled validator code and executes it in the current Python process.
23
+ """
24
+
25
+ from __future__ import annotations
26
+
27
+ import importlib
28
+ import sys
29
+ from pathlib import Path
30
+ from typing import TYPE_CHECKING, cast
31
+
32
+ if TYPE_CHECKING:
33
+ from collections.abc import Callable
34
+
35
+
36
+ def _ensure_bundled_scripts_import_path() -> None:
37
+ """Prepend bundled ``resources/scripts`` directory to ``sys.path``."""
38
+ scripts_dir = Path(__file__).resolve().parent.parent / "scripts"
39
+ scripts_dir_str = str(scripts_dir)
40
+
41
+ if scripts_dir_str not in sys.path:
42
+ sys.path.insert(0, scripts_dir_str)
43
+
44
+
45
+ def main() -> int:
46
+ """Execute bundled orchestration artifact validation in-process."""
47
+ _ensure_bundled_scripts_import_path()
48
+
49
+ module = importlib.import_module("dev_tools.validate_orchestration_artifacts")
50
+ module_main = cast("Callable[..., int]", module.main)
51
+ return int(module_main())
52
+
53
+
54
+ if __name__ == "__main__":
55
+ raise SystemExit(main())
@@ -0,0 +1,63 @@
1
+ function Test-IsVSCodeInsidersSession {
2
+ [CmdletBinding()]
3
+ [OutputType([bool])]
4
+ param(
5
+ [scriptblock] $GetEnvironmentVariable = { param([string]$Name) [Environment]::GetEnvironmentVariable($Name) }
6
+ )
7
+
8
+ $termProgramVersion = & $GetEnvironmentVariable 'TERM_PROGRAM_VERSION'
9
+ $askPassMain = & $GetEnvironmentVariable 'VSCODE_GIT_ASKPASS_MAIN'
10
+ $termProgram = & $GetEnvironmentVariable 'TERM_PROGRAM'
11
+
12
+ if ($termProgramVersion -and ($termProgramVersion -imatch 'insider')) {
13
+ return $true
14
+ }
15
+
16
+ if ($askPassMain -and ($askPassMain -imatch 'insider')) {
17
+ return $true
18
+ }
19
+
20
+ if ($termProgram -and ($termProgram -imatch 'insider')) {
21
+ return $true
22
+ }
23
+
24
+ return $false
25
+ }
26
+
27
+ function Resolve-VSCodeCliCommand {
28
+ [CmdletBinding()]
29
+ [OutputType([string])]
30
+ param(
31
+ [AllowEmptyString()]
32
+ [string] $PreferredCommand,
33
+ [switch] $PreferInsiders,
34
+ [scriptblock] $GetCommand = { param([string]$Name) Get-Command $Name -ErrorAction SilentlyContinue },
35
+ [scriptblock] $GetEnvironmentVariable = { param([string]$Name) [Environment]::GetEnvironmentVariable($Name) }
36
+ )
37
+
38
+ if (-not [string]::IsNullOrWhiteSpace($PreferredCommand)) {
39
+ $preferredCommandResult = & $GetCommand $PreferredCommand
40
+ if ($preferredCommandResult) {
41
+ return $PreferredCommand
42
+ }
43
+
44
+ throw "VS Code CLI command '$PreferredCommand' was explicitly requested but was not found on PATH."
45
+ }
46
+
47
+ $preferInsidersCommand = $PreferInsiders.IsPresent -or (Test-IsVSCodeInsidersSession -GetEnvironmentVariable $GetEnvironmentVariable)
48
+ $candidateCommands = if ($preferInsidersCommand) {
49
+ @('code-insiders', 'code')
50
+ }
51
+ else {
52
+ @('code', 'code-insiders')
53
+ }
54
+
55
+ foreach ($candidate in $candidateCommands) {
56
+ $resolvedCommand = & $GetCommand $candidate
57
+ if ($resolvedCommand) {
58
+ return $candidate
59
+ }
60
+ }
61
+
62
+ return $null
63
+ }