madr-decision-log
create, review, normalize, validate, and maintain markdown architectural decision records using madr conventions. use when a repository needs durable adr files, a repeatable docs/decisions workflow, adr indexing, status updates, supersession handling, or file-based quality checks around decision records.
MADR Decision Log
Trigger Signals
- a decision should become a durable markdown record rather than remain trapped in chat or meeting notes
- the repository needs a
docs/decisions/practice with numbering, indexing, review, and validation - an ADR should be reviewed, normalized, superseded, or updated without losing historical meaning
- the team wants a file-oriented MADR workflow rather than a lightweight one-off decision summary
Inspect First
- existing ADRs, RFCs, design docs, and release notes that already touch the same decision
- whether the repository already uses
docs/decisions/, another decision directory, or a numbering convention worth preserving - whether the request is about creating a new ADR, reviewing one, bootstrapping an ADR corpus, or maintaining an existing ADR log
- whether the repo already emits machine-readable decision indexes under runtime surfaces such as
.hforge/runtime/decisions/; keep those derived artifacts separate from the authored markdown ADRs
Workflow
- determine the mode: create, review, bootstrap, or maintain
- default to authored ADR files under
docs/decisions/unless the repository already has a different documented location - use the canonical template and conventions from:
skills/madr-decision-log/references/adr-template.mdskills/madr-decision-log/references/madr-reference.mdskills/madr-decision-log/references/review-checklist.md
- when repository artifacts are needed, use the packaged scripts instead of rebuilding helpers ad hoc:
python skills/madr-decision-log/scripts/new_adr.py --dir docs/decisions --title "<decision title>"python skills/madr-decision-log/scripts/validate_madr.py docs/decisionspython skills/madr-decision-log/scripts/build_log.py docs/decisions
- preserve existing numbering, folder rules, and terminology when the repository already has an ADR practice
- when a decision is superseded, keep the old ADR, update its status, link the successor, and rebuild the ADR log
Create mode
- capture the problem statement, decision drivers, considered options, chosen option, consequences, confirmation strategy, and known stakeholders
- scaffold the file with
skills/madr-decision-log/scripts/new_adr.pywhen the user wants repository artifacts - write the ADR using the MADR structure and keep option names consistent across sections
- validate before handoff with
skills/madr-decision-log/scripts/validate_madr.py
Review mode
- compare the ADR against
skills/madr-decision-log/references/review-checklist.md - separate structural issues, reasoning gaps, missing metadata, and wording improvements
- keep the decision meaning intact while normalizing the document into clearer MADR shape
- when the user asked for review only, do not silently rewrite first; report the issues and then provide a corrected version or patch
Bootstrap mode
- create
docs/decisions/if it does not exist - create or propose an initial repository-level ADR such as
0001-record-architecture-decisions.mdwhen a seed decision is useful - build
ADR-LOG.mdfrom the actual ADR files usingskills/madr-decision-log/scripts/build_log.py - validate the directory using
skills/madr-decision-log/scripts/validate_madr.py
Maintenance mode
- update status and supersession links without deleting historical ADRs
- rebuild
ADR-LOG.mdafter filename, status, or path changes - treat the ADR log as a generated navigation artifact; the ADR files remain the source of truth
Output Contract
- repository-ready MADR markdown or an explicit review report, depending on the request
- preserved numbering and directory conventions unless a change was requested
- validation results when files were created or updated
- explicit note on supersession, confirmation, and follow-up links when the decision changes over time
Failure Modes
- the task is still exploratory and no stable decision exists yet
- the repository already has an ADR convention, but the response would overwrite it instead of extending it
- chosen option names drift across sections and make the ADR inconsistent
- the request mixes authored ADR files with generated runtime decision indexes and loses the source-of-truth distinction
Escalation
- escalate when the decision changes public contracts, cross-team ownership, migration policy, or release obligations
- escalate when a requested rewrite would change the historical meaning of an existing ADR rather than clarify it
- escalate when the repository already has conflicting ADR practices and the owner must choose the canonical one
References
skills/madr-decision-log/references/adr-template.mdskills/madr-decision-log/references/madr-reference.mdskills/madr-decision-log/references/review-checklist.mdskills/madr-decision-log/scripts/new_adr.pyskills/madr-decision-log/scripts/validate_madr.pyskills/madr-decision-log/scripts/build_log.py