MCAF: ADR Writing
Trigger On
- a dependency, boundary, platform, contract, or data model is changing
- a design decision has meaningful trade-offs that should be recorded
- a repo-wide engineering policy needs a durable rationale
Value
- produce a concrete project delta: code, docs, config, tests, CI, or review artifact
- reduce ambiguity through explicit planning, verification, and final validation skills
- leave reusable project context so future tasks are faster and safer
Do Not Use For
- feature-level behaviour details without an architecture decision
- generic architecture overview content
Inputs
docs/Architecture.md- related feature docs
- the nearest
AGENTS.md - current constraints, options, and risks
- the mandatory
MCAF-ARCH-001repository boundary and canonical vertical-slice convention - stable feature
REQ-*andAC-*IDs governed byMCAF-REQ-001, or an explicit cross-cutting operational obligation
Quick Start
- Read the nearest
AGENTS.mdand confirm scope and constraints. - Run this skill's
Workflowthrough theRalph Loopuntil outcomes are acceptable. - Return the
Required Result Formatwith concrete artifacts and verification evidence.
Workflow
- Start from the concrete decision that must be made now.
- Read
../mcaf-feature-spec/references/requirements-adr-traceability.mdand applyMCAF-REQ-001. - If the ADR is missing, scaffold it from
references/adr-template.md. - Record:
- context and problem
- chosen decision
- alternatives considered
- trade-offs and consequences
- related
REQ-*andAC-*IDs - an ordered implementation contract with exact ownership, dependencies, migration/rollout, verification, and completion evidence
MCAF-AI-001lead/worker/reviewer roles, disjoint write scopes, native wait/status mechanism, and join gates
- Add diagrams only when they remove ambiguity.
- Verify the decision preserves
MCAF-ARCH-001. Do not approve a split repository, layer-first feature owner, or inconsistent slice naming as a valid target architecture; document an existing deviation only as a time-bounded migration with owner and removal date. - Link the ADR to affected feature docs and
docs/Architecture.md. - Use
Implementedonly after the planned artifacts, migrations, tests, docs, and verification evidence exist.
Deliver
docs/ADR/ADR-XXXX-short-title.md- linked updates to architecture docs when the decision changes boundaries
Validate
- the decision and rejected alternatives are explicit
- trade-offs are concrete, not hand-wavy
- implementation impact is clear
- a future engineer can understand why this path was chosen
- the decision preserves one repository and the same canonical slice name and convention across all applicable surfaces
- related requirements, implementation tasks, tests, and evidence are traceable
- the implementation contract is executable without rereading the conversation
- the ADR status matches the actual implementation and verification state
Ralph Loop
Use the Ralph Loop for every task, including docs, architecture, testing, and tooling work.
- Brainstorm first (mandatory):
- analyze current state
- define the problem, target outcome, constraints, and risks
- generate options and think through trade-offs before committing
- capture the recommended direction and open questions
- Plan second (mandatory):
- write a detailed execution plan from the chosen direction
- list final validation skills to run at the end, with order and reason
- Execute one planned step and produce a concrete delta.
- Review the result and capture findings with actionable next fixes.
- Apply fixes in small batches and rerun the relevant checks or review steps.
- Update the plan after each iteration.
- Repeat until outcomes are acceptable or only explicit exceptions remain.
- If a dependency is missing, bootstrap it or return
status: not_applicablewith explicit reason and fallback path.
Required Result Format
status:complete|clean|improved|configured|not_applicable|blockedplan: concise plan and current iteration stepactions_taken: concrete changes madevalidation_skills: final skills run, or skipped with reasonsverification: commands, checks, or review evidence summaryremaining: top unresolved items ornone
For setup-only requests with no execution, return status: configured and exact next commands.
Load References
- read
../mcaf-feature-spec/references/requirements-adr-traceability.mdfirst - start with
references/adr-template.md - use
references/ADR-FORMATS.mdonly for numbering or formatting conventions
Example Requests
- "Write an ADR for moving to event-driven notifications."
- "Document why we are adding PostgreSQL instead of keeping SQLite."
- "Capture the policy decision behind local project AGENTS files."