@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,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
applyTo: ".github/workflows/**/*.yml,.github/workflows/**/*.yaml"
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# GitHub Actions workflow policy
|
|
6
|
+
|
|
7
|
+
- Treat `.github/workflows/*.yml` files as **CI-critical**:
|
|
8
|
+
- Do not change the overall job structure unless explicitly requested.
|
|
9
|
+
- Preserve existing `on:` triggers, branch filters, and permissions unless change is intentional and documented.
|
|
10
|
+
|
|
11
|
+
- **Schema & linting**
|
|
12
|
+
- All workflows **must pass `actionlint`**.
|
|
13
|
+
- Before finalizing changes, ensure the YAML is valid with:
|
|
14
|
+
- Local: `scripts/dev-tools/run-actionlint.ps1`
|
|
15
|
+
- CI: job `actionlint` in `.github/workflows/ci.yml`
|
|
16
|
+
- Avoid constructs that are not supported by `actionlint` or GitHub Actions, such as:
|
|
17
|
+
- Misplaced or misspelled keys (e.g. `matrix` at job level instead of under `strategy:`).
|
|
18
|
+
- Unknown named-values or expressions.
|
|
19
|
+
|
|
20
|
+
- **Best practices**
|
|
21
|
+
- Keep jobs small and focused (quality checks, build, test, deploy).
|
|
22
|
+
- Use the GitHub Actions expression syntax accurately: `\${{ ... }}`.
|
|
23
|
+
- Prefer reusable actions over inlined complex bash scripts when practical.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
applyTo: "**/*.ps1,**/*.psm1,**/*.psd1,**/*.ps1xml"
|
|
3
|
+
name: powershell-code-change-policy
|
|
4
|
+
description: "PowerShell-specific code change rules layered on top of the general code change policy"
|
|
5
|
+
---
|
|
6
|
+
# PowerShell Code Change Policy
|
|
7
|
+
|
|
8
|
+
This policy **extends** `general-code-change.instructions.md` and applies to all PowerShell source, scripts, and modules (`*.ps1`, `*.psm1`) in this repo.
|
|
9
|
+
|
|
10
|
+
You must:
|
|
11
|
+
|
|
12
|
+
- Apply **all** rules in the general code change policy.
|
|
13
|
+
- Apply **all** PowerShell-specific rules in this file.
|
|
14
|
+
- Apply the unit test policies (`general-unit-test.instructions.md` and `powershell-unit-test.instructions.md`) for any PowerShell tests.
|
|
15
|
+
|
|
16
|
+
If you encounter any conflicting instructions, **halt and notify the user.**
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 1. Tooling & Baseline for PowerShell
|
|
21
|
+
|
|
22
|
+
**Agent execution requirement (explicit):**
|
|
23
|
+
|
|
24
|
+
- Agents must use the MCP server functions: `mcp__drmCopilotExtension__run_poshqc_format`, `mcp__drmCopilotExtension__run_poshqc_analyze`, `mcp_drmcopilotext_run_poshqc_test`, and `mcp__drmCopilotExtension__run_poshqc_analyze_autofix`.
|
|
25
|
+
- Agents must **not** use VS Code task wrappers as a substitute.
|
|
26
|
+
|
|
27
|
+
1) **Formatting - Invoke-Formatter**
|
|
28
|
+
|
|
29
|
+
- Format all PowerShell files using the PoshQC formatter (Invoke-Formatter).
|
|
30
|
+
- **Agent execution:** `mcp__drmCopilotExtension__run_poshqc_format`
|
|
31
|
+
- Do not hand-format; re-run the formatter whenever PSScriptAnalyzer would change whitespace/indentation.
|
|
32
|
+
|
|
33
|
+
2) **Linting - PSScriptAnalyzer**
|
|
34
|
+
|
|
35
|
+
- Run the PoshQC analyzer (PSScriptAnalyzer) with repo settings.
|
|
36
|
+
- **Agent execution:** `mcp__drmCopilotExtension__run_poshqc_analyze`
|
|
37
|
+
- Optional autofix: `mcp__drmCopilotExtension__run_poshqc_analyze_autofix`; review diffs after running.
|
|
38
|
+
- Fix **all** findings (Error/Warning/Information). No rule suppressions unless strictly necessary and localized with a comment.
|
|
39
|
+
|
|
40
|
+
3) **Compatibility**
|
|
41
|
+
|
|
42
|
+
- Keep scripts compatible with **PowerShell 7+** (enforced via PSScriptAnalyzer settings).
|
|
43
|
+
|
|
44
|
+
> Testing tools are defined in the PowerShell unit test policy; do not redefine them here.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 2. PowerShell Design & Safety
|
|
49
|
+
|
|
50
|
+
- Prefer **advanced functions** with `CmdletBinding()` and named parameters over ad-hoc script blocks.
|
|
51
|
+
- Add `[Parameter(Mandatory = $true)]` and validation attributes where appropriate; avoid positional parameters for user-facing scripts.
|
|
52
|
+
- For any state-changing action, implement **ShouldProcess/SupportsShouldProcess** and gate destructive behavior with `$PSCmdlet.ShouldProcess(...)`.
|
|
53
|
+
- Avoid global state and mutable script-scoped variables unless required; pass data explicitly.
|
|
54
|
+
- Avoid `Invoke-Expression`, plaintext secrets, and hard-coded credentials/paths. Use secure defaults.
|
|
55
|
+
- Use `Write-Error`/`throw` for failures; avoid silent catch-alls. Bubble errors unless you can add actionable context.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## 3. Structure, Naming, and Comments
|
|
60
|
+
|
|
61
|
+
- Keep scripts **cohesive and under 500 lines** (matches general policy).
|
|
62
|
+
- Use approved verbs and descriptive nouns for functions (PSScriptAnalyzer will enforce).
|
|
63
|
+
- Prefer modules/helpers over copy-paste between scripts; share common logic in dedicated helper functions.
|
|
64
|
+
- Comment **why** for non-obvious patterns (e.g., rule suppressions, compatibility shims), not what.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## 4. Running the Toolchain (PowerShell)
|
|
69
|
+
|
|
70
|
+
When PowerShell code changes, your toolchain loop must include:
|
|
71
|
+
|
|
72
|
+
1. Format: `mcp__drmCopilotExtension__run_poshqc_format`
|
|
73
|
+
2. Analyze: `mcp__drmCopilotExtension__run_poshqc_analyze`
|
|
74
|
+
3. (Type checking is not applicable for PowerShell; skip to testing.)
|
|
75
|
+
4. Test: `mcp_drmcopilotext_run_poshqc_test`
|
|
76
|
+
|
|
77
|
+
The MCP server functions above are the approved toolchain contract for agents.
|
|
78
|
+
|
|
79
|
+
Rerun the loop from step 1 if any step changes code or fails.
|
|
80
|
+
|
|
81
|
+
> Install prerequisites once with `pwsh -NoProfile -ExecutionPolicy Bypass -Command "Import-Module ./scripts/powershell/PoshQC; Install-PoshQCTools"` (installs PSScriptAnalyzer + Pester to CurrentUser).
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
applyTo: "**/*.ps1,**/*.psm1,**/*.psd1,**/*.ps1xml"
|
|
3
|
+
name: powershell-unit-test-policy
|
|
4
|
+
description: "PowerShell-specific unit test rules, layered on top of the general unit test policy"
|
|
5
|
+
---
|
|
6
|
+
# PowerShell Unit Test Policy
|
|
7
|
+
|
|
8
|
+
This policy **extends** `general-unit-test.instructions.md` and applies to all PowerShell tests in this repo.
|
|
9
|
+
|
|
10
|
+
You must follow **both**:
|
|
11
|
+
|
|
12
|
+
- The general unit test policy, and
|
|
13
|
+
- The PowerShell-specific rules below.
|
|
14
|
+
|
|
15
|
+
If there is any conflict between these documents, halt and notify the user.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 1. Framework and Scope
|
|
20
|
+
|
|
21
|
+
- **Testing framework:** All PowerShell tests must use **Pester** (v5.x).
|
|
22
|
+
- Use the repo config at `scripts/powershell/PoshQC/settings/pester.runsettings.psd1`.
|
|
23
|
+
- **Agent execution requirement:** use the MCP server function `mcp_drmcopilotext_run_poshqc_test`. Do **not** use VS Code task wrappers as a substitute.
|
|
24
|
+
- Keep tests compatible with PowerShell 7+.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 2. Test Style and Structure (PowerShell)
|
|
29
|
+
|
|
30
|
+
- **Focused unit tests**
|
|
31
|
+
|
|
32
|
+
- Write focused tests that exercise a single function, method, or behavior.
|
|
33
|
+
- Prefer testing behavior directly over testing implementation details.
|
|
34
|
+
|
|
35
|
+
- **Mocking**
|
|
36
|
+
|
|
37
|
+
- Use mocking sparingly. Prefer real code paths and pure functions where possible.
|
|
38
|
+
- Only introduce mocks/stubs when needed to satisfy isolation, determinism and “avoid external dependencies” requirements (e.g., external services, heavy resources).
|
|
39
|
+
|
|
40
|
+
- **Organization**
|
|
41
|
+
|
|
42
|
+
- Organize tests into folders in a way that mirrors the code under test (e.g., `tests/scripts/dev-tools/ScriptName.Tests.ps1` for `scripts/dev-tools/ScriptName.ps1`).
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 3. Naming and Readability (Python)
|
|
47
|
+
|
|
48
|
+
- **Naming conventions**
|
|
49
|
+
|
|
50
|
+
- Name test files `*.Tests.ps1`.
|
|
51
|
+
- Organize tests with `Describe`/`Context`/`It`. One behavior per `It`.
|
|
52
|
+
- Group related tests logically within the same file or test class.
|
|
53
|
+
|
|
54
|
+
- **Docstrings and comments**
|
|
55
|
+
|
|
56
|
+
- Where the intent is not obvious from the `Describe`/`Context`/`It` alone, include a short docstring or comment summarizing:
|
|
57
|
+
- The scenario being tested.
|
|
58
|
+
- The expected outcome.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## 4. Running the Toolchain (PowerShell Tests)
|
|
63
|
+
|
|
64
|
+
- When running the "After Making Changes" toolchain, the **testing step** for PowerShell must use:
|
|
65
|
+
- MCP server function: `mcp_drmcopilotext_run_poshqc_test`
|
|
66
|
+
- Agents must use the MCP server function. VS Code task wrappers are not an approved substitute.
|
|
67
|
+
- Do **not** substitute other test runners for PowerShell work without explicit approval.
|
|
68
|
+
|
|
69
|
+
This file defines **how** PowerShell tests are written and executed; the general code change policy defines **when** to run the toolchain and how strictly to enforce it.
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
---
|
|
2
|
+
applyTo: "**/*.py"
|
|
3
|
+
name: python-code-change-policy
|
|
4
|
+
description: "Python-specific code change rules layered on top of the general code change policy"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Python Code Change Policy
|
|
8
|
+
|
|
9
|
+
This policy **extends** `general-code-change.instructions.md` and applies to all **Python source, test, and script files** (`*.py`) in this repo.
|
|
10
|
+
|
|
11
|
+
You must:
|
|
12
|
+
|
|
13
|
+
- Apply **all** rules in the general code change policy.
|
|
14
|
+
- Apply **all** Python-specific rules in this file.
|
|
15
|
+
- Apply the unit test policies (`general-unit-test.instructions.md` and `python-unit-test.instructions.md`) for any work involving tests.
|
|
16
|
+
|
|
17
|
+
If you encounter any conflicting instructions between these documents, **halt and notify the user.**
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 1. Tooling & Baseline for Python
|
|
22
|
+
|
|
23
|
+
These are the required tools for Python code in this repo:
|
|
24
|
+
|
|
25
|
+
1. **Formatting — Black**
|
|
26
|
+
|
|
27
|
+
- All Python code must be formatted with **Black** (default settings).
|
|
28
|
+
- Do not hand-format; if a diff disagrees with Black, Black wins.
|
|
29
|
+
- Approved command: `poetry run black .`
|
|
30
|
+
|
|
31
|
+
2. **Linting — Ruff**
|
|
32
|
+
|
|
33
|
+
- Python code must pass **Ruff** using the project’s configuration.
|
|
34
|
+
- **Suppression Authorization** (see `python-suppressions.instructions.md`):
|
|
35
|
+
- All `# noqa` suppressions must either:
|
|
36
|
+
1. **Match a pre-authorized pattern** in `python-suppressions.instructions.md`, OR
|
|
37
|
+
2. **Have explicit user approval** for that specific suppression
|
|
38
|
+
- If you encounter a Ruff error that seems to require a suppression:
|
|
39
|
+
1. First, attempt to resolve it without a suppression (refactor, restructure, use approved patterns)
|
|
40
|
+
2. If that fails, try at least five more distinct approaches
|
|
41
|
+
3. Continue iterating until you solve the problem or demonstrate why each approach fails
|
|
42
|
+
4. Only after multiple documented failed attempts may you request user approval, providing:
|
|
43
|
+
- The specific Ruff rule and error message
|
|
44
|
+
- Each approach you tried and why it failed
|
|
45
|
+
- Why a suppression is the only remaining option
|
|
46
|
+
- Use **targeted, single-line** suppressions with required comment format from `python-suppressions.instructions.md`.
|
|
47
|
+
- Approved command: `poetry run ruff check`
|
|
48
|
+
|
|
49
|
+
3. **Typing — Pyright**
|
|
50
|
+
|
|
51
|
+
- Python code must be **fully type-annotated** and pass **Pyright**.
|
|
52
|
+
- Avoid `Any` unless absolutely unavoidable. If `Any` is used, include a short comment explaining why.
|
|
53
|
+
- **Suppression Authorization** (see `python-suppressions.instructions.md`):
|
|
54
|
+
- All `# type: ignore` suppressions must either:
|
|
55
|
+
1. **Match a pre-authorized pattern** in `python-suppressions.instructions.md`, OR
|
|
56
|
+
2. **Have explicit user approval** for that specific suppression
|
|
57
|
+
- If you encounter a Pyright error that seems to require a suppression:
|
|
58
|
+
1. First, attempt to resolve it without a suppression (add proper types, use typed wrappers, refactor)
|
|
59
|
+
2. If that fails, try at least five more distinct approaches
|
|
60
|
+
3. Continue iterating until you solve the problem or demonstrate why each approach fails
|
|
61
|
+
4. Only after multiple documented failed attempts may you request user approval, providing:
|
|
62
|
+
- The specific Pyright error and diagnostic code
|
|
63
|
+
- Each approach you tried and why it failed
|
|
64
|
+
- Why a suppression is the only remaining option
|
|
65
|
+
- **All custom Python code** (src, tests, scripts) must be type-checked.
|
|
66
|
+
- Only exclude third-party packages without proper stubs (e.g., `tkinter`, `pandas`).
|
|
67
|
+
- When using untyped third-party libraries:
|
|
68
|
+
- Wrap usage in custom functions or classes with proper type hints.
|
|
69
|
+
- Use **line-specific** `# type: ignore[...]` comments instead of excluding whole files or directories.
|
|
70
|
+
- Approved command: `poetry run pyright`
|
|
71
|
+
|
|
72
|
+
> **Testing tools and behavior are defined in the unit test policies.** Do not define test behavior here; instead, obey `general-unit-test.instructions.md` and `python-unit-test.instructions.md`.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 2. Python Design & Typing Principles
|
|
77
|
+
|
|
78
|
+
These refine the general design principles for Python code.
|
|
79
|
+
|
|
80
|
+
1. **Strong typing by default**
|
|
81
|
+
|
|
82
|
+
- All public functions, methods, and class constructors must have full type hints for parameters and return values.
|
|
83
|
+
- Internal helpers should also be annotated unless they are extremely trivial and short-lived.
|
|
84
|
+
|
|
85
|
+
2. **dataclasses and value objects**
|
|
86
|
+
|
|
87
|
+
- Prefer `@dataclass` for value objects and simple data carriers.
|
|
88
|
+
- Use `frozen=True` where appropriate to enforce immutability.
|
|
89
|
+
- Keep dataclasses focused on representing data + invariants, not on performing orchestration.
|
|
90
|
+
|
|
91
|
+
3. **Protocols and abstract base classes**
|
|
92
|
+
|
|
93
|
+
- Use `typing.Protocol` or `abc.ABC` when multiple implementations are expected (e.g., different corpus sources, stores, or pipelines).
|
|
94
|
+
- Code should depend on these interfaces rather than concrete implementations where flexibility is important.
|
|
95
|
+
|
|
96
|
+
4. **Utility code**
|
|
97
|
+
|
|
98
|
+
- Avoid static-method-only “utility” classes.
|
|
99
|
+
- In Python, prefer modules with top-level functions for helpers and simple transforms.
|
|
100
|
+
- If you need multiple interchangeable implementations, use protocols/ABCs + classes, not utility classes.
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## 3. Classes, Functions, and APIs (Python-Specific Guidance)
|
|
105
|
+
|
|
106
|
+
This section refines the general “classes vs functions” rules for Python. :contentReference[oaicite:4]{index=4}
|
|
107
|
+
|
|
108
|
+
### 3.1 Classes for domain concepts and workflows
|
|
109
|
+
|
|
110
|
+
Use classes for:
|
|
111
|
+
|
|
112
|
+
- **Domain concepts** with data + behavior
|
|
113
|
+
- e.g. `QifTransaction`, `LexileCorpus`, `ContactMatcher`, `CorpusPipeline`.
|
|
114
|
+
- **State + invariants** that must stay consistent
|
|
115
|
+
- e.g. a `LexileModel` that must keep weights, vocabulary, and metadata in sync.
|
|
116
|
+
- **Multiple implementations behind a shared contract**
|
|
117
|
+
- e.g. `ITextSource` / `TextSourceProtocol` with `EpubTextSource`, `GutenbergTextSource`, etc.
|
|
118
|
+
- **Multi-step workflows** that share context
|
|
119
|
+
- e.g. a pipeline with `.download()`, `.normalize()`, `.index()`, `.export()`.
|
|
120
|
+
|
|
121
|
+
When using classes in Python:
|
|
122
|
+
|
|
123
|
+
- Prefer `@dataclass` for value objects.
|
|
124
|
+
- Keep methods small and focused; one conceptual responsibility per method.
|
|
125
|
+
- Avoid “God objects” that accumulate too many unrelated concerns.
|
|
126
|
+
|
|
127
|
+
### 3.2 Functions for small, pure helpers
|
|
128
|
+
|
|
129
|
+
Use standalone functions when:
|
|
130
|
+
|
|
131
|
+
- The operation is **pure, stateless, and simple**, for example:
|
|
132
|
+
- `normalize_whitespace(text: str) -> str`
|
|
133
|
+
- `slugify(title: str) -> str`
|
|
134
|
+
- It is a **small helper** that does not naturally belong on a specific domain class.
|
|
135
|
+
- It is a **simple transformation** from inputs to outputs.
|
|
136
|
+
|
|
137
|
+
Rules for Python helper functions:
|
|
138
|
+
|
|
139
|
+
- Fully annotate parameters and return types.
|
|
140
|
+
- Name functions by what they do (`parse_qif_file`, `compute_lexile_score`).
|
|
141
|
+
- Keep functions short, readable, and low in branching; factor complex logic into smaller helpers.
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## 4. Error Handling, Logging, and Contracts (Python)
|
|
146
|
+
|
|
147
|
+
These refine the general error-handling rules with Python-specific details.
|
|
148
|
+
|
|
149
|
+
1. **Exceptions**
|
|
150
|
+
|
|
151
|
+
- Fail **fast and explicitly** by raising clear, specific exceptions when invariants are violated.
|
|
152
|
+
- Avoid broad `except:` clauses.
|
|
153
|
+
- Avoid `except Exception:` unless you:
|
|
154
|
+
- Immediately re-raise with added context, or
|
|
155
|
+
- Are at a well-defined boundary (e.g., CLI entry point) and log the full context.
|
|
156
|
+
|
|
157
|
+
2. **Logging**
|
|
158
|
+
|
|
159
|
+
- Use the project’s logging pattern, typically the standard `logging` module.
|
|
160
|
+
- Do not add ad-hoc `print` statements for permanent behavior.
|
|
161
|
+
- Log at appropriate levels (`debug`, `info`, `warning`, `error`) and include enough context to debug issues.
|
|
162
|
+
|
|
163
|
+
3. **Contracts / invariants**
|
|
164
|
+
|
|
165
|
+
- Enforce invariants at construction time (`__init__` or `__post_init__` for dataclasses).
|
|
166
|
+
- Use `assert` only for internal sanity checks, not for user-facing validation or recoverable errors.
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## 5. Module & File Structure (Python)
|
|
171
|
+
|
|
172
|
+
The general policy covers cohesion and file size; this section adds Python-specific structure rules.
|
|
173
|
+
|
|
174
|
+
1. **Cohesive modules**
|
|
175
|
+
|
|
176
|
+
- A module should have a clear purpose (e.g. “QIF parsing”, “Lexile model”, “corpus download”).
|
|
177
|
+
- Avoid “grab-bag” modules like `utils.py` that mix many unrelated concerns.
|
|
178
|
+
|
|
179
|
+
2. **Public vs internal**
|
|
180
|
+
|
|
181
|
+
- Keep the public surface area **small and intentional**.
|
|
182
|
+
- Use `_`-prefixed module members or `_internal` modules for code that should not be used outside the module/package.
|
|
183
|
+
- Do not expose internal helpers via `__all__` unless strictly necessary.
|
|
184
|
+
|
|
185
|
+
3. **Imports**
|
|
186
|
+
|
|
187
|
+
- Prefer **absolute imports** within the project (e.g. `from project.module import Thing`) instead of deep relative imports.
|
|
188
|
+
- Avoid circular dependencies; if they appear, refactor shared logic into a lower-level module.
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## 6. Naming, Docs, and Comments (Python)
|
|
193
|
+
|
|
194
|
+
This section specializes the general naming/documentation rules for Python using PEP 8.
|
|
195
|
+
|
|
196
|
+
1. **PEP 8 naming**
|
|
197
|
+
|
|
198
|
+
- Use `snake_case` for functions, methods, and variables.
|
|
199
|
+
- Use `PascalCase` for classes and exceptions.
|
|
200
|
+
- Use `CONSTANT_CASE` for module-level constants.
|
|
201
|
+
- Avoid cryptic abbreviations unless they are standard (`id`, `url`, `db`).
|
|
202
|
+
|
|
203
|
+
2. **Docstrings**
|
|
204
|
+
|
|
205
|
+
- Public classes and methods should have a short docstring describing:
|
|
206
|
+
- What it does.
|
|
207
|
+
- Important arguments.
|
|
208
|
+
- What it returns or any side effects.
|
|
209
|
+
- Follow the prevailing docstring style in this repo (e.g., Google-style, NumPy-style, or simple one-paragraph docstrings).
|
|
210
|
+
|
|
211
|
+
3. **Comments**
|
|
212
|
+
|
|
213
|
+
- Comment **why**, not what; the code should make the “what” clear.
|
|
214
|
+
- For non-obvious patterns, workarounds, or `# type: ignore[...]` and `# noqa` uses, add a short comment explaining the reasoning.
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## 7. Dependencies and Third-Party Libraries (Python)
|
|
219
|
+
|
|
220
|
+
The general policy defines overall dependency rules; this section notes Python-specific expectations.
|
|
221
|
+
|
|
222
|
+
- Prefer libraries with good type stubs (built-in or via `types-...` packages).
|
|
223
|
+
- Do not add new runtime dependencies casually; only add them when:
|
|
224
|
+
- There is no reasonable standard-library or existing-dependency alternative, and
|
|
225
|
+
- The library is well-maintained and widely used.
|
|
226
|
+
- When wrapping third-party libraries, hide them behind small, typed adapter functions or classes so the rest of the codebase depends on your interfaces, not the raw third-party APIs.
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
|