@danmoisan/drm-copilot-mcp 0.0.1 → 0.0.6
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/out/mcp-server.js +98 -21
- package/package.json +21 -5
- package/resources/claude-customizations/.claude/agent-memory/orchestrator/MEMORY.md +15 -3
- package/resources/claude-customizations/.claude/agent-memory/orchestrator/feedback_branch_base_check_unmerged_pr_deps.md +16 -0
- package/resources/claude-customizations/.claude/agent-memory/orchestrator/feedback_every_change_through_lifecycle.md +15 -0
- package/resources/claude-customizations/.claude/agent-memory/orchestrator/feedback_policy_compliance_not_optional.md +18 -0
- package/resources/claude-customizations/.claude/agent-memory/orchestrator/feedback_potential_to_issue_creates_github_issue.md +13 -0
- package/resources/claude-customizations/.claude/agent-memory/orchestrator/feedback_remediation_plan_em_dash_required.md +13 -0
- package/resources/claude-customizations/.claude/agent-memory/orchestrator/feedback_small_bug_uses_minor_audit.md +13 -0
- package/resources/claude-customizations/.claude/agent-memory/orchestrator/feedback_test_files_count_against_500_cap.md +13 -0
- package/resources/claude-customizations/.claude/agents/atomic-executor.md +7 -7
- package/resources/claude-customizations/.claude/agents/csharp-typed-engineer.md +4 -5
- package/resources/claude-customizations/.claude/agents/feature-review.md +7 -3
- package/resources/claude-customizations/.claude/agents/orchestrator.md +22 -3
- package/resources/claude-customizations/.claude/agents/powershell-typed-engineer.md +1 -1
- package/resources/claude-customizations/.claude/agents/pr-author.md +78 -0
- package/resources/claude-customizations/.claude/agents/task-researcher.md +10 -6
- package/resources/claude-customizations/.claude/hooks/enforce-checkpoint-monotonic.ps1 +303 -0
- package/resources/claude-customizations/.claude/hooks/enforce-completion-consistency.ps1 +300 -0
- package/resources/claude-customizations/.claude/hooks/enforce-evidence-locations.ps1 +40 -14
- package/resources/claude-customizations/.claude/hooks/enforce-feature-folder-order.ps1 +148 -0
- package/resources/claude-customizations/.claude/hooks/enforce-orchestration-preimplementation-gate.ps1 +210 -0
- package/resources/claude-customizations/.claude/hooks/enforce-pr-author-skill.ps1 +333 -0
- package/resources/claude-customizations/.claude/hooks/enforce-prd-feature-before-planner.ps1 +216 -0
- package/resources/claude-customizations/.claude/hooks/enforce-promotion-mcp-only.ps1 +84 -15
- package/resources/claude-customizations/.claude/hooks/validate-executor-output.ps1 +1 -1
- package/resources/claude-customizations/.claude/hooks/validate-feature-review-coverage.ps1 +75 -5
- package/resources/claude-customizations/.claude/hooks/validate-orchestrator-output.ps1 +93 -0
- package/resources/claude-customizations/.claude/hooks/validate-pr-author-output.ps1 +136 -0
- package/resources/claude-customizations/.claude/hooks/validate-task-researcher-output.ps1 +90 -6
- package/resources/claude-customizations/.claude/rules/architecture-boundaries.md +46 -0
- package/resources/claude-customizations/.claude/rules/benchmark-baselines.md +35 -0
- package/resources/claude-customizations/.claude/rules/ci-workflows.md +36 -0
- package/resources/claude-customizations/.claude/rules/csharp.md +62 -16
- package/resources/claude-customizations/.claude/rules/general-code-change.md +12 -3
- package/resources/claude-customizations/.claude/rules/general-unit-test.md +47 -2
- package/resources/claude-customizations/.claude/rules/orchestrator-state.md +39 -0
- package/resources/claude-customizations/.claude/rules/powershell.md +5 -5
- package/resources/claude-customizations/.claude/rules/python.md +4 -3
- package/resources/claude-customizations/.claude/rules/quality-tiers.md +51 -0
- package/resources/claude-customizations/.claude/rules/typescript.md +37 -8
- package/resources/claude-customizations/.claude/settings.json +59 -12
- package/resources/claude-customizations/.claude/skills/atomic-plan-contract/SKILL.md +2 -2
- package/resources/claude-customizations/.claude/skills/csharp-qa-gate/SKILL.md +25 -10
- package/resources/claude-customizations/.claude/skills/evidence-and-timestamp-conventions/SKILL.md +0 -1
- package/resources/claude-customizations/.claude/skills/execute-hard-lock/SKILL.md +6 -6
- package/resources/claude-customizations/.claude/skills/feature-promotion-lifecycle/SKILL.md +8 -8
- package/resources/claude-customizations/.claude/skills/feature-review-workflow/SKILL.md +17 -6
- package/resources/claude-customizations/.claude/skills/human-exception-runbook/SKILL.md +52 -0
- package/resources/claude-customizations/.claude/skills/human-exception-runbook/example.runbook.md +36 -0
- package/resources/claude-customizations/.claude/skills/invoke-csharp-engineer/SKILL.md +4 -4
- package/resources/claude-customizations/.claude/skills/orchestrate/SKILL.md +172 -5
- package/resources/claude-customizations/.claude/skills/policy-audit-template-usage/SKILL.md +3 -3
- package/resources/claude-customizations/.claude/skills/powershell-qa-gate/SKILL.md +4 -4
- package/resources/claude-customizations/.claude/skills/pr-base-branch-merge-base/SKILL.md +3 -3
- package/resources/claude-customizations/.claude/skills/python-qa-gate/SKILL.md +1 -1
- package/resources/claude-customizations/.claude/skills/remediation-handoff-atomic-planner/SKILL.md +90 -17
- package/resources/claude-customizations/.claude/skills/research-issue/SKILL.md +5 -3
- package/resources/claude-customizations/.claude-variants/csharp-legacy/agents/csharp-typed-engineer.md +69 -0
- package/resources/claude-customizations/.claude-variants/csharp-legacy/rules/csharp.md +96 -0
- package/resources/claude-customizations/.claude-variants/csharp-legacy/skills/csharp-qa-gate/SKILL.md +77 -0
- package/resources/claude-customizations/.claude-variants/csharp-legacy/skills/invoke-csharp-engineer/SKILL.md +64 -0
- package/resources/claude-customizations/pack-manifests/core.json +65 -0
- package/resources/claude-customizations/pack-manifests/csharp-legacy.json +11 -0
- package/resources/claude-customizations/pack-manifests/csharp-modern.json +12 -0
- package/resources/claude-customizations/pack-manifests/powershell.json +14 -0
- package/resources/claude-customizations/pack-manifests/python.json +14 -0
- package/resources/claude-customizations/pack-manifests/typescript.json +9 -0
- package/resources/claude-dir-customizations/.mcp.json +3 -3
- package/resources/codex-and-agents-customizations/.agents/README.md +1 -1
- package/resources/codex-and-agents-customizations/.agents/skills/acceptance-criteria-tracking/SKILL.md +0 -5
- package/resources/codex-and-agents-customizations/.agents/skills/architecture-boundaries/SKILL.md +52 -0
- package/resources/codex-and-agents-customizations/.agents/skills/atomic-plan-contract/SKILL.md +16 -8
- package/resources/codex-and-agents-customizations/.agents/skills/benchmark-baselines/SKILL.md +44 -0
- package/resources/codex-and-agents-customizations/.agents/skills/ci-workflows/SKILL.md +45 -0
- package/resources/codex-and-agents-customizations/.agents/skills/commit-message/SKILL.md +3 -11
- package/resources/codex-and-agents-customizations/.agents/skills/csharp/SKILL.md +1 -5
- package/resources/codex-and-agents-customizations/.agents/skills/csharp-change-budget-router/SKILL.md +1 -6
- package/resources/codex-and-agents-customizations/.agents/skills/csharp-orchestration-state-machine/SKILL.md +0 -5
- package/resources/codex-and-agents-customizations/.agents/skills/csharp-qa-gate/SKILL.md +0 -5
- package/resources/codex-and-agents-customizations/.agents/skills/evidence-and-timestamp-conventions/SKILL.md +0 -5
- package/resources/codex-and-agents-customizations/.agents/skills/execute-hard-lock/SKILL.md +8 -17
- package/resources/codex-and-agents-customizations/.agents/skills/feature-promotion-lifecycle/SKILL.md +41 -25
- package/resources/codex-and-agents-customizations/.agents/skills/feature-review-workflow/SKILL.md +1 -6
- package/resources/codex-and-agents-customizations/.agents/skills/fill-feature-docs/SKILL.md +0 -5
- package/resources/codex-and-agents-customizations/.agents/skills/general-code-change/SKILL.md +86 -0
- package/resources/codex-and-agents-customizations/.agents/skills/general-unit-test/SKILL.md +111 -0
- package/resources/codex-and-agents-customizations/.agents/skills/human-exception-runbook/SKILL.md +57 -0
- package/resources/codex-and-agents-customizations/.agents/skills/human-exception-runbook/example.runbook.md +36 -0
- package/resources/codex-and-agents-customizations/.agents/skills/invoke-csharp-engineer/SKILL.md +0 -9
- package/resources/codex-and-agents-customizations/.agents/skills/invoke-powershell-engineer/SKILL.md +0 -9
- package/resources/codex-and-agents-customizations/.agents/skills/invoke-python-engineer/SKILL.md +0 -9
- package/resources/codex-and-agents-customizations/.agents/skills/make-skill-template/SKILL.md +0 -5
- package/resources/codex-and-agents-customizations/.agents/skills/orchestrate/SKILL.md +206 -18
- package/resources/codex-and-agents-customizations/.agents/skills/orchestrator-state/SKILL.md +48 -0
- package/resources/codex-and-agents-customizations/.agents/skills/orchestrator-workflow/SKILL.md +94 -10
- package/resources/codex-and-agents-customizations/.agents/skills/policy-audit-template-usage/SKILL.md +3 -8
- package/resources/codex-and-agents-customizations/.agents/skills/policy-compliance-order/SKILL.md +0 -10
- package/resources/codex-and-agents-customizations/.agents/skills/powershell/SKILL.md +4 -8
- package/resources/codex-and-agents-customizations/.agents/skills/powershell-change-budget-router/SKILL.md +1 -6
- package/resources/codex-and-agents-customizations/.agents/skills/powershell-orchestration-state-machine/SKILL.md +0 -5
- package/resources/codex-and-agents-customizations/.agents/skills/powershell-qa-gate/SKILL.md +3 -9
- package/resources/codex-and-agents-customizations/.agents/skills/pr-author/SKILL.md +1 -9
- package/resources/codex-and-agents-customizations/.agents/skills/pr-base-branch-merge-base/SKILL.md +4 -9
- package/resources/codex-and-agents-customizations/.agents/skills/pr-context-artifacts/SKILL.md +0 -5
- package/resources/codex-and-agents-customizations/.agents/skills/python/SKILL.md +1 -5
- package/resources/codex-and-agents-customizations/.agents/skills/python-change-budget-router/SKILL.md +1 -6
- package/resources/codex-and-agents-customizations/.agents/skills/python-qa-gate/SKILL.md +0 -5
- package/resources/codex-and-agents-customizations/.agents/skills/python-suppressions/SKILL.md +2 -6
- package/resources/codex-and-agents-customizations/.agents/skills/quality-tiers/SKILL.md +57 -0
- package/resources/codex-and-agents-customizations/.agents/skills/remediation-handoff-atomic-planner/SKILL.md +0 -5
- package/resources/codex-and-agents-customizations/.agents/skills/repo-automation-adapter/SKILL.md +96 -72
- package/resources/codex-and-agents-customizations/.agents/skills/repo-automation-adapter/agents/openai.yaml +1 -1
- package/resources/codex-and-agents-customizations/.agents/skills/research-issue/SKILL.md +0 -10
- package/resources/codex-and-agents-customizations/.agents/skills/review-epic/SKILL.md +0 -5
- package/resources/codex-and-agents-customizations/.agents/skills/review-feature/SKILL.md +0 -5
- package/resources/codex-and-agents-customizations/.agents/skills/review-staged/SKILL.md +0 -5
- package/resources/codex-and-agents-customizations/.agents/skills/self-explanatory-code-commenting/SKILL.md +2 -6
- package/resources/codex-and-agents-customizations/.agents/skills/skill-canonical-location-audit/SKILL.md +0 -5
- package/resources/codex-and-agents-customizations/.agents/skills/tonality/SKILL.md +86 -0
- package/resources/codex-and-agents-customizations/.agents/skills/translate-claude-to-codex/SKILL.md +297 -0
- package/resources/codex-and-agents-customizations/.agents/skills/translate-copilot-to-claude/SKILL.md +0 -22
- package/resources/codex-and-agents-customizations/.agents/skills/typescript/SKILL.md +1 -5
- package/resources/codex-and-agents-customizations/.agents/skills/typescript-suppressions/SKILL.md +2 -6
- package/resources/codex-and-agents-customizations/.agents/skills/update-status/SKILL.md +0 -5
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-executor.toml +5 -5
- package/resources/codex-and-agents-customizations/.codex/agents/orchestrator.toml +91 -63
- package/resources/codex-and-agents-customizations/.codex/agents/powershell-atomic-executor.toml +1 -1
- package/resources/codex-and-agents-customizations/.codex/agents/powershell-typed-engineer.toml +1 -1
- package/resources/codex-and-agents-customizations/.codex/config.toml +111 -137
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-checkpoint-monotonic.ps1 +303 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-completion-consistency.ps1 +300 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-orchestration-preimplementation-gate.ps1 +148 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-pr-author-skill.ps1 +336 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-promotion-mcp-only.ps1 +84 -18
- package/resources/codex-and-agents-customizations/.codex/prompts/orchestrate-work.md +4 -3
- package/resources/codex-and-agents-customizations/.codex/scripts/post-codex-worktree-session.ps1 +5 -0
- package/resources/codex-and-agents-customizations/.github/workflows/_validate-orchestrator-state.yml +68 -0
- package/resources/codex-and-agents-customizations/.github/workflows/validate-orchestrator-state.yml +15 -0
- package/resources/config/orchestration-routing.json +76 -0
- package/resources/customizations/.github/agents/Powershell DI Unit Test Engineer.agent.md +1 -1
- package/resources/customizations/.github/agents/atomic_executor.agent.md +1 -1
- package/resources/customizations/.github/agents/atomic_planning.agent.md +10 -10
- package/resources/customizations/.github/agents/csharp-orchestrator.agent.md +6 -2
- package/resources/customizations/.github/agents/feature-review.agent.md +2 -2
- package/resources/customizations/.github/agents/orchestrator.agent.md +6 -2
- package/resources/customizations/.github/agents/powershell-atomic-executor.agent.md +4 -4
- package/resources/customizations/.github/agents/powershell-atomic-planning.agent.md +10 -10
- package/resources/customizations/.github/agents/powershell-orchestrator.agent.md +6 -2
- package/resources/customizations/.github/agents/powershell-typed-engineer.agent.md +2 -2
- package/resources/customizations/.github/agents/pr-author.agent.md +25 -0
- package/resources/customizations/.github/agents/python-orchestrator.agent.md +6 -2
- package/resources/customizations/.github/agents/staged-review.agent.md +1 -1
- package/resources/customizations/.github/agents/task-researcher.agent.md +4 -4
- package/resources/customizations/.github/instructions/powershell-code-change.instructions.md +6 -6
- package/resources/customizations/.github/prompts/fillout-prd-feature.prompt.md +1 -1
- package/resources/customizations/.github/prompts/generate-commit-message-repo.prompt.md +1 -1
- package/resources/customizations/.github/prompts/orchestrate-csharp-work.prompt.md +5 -3
- package/resources/customizations/.github/prompts/orchestrate-work.prompt.md +5 -3
- package/resources/customizations/.github/prompts/research-issue.prompt.md +4 -3
- package/resources/customizations/.github/skills/atomic-plan-contract/SKILL.md +14 -1
- package/resources/customizations/.github/skills/feature-promotion-lifecycle/SKILL.md +11 -7
- package/resources/customizations/.github/skills/feature-review-workflow/SKILL.md +10 -1
- package/resources/customizations/.github/skills/pr-base-branch-merge-base/SKILL.md +2 -2
- package/resources/customizations/.github/skills/remediation-handoff-atomic-planner/SKILL.md +5 -0
- package/resources/powershell/PoshQC/settings/pester.runsettings.psd1 +7 -0
- package/resources/scripts/dev_tools/_orchestrator_state_human_interaction.py +127 -0
- package/resources/scripts/dev_tools/_orchestrator_state_routing.py +216 -0
- package/resources/scripts/dev_tools/push_down_claude_customizations.py +276 -61
- package/resources/scripts/dev_tools/push_down_claude_filesystem.py +472 -0
- package/resources/scripts/dev_tools/push_down_claude_pack_selection.py +401 -0
- package/resources/scripts/dev_tools/validate_orchestration_artifacts.py +103 -411
- package/resources/scripts/dev_tools/validate_orchestration_review_artifacts.py +107 -0
- package/resources/scripts/dev_tools/validate_orchestrator_state.py +505 -0
- package/resources/scripts/dev_tools/validate_policy_audit_artifact.py +472 -0
- package/resources/templates/push_down_claude_customizations.py +162 -117
- package/resources/claude-customizations/.claude/agent-memory/orchestrator/feedback_repo_root_is_source_of_truth.md +0 -11
- package/resources/claude-customizations/.claude/agent-memory/orchestrator/feedback_vsce_verify_package_location.md +0 -19
- package/resources/claude-customizations/.claude/agent-memory/orchestrator/project_extension_location.md +0 -11
- package/resources/claude-customizations/.claude/agent-memory/prd-feature/MEMORY.md +0 -1
- package/resources/claude-customizations/.claude/agent-memory/prd-feature/project_push_down_pattern.md +0 -13
- package/resources/claude-customizations/.claude/agent-memory/task-researcher/MEMORY.md +0 -3
- package/resources/claude-customizations/.claude/agent-memory/task-researcher/project_push_down_claude_dir.md +0 -11
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
# Converted skill
|
|
2
|
-
|
|
3
|
-
Applied rewrites:
|
|
4
|
-
- None
|
|
5
|
-
|
|
6
1
|
---
|
|
7
2
|
name: csharp-change-budget-router
|
|
8
3
|
description: Budget-first routing contract for C# work: estimate production-file scope, choose small vs large path, enforce orchestration-first routing for larger changes, and use the VS Code extension command surface for promotion lifecycle steps when available.
|
|
@@ -29,7 +24,7 @@ Use this skill when:
|
|
|
29
24
|
## Orchestrated Small-Path Requirements
|
|
30
25
|
|
|
31
26
|
When routed through `csharp-orchestrator`, small path still requires lifecycle scaffolding before implementation:
|
|
32
|
-
- invoke promotion/folder lifecycle steps through `
|
|
27
|
+
- invoke promotion/folder lifecycle steps through the `drm-copilot` MCP tools required by `repo-automation-adapter`. If the MCP server or required tool is unavailable, stop before promotion,
|
|
33
28
|
- promote potential item to GitHub issue with `--work-mode minor-audit`,
|
|
34
29
|
- create active feature folder with `--work-mode minor-audit`,
|
|
35
30
|
- delegate minimal-audit plan creation to `atomic_planner` with `DIRECTIVE: MINIMAL-AUDIT PLAN REQUIRED`,
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
# Converted skill
|
|
2
|
-
|
|
3
|
-
Applied rewrites:
|
|
4
|
-
- Rewrite Claude skill paths to shared skill paths.
|
|
5
|
-
|
|
6
1
|
---
|
|
7
2
|
name: csharp-qa-gate
|
|
8
3
|
description: Final QA gate for C# changes. Executes the full CSharpier -> .NET Analyzers -> Nullable Analysis -> MSTest toolchain, compares against a captured baseline, enforces zero-regression deltas, and produces the required reporting block before the agent declares the change complete.
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
# Converted skill
|
|
2
|
-
|
|
3
|
-
Applied rewrites:
|
|
4
|
-
- None
|
|
5
|
-
|
|
6
1
|
---
|
|
7
2
|
name: evidence-and-timestamp-conventions
|
|
8
3
|
description: 'Evidence storage and timestamp naming conventions for audits and remediation. Use when storing baseline/regression/QA evidence or naming audit artifacts with ISO-8601 timestamps.'
|
|
@@ -1,20 +1,11 @@
|
|
|
1
|
-
# Converted skill
|
|
2
|
-
|
|
3
|
-
Applied rewrites:
|
|
4
|
-
- Rewrite Claude agent manifest paths to Codex agent paths.
|
|
5
|
-
- Rewrite remaining VS Code command IDs to semantic MCP tool usage.
|
|
6
|
-
|
|
7
1
|
---
|
|
8
2
|
name: execute-hard-lock
|
|
9
|
-
description: Place the session in atomic execution mode bound to a specific plan-of-record. Resolves the hard-lock prompt via the
|
|
10
|
-
allowed-tools:
|
|
11
|
-
- mcp__drmCopilotExtension__resolve_execute_hard_lock_prompt
|
|
12
|
-
- Read
|
|
3
|
+
description: Place the session in atomic execution mode bound to a specific plan-of-record. Resolves the hard-lock prompt via the drm-copilot MCP tool, then delegates to the atomic-executor subagent with the resolved text. Use when a caller provides ${plan-path} and ${work-mode} and requires strict plan-following behavior.
|
|
13
4
|
---
|
|
14
5
|
|
|
15
6
|
# Execute Hard Lock
|
|
16
7
|
|
|
17
|
-
Thin wrapper that resolves the hard-lock prompt via the
|
|
8
|
+
Thin wrapper that resolves the hard-lock prompt via the drm-copilot MCP tool and hands the resolved text to the `atomic-executor` subagent as kickoff directives. The resolved prompt is the authoritative instruction set for the session; this skill does not duplicate its contents.
|
|
18
9
|
|
|
19
10
|
## When to Use This Skill
|
|
20
11
|
|
|
@@ -22,7 +13,7 @@ Use this skill when:
|
|
|
22
13
|
|
|
23
14
|
- The caller provides an explicit plan file path (`${plan-path}`) and a selected work mode (`${work-mode}`).
|
|
24
15
|
- Strict plan-following behavior is required (no replanning, no reordering, no bucket tasks).
|
|
25
|
-
- The
|
|
16
|
+
- The drm-copilot MCP server is registered and reachable.
|
|
26
17
|
|
|
27
18
|
## Inputs
|
|
28
19
|
|
|
@@ -37,7 +28,7 @@ Required:
|
|
|
37
28
|
|
|
38
29
|
Call the extension's resolver as the first action:
|
|
39
30
|
|
|
40
|
-
- Tool: `
|
|
31
|
+
- Tool: `mcp__drm-copilot__resolve_execute_hard_lock_prompt`
|
|
41
32
|
- Parameters:
|
|
42
33
|
- `target` (required): the plan-of-record path (`${plan-path}`).
|
|
43
34
|
- `workspace_root` (optional): the workspace root. Omit to default to the current working directory.
|
|
@@ -50,7 +41,7 @@ Use the `Read` tool on the path returned in `artifacts[0]`. Treat the file conte
|
|
|
50
41
|
|
|
51
42
|
### 3. Delegate to atomic-executor
|
|
52
43
|
|
|
53
|
-
|
|
44
|
+
Spawn the `atomic-executor` subagent from `.codex/agents/atomic-executor.toml`. Pass the resolved prompt text as the subagent's kickoff directive, followed by `${plan-path}` and `${work-mode}` as session context. If the `atomic-executor` agent is unavailable, stop with `BLOCKED: execute-hard-lock spawn_agent_unavailable`.
|
|
54
45
|
|
|
55
46
|
The resolved prompt itself already instructs the subagent to perform the mandatory read-proof (`git rev-parse HEAD`, SHA-256 of the plan file, unchecked-task count), preflight validation, and `READY TO BEGIN FROM [P#-T#]` handshake before executing any task. This skill does not reissue those instructions locally — doing so would risk divergence from the canonical template.
|
|
56
47
|
|
|
@@ -67,8 +58,8 @@ Stop immediately and report `BLOCKED: execute-hard-lock <cause>` in any of these
|
|
|
67
58
|
|
|
68
59
|
The three entry points below all produce the same resolved hard-lock prompt for a given plan path. This skill always uses the MCP form:
|
|
69
60
|
|
|
70
|
-
- MCP (used by this skill): `
|
|
71
|
-
- VS Code command: `@command:
|
|
61
|
+
- MCP (used by this skill): `mcp__drm-copilot__resolve_execute_hard_lock_prompt` with `target=<plan-path>`. The extension passes `--output artifacts/hard_lock_prompt.txt` and `--quiet` to the bundled Python resolver.
|
|
62
|
+
- VS Code command: `@command:mcp__drm-copilot__resolve_execute_hard_lock_prompt` (interactive; writes to stdout + clipboard, no file artifact).
|
|
72
63
|
|
|
73
64
|
## Delegation Contract
|
|
74
65
|
|
|
@@ -84,5 +75,5 @@ The `atomic-executor` subagent at [.codex/agents/atomic-executor.toml](.codex/ag
|
|
|
84
75
|
- Do not proceed without a successful MCP resolver response AND a successful `Read` of the artifact.
|
|
85
76
|
- Do not reconstruct the hard-lock contract from any other source (not from this file nor from prior session memory).
|
|
86
77
|
- Do not modify the resolved prompt text before passing it to `atomic-executor`.
|
|
87
|
-
- Do not replan, reorder, or add tasks at this layer
|
|
78
|
+
- Do not replan, reorder, or add tasks at this layer. The subagent owns that contract.
|
|
88
79
|
- Do not create or read secrets unless explicitly authorized.
|
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
# Converted skill
|
|
2
|
-
|
|
3
|
-
Applied rewrites:
|
|
4
|
-
- None
|
|
5
|
-
|
|
6
1
|
---
|
|
7
2
|
name: feature-promotion-lifecycle
|
|
8
|
-
description: Deterministic promotion workflow from potential feature/bug entry to issue, branch, active feature folder, and downstream spec/research handoffs. Agent sessions must use the
|
|
3
|
+
description: Deterministic promotion workflow from potential feature/bug entry to issue, branch, active feature folder, and downstream spec/research handoffs. Agent sessions must use the drm-copilot MCP tool surface and record raw promotion receipts under the canonical checkpoint namespace.
|
|
9
4
|
---
|
|
10
5
|
|
|
11
6
|
# Feature Promotion Lifecycle
|
|
@@ -22,19 +17,22 @@ Use this skill when:
|
|
|
22
17
|
|
|
23
18
|
## MCP Tool Availability Preflight
|
|
24
19
|
|
|
25
|
-
Before any promotion step starts, verify that the required `
|
|
20
|
+
Before any promotion step starts, verify that the required `drm-copilot` MCP tools are available in the current agent session.
|
|
26
21
|
|
|
27
22
|
Required MCP tool set:
|
|
28
|
-
- feature potential entry: `
|
|
29
|
-
- bug potential entry: `
|
|
30
|
-
- potential-to-issue promotion: `
|
|
31
|
-
- active feature folder creation: `
|
|
23
|
+
- feature potential entry: `mcp__drm-copilot__new_potential_entry` with `short_name=${short-name}`
|
|
24
|
+
- bug potential entry: `mcp__drm-copilot__new_potential_bug_entry` with `short_name=${short-name}`
|
|
25
|
+
- potential-to-issue promotion: `mcp__drm-copilot__potential_to_issue` with `potential_path=${relativeFile}`, `promotion_type=${promotion-type}`, `work_mode=${work-mode}`
|
|
26
|
+
- active feature folder creation: `mcp__drm-copilot__new_active_feature_folder` with `feature_name=${long-name}`, `type=${promotion-type}`, `issue_number=${issue-num}`, `work_mode=${work-mode}`
|
|
32
27
|
|
|
33
28
|
If the required MCP tools are unavailable, stop before potential-entry creation, issue promotion, or active-folder creation begins. Restore MCP connectivity first. Agent sessions do not have an approved non-MCP execution branch for promotion work.
|
|
34
29
|
|
|
35
30
|
## Agent-Session Promotion Execution Rule
|
|
36
31
|
|
|
37
|
-
Execute
|
|
32
|
+
Execute MCP-backed lifecycle operations only through the MCP tool forms listed
|
|
33
|
+
above. The MCP path is the sole authoritative execution path for potential
|
|
34
|
+
entry creation, issue promotion, and active feature folder creation in agent
|
|
35
|
+
sessions.
|
|
38
36
|
|
|
39
37
|
After each successful promotion operation, persist the raw MCP receipt payload under the matching checkpoint key in `artifacts/orchestration/orchestrator-state.json`:
|
|
40
38
|
- `delegation_receipts.promotion.potential_entry`
|
|
@@ -43,6 +41,11 @@ After each successful promotion operation, persist the raw MCP receipt payload u
|
|
|
43
41
|
|
|
44
42
|
Each `delegation_receipts.promotion.*` field stores the raw MCP receipt payload returned by the corresponding promotion operation without lossy normalization.
|
|
45
43
|
|
|
44
|
+
Branch creation and branch rename are required lifecycle sequencing evidence,
|
|
45
|
+
but they are not `surface: "mcp"` lifecycle operations unless a future MCP tool
|
|
46
|
+
exists for those branch operations. Record branch creation and branch rename as
|
|
47
|
+
branch/checkpoint evidence in `artifacts/orchestration/orchestrator-state.json`.
|
|
48
|
+
|
|
46
49
|
Note: VS Code command-palette commands may exist for interactive extension use, but this note is non-authoritative for agent sessions.
|
|
47
50
|
|
|
48
51
|
## Canonical Variables
|
|
@@ -56,6 +59,8 @@ Note: VS Code command-palette commands may exist for interactive extension use,
|
|
|
56
59
|
- `${plan-path}`: single canonical plan file path reused across planning and preflight revisions
|
|
57
60
|
- `${work-mode}`: `minor-audit`, `full-feature`, or `full-bug` (legacy `full` is accepted only as an alias for `full-feature`)
|
|
58
61
|
- `${short-path-flag}`: `--work-mode minor-audit` (mandatory for short-path promotion/folder creation)
|
|
62
|
+
- `${pre-issue-branch}`: `${promotion-type}/${short-name}`, created or verified before issue creation
|
|
63
|
+
- `${final-branch}`: `${promotion-type}/${short-name}-${issue-num}`, created by branch rename after promotion returns a numeric issue number
|
|
59
64
|
|
|
60
65
|
`${relativeFile}` MUST resolve to a real potential markdown path before promotion begins. If the path is missing, invalid, or non-markdown, stop. Do not infer or synthesize the missing value.
|
|
61
66
|
|
|
@@ -67,41 +72,52 @@ Lifecycle guardrails:
|
|
|
67
72
|
- `${relativeFile}` MUST resolve to a real potential markdown path before promotion.
|
|
68
73
|
- `${issue-num}` MUST be numeric after promotion and before branch or folder creation.
|
|
69
74
|
- Do not infer or synthesize the missing value.
|
|
70
|
-
- If `${relativeFile}` or `${issue-num}` is missing, placeholder text, or unverified, stop before branch
|
|
75
|
+
- If `${relativeFile}` or `${issue-num}` is missing, placeholder text, or unverified, stop before final branch rename, active-folder creation, or active-folder authoring.
|
|
71
76
|
|
|
72
77
|
1) Use the same MCP tool-availability preflight described above and continue only when the required promotion tools are available.
|
|
73
78
|
|
|
74
|
-
2)
|
|
79
|
+
2) Verify route metadata readiness in `artifacts/orchestration/orchestrator-state.json`, including selected `route_id`, required route metadata, and `${work-mode}`.
|
|
80
|
+
|
|
81
|
+
3) Create or verify the pre-issue branch:
|
|
82
|
+
- `${pre-issue-branch}`
|
|
75
83
|
|
|
76
|
-
|
|
77
|
-
- `${promotion-type}/${short-name}-${issue-num}`
|
|
84
|
+
4) Create the potential entry through `mcp__drm-copilot__new_potential_entry` or `mcp__drm-copilot__new_potential_bug_entry`.
|
|
78
85
|
|
|
79
|
-
|
|
86
|
+
5) Promote the potential document through `mcp__drm-copilot__potential_to_issue` with the selected `${work-mode}` and capture the numeric `${issue-num}`.
|
|
80
87
|
|
|
81
|
-
|
|
88
|
+
6) Rename the branch to the final branch:
|
|
89
|
+
- `${final-branch}`
|
|
90
|
+
|
|
91
|
+
7) Create the active feature folder through `mcp__drm-copilot__new_active_feature_folder` with the selected `${work-mode}`.
|
|
92
|
+
|
|
93
|
+
7a) Verify minor-audit folder integrity before proceeding:
|
|
82
94
|
- `${feature-folder}/issue.md` exists and contains `- Work Mode: minor-audit`
|
|
83
95
|
- `${feature-folder}/issue.md` contains an explicit `## Acceptance Criteria` section
|
|
84
96
|
- `${feature-folder}/spec.md` does not exist
|
|
85
97
|
- `${feature-folder}/user-story.md` does not exist
|
|
86
98
|
- if any check fails, stop and remediate before planning
|
|
87
99
|
|
|
88
|
-
|
|
100
|
+
8) Delegate minimal-audit plan creation to `atomic_planner` with directive:
|
|
89
101
|
- `DIRECTIVE: MINIMAL-AUDIT PLAN REQUIRED`
|
|
90
102
|
|
|
91
|
-
|
|
103
|
+
8a) Resolve and persist `${plan-path}` before delegation:
|
|
92
104
|
- reuse the earliest existing `plan*.md` in `${feature-folder}` when present
|
|
93
105
|
- otherwise create exactly one canonical plan file path and reuse it for all revisions
|
|
94
106
|
|
|
95
|
-
|
|
107
|
+
9) Require preflight validation via `atomic_executor` until:
|
|
96
108
|
- `PREFLIGHT: ALL CLEAR`
|
|
97
109
|
|
|
98
|
-
|
|
110
|
+
10) Execute plan Phase 0 only via executor and checkpoint evidence.
|
|
99
111
|
|
|
100
|
-
|
|
101
|
-
- manual bootstrap: save state and stop,
|
|
112
|
+
11) Branch:
|
|
113
|
+
- manual bootstrap: save state and stop ONLY when the initial user request explicitly opted into manual orchestration from the beginning,
|
|
102
114
|
- non-bootstrap: continue with constrained small-path development.
|
|
103
115
|
|
|
104
|
-
|
|
116
|
+
Automation rule:
|
|
117
|
+
- do not introduce manual bootstrap, human-operator validation, or any other manual handoff later in orchestration unless that initial explicit opt-in exists
|
|
118
|
+
- if automation cannot proceed, record blocked automated state instead of asking for manual intervention
|
|
119
|
+
|
|
120
|
+
12) Validate delivery via executor against `issue.md`, then run reduced audit/remediation loop until ready-to-merge.
|
|
105
121
|
|
|
106
122
|
## Required Outputs for Downstream Handoffs
|
|
107
123
|
|
package/resources/codex-and-agents-customizations/.agents/skills/feature-review-workflow/SKILL.md
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
# Converted skill
|
|
2
|
-
|
|
3
|
-
Applied rewrites:
|
|
4
|
-
- None
|
|
5
|
-
|
|
6
1
|
---
|
|
7
2
|
name: feature-review-workflow
|
|
8
3
|
description: 'Feature-branch review workflow for base-branch resolution, PR-context refresh, active feature folder selection, review artifact generation, validator gates, acceptance-criteria check-off, and remediation triggers. Use when authoring or executing PR-style feature reviews.'
|
|
@@ -100,7 +95,7 @@ Always apply:
|
|
|
100
95
|
5. coverage (mandatory for every language that has changed files)
|
|
101
96
|
- TypeScript: `npm run test:unit:coverage` → artifact: `coverage/lcov.info`
|
|
102
97
|
- Python: `poetry run pytest --cov` → artifact: `artifacts/python/lcov.info`
|
|
103
|
-
- PowerShell: `
|
|
98
|
+
- PowerShell: `mcp__drm-copilot__run_poshqc_test` → artifact: `artifacts/pester/powershell-coverage.xml`
|
|
104
99
|
- C#: `vstest.console.exe <test-assembly-paths> /EnableCodeCoverage` → artifact: `artifacts/csharp/coverage.xml`
|
|
105
100
|
- Coverage thresholds:
|
|
106
101
|
- New code files (added in this feature): line coverage must be >= 90%. Flag as FAIL otherwise.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: general-code-change
|
|
3
|
+
description: Cross-language code change policy for all files.
|
|
4
|
+
paths:
|
|
5
|
+
- "**"
|
|
6
|
+
description: Cross-language code change policy. Applies to all files.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Converted rule
|
|
10
|
+
|
|
11
|
+
Source: legacy Claude rule `general-code-change`.
|
|
12
|
+
|
|
13
|
+
# General Code Change Policy
|
|
14
|
+
|
|
15
|
+
This rule file summarizes the cross-language code change policy for this repository.
|
|
16
|
+
|
|
17
|
+
## Design Principles
|
|
18
|
+
|
|
19
|
+
Apply these priorities in order when designing or changing code:
|
|
20
|
+
|
|
21
|
+
1. **Simplicity first** — Prefer the simplest design that works and is readable. Avoid cleverness and deep indirection.
|
|
22
|
+
2. **Reusability** — Factor out logic that is clearly reusable. Avoid copy-paste; share behavior via composition or helper methods.
|
|
23
|
+
3. **Extensibility** — Design public APIs so they can be extended without breaking callers. Prefer keyword-style parameters with defaults. Prefer composition over inheritance. Use interfaces/abstract types/protocols to support multiple implementations.
|
|
24
|
+
4. **Separation of concerns** — Keep pure logic (transforms, calculations, parsing) separate from I/O (disk, network, DB), UI/CLI, and framework-specific glue.
|
|
25
|
+
|
|
26
|
+
## Classes, Functions, and APIs
|
|
27
|
+
|
|
28
|
+
- Create a class when: there is a clear domain concept with data + behavior, state and invariants must travel together, multiple implementations behind an interface are expected, or a multi-step workflow shares context.
|
|
29
|
+
- Create a standalone function when: the operation is pure, stateless, and simple; it is a small helper that does not naturally belong on a domain class; or it is a simple transformation from inputs to outputs.
|
|
30
|
+
- Keep methods small and focused. Avoid god objects.
|
|
31
|
+
- Use interfaces/abstract types/protocols when multiple implementations are likely.
|
|
32
|
+
|
|
33
|
+
## Module Rigor Tiers
|
|
34
|
+
|
|
35
|
+
Module rigor tiers (T1–T4) and the uniform-versus-tier-dependent gate matrix are defined in `.agents/skills/quality-tiers.md`. Every project must be classified in `quality-tiers.yml` at repo root.
|
|
36
|
+
|
|
37
|
+
## Mandatory Toolchain Loop
|
|
38
|
+
|
|
39
|
+
Run the full seven-stage toolchain in this exact order and repeat until all stages pass in a single pass:
|
|
40
|
+
|
|
41
|
+
1. **Formatting** (e.g., Black, Prettier, CSharpier, Invoke-Formatter)
|
|
42
|
+
2. **Linting** (e.g., Ruff, ESLint, PSScriptAnalyzer, .NET analyzers)
|
|
43
|
+
3. **Type checking** (e.g., Pyright, TSC, nullable analysis; skip for PowerShell)
|
|
44
|
+
4. **Architecture-boundary tests** (e.g., dependency-cruiser, NetArchTest.Rules)
|
|
45
|
+
5. **Unit tests** (e.g., Pytest, Vitest, MSTest, Pester) including property-based tests where applicable per `quality-tiers.md`
|
|
46
|
+
6. **Contract / schema compatibility checks** (e.g., oasdiff, schema-snapshot diff)
|
|
47
|
+
7. **Integration tests**
|
|
48
|
+
|
|
49
|
+
**Restart from step 1** if any stage fails or auto-fixes any files. Do not stop the loop until all seven stages complete without errors in a single pass.
|
|
50
|
+
|
|
51
|
+
Mutation testing and golden tests run in pre-merge or nightly pipelines, not the per-commit loop.
|
|
52
|
+
|
|
53
|
+
## File Size Limit
|
|
54
|
+
|
|
55
|
+
- No production code, test code, or reusable script file may exceed **500 lines**.
|
|
56
|
+
- Exceptions: temporary throwaway scripts created and deleted within an agent session; raw text fixtures for language-processing test data; Markdown documentation files.
|
|
57
|
+
|
|
58
|
+
## Error Handling and Logging
|
|
59
|
+
|
|
60
|
+
- **Fail fast and explicitly**: raise or return clear, specific errors when invariants are violated.
|
|
61
|
+
- Do not silently ignore errors. Do not use broad catch-all handlers unless you immediately re-raise or propagate with added context.
|
|
62
|
+
- Use the project's established logging pattern. Log at appropriate levels (`debug`, `info`, `warning`, `error`).
|
|
63
|
+
- Enforce invariants at construction/initialization time.
|
|
64
|
+
- Use assertions only for internal sanity checks, not user-facing error handling.
|
|
65
|
+
|
|
66
|
+
## Naming
|
|
67
|
+
|
|
68
|
+
- Names must be descriptive. Abbreviations are acceptable only when they are standard (`id`, `url`, `db`).
|
|
69
|
+
- Language-specific conventions: `snake_case` for Python functions/variables, `PascalCase` for Python classes, `camelCase` for TypeScript/C# locals, `PascalCase` for TypeScript/C# types and public members.
|
|
70
|
+
|
|
71
|
+
## Public APIs and Compatibility
|
|
72
|
+
|
|
73
|
+
- Prefer keyword-style parameters with defaults.
|
|
74
|
+
- Prefer composition over inheritance when possible.
|
|
75
|
+
- Avoid breaking public APIs. If a breaking change is necessary, update all callers in-repo and call it out clearly in the change description.
|
|
76
|
+
|
|
77
|
+
## Dependencies
|
|
78
|
+
|
|
79
|
+
- Use only libraries already approved in the project unless explicitly told to add more.
|
|
80
|
+
- If adding a dependency is unavoidable, choose a well-maintained, widely used package and document why it is required.
|
|
81
|
+
|
|
82
|
+
## I/O Boundaries
|
|
83
|
+
|
|
84
|
+
- Isolate I/O (disk, network, APIs) into specific classes or modules.
|
|
85
|
+
- Core domain logic must be testable without touching the network or filesystem.
|
|
86
|
+
- Use of temporary files within tests is strictly prohibited.
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: general-unit-test
|
|
3
|
+
description: Cross-language unit test policy for all files.
|
|
4
|
+
paths:
|
|
5
|
+
- "**"
|
|
6
|
+
description: Cross-language unit test policy. Applies to all files.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Converted rule
|
|
10
|
+
|
|
11
|
+
Source: legacy Claude rule `general-unit-test`.
|
|
12
|
+
|
|
13
|
+
# General Unit Test Policy
|
|
14
|
+
|
|
15
|
+
This rule file summarizes the cross-language unit test policy for this repository.
|
|
16
|
+
|
|
17
|
+
## Core Principles
|
|
18
|
+
|
|
19
|
+
Every unit test must satisfy all five of these properties:
|
|
20
|
+
|
|
21
|
+
1. **Independence** — Tests must be able to run in any order without impacting each other.
|
|
22
|
+
2. **Isolation** — Each unit test targets a single function, method, or unit of behavior so failures clearly identify the faulty unit.
|
|
23
|
+
3. **Fast execution** — Tests must be fast enough to support frequent runs and rapid feedback loops.
|
|
24
|
+
4. **Determinism** — Given the same inputs and environment, tests must produce the same results. Avoid flakiness.
|
|
25
|
+
5. **Readability and maintainability** — Test names, structure, and assertions must be clear and easy to understand.
|
|
26
|
+
|
|
27
|
+
## Coverage Requirements
|
|
28
|
+
|
|
29
|
+
- **Line coverage must remain >= 85% across all tiers (T1–T4).**
|
|
30
|
+
- **Branch coverage must remain >= 75% across all tiers (T1–T4).**
|
|
31
|
+
- Code changes or refactors must not reduce coverage for the lines that were changed.
|
|
32
|
+
- Tier-specific lower coverage thresholds are not used in this repository. See `.agents/skills/quality-tiers.md` for the full tier system.
|
|
33
|
+
- Coverage is a supporting metric, not the sole quality gate. Untested critical behavior is not acceptable even if the overall percentage looks good.
|
|
34
|
+
- Configure coverage tooling to exclude test files (e.g., `tests/`) so metrics reflect application code, not tests.
|
|
35
|
+
- Type-only / interface-only modules with no executable behavior may be omitted from coverage measurement. Examples: Python `Protocol`-only modules consumed only under `TYPE_CHECKING`, TypeScript interface/type-only files, and C# interface-only files. Such modules legitimately report 0% executable coverage and may be excluded from measurement. This is a clarification only; it does not lower any coverage threshold.
|
|
36
|
+
|
|
37
|
+
## Coverage Exclusion Policy
|
|
38
|
+
|
|
39
|
+
No production file may be excluded from coverage measurement. Every production source file is in the denominator of the coverage metric, regardless of whether its lines are reachable in the test environment.
|
|
40
|
+
|
|
41
|
+
The correct response to a file that contains untestable lines is to refactor it — extract all logic into host-neutral, testable modules and leave only the thinnest possible wiring in the host-bound entry point. The entry point's uncovered lines then represent a real and visible cost in the coverage metric, which creates ongoing pressure to keep those files minimal.
|
|
42
|
+
|
|
43
|
+
**Permitted `exclude` entries** (non-production paths only):
|
|
44
|
+
- Build output directories: `dist/**`, `lib/**`, `lib-amd/**`.
|
|
45
|
+
- Test files and test infrastructure: `**/*.test.ts`, `tests/**`, `src/test-support/**`.
|
|
46
|
+
- Config files that are not production code: `vitest.config.ts`, `eslint.config.mjs`, `.dependency-cruiser.cjs`, `webpack.config.js`.
|
|
47
|
+
- `node_modules/**`.
|
|
48
|
+
|
|
49
|
+
**Prohibited `exclude` entries:**
|
|
50
|
+
- Any path under `src/` that contains production runtime code, regardless of whether it is auto-generated, host-bound, or difficult to test.
|
|
51
|
+
|
|
52
|
+
**Enforcement:** Feature-review agents must treat any `exclude` entry that matches a production source path as a **Blocking** finding.
|
|
53
|
+
|
|
54
|
+
## Scenario Completeness
|
|
55
|
+
|
|
56
|
+
For each unit or behavior, tests must cover:
|
|
57
|
+
|
|
58
|
+
- Positive flows with valid inputs
|
|
59
|
+
- Negative flows for invalid or missing inputs
|
|
60
|
+
- Edge cases and boundary conditions
|
|
61
|
+
- Error-handling behavior
|
|
62
|
+
- Concurrency behavior when relevant
|
|
63
|
+
- State transitions for stateful components
|
|
64
|
+
|
|
65
|
+
## Test Structure — Arrange–Act–Assert
|
|
66
|
+
|
|
67
|
+
Organize each test into three sections:
|
|
68
|
+
|
|
69
|
+
- **Arrange** — set up inputs, environment, and dependencies
|
|
70
|
+
- **Act** — execute the behavior under test
|
|
71
|
+
- **Assert** — verify outcomes via assertions
|
|
72
|
+
|
|
73
|
+
Assertions must produce clear, actionable failure messages.
|
|
74
|
+
|
|
75
|
+
## External Dependencies
|
|
76
|
+
|
|
77
|
+
- Unit tests must not depend on external services (databases, networks, remote APIs, external processes).
|
|
78
|
+
- Use mocks, stubs, or fakes to isolate the unit under test when code interacts with external systems.
|
|
79
|
+
- **Creation and use of temporary files in tests is strictly prohibited.**
|
|
80
|
+
- Tests must not rely on mutable global state or external configuration that can change between runs.
|
|
81
|
+
|
|
82
|
+
## Test File Location
|
|
83
|
+
|
|
84
|
+
Test files must live in a `tests/` directory tree that mirrors the production source structure. The test for `src/foo/bar.ts` belongs at `tests/foo/bar.test.ts`; the test for `scripts/powershell/Foo.ps1` belongs at `tests/scripts/powershell/Foo.Tests.ps1`. Language-specific rules may add further naming conventions (framework suffix, file extension) on top of this universal layout requirement.
|
|
85
|
+
|
|
86
|
+
Colocation — placing test files alongside production source files in `src/` or equivalent — is not permitted. An agent that creates or moves a test file into the production source tree has violated this rule.
|
|
87
|
+
|
|
88
|
+
## Documentation
|
|
89
|
+
|
|
90
|
+
- Each test must clearly communicate its purpose via a descriptive name and/or a short docstring or comment summarizing the scenario and expected outcome.
|
|
91
|
+
- Group related tests logically within the same file or test class.
|
|
92
|
+
|
|
93
|
+
## Test Categories
|
|
94
|
+
|
|
95
|
+
The following test categories apply across the repository, with tier-dependent obligations per `.agents/skills/quality-tiers.md`:
|
|
96
|
+
|
|
97
|
+
- **Unit tests** — required for all tiers (T1–T4). Cover single units of behavior in isolation.
|
|
98
|
+
- **Property-based tests** — required for T1 and T2 modules: at least one property test per pure function. Use `fast-check` (TypeScript) or `hypothesis` (Python) where applicable.
|
|
99
|
+
- **Golden / snapshot tests** — required only for T1 classifier-output modules, tested against a versioned corpus. Snapshot tests are otherwise discouraged unless stable and intentional.
|
|
100
|
+
- **Contract / schema tests** — required at every host-service boundary (e.g., Office.js, Microsoft Graph, internal API contracts).
|
|
101
|
+
- **Mutation tests** — required for T1 modules: mutation score >= 75%. Run in pre-merge or nightly pipelines.
|
|
102
|
+
- **Integration tests** — required where adapters interact with external systems; scoped per tier in the gate matrix.
|
|
103
|
+
|
|
104
|
+
## Determinism Infrastructure
|
|
105
|
+
|
|
106
|
+
All test code must be deterministic. The following infrastructure requirements apply uniformly:
|
|
107
|
+
|
|
108
|
+
- **Controllable clock** — use a `Clock` interface (TypeScript) or `TimeProvider` (.NET) injected into code under test. Do not read wall-clock time directly in production code under test.
|
|
109
|
+
- **Seeded RNG** — randomness must be supplied via a seedable interface; on test failure the seed must be printed so the failure is reproducible.
|
|
110
|
+
- **Banned APIs in test code** — `setTimeout`, `Thread.Sleep`, `Task.Delay`, real wall-clock waits, and `Date.now()` outside the clock interface are prohibited in tests.
|
|
111
|
+
- **Virtual scheduler / fake timers / `FakeTimeProvider`** — async tests must use the framework's fake-timer facility (`vi.useFakeTimers()` for Vitest, `FakeTimeProvider` for .NET) to advance simulated time deterministically.
|
package/resources/codex-and-agents-customizations/.agents/skills/human-exception-runbook/SKILL.md
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: human-exception-runbook
|
|
3
|
+
description: Contract for runbooks that document permitted human exceptions recorded in orchestrator state.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Human-Exception Runbook
|
|
7
|
+
|
|
8
|
+
Defines the contract for a human-exception runbook: the artifact the orchestrator emits when an unautomatable requirement is resolved with the `exception` response under the autonomous-execution mandate (see `.agents/skills/orchestrate/SKILL.md`).
|
|
9
|
+
|
|
10
|
+
## When to Use This Skill
|
|
11
|
+
|
|
12
|
+
Use this skill when:
|
|
13
|
+
|
|
14
|
+
- The orchestrator detects an unautomatable (human-interaction) requirement and resolves it with the `exception` response rather than `scope_change` or `halt`.
|
|
15
|
+
- A permitted exception is recorded in orchestrator state and the schema's exception-requires-runbook invariant must be satisfied (`response == "exception"` requires a non-empty `runbook_path` pointing to an existing file).
|
|
16
|
+
- Authoring or reviewing a runbook that a human will follow to complete a step the workflow cannot automate.
|
|
17
|
+
|
|
18
|
+
## Canonical Path
|
|
19
|
+
|
|
20
|
+
A human-exception runbook is stored per-feature at:
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
<FEATURE>/runbooks/<name>.runbook.md
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The `runbook_path` recorded in `orchestrator-state.json` (`human_interaction.requirements[].runbook_path`) is the path relative to the repo root. This path is under the feature folder but is not an `evidence/` sub-path, so it is not governed by `enforce-evidence-locations.ps1` (OD-45-6).
|
|
27
|
+
|
|
28
|
+
## Required Sections
|
|
29
|
+
|
|
30
|
+
Every human-exception runbook MUST contain these five sections, in this order:
|
|
31
|
+
|
|
32
|
+
1. **Cue** — when to act; the event or state that triggers the runbook (for example, "the orchestrator recorded an `exception` for Global-Administrator admin consent").
|
|
33
|
+
2. **Prerequisites** — what must be true before the human starts: accounts, roles, devices, tools, and any prior state.
|
|
34
|
+
3. **Step-by-step Instructions** — numbered steps, including detailed third-party UI navigation where applicable. Each step is concrete and verifiable.
|
|
35
|
+
4. **Verification** — how the human confirms success: the observable state, confirmation dialog, or command output that proves the step completed.
|
|
36
|
+
5. **Source and Citation** — the source URL(s) and a dated capture (`updated_at`) for each cited step. Third-party UI sections record the navigation source; non-UI CLI steps record the documentation source for the command used.
|
|
37
|
+
|
|
38
|
+
## Sourcing Rule (MCP-first / web-second)
|
|
39
|
+
|
|
40
|
+
Third-party UI steps (for example Azure portal / Entra admin center, Outlook desktop or mobile, the Microsoft 365 admin center) MUST be sourced **MCP-first, web-second**:
|
|
41
|
+
|
|
42
|
+
1. Prefer an MCP documentation source (for example a Microsoft Learn MCP query) as the primary source.
|
|
43
|
+
2. Use a web source (the vendor's current published documentation) only when no MCP source is available.
|
|
44
|
+
3. Training data is NOT an acceptable sole source for any third-party UI step, because vendor UIs drift and stale navigation produces incorrect instructions.
|
|
45
|
+
|
|
46
|
+
Per OD-45-5, the MCP-first / web-second ordering is mandatory for third-party UI navigation. Non-UI CLI steps (for example `az` commands) do not require the UI ordering, but every step type — UI and CLI alike — MUST carry a current, dated citation in the Source-and-Citation section. A runbook step without a dated source is not contract-conformant.
|
|
47
|
+
|
|
48
|
+
## Conformance
|
|
49
|
+
|
|
50
|
+
A runbook is contract-conformant when:
|
|
51
|
+
|
|
52
|
+
- it lives at `<FEATURE>/runbooks/<name>.runbook.md`,
|
|
53
|
+
- it contains all five required sections (Cue, Prerequisites, Step-by-step Instructions, Verification, Source and Citation),
|
|
54
|
+
- its Source-and-Citation section records at least one source URL and a capture date,
|
|
55
|
+
- third-party UI steps were sourced MCP-first / web-second.
|
|
56
|
+
|
|
57
|
+
A self-contained, conformant example is provided at `.agents/skills/human-exception-runbook/example.runbook.md`.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Example Human-Exception Runbook — Grant Tenant-Wide Admin Consent for an Entra Application
|
|
2
|
+
|
|
3
|
+
This is a self-contained, contract-conformant example runbook per `.agents/skills/human-exception-runbook/SKILL.md`. It demonstrates the required five sections and the dated-citation requirement. It does not reference any other feature folder. The values below (tenant, application name) are illustrative placeholders.
|
|
4
|
+
|
|
5
|
+
## Cue
|
|
6
|
+
|
|
7
|
+
Act on this runbook when the orchestrator records an `exception` response for the requirement "tenant-wide admin consent for the Entra application." Admin consent for delegated Microsoft Graph permissions that require administrator approval cannot be granted unattended without a Global-Administrator service principal in CI (declined per the autonomous-execution mandate's scope decisions), so it is resolved as a permitted exception and this runbook is the human follow-up.
|
|
8
|
+
|
|
9
|
+
## Prerequisites
|
|
10
|
+
|
|
11
|
+
- An account with the **Global Administrator** or **Privileged Role Administrator** role in the target Microsoft Entra tenant.
|
|
12
|
+
- The application's **Application (client) ID** and the tenant's display name.
|
|
13
|
+
- Access to the Microsoft Entra admin center (https://entra.microsoft.com).
|
|
14
|
+
- The set of delegated permissions the application requests is already declared on the app registration (this runbook grants consent for them; it does not add them).
|
|
15
|
+
|
|
16
|
+
## Step-by-step Instructions
|
|
17
|
+
|
|
18
|
+
1. Sign in to the Microsoft Entra admin center at https://entra.microsoft.com with the Global Administrator account.
|
|
19
|
+
2. In the left navigation, select **Identity** > **Applications** > **App registrations**.
|
|
20
|
+
3. Select **All applications**, then open the application by its Application (client) ID.
|
|
21
|
+
4. In the application's left menu, select **API permissions**.
|
|
22
|
+
5. Review the listed permissions and confirm the requested delegated Microsoft Graph permissions are present with status "Not granted for <tenant>".
|
|
23
|
+
6. Select **Grant admin consent for <tenant>** at the top of the **Configured permissions** list.
|
|
24
|
+
7. In the confirmation dialog, select **Yes** to grant tenant-wide admin consent.
|
|
25
|
+
|
|
26
|
+
## Verification
|
|
27
|
+
|
|
28
|
+
- After step 7, each affected permission row shows the status **Granted for <tenant>** with a green check mark.
|
|
29
|
+
- Re-open **API permissions** and confirm no permission remains in the "Not granted" state.
|
|
30
|
+
- Optionally, confirm programmatically that the consent exists by querying the service principal's OAuth2 permission grants with the Microsoft Graph CLI or `az ad`.
|
|
31
|
+
|
|
32
|
+
## Source and Citation
|
|
33
|
+
|
|
34
|
+
- Step source (third-party UI navigation, sourced MCP-first): Microsoft Learn — "Grant tenant-wide admin consent to an application." Source URL: https://learn.microsoft.com/en-us/entra/identity/enterprise-apps/grant-admin-consent — updated_at: 2026-06-01.
|
|
35
|
+
- API permissions UI reference (web-second corroboration): Microsoft Learn — "Configure a client application to access a web API." Source URL: https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-configure-app-access-web-apis — updated_at: 2026-06-01.
|
|
36
|
+
- Verification reference (CLI corroboration for the optional programmatic check): Microsoft Learn — "az ad app permission" command reference. Source URL: https://learn.microsoft.com/en-us/cli/azure/ad/app/permission — updated_at: 2026-06-01.
|
package/resources/codex-and-agents-customizations/.agents/skills/invoke-csharp-engineer/SKILL.md
CHANGED
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
# Converted skill
|
|
2
|
-
|
|
3
|
-
Applied rewrites:
|
|
4
|
-
- Rewrite merged standing-guidance source paths to the native AGENTS.md target.
|
|
5
|
-
- Rewrite merged standing-guidance source paths to the native AGENTS.md target.
|
|
6
|
-
- Rewrite merged standing-guidance source paths to the native AGENTS.md target.
|
|
7
|
-
- Rewrite Claude skill paths to shared skill paths.
|
|
8
|
-
- Rewrite Claude rule paths to shared skill paths.
|
|
9
|
-
|
|
10
1
|
---
|
|
11
2
|
name: invoke-csharp-engineer
|
|
12
3
|
description: Invoke the csharp-typed-engineer worker to design, implement, and verify C# changes within typed repository boundaries. Applies CSharpier -> .NET Analyzers -> Nullable Analysis -> MSTest toolchain, the 1-3 production-file small-path budget, and zero-regression quality gates.
|
package/resources/codex-and-agents-customizations/.agents/skills/invoke-powershell-engineer/SKILL.md
CHANGED
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
# Converted skill
|
|
2
|
-
|
|
3
|
-
Applied rewrites:
|
|
4
|
-
- Rewrite merged standing-guidance source paths to the native AGENTS.md target.
|
|
5
|
-
- Rewrite merged standing-guidance source paths to the native AGENTS.md target.
|
|
6
|
-
- Rewrite merged standing-guidance source paths to the native AGENTS.md target.
|
|
7
|
-
- Rewrite Claude skill paths to shared skill paths.
|
|
8
|
-
- Rewrite Claude rule paths to shared skill paths.
|
|
9
|
-
|
|
10
1
|
---
|
|
11
2
|
name: invoke-powershell-engineer
|
|
12
3
|
description: Invoke the powershell-typed-engineer worker to design, implement, and verify PowerShell changes within typed repository boundaries. Applies PoshQC format -> analyze -> test toolchain, the 1-2 production-file direct-mode budget, the 3-production + 3-test per-batch cap, and zero-regression quality gates.
|
package/resources/codex-and-agents-customizations/.agents/skills/invoke-python-engineer/SKILL.md
CHANGED
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
# Converted skill
|
|
2
|
-
|
|
3
|
-
Applied rewrites:
|
|
4
|
-
- Rewrite merged standing-guidance source paths to the native AGENTS.md target.
|
|
5
|
-
- Rewrite merged standing-guidance source paths to the native AGENTS.md target.
|
|
6
|
-
- Rewrite merged standing-guidance source paths to the native AGENTS.md target.
|
|
7
|
-
- Rewrite Claude skill paths to shared skill paths.
|
|
8
|
-
- Rewrite Claude rule paths to shared skill paths.
|
|
9
|
-
|
|
10
1
|
---
|
|
11
2
|
name: invoke-python-engineer
|
|
12
3
|
description: Invoke the python-typed-engineer worker to design, implement, and verify Python changes within typed repository boundaries. Applies Black -> Ruff -> Pyright -> Pytest toolchain, the 3-production + 3-test per-batch budget, and zero-regression quality gates.
|
package/resources/codex-and-agents-customizations/.agents/skills/make-skill-template/SKILL.md
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
# Converted skill
|
|
2
|
-
|
|
3
|
-
Applied rewrites:
|
|
4
|
-
- None
|
|
5
|
-
|
|
6
1
|
---
|
|
7
2
|
name: make-skill-template
|
|
8
3
|
description: 'Create new Agent Skills for GitHub Copilot from prompts or by duplicating this template. Use when asked to "create a skill", "make a new skill", "scaffold a skill", or when building specialized AI capabilities with bundled resources. Generates SKILL.md files with proper frontmatter, directory structure, and optional scripts/references/assets folders.'
|