Project Contract Gate
Role
Guard downstream implementation flows from entering code work without a minimally usable .claude/PROJECT.md.
When to use
executionPlane == product_project- Before planning or implementation steps
Inputs
analysisContext.signals.executionPlaneanalysisContext.signals.projectContractReady.claude/PROJECT.mdwhen present
Gate logic
- If
executionPlane != product_project, return pass with note. - If
projectContractReady == true, return pass. - Otherwise:
- recommend or auto-insert
project-md-refresh - keep phase in planning
- record which minimum sections are missing
- recommend or auto-insert
Minimum Contract Areas
- Project overview
- Commands
- Testing rules
- Structure/patterns
- Git workflow
- Core rules / boundaries
Output (patch)
notes:
- "project-contract-gate: blocked -> run project-md-refresh"
missingInfo:
- category: project-contract
priority: HIGH
question: "Refresh `.claude/PROJECT.md` before continuing."
decisions:
recommendedAgents:
- project-md-refresh
Rules
- This gate is policy-only.
- Do not edit files directly.
- Use
project-md-refreshas the generator instead of duplicating its behavior.