@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,184 @@
|
|
|
1
|
+
---
|
|
2
|
+
applyTo: "**/*.cs,**/*.csproj,**/*.props,**/*.targets"
|
|
3
|
+
name: csharp-code-change-policy
|
|
4
|
+
description: "C#-specific code change rules layered on top of the general code change policy"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# C# Code Change Policy
|
|
8
|
+
|
|
9
|
+
This policy **extends** `general-code-change.instructions.md` and applies to all **C# source, test, and build-configuration files** (`*.cs`, `*.csproj`, `*.props`, `*.targets`) in this repo.
|
|
10
|
+
|
|
11
|
+
You must:
|
|
12
|
+
|
|
13
|
+
- Apply **all** rules in the general code change policy.
|
|
14
|
+
- Apply **all** C#-specific rules in this file.
|
|
15
|
+
- Apply the unit test policies (`general-unit-test.instructions.md` and `csharp-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 C#
|
|
22
|
+
|
|
23
|
+
These are the required tools for C# code in this repo:
|
|
24
|
+
|
|
25
|
+
1. **Formatting — `csharpier`**
|
|
26
|
+
|
|
27
|
+
- All C# source files (`*.cs`) must be formatted with `csharpier`.
|
|
28
|
+
- Do **not** use `dotnet format` — it loads the solution/project model and can mis-handle legacy VSTO / .NET Framework projects by rewriting `.csproj` files.
|
|
29
|
+
- `csharpier` is file-based and formats only `*.cs` without touching project files.
|
|
30
|
+
- Do not hand-format; if a diff disagrees with `csharpier`, formatter output wins.
|
|
31
|
+
- Approved commands:
|
|
32
|
+
- `dotnet tool run csharpier .`
|
|
33
|
+
- or `csharpier .` (if installed globally)
|
|
34
|
+
|
|
35
|
+
2. **Linting / Static Analysis — .NET analyzers**
|
|
36
|
+
|
|
37
|
+
- C# code must pass Roslyn/.NET analyzer diagnostics configured by `.editorconfig`, `.globalconfig`, and project properties.
|
|
38
|
+
- Enforce analyzer diagnostics in build using `EnableNETAnalyzers` and `EnforceCodeStyleInBuild`.
|
|
39
|
+
- Prefer fixing diagnostics over suppressing them.
|
|
40
|
+
- Approved commands (Windows; choose the variant for your shell):
|
|
41
|
+
- **CMD / Developer Command Prompt:** `msbuild TaskMaster.sln /t:Build /p:Configuration=Debug /p:Platform="Any CPU" /p:EnableNETAnalyzers=true /p:EnforceCodeStyleInBuild=true`
|
|
42
|
+
- **PowerShell:** `msbuild TaskMaster.sln /t:Build /p:Configuration=Debug /p:Platform='Any CPU' /p:EnableNETAnalyzers=true /p:EnforceCodeStyleInBuild=true`
|
|
43
|
+
|
|
44
|
+
3. **Type Checking — C# compiler + nullable analysis**
|
|
45
|
+
|
|
46
|
+
- Treat C# compiler diagnostics and nullable-flow warnings as first-class type-safety checks.
|
|
47
|
+
- Enable nullable reference types and fail builds on warnings for touched code paths.
|
|
48
|
+
- Avoid introducing nullable warnings; fix the root null-state issue instead.
|
|
49
|
+
- Approved commands (Windows; choose the variant for your shell):
|
|
50
|
+
- **CMD / Developer Command Prompt:** `msbuild TaskMaster.sln /t:Build /p:Configuration=Debug /p:Platform="Any CPU" /p:Nullable=enable /p:TreatWarningsAsErrors=true`
|
|
51
|
+
- **PowerShell:** `msbuild TaskMaster.sln /t:Build /p:Configuration=Debug /p:Platform='Any CPU' /p:Nullable=enable /p:TreatWarningsAsErrors=true`
|
|
52
|
+
|
|
53
|
+
> **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 `csharp-unit-test.instructions.md`.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 2. C# Design & Type-Safety Principles
|
|
58
|
+
|
|
59
|
+
These refine the general design principles for C# code.
|
|
60
|
+
|
|
61
|
+
1. **Strong contracts and explicit APIs**
|
|
62
|
+
|
|
63
|
+
- Public methods, constructors, and properties must express clear contracts.
|
|
64
|
+
- Use explicit types at public boundaries; use `var` only when the type is obvious.
|
|
65
|
+
|
|
66
|
+
2. **Null-safety by default**
|
|
67
|
+
|
|
68
|
+
- Keep nullable reference types enabled.
|
|
69
|
+
- Model optional values explicitly with nullable annotations and guard clauses.
|
|
70
|
+
- Use nullability attributes where needed to improve flow analysis.
|
|
71
|
+
|
|
72
|
+
3. **Prefer composition and focused types**
|
|
73
|
+
|
|
74
|
+
- Keep classes cohesive and scoped to one core responsibility.
|
|
75
|
+
- Favor composition over inheritance unless polymorphism is a clear requirement.
|
|
76
|
+
|
|
77
|
+
4. **Asynchrony and resource safety**
|
|
78
|
+
|
|
79
|
+
- Use `async`/`await` for I/O-bound operations.
|
|
80
|
+
- Prefer `using`/`await using` for disposable resources.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## 3. Classes, Methods, and APIs (C#-Specific Guidance)
|
|
85
|
+
|
|
86
|
+
### 3.1 Classes for domain concepts and workflows
|
|
87
|
+
|
|
88
|
+
Use classes/records when:
|
|
89
|
+
|
|
90
|
+
- Modeling domain concepts with state + behavior.
|
|
91
|
+
- Protecting invariants across related members.
|
|
92
|
+
- Providing multiple implementations behind interfaces.
|
|
93
|
+
- Orchestrating multi-step workflows that share context.
|
|
94
|
+
|
|
95
|
+
When using classes/records:
|
|
96
|
+
|
|
97
|
+
- Keep methods small and focused.
|
|
98
|
+
- Avoid god objects.
|
|
99
|
+
- Prefer immutable records/value objects for data-centric models where practical.
|
|
100
|
+
|
|
101
|
+
### 3.2 Methods and local functions for focused logic
|
|
102
|
+
|
|
103
|
+
Use methods/local functions when:
|
|
104
|
+
|
|
105
|
+
- Implementing narrow, deterministic behavior.
|
|
106
|
+
- Encapsulating reusable, stateless transformations.
|
|
107
|
+
|
|
108
|
+
Rules:
|
|
109
|
+
|
|
110
|
+
- Name methods by behavior.
|
|
111
|
+
- Keep branching shallow where possible.
|
|
112
|
+
- Extract helper methods instead of deeply nested conditionals.
|
|
113
|
+
|
|
114
|
+
### 3.3 Interfaces and contracts
|
|
115
|
+
|
|
116
|
+
- Use interfaces when multiple implementations are expected.
|
|
117
|
+
- Keep public APIs stable and avoid unnecessary breaking changes.
|
|
118
|
+
- Document non-obvious side effects and failure modes.
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## 4. Error Handling, Logging, and Contracts (C#)
|
|
123
|
+
|
|
124
|
+
1. **Exceptions**
|
|
125
|
+
|
|
126
|
+
- Fail fast with explicit exceptions when invariants are violated.
|
|
127
|
+
- Avoid catching broad `Exception` unless at a clear boundary and with added context.
|
|
128
|
+
|
|
129
|
+
2. **Logging**
|
|
130
|
+
|
|
131
|
+
- Use the repository/project logging pattern, not ad-hoc console output in production code.
|
|
132
|
+
- Log actionable context at appropriate levels.
|
|
133
|
+
|
|
134
|
+
3. **Contracts / invariants**
|
|
135
|
+
|
|
136
|
+
- Validate constructor and method preconditions.
|
|
137
|
+
- Use `Debug.Assert` only for internal invariants, not user-facing validation.
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## 5. Module & File Structure (C#)
|
|
142
|
+
|
|
143
|
+
1. **Cohesive files and namespaces**
|
|
144
|
+
|
|
145
|
+
- Keep files focused on one responsibility area.
|
|
146
|
+
- Keep file size under the repo limit in `general-code-change.instructions.md`.
|
|
147
|
+
|
|
148
|
+
2. **Public vs internal**
|
|
149
|
+
|
|
150
|
+
- Keep public surface area intentional and minimal.
|
|
151
|
+
- Prefer `internal` for non-public APIs.
|
|
152
|
+
|
|
153
|
+
3. **Imports and namespace hygiene**
|
|
154
|
+
|
|
155
|
+
- Prefer explicit `using` directives at file scope.
|
|
156
|
+
- Avoid circular dependencies.
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## 6. Naming, Docs, and Comments (C#)
|
|
161
|
+
|
|
162
|
+
1. **Naming conventions**
|
|
163
|
+
|
|
164
|
+
- `PascalCase` for types and public members.
|
|
165
|
+
- `camelCase` for local variables and private fields/parameters.
|
|
166
|
+
- Use descriptive names over abbreviations.
|
|
167
|
+
|
|
168
|
+
2. **Documentation comments**
|
|
169
|
+
|
|
170
|
+
- Public APIs should include XML documentation comments when behavior or contract is non-obvious.
|
|
171
|
+
|
|
172
|
+
3. **Comments**
|
|
173
|
+
|
|
174
|
+
- Comment **why**, not what.
|
|
175
|
+
- Keep comments synchronized with behavior.
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## 7. Dependencies and Analyzer Configuration (C#)
|
|
180
|
+
|
|
181
|
+
- Prefer built-in .NET SDK analyzers and configuration through `.editorconfig` / `.globalconfig`.
|
|
182
|
+
- Use project-level properties (`EnableNETAnalyzers`, `AnalysisLevel`, `AnalysisMode`, `EnforceCodeStyleInBuild`) rather than ad-hoc per-command behavior where possible.
|
|
183
|
+
- Avoid adding external dependencies unless unavoidable and approved by the project direction.
|
|
184
|
+
- If suppression is unavoidable, keep it as narrow as possible and document the rationale in-code.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
applyTo: "**/*.cs"
|
|
3
|
+
name: csharp-unit-test-policy
|
|
4
|
+
description: "C#-specific unit test rules, layered on top of the general unit test policy"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# C# Unit Test Policy
|
|
8
|
+
|
|
9
|
+
This policy **extends** `general-unit-test.instructions.md` and applies to all C# unit tests in this repo.
|
|
10
|
+
|
|
11
|
+
You must follow **both**:
|
|
12
|
+
|
|
13
|
+
- The general unit test policy, and
|
|
14
|
+
- The C#-specific rules below.
|
|
15
|
+
|
|
16
|
+
If there is any conflict between these documents, halt and notify the user.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 1. Framework Selection
|
|
21
|
+
|
|
22
|
+
- **Testing framework**
|
|
23
|
+
- Use **MSTest** (`Microsoft.VisualStudio.TestTools.UnitTesting`) for C# unit tests in this repository.
|
|
24
|
+
- Do not introduce xUnit or NUnit into existing test projects.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 2. C#-Specific Libraries and Conventions
|
|
29
|
+
|
|
30
|
+
- **Mocking library**
|
|
31
|
+
- Use **Moq** for mocks/stubs in C# unit tests.
|
|
32
|
+
|
|
33
|
+
- **Assertion library**
|
|
34
|
+
- Prefer **FluentAssertions** for new and updated assertions.
|
|
35
|
+
- Use MSTest `Assert` APIs only when FluentAssertions is not practical for a specific assertion shape.
|
|
36
|
+
|
|
37
|
+
- **MSTest style**
|
|
38
|
+
- Use `[TestClass]`, `[TestMethod]`, and other MSTest attributes from `Microsoft.VisualStudio.TestTools.UnitTesting`.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 3. C# Toolchain Command Selection
|
|
43
|
+
|
|
44
|
+
- For C# work, use these concrete commands for the general policy toolchain loop:
|
|
45
|
+
1. `csharpier .`
|
|
46
|
+
2. `msbuild TaskMaster.sln /t:Build /p:Configuration=Debug /p:Platform="Any CPU" /p:EnableNETAnalyzers=true /p:EnforceCodeStyleInBuild=true`
|
|
47
|
+
3. `msbuild TaskMaster.sln /t:Build /p:Configuration=Debug /p:Platform="Any CPU" /p:Nullable=enable /p:TreatWarningsAsErrors=true`
|
|
48
|
+
4. `vstest.console.exe <test-assembly-paths> /EnableCodeCoverage`
|
|
49
|
+
|
|
50
|
+
- The loop behavior (restart rules, must-pass requirements, and audit expectations) is defined by `general-code-change.instructions.md` and is intentionally not repeated here.
|
|
51
|
+
|
|
52
|
+
This file is intentionally limited to C#-specific framework/library/tool selection. Cross-language testing principles and policy requirements are defined in `general-unit-test.instructions.md` and `general-code-change.instructions.md`.
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
---
|
|
2
|
+
applyTo: "**"
|
|
3
|
+
name: "general-code-change-policy"
|
|
4
|
+
description: "Baseline rules that apply to any code change in this repo"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Agent Code Change Policy
|
|
8
|
+
|
|
9
|
+
**CRITICAL**: When implementing any **any** code, tests, tasks, or scripts, you **must** adhere to these repo policies **without exception**. This includes but is not limited to adding, removing, or changing any code, tasks, scripts, modules, packages, tests or their components.
|
|
10
|
+
|
|
11
|
+
Read each policy document **thoroughly** before starting work. Implement them **exactly as written**. Do not interpret, modify, or skip any requirements. If you encounter **any** conflicting instructions, halt and notify the user.
|
|
12
|
+
|
|
13
|
+
Language-specific standards (e.g. for Python) are defined in additional instructions files and **layer on top of** this general policy.
|
|
14
|
+
|
|
15
|
+
**Reading order / authority:** Apply this general policy first, then any language-specific code-change instructions, then any unit-test addenda. Operational guidance (e.g., developer tooling, CI docs) sits underneath these policies.
|
|
16
|
+
|
|
17
|
+
## Before Making Changes
|
|
18
|
+
|
|
19
|
+
- [ ] Clarify the objective. Begin reasoning from clearly stated assumptions or axioms.
|
|
20
|
+
- [ ] Read existing change plans (e.g., `change-plan.md`).
|
|
21
|
+
- [ ] Document the plan to make changes. If it is part of an existing change plan, make any relevant updates to the plan before executing.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Bugfix Workflow (all languages, defects only)
|
|
26
|
+
|
|
27
|
+
Use this workflow only when addressing a bug or defect. Feature work, refactors, and
|
|
28
|
+
new capabilities should follow the general planning steps and design principles
|
|
29
|
+
rather than this bugfix sequence.
|
|
30
|
+
|
|
31
|
+
1. **Create a failing regression test first**
|
|
32
|
+
- Add the smallest deterministic test that reproduces the bug using the project’s standard test layout (prefer the module’s existing test file; use `tests/bugs/<YYYY>/<issue>-<desc>.py` only when no clear home exists).
|
|
33
|
+
- Ensure the test fails before the fix and will pass after; avoid external services or temporary files.
|
|
34
|
+
|
|
35
|
+
2. **Implement the minimal, targeted fix**
|
|
36
|
+
- Change only what is needed to make the failing test pass; keep boundaries intact and avoid opportunistic refactors.
|
|
37
|
+
- If you uncover deeper design problems, open a new issue instead of widening scope; add logging only when it materially aids diagnosis.
|
|
38
|
+
|
|
39
|
+
3. **Verify locally before review**
|
|
40
|
+
- Re-run the original repro and the new regression test.
|
|
41
|
+
- Run the full toolchain in order (format → lint → type-check → test) using the repo-standard commands or tasks; rerun from the start if any step changes files or fails.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 1. Design Principles
|
|
46
|
+
|
|
47
|
+
High-level design priorities (applies to all languages):
|
|
48
|
+
|
|
49
|
+
1. **Simplicity first**
|
|
50
|
+
|
|
51
|
+
- Prefer the simplest design that works and is easy to read.
|
|
52
|
+
- Avoid cleverness and deep indirection. The next maintainer should be able to understand a module in one reading.
|
|
53
|
+
|
|
54
|
+
2. **Reusability**
|
|
55
|
+
|
|
56
|
+
- Factor out logic that is clearly reusable into small methods or pure functions.
|
|
57
|
+
- Avoid copy-paste; share behavior via composition, helper methods, or shared base classes/interfaces.
|
|
58
|
+
|
|
59
|
+
3. **Extensibility**
|
|
60
|
+
|
|
61
|
+
- Design public APIs so they can be extended without breaking callers:
|
|
62
|
+
- Prefer keyword-style parameters with defaults (or equivalent in the language).
|
|
63
|
+
- Prefer composition over inheritance when possible.
|
|
64
|
+
- Use interfaces/abstract types/protocols to support multiple implementations behind an interface.
|
|
65
|
+
|
|
66
|
+
4. **Separation of concerns**
|
|
67
|
+
|
|
68
|
+
- Keep **pure logic** (transforms, calculations, parsing) separate from:
|
|
69
|
+
- I/O (disk, network, DB)
|
|
70
|
+
- UI / CLI
|
|
71
|
+
- Framework-specific glue
|
|
72
|
+
- Orchestration code (e.g., “main” pipeline classes) may depend on many things; pure core logic should depend on very little.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 2. Classes, Functions, and APIs
|
|
77
|
+
|
|
78
|
+
**Overall rule:**
|
|
79
|
+
Use **strongly-typed, well-structured classes** to model domain concepts and workflows. Use **functions** (or equivalent) for small, stateless helpers and glue code.
|
|
80
|
+
|
|
81
|
+
### 2.1 Prefer classes for domain concepts and workflows
|
|
82
|
+
|
|
83
|
+
Create a class when at least one is true:
|
|
84
|
+
|
|
85
|
+
- There is a **clear domain concept** with data + behavior
|
|
86
|
+
- e.g. “transaction”, “corpus”, “contact matcher”, “pipeline”.
|
|
87
|
+
- You have **state + invariants** that should travel together
|
|
88
|
+
- e.g. a model that must keep weights, vocabulary, and metadata in sync.
|
|
89
|
+
- You expect **multiple implementations** behind a common interface
|
|
90
|
+
- e.g. different text sources, storage backends, or pipelines.
|
|
91
|
+
- You are modeling a **multi-step workflow** that shares context
|
|
92
|
+
- e.g. `download()`, `normalize()`, `index()`, `export()` steps on a pipeline object.
|
|
93
|
+
|
|
94
|
+
When you use classes:
|
|
95
|
+
|
|
96
|
+
- Keep methods **small and focused**; a method should do one conceptual thing.
|
|
97
|
+
- Avoid “god objects” that know about too many unrelated concerns.
|
|
98
|
+
|
|
99
|
+
### 2.2 Use functions for small, pure helpers
|
|
100
|
+
|
|
101
|
+
Create a standalone function when:
|
|
102
|
+
|
|
103
|
+
- The operation is **pure, stateless, and simple**:
|
|
104
|
+
- e.g. “normalize whitespace in this string”
|
|
105
|
+
- e.g. “compute a score from inputs”
|
|
106
|
+
- It’s a **small helper** that doesn’t naturally belong on a specific domain class.
|
|
107
|
+
- It is a **simple transformation** from inputs to outputs.
|
|
108
|
+
|
|
109
|
+
Rules for functions:
|
|
110
|
+
|
|
111
|
+
- Functions should be short, readable, and clearly named by what they do.
|
|
112
|
+
- Avoid long, deeply branching functions—factor logic into smaller helpers.
|
|
113
|
+
|
|
114
|
+
### 2.3 Interfaces and contracts
|
|
115
|
+
|
|
116
|
+
- Use interfaces / abstract types / protocols when multiple implementations are likely (e.g. different storage backends or text sources).
|
|
117
|
+
- Public methods and functions must have clear, documented contracts (inputs, outputs, invariants).
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 3. Error Handling, Logging, and Contracts
|
|
122
|
+
|
|
123
|
+
1. **Error handling**
|
|
124
|
+
|
|
125
|
+
- Fail **fast and explicitly**: raise or return clear, specific errors when invariants are violated.
|
|
126
|
+
- Don’t silently ignore errors or broad-catch (e.g. a “catch all”) unless you immediately re-raise or propagate with added context.
|
|
127
|
+
|
|
128
|
+
2. **Logging**
|
|
129
|
+
|
|
130
|
+
- Use the project’s logging pattern instead of ad-hoc `print`/console output.
|
|
131
|
+
- Log at appropriate levels (`debug`, `info`, `warning`, `error`) and include enough context to debug issues.
|
|
132
|
+
|
|
133
|
+
3. **Contracts / invariants**
|
|
134
|
+
|
|
135
|
+
- Enforce invariants at construction/initialization time.
|
|
136
|
+
- Use assertions only for **internal sanity checks**, not user-facing error handling.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## 4. Module & File Structure
|
|
141
|
+
|
|
142
|
+
1. Keep modules **cohesive**:
|
|
143
|
+
|
|
144
|
+
- A module/file should have a clear purpose (e.g. “QIF parsing,” “Lexile model,” “corpus download”).
|
|
145
|
+
- Avoid dumping unrelated classes/functions into the same file.
|
|
146
|
+
- Do not exceed 500 lines for any one file.
|
|
147
|
+
- This 500-line limit applies to production code, test code, and reusable scripts.
|
|
148
|
+
- Exceptions: temporary throwaway scripts created and deleted during an agent session; raw text fixtures used for language-processing test data; Markdown documentation files.
|
|
149
|
+
|
|
150
|
+
2. Public vs internal
|
|
151
|
+
|
|
152
|
+
- Make the public surface area **small and intentional**.
|
|
153
|
+
- Use “internal” helpers and naming conventions (e.g. underscore-prefix or equivalent) for things that should not be used outside the module.
|
|
154
|
+
|
|
155
|
+
3. Imports / dependencies
|
|
156
|
+
|
|
157
|
+
- Prefer clear, explicit imports within the project.
|
|
158
|
+
- Avoid circular dependencies; if they appear, refactor shared logic into a lower-level module.
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## 5. Naming, Docs, and Comments
|
|
163
|
+
|
|
164
|
+
1. Naming
|
|
165
|
+
|
|
166
|
+
- Names should be descriptive, not cryptic.
|
|
167
|
+
- Abbreviations are okay only when they are standard and widely understood (e.g. `id`, `url`, `db`).
|
|
168
|
+
|
|
169
|
+
2. Docs / docstrings
|
|
170
|
+
|
|
171
|
+
- Public classes and methods should have a short description covering:
|
|
172
|
+
- What it does.
|
|
173
|
+
- Important arguments/parameters.
|
|
174
|
+
- What it returns or side effects.
|
|
175
|
+
|
|
176
|
+
3. Comments
|
|
177
|
+
|
|
178
|
+
- Comment **why**, not what. The code should generally explain *what*.
|
|
179
|
+
- If you use workarounds or non-obvious patterns, add a short comment explaining the reasoning.
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## 6. Performance, I/O, and Dependencies
|
|
184
|
+
|
|
185
|
+
1. **Performance**
|
|
186
|
+
|
|
187
|
+
- Prefer clarity first; optimize only where there is a demonstrated need.
|
|
188
|
+
- Avoid obviously quadratic (O(N²)) or worse algorithms on large inputs unless justified.
|
|
189
|
+
|
|
190
|
+
2. **I/O boundaries**
|
|
191
|
+
|
|
192
|
+
- Isolate I/O (disk, network, APIs) into specific classes or modules.
|
|
193
|
+
- Core domain logic should be testable **without** touching the network or filesystem.
|
|
194
|
+
- **Use of temporary files within tests is strictly prohibited**.
|
|
195
|
+
|
|
196
|
+
3. **Dependencies**
|
|
197
|
+
|
|
198
|
+
- Use only the libraries already approved in the project unless specifically told to add more.
|
|
199
|
+
- If adding a dependency is unavoidable, choose a well-maintained, widely used package, and document why it’s required.
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## 7. How to Interact with Existing Code
|
|
204
|
+
|
|
205
|
+
1. **Follow existing patterns**
|
|
206
|
+
|
|
207
|
+
- Where the repo already has a clear style (e.g. how pipelines or models are structured), **match that style**.
|
|
208
|
+
- If you need to improve an existing pattern, keep it **compatible** with current usages.
|
|
209
|
+
|
|
210
|
+
2. **API changes**
|
|
211
|
+
|
|
212
|
+
- Avoid breaking public APIs. If a breaking change is necessary, call it out clearly in comments or the PR description.
|
|
213
|
+
|
|
214
|
+
3. **Tests as specification**
|
|
215
|
+
|
|
216
|
+
- Treat existing unit tests as **part of the spec**.
|
|
217
|
+
- When adding new behavior, add tests that make the behavior explicit (using the language’s standard test framework).
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## 8. After Making Changes
|
|
222
|
+
|
|
223
|
+
### 1. Run the full toolchain (no shortcuts)
|
|
224
|
+
|
|
225
|
+
You **must** run the full toolchain in this exact order and repeat it until everything passes:
|
|
226
|
+
|
|
227
|
+
1. **Formatting**
|
|
228
|
+
2. **Linting**
|
|
229
|
+
3. **Type checking**
|
|
230
|
+
4. **Testing**
|
|
231
|
+
|
|
232
|
+
Treat these four steps as one **toolchain pass**.
|
|
233
|
+
|
|
234
|
+
1. Run the formatter on the relevant files (e.g. Black).
|
|
235
|
+
|
|
236
|
+
2. Run the linter (e.g. Ruff).
|
|
237
|
+
- If the linter **fails** or **auto-fixes** anything:
|
|
238
|
+
- Fix all reported issues (including applying any auto-fixes).
|
|
239
|
+
- Then **restart the toolchain pass from step 1 (Formatting)**.
|
|
240
|
+
|
|
241
|
+
3. Run the type checker (e.g. Pyright).
|
|
242
|
+
- If type checking **fails**:
|
|
243
|
+
- Fix all reported issues.
|
|
244
|
+
- Then **restart the toolchain pass from step 1 (Formatting)**.
|
|
245
|
+
|
|
246
|
+
4. Run the tests (e.g. Pytest).
|
|
247
|
+
- If any test **fails**:
|
|
248
|
+
- Fix all reported issues.
|
|
249
|
+
- Then **restart the toolchain pass from step 1 (Formatting)**.
|
|
250
|
+
|
|
251
|
+
You **may not stop** this loop while any of the following are true:
|
|
252
|
+
|
|
253
|
+
- Formatting would change the code.
|
|
254
|
+
- Linting reports errors.
|
|
255
|
+
- Type checking reports errors.
|
|
256
|
+
- Tests fail.
|
|
257
|
+
|
|
258
|
+
Only when **all four steps complete without errors in a single pass** are you allowed to consider the change complete.
|
|
259
|
+
|
|
260
|
+
When you report back, explicitly state:
|
|
261
|
+
- Which formatting, linting, type-checking, and test commands you ran, and
|
|
262
|
+
- That all four steps passed without errors in the final pass.
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
### 2. Summarize key changes and rationale
|
|
267
|
+
|
|
268
|
+
- Summarize the key changes made and how they relate to the original objective.
|
|
269
|
+
- Explain any important design choices and other options you considered but did not implement.
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
### 3. Update supporting documents
|
|
274
|
+
|
|
275
|
+
- Update any supporting documents (e.g., README, design docs, runbooks).
|
|
276
|
+
- Update any workplan, change plan, or instructions document to show progress and reflect the new behavior.
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
### 4. Provide clear next steps
|
|
281
|
+
|
|
282
|
+
- Provide clear development next steps (what should happen next, and by whom).
|
|
283
|
+
- If development is complete, provide detailed instructions on usage and any operational caveats (limits, known issues, rollout steps).
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
applyTo: "**"
|
|
2
|
+
name: general-unit-test-policy
|
|
3
|
+
description: "Baseline unit test policy that applies to all languages in this repo"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# General Unit Test Policy
|
|
7
|
+
|
|
8
|
+
This policy applies to **all unit tests** in this repository, regardless of language or framework.
|
|
9
|
+
|
|
10
|
+
Every new or modified unit test must adhere to these guidelines.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## 1. Core Principles
|
|
15
|
+
|
|
16
|
+
- **Independence**
|
|
17
|
+
Tests must be able to run in any order without impacting each other.
|
|
18
|
+
|
|
19
|
+
- **Isolation**
|
|
20
|
+
Each unit test should target a single function, method, or unit of behavior so failures clearly identify the faulty unit.
|
|
21
|
+
|
|
22
|
+
- **Fast Execution**
|
|
23
|
+
Tests must be fast enough to support frequent runs and rapid feedback loops.
|
|
24
|
+
|
|
25
|
+
- **Determinism**
|
|
26
|
+
Given the same inputs and environment, tests must produce the same results. Avoid flakiness.
|
|
27
|
+
|
|
28
|
+
- **Readability and Maintainability**
|
|
29
|
+
Test names, structure, and assertions should be clear and easy to understand.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 2. Coverage and Scenarios
|
|
34
|
+
|
|
35
|
+
- **Comprehensive Coverage (within reason)**
|
|
36
|
+
- These coverage expectations apply across all languages in the repo.
|
|
37
|
+
- Aim to exercise critical paths and important edge conditions.
|
|
38
|
+
- Configure coverage tooling to exclude test files (e.g., `tests/`), so metrics reflect the application code, not the tests themselves.
|
|
39
|
+
- Repository-wide line coverage must remain `>= 80%`.
|
|
40
|
+
- Any new modules, classes, or methods added must target `>= 90%` coverage.
|
|
41
|
+
- Code changes or refactors must not reduce coverage for the lines that were changed.
|
|
42
|
+
- Coverage is a supporting metric, not the sole quality gate; untested critical behavior is not acceptable even if the overall percentage looks good.
|
|
43
|
+
|
|
44
|
+
- **Scenario Completeness**
|
|
45
|
+
For each unit or behavior, tests should cover:
|
|
46
|
+
- Positive flows with valid inputs.
|
|
47
|
+
- Negative flows for invalid or missing inputs.
|
|
48
|
+
- Edge cases and boundary conditions.
|
|
49
|
+
- Error-handling behavior.
|
|
50
|
+
- Concurrency behavior when relevant.
|
|
51
|
+
- State transitions for stateful components.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 3. Test Structure and Diagnostics
|
|
56
|
+
|
|
57
|
+
- **Clear Failure Messages**
|
|
58
|
+
Assertions should produce clear, actionable failure messages that make it easy to see what went wrong.
|
|
59
|
+
|
|
60
|
+
- **Arrange–Act–Assert pattern**
|
|
61
|
+
Organize tests into:
|
|
62
|
+
- *Arrange* — set up inputs, environment, and dependencies.
|
|
63
|
+
- *Act* — execute the behavior under test.
|
|
64
|
+
- *Assert* — verify outcomes via assertions.
|
|
65
|
+
|
|
66
|
+
- **Document Intent**
|
|
67
|
+
Each test must clearly communicate its purpose:
|
|
68
|
+
- Use descriptive test names, and/or
|
|
69
|
+
- Include a short docstring or comment summarizing the scenario and expected outcome.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 4. External Dependencies and Environment
|
|
74
|
+
|
|
75
|
+
- **Avoid External Dependencies**
|
|
76
|
+
Unit tests must not depend on external services such as databases, networks, remote APIs, or external processes.
|
|
77
|
+
|
|
78
|
+
- **Use Mocks / Stubs as Needed**
|
|
79
|
+
When code interacts with external systems or heavy resources, use mocks, stubs, or fakes to isolate the unit under test.
|
|
80
|
+
|
|
81
|
+
- **Environment Stability**
|
|
82
|
+
Tests must not rely on mutable global state or external configuration that can change between runs. Creation and use of temporary files on the local filesystem is expressly prohibited unless explicitly authorized as an exception.
|
|
83
|
+
- Currently approved exceptions: none.
|
|
84
|
+
- If an exception is ever approved, list it explicitly here. A possible future example would be a static, read-only sample file committed to the repo and reused without runtime creation; this is not approved today.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 5. Policy Audit
|
|
89
|
+
|
|
90
|
+
Before submitting any change that includes unit tests:
|
|
91
|
+
|
|
92
|
+
- Review each new or modified test against this policy.
|
|
93
|
+
- Confirm that:
|
|
94
|
+
- It is independent, isolated, fast, and deterministic.
|
|
95
|
+
- It is readable and clearly documents its intent.
|
|
96
|
+
- It covers relevant positive, negative, edge, and error scenarios.
|
|
97
|
+
- It does not rely on external dependencies without proper mocking/stubbing.
|
|
98
|
+
|
|
99
|
+
If any test cannot comply with these rules for a good reason, **call out the exception explicitly** in the change description.
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|