Creates a change proposal with clear intent, defined scope, and technical approach.
Triggers: /sdd-propose <change-name>, create proposal, define change, sdd proposal
Purpose
The proposal defines the WHAT and WHY before entering into technical details. It is the scope contract of the change. Without an approved proposal, there are no specs or design.
For substantial proposals (cross-team scope, multiple stakeholders, or
user-facing product changes), optionally pair the proposal with a PRD using
docs/templates/prd-template.md. The
PRD captures problem statement, target users, user stories, NFRs, and
acceptance criteria — feeding directly into the sdd-spec phase. Skip the
PRD for internal refactors or single-stakeholder changes.
Skill resolution
Project-local → global, in order:
1. .claude/skills/sdd-propose/SKILL.md (project-local — highest priority)
2. ~/.claude/skills/sdd-propose/SKILL.md (global catalog — fallback)
See docs/SKILL-RESOLUTION.md for the full algorithm.
Claude execution wiring
These notes bind the tool-neutral logic above to the Claude Code harness. They are the EXECUTION layer that does not port to other tools.
- Step 0a preload — follow
skills/_shared/sdd-phase-common.mdSection F (Project Context Load). Non-blocking. - Step 0c preload — follow
skills/_shared/sdd-phase-common.mdSection G (Spec Context Preload). Non-blocking. - Artifact reads — use the harness
Read("docs/sdd/{change-name}/explore.md")tool (disk-primary, per_shared/sdd-phase-common.mdSection B). If a disk file is absent (legacy change), fall back tomem_search(query: "sdd/{change-name}/explore")→mem_get_observation(id). - Proposal persistence — disk-primary, per
_shared/sdd-phase-common.mdSection C: firstWrite("docs/sdd/{change-name}/proposal.md", <full markdown>), thenmem_savea pointer + summary withtopic_key: sdd/{change-name}/proposal,type: architecture,project: {project}. If Engram MCP is unreachable: still write the disk artifact; skip the engram pointer only. The Step 3a-bis gate failure path MUST NOT callWriteormem_save. - Orchestrator output — return the neutral Output Contract as the JSON block
the orchestrator expects; the persisted-pointer artifact entry is
engram:sdd/{change-name}/proposal. The manual next steps are/sdd-spec <change-name>and/sdd-design <change-name>(can run in parallel).