@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.
- package/LICENSE +21 -0
- package/README.md +50 -0
- package/out/mcp-server.js +17323 -0
- package/package.json +36 -0
- package/resources/claude-customizations/.claude/agent-memory/orchestrator/MEMORY.md +3 -0
- package/resources/claude-customizations/.claude/agent-memory/orchestrator/feedback_repo_root_is_source_of_truth.md +11 -0
- package/resources/claude-customizations/.claude/agent-memory/orchestrator/feedback_vsce_verify_package_location.md +19 -0
- package/resources/claude-customizations/.claude/agent-memory/orchestrator/project_extension_location.md +11 -0
- package/resources/claude-customizations/.claude/agent-memory/prd-feature/MEMORY.md +1 -0
- package/resources/claude-customizations/.claude/agent-memory/prd-feature/project_push_down_pattern.md +13 -0
- package/resources/claude-customizations/.claude/agent-memory/task-researcher/MEMORY.md +3 -0
- package/resources/claude-customizations/.claude/agent-memory/task-researcher/project_push_down_claude_dir.md +11 -0
- package/resources/claude-customizations/.claude/agents/atomic-executor.md +135 -0
- package/resources/claude-customizations/.claude/agents/atomic-planner.md +71 -0
- package/resources/claude-customizations/.claude/agents/csharp-typed-engineer.md +69 -0
- package/resources/claude-customizations/.claude/agents/epic-review.md +40 -0
- package/resources/claude-customizations/.claude/agents/feature-review.md +136 -0
- package/resources/claude-customizations/.claude/agents/orchestrator.md +83 -0
- package/resources/claude-customizations/.claude/agents/powershell-typed-engineer.md +80 -0
- package/resources/claude-customizations/.claude/agents/prd-feature.md +42 -0
- package/resources/claude-customizations/.claude/agents/python-typed-engineer.md +72 -0
- package/resources/claude-customizations/.claude/agents/staged-review.md +41 -0
- package/resources/claude-customizations/.claude/agents/status-updater.md +41 -0
- package/resources/claude-customizations/.claude/agents/task-researcher.md +81 -0
- package/resources/claude-customizations/.claude/agents/typescript-engineer.md +24 -0
- package/resources/claude-customizations/.claude/hooks/check-powershell-test-purity.ps1 +111 -0
- package/resources/claude-customizations/.claude/hooks/check-python-test-purity.ps1 +146 -0
- package/resources/claude-customizations/.claude/hooks/enforce-evidence-locations.ps1 +150 -0
- package/resources/claude-customizations/.claude/hooks/enforce-powershell-batch-budget.ps1 +238 -0
- package/resources/claude-customizations/.claude/hooks/enforce-promotion-mcp-only.ps1 +147 -0
- package/resources/claude-customizations/.claude/hooks/enforce-python-batch-budget.ps1 +235 -0
- package/resources/claude-customizations/.claude/hooks/validate-bash.ps1 +69 -0
- package/resources/claude-customizations/.claude/hooks/validate-executor-output.ps1 +296 -0
- package/resources/claude-customizations/.claude/hooks/validate-feature-review-coverage.ps1 +389 -0
- package/resources/claude-customizations/.claude/hooks/validate-orchestrator-output.ps1 +141 -0
- package/resources/claude-customizations/.claude/hooks/validate-planner-output.ps1 +288 -0
- package/resources/claude-customizations/.claude/hooks/validate-required-artifact-output.ps1 +171 -0
- package/resources/claude-customizations/.claude/hooks/validate-task-researcher-output.ps1 +142 -0
- package/resources/claude-customizations/.claude/rules/csharp.md +62 -0
- package/resources/claude-customizations/.claude/rules/general-code-change.md +71 -0
- package/resources/claude-customizations/.claude/rules/general-unit-test.md +60 -0
- package/resources/claude-customizations/.claude/rules/powershell.md +97 -0
- package/resources/claude-customizations/.claude/rules/python-suppressions.md +143 -0
- package/resources/claude-customizations/.claude/rules/python.md +99 -0
- package/resources/claude-customizations/.claude/rules/self-explanatory-code-commenting.md +97 -0
- package/resources/claude-customizations/.claude/rules/tonality.md +80 -0
- package/resources/claude-customizations/.claude/rules/typescript-suppressions.md +66 -0
- package/resources/claude-customizations/.claude/rules/typescript.md +45 -0
- package/resources/claude-customizations/.claude/settings.json +144 -0
- package/resources/claude-customizations/.claude/skills/acceptance-criteria-tracking/SKILL.md +102 -0
- package/resources/claude-customizations/.claude/skills/atomic-plan-contract/SKILL.md +189 -0
- package/resources/claude-customizations/.claude/skills/commit-message/SKILL.md +65 -0
- package/resources/claude-customizations/.claude/skills/csharp-change-budget-router/SKILL.md +90 -0
- package/resources/claude-customizations/.claude/skills/csharp-orchestration-state-machine/SKILL.md +58 -0
- package/resources/claude-customizations/.claude/skills/csharp-qa-gate/SKILL.md +77 -0
- package/resources/claude-customizations/.claude/skills/evidence-and-timestamp-conventions/SKILL.md +164 -0
- package/resources/claude-customizations/.claude/skills/execute-hard-lock/SKILL.md +82 -0
- package/resources/claude-customizations/.claude/skills/feature-promotion-lifecycle/SKILL.md +115 -0
- package/resources/claude-customizations/.claude/skills/feature-review-workflow/SKILL.md +167 -0
- package/resources/claude-customizations/.claude/skills/fill-feature-docs/SKILL.md +22 -0
- package/resources/claude-customizations/.claude/skills/invoke-csharp-engineer/SKILL.md +64 -0
- package/resources/claude-customizations/.claude/skills/invoke-powershell-engineer/SKILL.md +65 -0
- package/resources/claude-customizations/.claude/skills/invoke-python-engineer/SKILL.md +64 -0
- package/resources/claude-customizations/.claude/skills/make-skill-template/SKILL.md +147 -0
- package/resources/claude-customizations/.claude/skills/orchestrate/SKILL.md +132 -0
- package/resources/claude-customizations/.claude/skills/policy-audit-template-usage/SKILL.md +49 -0
- package/resources/claude-customizations/.claude/skills/policy-compliance-order/SKILL.md +40 -0
- package/resources/claude-customizations/.claude/skills/powershell-change-budget-router/SKILL.md +49 -0
- package/resources/claude-customizations/.claude/skills/powershell-orchestration-state-machine/SKILL.md +58 -0
- package/resources/claude-customizations/.claude/skills/powershell-qa-gate/SKILL.md +77 -0
- package/resources/claude-customizations/.claude/skills/pr-author/SKILL.md +50 -0
- package/resources/claude-customizations/.claude/skills/pr-base-branch-merge-base/SKILL.md +56 -0
- package/resources/claude-customizations/.claude/skills/pr-context-artifacts/SKILL.md +30 -0
- package/resources/claude-customizations/.claude/skills/python-change-budget-router/SKILL.md +79 -0
- package/resources/claude-customizations/.claude/skills/python-qa-gate/SKILL.md +77 -0
- package/resources/claude-customizations/.claude/skills/remediation-handoff-atomic-planner/SKILL.md +40 -0
- package/resources/claude-customizations/.claude/skills/research-issue/SKILL.md +67 -0
- package/resources/claude-customizations/.claude/skills/review-epic/SKILL.md +21 -0
- package/resources/claude-customizations/.claude/skills/review-feature/SKILL.md +25 -0
- package/resources/claude-customizations/.claude/skills/review-staged/SKILL.md +21 -0
- package/resources/claude-customizations/.claude/skills/skill-canonical-location-audit/SKILL.md +49 -0
- package/resources/claude-customizations/.claude/skills/translate-copilot-to-claude/SKILL.md +295 -0
- package/resources/claude-customizations/.claude/skills/update-status/SKILL.md +21 -0
- package/resources/claude-dir-customizations/.mcp.json +8 -0
- package/resources/codex-and-agents-customizations/.agents/README.md +86 -0
- package/resources/codex-and-agents-customizations/.agents/skills/README.md +49 -0
- package/resources/codex-and-agents-customizations/.agents/skills/acceptance-criteria-tracking/SKILL.md +107 -0
- package/resources/codex-and-agents-customizations/.agents/skills/atomic-executor/SKILL.md +73 -0
- package/resources/codex-and-agents-customizations/.agents/skills/atomic-plan-contract/SKILL.md +194 -0
- package/resources/codex-and-agents-customizations/.agents/skills/atomic-planner/SKILL.md +87 -0
- package/resources/codex-and-agents-customizations/.agents/skills/commit-message/SKILL.md +70 -0
- package/resources/codex-and-agents-customizations/.agents/skills/commit-message-conventions/SKILL.md +95 -0
- package/resources/codex-and-agents-customizations/.agents/skills/csharp/SKILL.md +67 -0
- package/resources/codex-and-agents-customizations/.agents/skills/csharp-change-budget-router/SKILL.md +94 -0
- package/resources/codex-and-agents-customizations/.agents/skills/csharp-orchestration-state-machine/SKILL.md +64 -0
- package/resources/codex-and-agents-customizations/.agents/skills/csharp-qa-gate/SKILL.md +82 -0
- package/resources/codex-and-agents-customizations/.agents/skills/evidence-and-timestamp-conventions/SKILL.md +168 -0
- package/resources/codex-and-agents-customizations/.agents/skills/execute-hard-lock/SKILL.md +88 -0
- package/resources/codex-and-agents-customizations/.agents/skills/feature-promotion-lifecycle/SKILL.md +129 -0
- package/resources/codex-and-agents-customizations/.agents/skills/feature-review/SKILL.md +106 -0
- package/resources/codex-and-agents-customizations/.agents/skills/feature-review-workflow/SKILL.md +181 -0
- package/resources/codex-and-agents-customizations/.agents/skills/fill-feature-docs/SKILL.md +27 -0
- package/resources/codex-and-agents-customizations/.agents/skills/invoke-csharp-engineer/SKILL.md +73 -0
- package/resources/codex-and-agents-customizations/.agents/skills/invoke-powershell-engineer/SKILL.md +74 -0
- package/resources/codex-and-agents-customizations/.agents/skills/invoke-python-engineer/SKILL.md +73 -0
- package/resources/codex-and-agents-customizations/.agents/skills/make-skill-template/SKILL.md +152 -0
- package/resources/codex-and-agents-customizations/.agents/skills/orchestrate/SKILL.md +143 -0
- package/resources/codex-and-agents-customizations/.agents/skills/orchestrator-workflow/SKILL.md +317 -0
- package/resources/codex-and-agents-customizations/.agents/skills/policy-audit-template-usage/SKILL.md +53 -0
- package/resources/codex-and-agents-customizations/.agents/skills/policy-compliance-order/SKILL.md +49 -0
- package/resources/codex-and-agents-customizations/.agents/skills/powershell/SKILL.md +102 -0
- package/resources/codex-and-agents-customizations/.agents/skills/powershell-change-budget-router/SKILL.md +53 -0
- package/resources/codex-and-agents-customizations/.agents/skills/powershell-orchestration-state-machine/SKILL.md +64 -0
- package/resources/codex-and-agents-customizations/.agents/skills/powershell-qa-gate/SKILL.md +83 -0
- package/resources/codex-and-agents-customizations/.agents/skills/pr-author/SKILL.md +55 -0
- package/resources/codex-and-agents-customizations/.agents/skills/pr-authoring/SKILL.md +124 -0
- package/resources/codex-and-agents-customizations/.agents/skills/pr-base-branch-merge-base/SKILL.md +60 -0
- package/resources/codex-and-agents-customizations/.agents/skills/pr-context-artifacts/SKILL.md +34 -0
- package/resources/codex-and-agents-customizations/.agents/skills/python/SKILL.md +104 -0
- package/resources/codex-and-agents-customizations/.agents/skills/python-change-budget-router/SKILL.md +84 -0
- package/resources/codex-and-agents-customizations/.agents/skills/python-qa-gate/SKILL.md +82 -0
- package/resources/codex-and-agents-customizations/.agents/skills/python-suppressions/SKILL.md +148 -0
- package/resources/codex-and-agents-customizations/.agents/skills/remediation-handoff-atomic-planner/SKILL.md +49 -0
- package/resources/codex-and-agents-customizations/.agents/skills/repo-automation-adapter/SKILL.md +142 -0
- package/resources/codex-and-agents-customizations/.agents/skills/repo-automation-adapter/agents/openai.yaml +5 -0
- package/resources/codex-and-agents-customizations/.agents/skills/research-issue/SKILL.md +72 -0
- package/resources/codex-and-agents-customizations/.agents/skills/review-epic/SKILL.md +26 -0
- package/resources/codex-and-agents-customizations/.agents/skills/review-feature/SKILL.md +30 -0
- package/resources/codex-and-agents-customizations/.agents/skills/review-staged/SKILL.md +26 -0
- package/resources/codex-and-agents-customizations/.agents/skills/self-explanatory-code-commenting/SKILL.md +102 -0
- package/resources/codex-and-agents-customizations/.agents/skills/skill-canonical-location-audit/SKILL.md +52 -0
- package/resources/codex-and-agents-customizations/.agents/skills/translate-copilot-to-claude/SKILL.md +317 -0
- package/resources/codex-and-agents-customizations/.agents/skills/typescript/SKILL.md +50 -0
- package/resources/codex-and-agents-customizations/.agents/skills/typescript-suppressions/SKILL.md +71 -0
- package/resources/codex-and-agents-customizations/.agents/skills/update-status/SKILL.md +26 -0
- package/resources/codex-and-agents-customizations/.codex/agents/5.1-beast-adjusted.toml +23 -0
- package/resources/codex-and-agents-customizations/.codex/agents/5.1-thinking-beast-mode-adjusted.toml +23 -0
- package/resources/codex-and-agents-customizations/.codex/agents/api-architect.toml +23 -0
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-executor.toml +151 -0
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-planner.toml +93 -0
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-planning.toml +24 -0
- package/resources/codex-and-agents-customizations/.codex/agents/commentary-remediation.toml +23 -0
- package/resources/codex-and-agents-customizations/.codex/agents/commit-steward.toml +20 -0
- package/resources/codex-and-agents-customizations/.codex/agents/csharp-atomic-executor.toml +24 -0
- package/resources/codex-and-agents-customizations/.codex/agents/csharp-atomic-planning.toml +25 -0
- package/resources/codex-and-agents-customizations/.codex/agents/csharp-orchestrator.toml +56 -0
- package/resources/codex-and-agents-customizations/.codex/agents/csharp-typed-engineer.toml +97 -0
- package/resources/codex-and-agents-customizations/.codex/agents/epic-review.toml +52 -0
- package/resources/codex-and-agents-customizations/.codex/agents/expert-nextjs-developer.toml +23 -0
- package/resources/codex-and-agents-customizations/.codex/agents/expert-react-frontend-engineer.toml +23 -0
- package/resources/codex-and-agents-customizations/.codex/agents/feature-review.toml +149 -0
- package/resources/codex-and-agents-customizations/.codex/agents/feature-reviewer.toml +60 -0
- package/resources/codex-and-agents-customizations/.codex/agents/gpt-5-beast-mode.toml +23 -0
- package/resources/codex-and-agents-customizations/.codex/agents/hlbpa.toml +23 -0
- package/resources/codex-and-agents-customizations/.codex/agents/mentor.toml +23 -0
- package/resources/codex-and-agents-customizations/.codex/agents/orchestrator.toml +121 -0
- package/resources/codex-and-agents-customizations/.codex/agents/powershell-atomic-executor.toml +24 -0
- package/resources/codex-and-agents-customizations/.codex/agents/powershell-atomic-planning.toml +25 -0
- package/resources/codex-and-agents-customizations/.codex/agents/powershell-di-unit-test-engineer.toml +24 -0
- package/resources/codex-and-agents-customizations/.codex/agents/powershell-orchestrator.toml +56 -0
- package/resources/codex-and-agents-customizations/.codex/agents/powershell-typed-engineer.toml +108 -0
- package/resources/codex-and-agents-customizations/.codex/agents/pr-author.toml +26 -0
- package/resources/codex-and-agents-customizations/.codex/agents/prd-feature.toml +53 -0
- package/resources/codex-and-agents-customizations/.codex/agents/prd.toml +23 -0
- package/resources/codex-and-agents-customizations/.codex/agents/pytest-unit-test-coding.toml +24 -0
- package/resources/codex-and-agents-customizations/.codex/agents/python-atomic-executor.toml +24 -0
- package/resources/codex-and-agents-customizations/.codex/agents/python-atomic-planning.toml +25 -0
- package/resources/codex-and-agents-customizations/.codex/agents/python-execution-only-typed.toml +24 -0
- package/resources/codex-and-agents-customizations/.codex/agents/python-orchestrator.toml +54 -0
- package/resources/codex-and-agents-customizations/.codex/agents/python-typed-engineer.toml +100 -0
- package/resources/codex-and-agents-customizations/.codex/agents/staged-review.toml +53 -0
- package/resources/codex-and-agents-customizations/.codex/agents/status-updater.toml +53 -0
- package/resources/codex-and-agents-customizations/.codex/agents/task-researcher.toml +103 -0
- package/resources/codex-and-agents-customizations/.codex/agents/tdd-green.toml +23 -0
- package/resources/codex-and-agents-customizations/.codex/agents/tdd-red.toml +23 -0
- package/resources/codex-and-agents-customizations/.codex/agents/tdd-refactor.toml +23 -0
- package/resources/codex-and-agents-customizations/.codex/agents/typescript-engineer.toml +48 -0
- package/resources/codex-and-agents-customizations/.codex/agents/voidbeast-gpt41enhanced.toml +23 -0
- package/resources/codex-and-agents-customizations/.codex/codex-web-setup.plan.md +26 -0
- package/resources/codex-and-agents-customizations/.codex/codex-web-setup.sh +384 -0
- package/resources/codex-and-agents-customizations/.codex/config.toml +137 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/check-powershell-test-purity.ps1 +113 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/check-python-test-purity.ps1 +149 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-evidence-locations.ps1 +153 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-powershell-batch-budget.ps1 +241 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-promotion-mcp-only.ps1 +150 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-python-batch-budget.ps1 +238 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/validate-bash.ps1 +72 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/validate-feature-review-coverage.ps1 +265 -0
- package/resources/codex-and-agents-customizations/.codex/prompts/feature-review-remediate.md +10 -0
- package/resources/codex-and-agents-customizations/.codex/prompts/generate-commit-message-repo.md +11 -0
- package/resources/codex-and-agents-customizations/.codex/prompts/generate-pr.md +15 -0
- package/resources/codex-and-agents-customizations/.codex/prompts/orchestrate-work.md +22 -0
- package/resources/codex-and-agents-customizations/AGENTS.md +317 -0
- package/resources/customizations/.github/agents/5.1-Beast-adjusted.agent.md +181 -0
- package/resources/customizations/.github/agents/5.1-Thinking-Beast-Mode-adjusted.agent.md +361 -0
- package/resources/customizations/.github/agents/Powershell DI Unit Test Engineer.agent.md +192 -0
- package/resources/customizations/.github/agents/api-architect.agent.md +40 -0
- package/resources/customizations/.github/agents/atomic_executor.agent.md +251 -0
- package/resources/customizations/.github/agents/atomic_planning.agent.md +658 -0
- package/resources/customizations/.github/agents/commentary-remediation.agent.md +35 -0
- package/resources/customizations/.github/agents/commit-steward.agent.md +200 -0
- package/resources/customizations/.github/agents/csharp-atomic-executor.agent.md +288 -0
- package/resources/customizations/.github/agents/csharp-atomic-planning.agent.md +354 -0
- package/resources/customizations/.github/agents/csharp-orchestrator.agent.md +375 -0
- package/resources/customizations/.github/agents/csharp-typed-engineer.agent.md +285 -0
- package/resources/customizations/.github/agents/epic-review.agent.md +374 -0
- package/resources/customizations/.github/agents/expert-nextjs-developer.agent.md +477 -0
- package/resources/customizations/.github/agents/expert-react-frontend-engineer.agent.md +739 -0
- package/resources/customizations/.github/agents/feature-review.agent.md +49 -0
- package/resources/customizations/.github/agents/gpt-5-beast-mode.agent.md +116 -0
- package/resources/customizations/.github/agents/hlbpa.agent.md +219 -0
- package/resources/customizations/.github/agents/mentor.agent.md +32 -0
- package/resources/customizations/.github/agents/orchestrator.agent.md +449 -0
- package/resources/customizations/.github/agents/powershell-atomic-executor.agent.md +287 -0
- package/resources/customizations/.github/agents/powershell-atomic-planning.agent.md +647 -0
- package/resources/customizations/.github/agents/powershell-orchestrator.agent.md +382 -0
- package/resources/customizations/.github/agents/powershell-typed-engineer.agent.md +293 -0
- package/resources/customizations/.github/agents/pr-author.agent.md +138 -0
- package/resources/customizations/.github/agents/prd-feature.agent.md +52 -0
- package/resources/customizations/.github/agents/prd.agent.md +202 -0
- package/resources/customizations/.github/agents/pytest-unit-test-coding.agent.md +202 -0
- package/resources/customizations/.github/agents/python-atomic-executor.agent.md +289 -0
- package/resources/customizations/.github/agents/python-atomic-planning.agent.md +429 -0
- package/resources/customizations/.github/agents/python-execution-only-typed.agent.md +217 -0
- package/resources/customizations/.github/agents/python-orchestrator.agent.md +380 -0
- package/resources/customizations/.github/agents/python-typed-engineer.agent.md +271 -0
- package/resources/customizations/.github/agents/staged-review.agent.md +246 -0
- package/resources/customizations/.github/agents/status_updater.agent.md +279 -0
- package/resources/customizations/.github/agents/task-researcher.agent.md +298 -0
- package/resources/customizations/.github/agents/tdd-green.agent.md +60 -0
- package/resources/customizations/.github/agents/tdd-red.agent.md +66 -0
- package/resources/customizations/.github/agents/tdd-refactor.agent.md +94 -0
- package/resources/customizations/.github/agents/typescript-engineer.agent.md +167 -0
- package/resources/customizations/.github/agents/voidbeast-gpt41enhanced.agent.md +230 -0
- package/resources/customizations/.github/codex/execute-hard-lock.prompt.md +105 -0
- package/resources/customizations/.github/codex/resume-hard-lock.prompt.md +92 -0
- package/resources/customizations/.github/copilot-instructions.md +7 -0
- package/resources/customizations/.github/instructions/csharp-code-change.instructions.md +184 -0
- package/resources/customizations/.github/instructions/csharp-unit-test.instructions.md +52 -0
- package/resources/customizations/.github/instructions/general-code-change.instructions.md +290 -0
- package/resources/customizations/.github/instructions/general-unit-test.instructions.md +106 -0
- package/resources/customizations/.github/instructions/github-actions-ci-cd-best-practices.instructions.md +607 -0
- package/resources/customizations/.github/instructions/github-actions.instructions.md +23 -0
- package/resources/customizations/.github/instructions/powershell-code-change.instructions.md +81 -0
- package/resources/customizations/.github/instructions/powershell-unit-test.instructions.md +69 -0
- package/resources/customizations/.github/instructions/python-code-change.instructions.md +232 -0
- package/resources/customizations/.github/instructions/python-suppressions.instructions.md +609 -0
- package/resources/customizations/.github/instructions/python-unit-test.instructions.md +71 -0
- package/resources/customizations/.github/instructions/self-explanatory-code-commenting.instructions.md +238 -0
- package/resources/customizations/.github/instructions/tonality.instructions.md +133 -0
- package/resources/customizations/.github/instructions/typescript-code-change.instructions.md +203 -0
- package/resources/customizations/.github/instructions/typescript-suppressions.instructions.md +157 -0
- package/resources/customizations/.github/instructions/typescript-unit-test.instructions.md +112 -0
- package/resources/customizations/.github/prompts/add-educational-comments.prompt.md +129 -0
- package/resources/customizations/.github/prompts/breakdown-bug-prd.prompt.md +29 -0
- package/resources/customizations/.github/prompts/breakdown-epic-arch.prompt.md +66 -0
- package/resources/customizations/.github/prompts/breakdown-epic-pm.prompt.md +58 -0
- package/resources/customizations/.github/prompts/breakdown-feature-implementation.prompt.md +128 -0
- package/resources/customizations/.github/prompts/breakdown-feature-prd.prompt.md +61 -0
- package/resources/customizations/.github/prompts/code-exemplars-blueprint-generator.prompt.md +126 -0
- package/resources/customizations/.github/prompts/drafts/create-github-issues-feature-from-implementation-plan.prompt.md +28 -0
- package/resources/customizations/.github/prompts/drafts/create-implementation-plan.prompt.md +158 -0
- package/resources/customizations/.github/prompts/drafts/create-technical-spike.prompt.md +231 -0
- package/resources/customizations/.github/prompts/drafts/potential-feature-prd.prompt.md +19 -0
- package/resources/customizations/.github/prompts/drafts/update-implementation-plan.prompt.md +158 -0
- package/resources/customizations/.github/prompts/execute-plan-template.md +21 -0
- package/resources/customizations/.github/prompts/export-chat.prompt.md +7 -0
- package/resources/customizations/.github/prompts/fillout-prd-feature.prompt.md +46 -0
- package/resources/customizations/.github/prompts/generate-atomic-plan.prompt.md +96 -0
- package/resources/customizations/.github/prompts/generate-commit-message-repo.prompt.md +108 -0
- package/resources/customizations/.github/prompts/generate-pr.prompt.md +151 -0
- package/resources/customizations/.github/prompts/javascript-typescript-jest.prompt.md +44 -0
- package/resources/customizations/.github/prompts/orchestrate-csharp-work.prompt.md +66 -0
- package/resources/customizations/.github/prompts/orchestrate-powershell-work.prompt.md +50 -0
- package/resources/customizations/.github/prompts/orchestrate-python-work.prompt.md +50 -0
- package/resources/customizations/.github/prompts/orchestrate-work.prompt.md +66 -0
- package/resources/customizations/.github/prompts/remediate-comments.prompt.md +53 -0
- package/resources/customizations/.github/prompts/research-issue.prompt.md +125 -0
- package/resources/customizations/.github/prompts/review-epic.prompt.md +94 -0
- package/resources/customizations/.github/prompts/review-feature.prompt.md +130 -0
- package/resources/customizations/.github/prompts/review-staged.prompt.md +43 -0
- package/resources/customizations/.github/prompts/update_status.prompt.md +68 -0
- package/resources/customizations/.github/skills/README.md +26 -0
- package/resources/customizations/.github/skills/acceptance-criteria-tracking/SKILL.md +102 -0
- package/resources/customizations/.github/skills/atomic-plan-contract/SKILL.md +174 -0
- package/resources/customizations/.github/skills/csharp-change-budget-router/SKILL.md +48 -0
- package/resources/customizations/.github/skills/csharp-orchestration-state-machine/SKILL.md +57 -0
- package/resources/customizations/.github/skills/evidence-and-timestamp-conventions/SKILL.md +135 -0
- package/resources/customizations/.github/skills/feature-promotion-lifecycle/SKILL.md +121 -0
- package/resources/customizations/.github/skills/feature-review-workflow/SKILL.md +153 -0
- package/resources/customizations/.github/skills/make-skill-template/SKILL.md +147 -0
- package/resources/customizations/.github/skills/policy-audit-template-usage/SKILL.md +48 -0
- package/resources/customizations/.github/skills/policy-compliance-order/SKILL.md +37 -0
- package/resources/customizations/.github/skills/powershell-change-budget-router/SKILL.md +48 -0
- package/resources/customizations/.github/skills/powershell-orchestration-state-machine/SKILL.md +57 -0
- package/resources/customizations/.github/skills/pr-base-branch-merge-base/SKILL.md +55 -0
- package/resources/customizations/.github/skills/pr-context-artifacts/SKILL.md +29 -0
- package/resources/customizations/.github/skills/remediation-handoff-atomic-planner/SKILL.md +39 -0
- package/resources/customizations/.github/skills/skill-canonical-location-audit/SKILL.md +48 -0
- package/resources/feature-templates/bug/plan.yyyy-MM-ddTHH-mm.md +44 -0
- package/resources/feature-templates/bug/potential_bug.md +59 -0
- package/resources/feature-templates/bug/spec.md +99 -0
- package/resources/feature-templates/epic/initiative.md +43 -0
- package/resources/feature-templates/feature/plan.yyyy-MM-ddTHH-mm.md +53 -0
- package/resources/feature-templates/feature/spec.md +66 -0
- package/resources/feature-templates/feature/user-story.md +42 -0
- package/resources/feature-templates/potential/template.md +33 -0
- package/resources/feature-templates/refactor/plan.yyyy-MM-ddTHH-mm.md +52 -0
- package/resources/feature-templates/refactor/spec.md +69 -0
- package/resources/powershell/PoshQC/PoshQC.Analyzer.psm1 +254 -0
- package/resources/powershell/PoshQC/PoshQC.FileDiscovery.psm1 +138 -0
- package/resources/powershell/PoshQC/PoshQC.Testing.psm1 +409 -0
- package/resources/powershell/PoshQC/PoshQC.psd1 +31 -0
- package/resources/powershell/PoshQC/PoshQC.psm1 +101 -0
- package/resources/powershell/PoshQC/README.md +80 -0
- package/resources/powershell/PoshQC/settings/pester.runsettings.psd1 +59 -0
- package/resources/powershell/PoshQC/settings/pssa.settings.psd1 +55 -0
- package/resources/scripts/dev_tools/__init__.py +0 -0
- package/resources/scripts/dev_tools/agentic_sync.py +819 -0
- package/resources/scripts/dev_tools/codex_native_converter/__init__.py +11 -0
- package/resources/scripts/dev_tools/codex_native_converter/__main__.py +6 -0
- package/resources/scripts/dev_tools/codex_native_converter/cli.py +11 -0
- package/resources/scripts/dev_tools/new_active_feature_folder.py +79 -0
- package/resources/scripts/dev_tools/new_active_feature_folder_docs.py +268 -0
- package/resources/scripts/dev_tools/new_active_feature_folder_flow.py +366 -0
- package/resources/scripts/dev_tools/new_active_feature_folder_io.py +306 -0
- package/resources/scripts/dev_tools/new_active_feature_folder_markdown.py +252 -0
- package/resources/scripts/dev_tools/new_active_feature_folder_models.py +136 -0
- package/resources/scripts/dev_tools/new_potential_bug_entry.py +465 -0
- package/resources/scripts/dev_tools/potential_to_issue.py +421 -0
- package/resources/scripts/dev_tools/potential_to_issue_content.py +212 -0
- package/resources/scripts/dev_tools/pr_context/__init__.py +0 -0
- package/resources/scripts/dev_tools/pr_context/collector.py +619 -0
- package/resources/scripts/dev_tools/pr_context/feature_docs.py +349 -0
- package/resources/scripts/dev_tools/pr_context/git.py +153 -0
- package/resources/scripts/dev_tools/pr_context/github.py +549 -0
- package/resources/scripts/dev_tools/pr_context/models.py +198 -0
- package/resources/scripts/dev_tools/pr_context/render.py +342 -0
- package/resources/scripts/dev_tools/pr_context/render_feature_excerpts.py +256 -0
- package/resources/scripts/dev_tools/pr_context/render_pr_helpers.py +291 -0
- package/resources/scripts/dev_tools/pr_context/summary_helpers.py +386 -0
- package/resources/scripts/dev_tools/pr_context/verification_evidence.py +171 -0
- package/resources/scripts/dev_tools/prompt_mode_contract.py +152 -0
- package/resources/scripts/dev_tools/push_down_claude_customizations.py +188 -0
- package/resources/scripts/dev_tools/push_down_codex_and_agents_customizations.py +139 -0
- package/resources/scripts/dev_tools/push_down_copilot_customizations.py +504 -0
- package/resources/scripts/dev_tools/push_down_copilot_customizations_filesystem.py +217 -0
- package/resources/scripts/dev_tools/push_down_copilot_customizations_rewrites.py +293 -0
- package/resources/scripts/dev_tools/resolve_file_prompt.py +457 -0
- package/resources/scripts/dev_tools/resolve_hard_lock_prompt.py +444 -0
- package/resources/scripts/dev_tools/validate_orchestration_artifacts.py +554 -0
- package/resources/templates/codex_native_converter.py +35 -0
- package/resources/templates/collect_commit_context.py +212 -0
- package/resources/templates/collect_pr_context.py +74 -0
- package/resources/templates/hello_pwsh.ps1 +3 -0
- package/resources/templates/hello_python.py +11 -0
- package/resources/templates/link-parent-child.ps1 +480 -0
- package/resources/templates/new-claude-worktree-session.ps1 +232 -0
- package/resources/templates/new-potential-entry.ps1 +187 -0
- package/resources/templates/new_active_feature_folder.py +67 -0
- package/resources/templates/new_potential_bug_entry.py +54 -0
- package/resources/templates/policy_audit/AGENTS.md +117 -0
- package/resources/templates/policy_audit/code-review.yyyy-MM-ddTHH-mm.md +165 -0
- package/resources/templates/policy_audit/feature-audit.yyyy-MM-ddTHH-mm.md +124 -0
- package/resources/templates/policy_audit/policy-audit.yyyy-MM-ddTHH-mm.md +649 -0
- package/resources/templates/potential_to_issue.py +55 -0
- package/resources/templates/push_down_claude_customizations.py +188 -0
- package/resources/templates/push_down_codex_and_agents_customizations.py +95 -0
- package/resources/templates/push_down_copilot_customizations.py +124 -0
- package/resources/templates/resolve_atomic_plan_prompt.py +75 -0
- package/resources/templates/resolve_hard_lock_prompt.py +65 -0
- package/resources/templates/run-poshqc-analyze-autofix.ps1 +16 -0
- package/resources/templates/run-poshqc-analyze.ps1 +26 -0
- package/resources/templates/run-poshqc-format.ps1 +26 -0
- package/resources/templates/run-poshqc-suite.ps1 +24 -0
- package/resources/templates/run-poshqc-test.ps1 +32 -0
- package/resources/templates/sync-agents-from-instructions.ps1 +400 -0
- package/resources/templates/validate_orchestration_artifacts.py +55 -0
- package/resources/templates/vscode-cli.helpers.ps1 +63 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"""Compatibility wrapper for extension-side potential-to-issue promotion.
|
|
2
|
+
|
|
3
|
+
Purpose:
|
|
4
|
+
Preserve the bundled-script entry point while delegating promotion behavior
|
|
5
|
+
to the bundled package implementation.
|
|
6
|
+
|
|
7
|
+
Usage:
|
|
8
|
+
python potential_to_issue.py --potential-path <path> --promotion-type <type> \
|
|
9
|
+
--work-mode <mode>
|
|
10
|
+
|
|
11
|
+
Flow:
|
|
12
|
+
1. Ensure `resources/scripts/` is importable at runtime.
|
|
13
|
+
2. Import `dev_tools.potential_to_issue` from bundled sources.
|
|
14
|
+
3. Invoke the bundled CLI entrypoint in-process with unmodified CLI args.
|
|
15
|
+
|
|
16
|
+
Invariants / Constraints:
|
|
17
|
+
- No promotion business logic is implemented in this wrapper.
|
|
18
|
+
- Argument contract is owned by the bundled promotion module and forwarded
|
|
19
|
+
unchanged.
|
|
20
|
+
|
|
21
|
+
Side Effects:
|
|
22
|
+
Imports bundled promotion 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 potential-to-issue entrypoint in-process."""
|
|
47
|
+
_ensure_bundled_scripts_import_path()
|
|
48
|
+
module = importlib.import_module("dev_tools.potential_to_issue")
|
|
49
|
+
module_main = cast("Callable[[], None]", module.main)
|
|
50
|
+
module_main()
|
|
51
|
+
return 0
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
if __name__ == "__main__":
|
|
55
|
+
raise SystemExit(main())
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
"""Publish bundled `.claude` content into a destination workspace.
|
|
2
|
+
|
|
3
|
+
Purpose:
|
|
4
|
+
Provide a dedicated public entry point for the Claude customization push-down
|
|
5
|
+
workflow while reusing the shared publisher engine behind the existing
|
|
6
|
+
`.github` customization flow. Settings-local configuration is excluded from
|
|
7
|
+
push-down because it holds host-specific overrides that must not propagate.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
import argparse
|
|
13
|
+
from pathlib import Path
|
|
14
|
+
|
|
15
|
+
try:
|
|
16
|
+
from scripts.dev_tools.push_down_copilot_customizations import (
|
|
17
|
+
PushDownFileSystem,
|
|
18
|
+
PushDownSummary,
|
|
19
|
+
RealPushDownFileSystem,
|
|
20
|
+
resolve_cli_path,
|
|
21
|
+
)
|
|
22
|
+
from scripts.dev_tools.push_down_copilot_customizations import (
|
|
23
|
+
push_down_customizations as push_down_scoped_customizations,
|
|
24
|
+
)
|
|
25
|
+
except ModuleNotFoundError as error:
|
|
26
|
+
if error.name is None or not error.name.startswith("scripts"):
|
|
27
|
+
raise
|
|
28
|
+
from dev_tools.push_down_copilot_customizations import (
|
|
29
|
+
PushDownFileSystem,
|
|
30
|
+
PushDownSummary,
|
|
31
|
+
RealPushDownFileSystem,
|
|
32
|
+
resolve_cli_path,
|
|
33
|
+
)
|
|
34
|
+
from dev_tools.push_down_copilot_customizations import (
|
|
35
|
+
push_down_customizations as push_down_scoped_customizations,
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
ARTIFACT_DIRECTORY = "artifacts/claude-customizations"
|
|
39
|
+
MODULE_ENTRY_POINT = "scripts.dev_tools.push_down_claude_customizations"
|
|
40
|
+
ROOT_FOLDERS: tuple[Path, ...] = (Path(".claude"),)
|
|
41
|
+
EXCLUDED_RELATIVE_PATHS: tuple[Path, ...] = (Path(".claude/settings.local.json"),)
|
|
42
|
+
|
|
43
|
+
__all__ = [
|
|
44
|
+
"ARTIFACT_DIRECTORY",
|
|
45
|
+
"EXCLUDED_RELATIVE_PATHS",
|
|
46
|
+
"PushDownSummary",
|
|
47
|
+
"ROOT_FOLDERS",
|
|
48
|
+
"main",
|
|
49
|
+
"parse_args",
|
|
50
|
+
"push_down_customizations",
|
|
51
|
+
]
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class _ExcludingFileSystem:
|
|
55
|
+
"""Wrap a PushDownFileSystem and filter specified paths from list_files.
|
|
56
|
+
|
|
57
|
+
Purpose:
|
|
58
|
+
Prevent host-specific files (e.g. `settings.local.json`) from being
|
|
59
|
+
included when the publisher enumerates source files. Chosen over a
|
|
60
|
+
post-enumeration filter so the exclusion travels with the filesystem
|
|
61
|
+
contract and is transparent to the shared engine.
|
|
62
|
+
|
|
63
|
+
Usage:
|
|
64
|
+
Instantiate with the inner adapter and exclusion paths relative to
|
|
65
|
+
the repo root; pass the result as the `fs` argument to the engine.
|
|
66
|
+
|
|
67
|
+
Invariants / Constraints:
|
|
68
|
+
Excluded paths are resolved once at construction time for O(1) checks.
|
|
69
|
+
|
|
70
|
+
Side Effects:
|
|
71
|
+
Delegates all I/O to the inner adapter.
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
def __init__(
|
|
75
|
+
self, inner: PushDownFileSystem, repo_root: Path, excluded: tuple[Path, ...]
|
|
76
|
+
) -> None:
|
|
77
|
+
"""Set up the adapter; resolve exclusion paths relative to repo_root."""
|
|
78
|
+
self._inner = inner
|
|
79
|
+
# Resolve once at init so list_files per-path checks are O(1).
|
|
80
|
+
self._excluded: frozenset[Path] = frozenset(
|
|
81
|
+
(repo_root / p).resolve() for p in excluded
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
def list_files(self, root: Path) -> list[Path]:
|
|
85
|
+
"""Return inner list_files output with excluded paths removed."""
|
|
86
|
+
return [
|
|
87
|
+
p for p in self._inner.list_files(root) if p.resolve() not in self._excluded
|
|
88
|
+
]
|
|
89
|
+
|
|
90
|
+
def is_dir(self, path: Path) -> bool:
|
|
91
|
+
"""Delegate to inner adapter."""
|
|
92
|
+
return self._inner.is_dir(path)
|
|
93
|
+
|
|
94
|
+
def is_file(self, path: Path) -> bool:
|
|
95
|
+
"""Delegate to inner adapter."""
|
|
96
|
+
return self._inner.is_file(path)
|
|
97
|
+
|
|
98
|
+
def read_text(self, path: Path) -> str:
|
|
99
|
+
"""Delegate to inner adapter."""
|
|
100
|
+
return self._inner.read_text(path)
|
|
101
|
+
|
|
102
|
+
def write_text(self, path: Path, content: str) -> None:
|
|
103
|
+
"""Delegate to inner adapter."""
|
|
104
|
+
self._inner.write_text(path, content)
|
|
105
|
+
|
|
106
|
+
def ensure_dir(self, path: Path) -> None:
|
|
107
|
+
"""Delegate to inner adapter."""
|
|
108
|
+
self._inner.ensure_dir(path)
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
def _passthrough_rewrite(
|
|
112
|
+
text: str,
|
|
113
|
+
) -> tuple[str, int, int, list[str]]:
|
|
114
|
+
"""Return unmodified text for payloads that do not need command rewrites."""
|
|
115
|
+
|
|
116
|
+
return text, 0, 0, []
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def push_down_customizations(
|
|
120
|
+
*,
|
|
121
|
+
repo_root: Path,
|
|
122
|
+
destination_root: Path,
|
|
123
|
+
fs: PushDownFileSystem,
|
|
124
|
+
source_root: Path | None = None,
|
|
125
|
+
artifact_root: Path | None = None,
|
|
126
|
+
) -> PushDownSummary:
|
|
127
|
+
"""Copy the `.claude` tree into the destination workspace.
|
|
128
|
+
|
|
129
|
+
Excludes paths in `EXCLUDED_RELATIVE_PATHS` by wrapping `fs` in
|
|
130
|
+
`_ExcludingFileSystem` before delegating to the shared engine.
|
|
131
|
+
"""
|
|
132
|
+
|
|
133
|
+
# Wrap the caller-supplied adapter so enumeration omits excluded paths.
|
|
134
|
+
excluding_fs = _ExcludingFileSystem(fs, repo_root, EXCLUDED_RELATIVE_PATHS)
|
|
135
|
+
return push_down_scoped_customizations(
|
|
136
|
+
repo_root=repo_root,
|
|
137
|
+
destination_root=destination_root,
|
|
138
|
+
fs=excluding_fs,
|
|
139
|
+
source_root=source_root,
|
|
140
|
+
artifact_root=artifact_root,
|
|
141
|
+
root_folders=ROOT_FOLDERS,
|
|
142
|
+
artifact_directory=ARTIFACT_DIRECTORY,
|
|
143
|
+
rewrite_references=_passthrough_rewrite,
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def parse_args(argv: list[str] | None = None) -> argparse.Namespace:
|
|
148
|
+
"""Parse CLI arguments for the Claude customization push-down publisher."""
|
|
149
|
+
|
|
150
|
+
parser = argparse.ArgumentParser(
|
|
151
|
+
description=(
|
|
152
|
+
"Publish bundled Claude customizations with "
|
|
153
|
+
f"python -m {MODULE_ENTRY_POINT}."
|
|
154
|
+
)
|
|
155
|
+
)
|
|
156
|
+
parser.add_argument(
|
|
157
|
+
"--destination",
|
|
158
|
+
required=True,
|
|
159
|
+
help=("Destination workspace root that will receive the copied .claude tree."),
|
|
160
|
+
)
|
|
161
|
+
return parser.parse_args(argv)
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
def main(
|
|
165
|
+
argv: list[str] | None = None,
|
|
166
|
+
*,
|
|
167
|
+
repo_root: Path | None = None,
|
|
168
|
+
fs: PushDownFileSystem | None = None,
|
|
169
|
+
) -> int:
|
|
170
|
+
"""Run the Claude customization push-down publisher CLI."""
|
|
171
|
+
|
|
172
|
+
args = parse_args(argv)
|
|
173
|
+
resolved_repo_root = resolve_cli_path(repo_root or Path.cwd())
|
|
174
|
+
resolved_destination = resolve_cli_path(args.destination)
|
|
175
|
+
resolved_fs = fs or RealPushDownFileSystem()
|
|
176
|
+
summary = push_down_customizations(
|
|
177
|
+
repo_root=resolved_repo_root,
|
|
178
|
+
destination_root=resolved_destination,
|
|
179
|
+
fs=resolved_fs,
|
|
180
|
+
source_root=resolved_repo_root,
|
|
181
|
+
artifact_root=resolved_repo_root,
|
|
182
|
+
)
|
|
183
|
+
print(f"Wrote push-down summary artifact to: {summary.artifact_path}")
|
|
184
|
+
return 0
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
if __name__ == "__main__":
|
|
188
|
+
raise SystemExit(main())
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"""Compatibility wrapper for extension-side Codex/agents customization publishing.
|
|
2
|
+
|
|
3
|
+
Purpose:
|
|
4
|
+
Preserve the bundled-script entry point while delegating all publishing
|
|
5
|
+
behavior to the bundled package implementation.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import argparse
|
|
11
|
+
import importlib
|
|
12
|
+
import sys
|
|
13
|
+
from pathlib import Path
|
|
14
|
+
from typing import Protocol
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class _PublisherResult(Protocol):
|
|
18
|
+
"""Typed contract for the push-down summary surface accessed by this wrapper."""
|
|
19
|
+
|
|
20
|
+
artifact_path: str
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class _FileSystemFactory(Protocol):
|
|
24
|
+
"""Construction contract for the publisher's filesystem implementation."""
|
|
25
|
+
|
|
26
|
+
def __call__(self) -> object: ...
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class _PublisherFunction(Protocol):
|
|
30
|
+
"""Call contract matching the bundled push_down_customizations signature."""
|
|
31
|
+
|
|
32
|
+
def __call__(
|
|
33
|
+
self,
|
|
34
|
+
*,
|
|
35
|
+
repo_root: Path,
|
|
36
|
+
destination_root: Path,
|
|
37
|
+
fs: object,
|
|
38
|
+
source_root: Path,
|
|
39
|
+
artifact_root: Path,
|
|
40
|
+
) -> _PublisherResult: ...
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def _ensure_bundled_scripts_import_path() -> None:
|
|
44
|
+
"""Prepend bundled `resources/scripts` directory to ``sys.path``."""
|
|
45
|
+
|
|
46
|
+
scripts_dir = Path(__file__).resolve().parent.parent / "scripts"
|
|
47
|
+
scripts_dir_str = str(scripts_dir)
|
|
48
|
+
|
|
49
|
+
if scripts_dir_str not in sys.path:
|
|
50
|
+
sys.path.insert(0, scripts_dir_str)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def main() -> int:
|
|
54
|
+
"""Execute the bundled Codex/agents publisher in-process."""
|
|
55
|
+
|
|
56
|
+
_ensure_bundled_scripts_import_path()
|
|
57
|
+
|
|
58
|
+
parser = argparse.ArgumentParser(
|
|
59
|
+
description="Bundled Codex/agents customization publisher wrapper."
|
|
60
|
+
)
|
|
61
|
+
parser.add_argument(
|
|
62
|
+
"--destination",
|
|
63
|
+
required=True,
|
|
64
|
+
help=(
|
|
65
|
+
"Destination workspace root that will receive the copied .codex "
|
|
66
|
+
"and .agents trees."
|
|
67
|
+
),
|
|
68
|
+
)
|
|
69
|
+
args = parser.parse_args()
|
|
70
|
+
|
|
71
|
+
module = importlib.import_module(
|
|
72
|
+
"dev_tools.push_down_codex_and_agents_customizations"
|
|
73
|
+
)
|
|
74
|
+
publish_fn: _PublisherFunction = module.push_down_customizations
|
|
75
|
+
fs_factory: _FileSystemFactory = module.RealPushDownFileSystem
|
|
76
|
+
|
|
77
|
+
customizations_root = (
|
|
78
|
+
Path(__file__).resolve().parent.parent / "codex-and-agents-customizations"
|
|
79
|
+
)
|
|
80
|
+
resolved_destination = Path(args.destination).expanduser().resolve()
|
|
81
|
+
artifact_root = Path.cwd().resolve()
|
|
82
|
+
|
|
83
|
+
summary = publish_fn(
|
|
84
|
+
repo_root=customizations_root,
|
|
85
|
+
destination_root=resolved_destination,
|
|
86
|
+
fs=fs_factory(),
|
|
87
|
+
source_root=customizations_root,
|
|
88
|
+
artifact_root=artifact_root,
|
|
89
|
+
)
|
|
90
|
+
print(f"Wrote push-down summary artifact to: {summary.artifact_path}")
|
|
91
|
+
return 0
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
if __name__ == "__main__":
|
|
95
|
+
raise SystemExit(main())
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"""Compatibility wrapper for extension-side push-down customization publishing.
|
|
2
|
+
|
|
3
|
+
Purpose:
|
|
4
|
+
Preserve the bundled-script entry point while delegating all publishing
|
|
5
|
+
behavior to the bundled package implementation.
|
|
6
|
+
|
|
7
|
+
Usage:
|
|
8
|
+
python push_down_copilot_customizations.py --destination <path>
|
|
9
|
+
|
|
10
|
+
Flow:
|
|
11
|
+
1. Ensure `resources/scripts/` is importable at runtime.
|
|
12
|
+
2. Import `dev_tools.push_down_copilot_customizations` from bundled sources.
|
|
13
|
+
3. Resolve `source_root` to `resources/customizations` payload.
|
|
14
|
+
4. Resolve `artifact_root` to the current working directory.
|
|
15
|
+
5. Invoke publisher in-process with `--destination` from CLI args.
|
|
16
|
+
|
|
17
|
+
Invariants / Constraints:
|
|
18
|
+
- No publishing logic is implemented in this wrapper.
|
|
19
|
+
- Argument contract is owned by the publisher module and forwarded unchanged.
|
|
20
|
+
|
|
21
|
+
Side Effects:
|
|
22
|
+
Imports bundled publisher code and executes it in the current Python process.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
from __future__ import annotations
|
|
26
|
+
|
|
27
|
+
import argparse
|
|
28
|
+
import importlib
|
|
29
|
+
import sys
|
|
30
|
+
from pathlib import Path
|
|
31
|
+
from typing import Protocol
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class _PublisherResult(Protocol):
|
|
35
|
+
"""Typed contract for the PushDownSummary surface accessed by this wrapper."""
|
|
36
|
+
|
|
37
|
+
artifact_path: str
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class _FileSystemFactory(Protocol):
|
|
41
|
+
"""Construction contract for the publisher's filesystem implementation."""
|
|
42
|
+
|
|
43
|
+
def __call__(self) -> object: ...
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class _PublisherFunction(Protocol):
|
|
47
|
+
"""Call contract matching the bundled push_down_customizations signature."""
|
|
48
|
+
|
|
49
|
+
def __call__(
|
|
50
|
+
self,
|
|
51
|
+
*,
|
|
52
|
+
repo_root: Path,
|
|
53
|
+
destination_root: Path,
|
|
54
|
+
fs: object,
|
|
55
|
+
source_root: Path,
|
|
56
|
+
artifact_root: Path,
|
|
57
|
+
) -> _PublisherResult: ...
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def _ensure_bundled_scripts_import_path() -> None:
|
|
61
|
+
"""Prepend bundled `resources/scripts` directory to ``sys.path``.
|
|
62
|
+
|
|
63
|
+
Purpose:
|
|
64
|
+
Make extension-bundled Python packages importable regardless of the
|
|
65
|
+
destination workspace layout.
|
|
66
|
+
|
|
67
|
+
Side Effects:
|
|
68
|
+
Mutates ``sys.path`` by inserting the bundled scripts directory at
|
|
69
|
+
index 0 when not already present.
|
|
70
|
+
"""
|
|
71
|
+
scripts_dir = Path(__file__).resolve().parent.parent / "scripts"
|
|
72
|
+
scripts_dir_str = str(scripts_dir)
|
|
73
|
+
|
|
74
|
+
if scripts_dir_str not in sys.path:
|
|
75
|
+
sys.path.insert(0, scripts_dir_str)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def main() -> int:
|
|
79
|
+
"""Execute bundled push-down customization publisher in-process.
|
|
80
|
+
|
|
81
|
+
Purpose:
|
|
82
|
+
Keep the bundled extension script as a thin adapter and avoid duplicated
|
|
83
|
+
publishing logic while resolving source and artifact roots automatically.
|
|
84
|
+
|
|
85
|
+
Returns:
|
|
86
|
+
Exit code from bundled publisher main function.
|
|
87
|
+
|
|
88
|
+
Side Effects:
|
|
89
|
+
Imports the bundled publisher module and executes its publishing flow.
|
|
90
|
+
"""
|
|
91
|
+
_ensure_bundled_scripts_import_path()
|
|
92
|
+
|
|
93
|
+
parser = argparse.ArgumentParser(
|
|
94
|
+
description="Bundled push-down customization publisher wrapper."
|
|
95
|
+
)
|
|
96
|
+
parser.add_argument(
|
|
97
|
+
"--destination",
|
|
98
|
+
required=True,
|
|
99
|
+
help="Destination workspace root that will receive the copied .github trees.",
|
|
100
|
+
)
|
|
101
|
+
args = parser.parse_args()
|
|
102
|
+
|
|
103
|
+
# Extract typed callables from the dynamically loaded publisher module.
|
|
104
|
+
module = importlib.import_module("dev_tools.push_down_copilot_customizations")
|
|
105
|
+
publish_fn: _PublisherFunction = module.push_down_customizations
|
|
106
|
+
fs_factory: _FileSystemFactory = module.RealPushDownFileSystem
|
|
107
|
+
|
|
108
|
+
customizations_root = Path(__file__).resolve().parent.parent / "customizations"
|
|
109
|
+
resolved_destination = Path(args.destination).expanduser().resolve()
|
|
110
|
+
artifact_root = Path.cwd().resolve()
|
|
111
|
+
|
|
112
|
+
summary = publish_fn(
|
|
113
|
+
repo_root=customizations_root,
|
|
114
|
+
destination_root=resolved_destination,
|
|
115
|
+
fs=fs_factory(),
|
|
116
|
+
source_root=customizations_root,
|
|
117
|
+
artifact_root=artifact_root,
|
|
118
|
+
)
|
|
119
|
+
print(f"Wrote push-down summary artifact to: {summary.artifact_path}")
|
|
120
|
+
return 0
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
if __name__ == "__main__":
|
|
124
|
+
raise SystemExit(main())
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"""Compatibility wrapper for extension-side atomic-plan prompt resolution.
|
|
2
|
+
|
|
3
|
+
Purpose:
|
|
4
|
+
Preserve a stable bundled-script entry point while delegating atomic-plan
|
|
5
|
+
prompt resolution to the bundled resolver module under `resources/scripts`.
|
|
6
|
+
|
|
7
|
+
Usage:
|
|
8
|
+
python resolve_atomic_plan_prompt.py --target <plan> --workspace <root>
|
|
9
|
+
|
|
10
|
+
Flow:
|
|
11
|
+
1. Ensure `resources/scripts/` is importable.
|
|
12
|
+
2. Inject the bundled atomic-plan prompt template when `--template` is absent.
|
|
13
|
+
3. Import `dev_tools.resolve_file_prompt` from bundled sources.
|
|
14
|
+
4. Execute the bundled resolver in-process and return its exit code.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
from __future__ import annotations
|
|
18
|
+
|
|
19
|
+
import importlib
|
|
20
|
+
import sys
|
|
21
|
+
from pathlib import Path
|
|
22
|
+
from typing import TYPE_CHECKING, cast
|
|
23
|
+
|
|
24
|
+
if TYPE_CHECKING:
|
|
25
|
+
from collections.abc import Callable
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def _ensure_bundled_scripts_import_path() -> None:
|
|
29
|
+
"""Prepend bundled `resources/scripts` directory to `sys.path`."""
|
|
30
|
+
scripts_dir = Path(__file__).resolve().parent.parent / "scripts"
|
|
31
|
+
scripts_dir_str = str(scripts_dir)
|
|
32
|
+
if scripts_dir_str not in sys.path:
|
|
33
|
+
sys.path.insert(0, scripts_dir_str)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def main() -> int:
|
|
37
|
+
"""Execute bundled atomic-plan prompt resolution in-process.
|
|
38
|
+
|
|
39
|
+
Purpose:
|
|
40
|
+
Keep the wrapper free of prompt-resolution business logic while ensuring
|
|
41
|
+
the bundled atomic-plan prompt template is supplied when the caller does
|
|
42
|
+
not pass `--template` explicitly.
|
|
43
|
+
|
|
44
|
+
Args:
|
|
45
|
+
None.
|
|
46
|
+
|
|
47
|
+
Returns:
|
|
48
|
+
int: Exit code returned by the bundled resolver module.
|
|
49
|
+
|
|
50
|
+
Raises:
|
|
51
|
+
None explicitly. Import or resolver failures propagate to the caller.
|
|
52
|
+
|
|
53
|
+
Side Effects:
|
|
54
|
+
Mutates `sys.argv` additively when `--template` is absent and imports the
|
|
55
|
+
bundled resolver module in the current Python process.
|
|
56
|
+
"""
|
|
57
|
+
_ensure_bundled_scripts_import_path()
|
|
58
|
+
|
|
59
|
+
template_path = (
|
|
60
|
+
Path(__file__).resolve().parent.parent
|
|
61
|
+
/ "customizations"
|
|
62
|
+
/ ".github"
|
|
63
|
+
/ "prompts"
|
|
64
|
+
/ "generate-atomic-plan.prompt.md"
|
|
65
|
+
)
|
|
66
|
+
if "--template" not in sys.argv:
|
|
67
|
+
sys.argv.extend(["--template", str(template_path)])
|
|
68
|
+
|
|
69
|
+
module = importlib.import_module("dev_tools.resolve_file_prompt")
|
|
70
|
+
module_main = cast("Callable[[], int]", module.main)
|
|
71
|
+
return int(module_main())
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
if __name__ == "__main__":
|
|
75
|
+
raise SystemExit(main())
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"""Compatibility wrapper for extension-side hard-lock prompt resolution.
|
|
2
|
+
|
|
3
|
+
Purpose:
|
|
4
|
+
Preserve the bundled-script entry point while delegating hard-lock prompt
|
|
5
|
+
resolution behavior to the bundled package implementation.
|
|
6
|
+
|
|
7
|
+
Usage:
|
|
8
|
+
python resolve_hard_lock_prompt.py --target <plan> --workspace <workspace>
|
|
9
|
+
|
|
10
|
+
Flow:
|
|
11
|
+
1. Ensure `resources/scripts/` is importable at runtime.
|
|
12
|
+
2. Inject the bundled `.github/codex` template root when the caller omitted it.
|
|
13
|
+
3. Import `dev_tools.resolve_hard_lock_prompt` from bundled sources.
|
|
14
|
+
4. Invoke the bundled CLI entrypoint in-process with the active CLI args.
|
|
15
|
+
|
|
16
|
+
Invariants / Constraints:
|
|
17
|
+
- No prompt-resolution business logic is implemented in this wrapper.
|
|
18
|
+
- Argument contract is owned by the bundled resolver module and forwarded
|
|
19
|
+
unchanged except for additive `--template-root` injection.
|
|
20
|
+
|
|
21
|
+
Side Effects:
|
|
22
|
+
Imports bundled resolver 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 hard-lock prompt resolution in-process.
|
|
47
|
+
|
|
48
|
+
Injects `--template-root` pointing to the extension's bundled hard-lock
|
|
49
|
+
prompt templates when the caller did not already provide one.
|
|
50
|
+
"""
|
|
51
|
+
_ensure_bundled_scripts_import_path()
|
|
52
|
+
|
|
53
|
+
template_root = str(
|
|
54
|
+
Path(__file__).resolve().parent.parent / "customizations" / ".github" / "codex"
|
|
55
|
+
)
|
|
56
|
+
if "--template-root" not in sys.argv:
|
|
57
|
+
sys.argv.extend(["--template-root", template_root])
|
|
58
|
+
|
|
59
|
+
module = importlib.import_module("dev_tools.resolve_hard_lock_prompt")
|
|
60
|
+
module_main = cast("Callable[[], int]", module.main)
|
|
61
|
+
return int(module_main())
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
if __name__ == "__main__":
|
|
65
|
+
raise SystemExit(main())
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
[CmdletBinding()]
|
|
2
|
+
param(
|
|
3
|
+
[Parameter()]
|
|
4
|
+
[string] $WorkspaceRoot = ".",
|
|
5
|
+
|
|
6
|
+
[Parameter()]
|
|
7
|
+
[string[]] $ScanFolders
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
Set-StrictMode -Version Latest
|
|
11
|
+
$ErrorActionPreference = "Stop"
|
|
12
|
+
|
|
13
|
+
$poshQcModulePath = Join-Path -Path $PSScriptRoot -ChildPath "..\powershell\PoshQC\PoshQC.psd1"
|
|
14
|
+
Import-Module $poshQcModulePath -Force
|
|
15
|
+
|
|
16
|
+
Invoke-PoshQCAnalyzeAutofix -Root $WorkspaceRoot -ScanFolders $ScanFolders
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
[CmdletBinding()]
|
|
2
|
+
param(
|
|
3
|
+
[Parameter()]
|
|
4
|
+
[string] $WorkspaceRoot = ".",
|
|
5
|
+
|
|
6
|
+
[Parameter()]
|
|
7
|
+
[string[]] $ScanFolders,
|
|
8
|
+
|
|
9
|
+
[Parameter()]
|
|
10
|
+
[string] $ScanFoldersJson
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
Set-StrictMode -Version Latest
|
|
14
|
+
$ErrorActionPreference = "Stop"
|
|
15
|
+
|
|
16
|
+
$poshQcModulePath = Join-Path -Path $PSScriptRoot -ChildPath "..\powershell\PoshQC\PoshQC.psd1"
|
|
17
|
+
Import-Module $poshQcModulePath -Force
|
|
18
|
+
|
|
19
|
+
$resolvedScanFolders = $ScanFolders
|
|
20
|
+
if (-not [string]::IsNullOrWhiteSpace($ScanFoldersJson)) {
|
|
21
|
+
$resolvedScanFolders = @(
|
|
22
|
+
ConvertFrom-Json -InputObject $ScanFoldersJson
|
|
23
|
+
) | ForEach-Object { [string] $_ }
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
Invoke-PoshQCAnalyze -Root $WorkspaceRoot -ScanFolders $resolvedScanFolders
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
[CmdletBinding()]
|
|
2
|
+
param(
|
|
3
|
+
[Parameter()]
|
|
4
|
+
[string] $WorkspaceRoot = ".",
|
|
5
|
+
|
|
6
|
+
[Parameter()]
|
|
7
|
+
[string[]] $ScanFolders,
|
|
8
|
+
|
|
9
|
+
[Parameter()]
|
|
10
|
+
[string] $ScanFoldersJson
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
Set-StrictMode -Version Latest
|
|
14
|
+
$ErrorActionPreference = "Stop"
|
|
15
|
+
|
|
16
|
+
$poshQcModulePath = Join-Path -Path $PSScriptRoot -ChildPath "..\powershell\PoshQC\PoshQC.psd1"
|
|
17
|
+
Import-Module $poshQcModulePath -Force
|
|
18
|
+
|
|
19
|
+
$resolvedScanFolders = $ScanFolders
|
|
20
|
+
if (-not [string]::IsNullOrWhiteSpace($ScanFoldersJson)) {
|
|
21
|
+
$resolvedScanFolders = @(
|
|
22
|
+
ConvertFrom-Json -InputObject $ScanFoldersJson
|
|
23
|
+
) | ForEach-Object { [string] $_ }
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
Invoke-PoshQCFormat -Root $WorkspaceRoot -ScanFolders $resolvedScanFolders
|