Skip to main content

adr

Creates and maintains Architecture Decision Records (ADRs) — structured documents that capture the context, decision, consequences, and alternatives for significant architectural choices. Use when recording a new technical decision, updating the status of an existing ADR, or reviewing the ADR log for consistency and completeness.

ソース情報

リポジトリ
davidamitchell/Skills
ソースの最終更新活動
2026年3月26日 08:26
検出された SKILL.md の言語
英語
スター
0
フォーク
1

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
adr
version
1.0
description
Creates and maintains Architecture Decision Records (ADRs) — structured documents that capture the context, decision, consequences, and alternatives for significant architectural choices. Use when recording a new technical decision, updating the status of an existing ADR, or reviewing the ADR log for consistency and completeness.
# Skill: Architecture Decision Records ## When Not to Use - When the decision is a minor implementation detail that does not constrain future work or require team alignment — routine choices belong in code comments or inline documentation, not ADRs - When the decision is already fully captured in an existing ADR — update the existing record rather than creating a duplicate - When the task is to research or evaluate options rather than record a conclusion — use the research skill first to gather evidence, then return to this skill once a decision is ready to document --- ## Interaction Protocol **Before starting**, ask if not already clear: 1. What is the decision being recorded, and what is its title? 2. What is the current status: Proposed, Accepted, Rejected, Superseded, or Deprecated? 3. What problem or opportunity drove this decision — what forces (technical, business, organisational) were at play? 4. What alternatives were considered, and why was each rejected? 5. Does this ADR supersede or relate to any existing ADR? **Output style**: - Produce a complete ADR document in markdown with YAML front matter - Use precise, unambiguous language throughout — no weasel words, no vague attributions - State consequences honestly: include both positive and negative impacts in equal rigour - Use coded bullet identifiers (POS-001, NEG-001, ALT-001, IMP-001, REF-001) for multi-item sections to support machine parsing and cross-referencing - Do not omit sections or use placeholders — every section must contain substantive content --- ## Inputs and Outputs **Input**: A decision to document, with context about the forces at play, the chosen solution, and the alternatives considered **Output**: A complete ADR markdown file ready to commit to the project's ADR directory, with YAML front matter and all required sections **Composability**: Use research before this skill to gather evidence for the context and alternatives sections; use technical-writer after this skill if the ADR requires further prose editing for a broader audience; use swe when the decision involves architectural trade-offs that need grounding in SOLID, REST, or integration pattern principles --- ## ADR Format Every ADR must follow this structure exactly. Do not reorder, rename, or omit sections. ### Front Matter ```yaml --- title: "ADR-NNNN: [Decision Title]" status: "Proposed" date: "YYYY-MM-DD" authors: "[Stakeholder Names or Roles]" tags: ["architecture", "decision"] supersedes: "" superseded_by: "" --- ``` - Set `status` to `Proposed` for new ADRs unless the decision is already accepted - Set `supersedes` to the ADR number being replaced, or leave empty - Set `superseded_by` when this ADR is later replaced by another; update the original ADR at that time --- ### 1. Status State the current lifecycle status on a single line: **Proposed** | Accepted | Rejected | Superseded | Deprecated --- ### 2. Context State the problem, constraints, and forces that made this decision necessary. - Describe the situation as it existed before the decision - Identify the technical, business, and organisational forces at play - State any hard constraints that ruled out whole classes of solutions - Do not state the decision here — only the forces that drove it --- ### 3. Decision State the chosen solution clearly and without ambiguity. - Open with a direct statement: "We will..." or "Adopt..." - Explain the key factors that made this option preferable over the alternatives - Do not repeat the context; assume the reader has read Section 2 --- ### 4. Consequences Document all significant outcomes of the decision. #### Positive - **POS-001**: [Beneficial outcome or advantage] - **POS-002**: [Additional positive consequence] #### Negative - **NEG-001**: [Trade-off, limitation, or drawback] - **NEG-002**: [Technical debt or risk introduced] Include at least one item in each category. Use specific, concrete statements — "reduces query latency by eliminating a join" is acceptable; "improves performance" is not. --- ### 5. Alternatives Considered Document every option that was evaluated and rejected. #### [Alternative Name] - **ALT-001**: **Description**: [What this option is and how it would work] - **ALT-002**: **Rejection Reason**: [Why this option was not selected — specific, not generic] Increment ALT codes sequentially across all alternatives. Document at least two alternatives, including the do-nothing option where applicable. --- ### 6. Implementation Notes Provide actionable guidance for applying the decision. - **IMP-001**: [Key implementation step or constraint] - **IMP-002**: [Migration or rollout consideration, if applicable] - **IMP-003**: [Success criterion or observable outcome that confirms the decision has been applied correctly] --- ### 7. References Link to related ADRs, standards, and external resources. - **REF-001**: [Related ADR — use relative path] - **REF-002**: [External standard, specification, or framework] - **REF-003**: [Research findings or evidence that informed the decision] --- ## File Naming and Location ### Naming Convention `NNNN-[title-slug].md` Where: - `NNNN` is a zero-padded four-digit sequence number (0001, 0002, …) - `[title-slug]` is the decision title in lowercase with spaces replaced by hyphens and special characters removed, kept to three to five words **Examples**: `0001-database-selection.md`, `0015-microservices-architecture.md` ### Location Store all ADRs in a dedicated directory within the project. Confirm the project's ADR directory before creating a file; common locations are `docs/adr/`, `decisions/`, or `architecture/decisions/`. If no directory exists, propose creating one and confirm with the team. ### Sequence Number Check the existing ADR files to determine the next sequential number. Do not assume a number — verify it by inspecting the directory. --- ## Maintaining Existing ADRs When a decision is superseded or its status changes: 1. Update the `status` field in the original ADR's front matter 2. Set `superseded_by` to the number of the new ADR 3. In the new ADR, set `supersedes` to the number of the original 4. Do not delete or rewrite the original ADR — the historical record must be preserved When an ADR contains an error in the context or alternatives sections, append a correction note rather than editing the original prose. Preserve the decision as it was understood at the time it was made. --- ## Quality Checklist Before finalising any ADR, verify all items: - [ ] ADR number is sequential and does not duplicate an existing number - [ ] File name follows the naming convention - [ ] Front matter is complete: title, status, date, authors, tags - [ ] Date is in YYYY-MM-DD format - [ ] Status is one of the five valid values - [ ] Context explains the forces without stating the decision - [ ] Decision is stated unambiguously in the opening sentence - [ ] At least one positive and one negative consequence are documented - [ ] At least two alternatives are documented with specific rejection reasons - [ ] Implementation notes provide at least one observable success criterion - [ ] All coded items follow the format (POS-001, NEG-001, ALT-001, IMP-001, REF-001) - [ ] No section is empty or contains a placeholder - [ ] Language is precise — no weasel words, no vague attributions, no passive constructions that hide the decision-maker - [ ] Related ADRs are cross-referenced in both directions --- ## Failure Modes - Creating an ADR for a decision that has not yet been made — ADRs record decisions, not open questions; use a different format (RFC, proposal, spike) for options under evaluation - Stating consequences without specificity — "improves maintainability" is not a consequence; name what concretely changes - Documenting only positive consequences — every real decision involves trade-offs; if no negatives are listed, the record is incomplete - Listing alternatives that were never seriously considered — every alternative must have a genuine rejection reason - Editing the substance of a historical ADR rather than superseding it — this destroys the audit trail the format is designed to preserve
GitHubで見る