Skip to content
Development
Skill

/decision-record

Write a narrative decision record (ADR) for a design system choice: context, options, trade-offs, consequences, including declined proposals. Triggers: document this decision, ADR, why did we choose, capture the reasoning. Machine-checkable rules: governance-encoder.

From plugin
design-system-ops
21836 skills4 commands

Claude Code

$ npx -y skills add murphytrueman/design-system-ops --skill decision-record --agent claude-code

SKILL.md

decision-record.SKILL.md
name: decision-record
description: "Write a narrative decision record (ADR) for a design system choice: context, options, trade-offs, consequences, including declined proposals. Triggers: document this decision, ADR, why did we choose, capture the reasoning. Machine-checkable rules: governance-encoder."
allowed-tools: Read, Write, Grep, Glob, Bash(cat:*), Bash(find:*), Bash(head:*), Bash(ls:*), Bash(grep:*), Bash(rg:*)
references:
  - ../../knowledge-notes/component-governance.md
  - ../../knowledge-notes/output-discipline.md

Decision record

A skill for creating structured decision records for design system choices. Covers component decisions, token architecture choices, tooling selections, governance policies, and any other decision worth recording so future contributors do not have to reverse-engineer the reasoning.

Before you begin: verify references

Confirm that every path in this skill's frontmatter `references:` exists relative to this SKILL.md. If any is missing, stop: the install is incomplete, usually because a flattening installer (for example `npx skills install`) dropped the repo-root `knowledge-notes/` directory. Tell the user to reinstall by a method in `1-INSTALL.md` and run `verify-install.sh` from the install root. Proceed without the references only if the user explicitly says to, and then say in the output that it was produced without the pack's reference material.

Context

Design systems accumulate decisions faster than they accumulate documentation. The result is a system where the current state is known but the reasoning is not — which means the same debates recur, constraints get ignored because their origin is forgotten, and new team members spend weeks learning by collision what a thirty-minute conversation would have covered.

A decision record does not need to be formal. It needs to be findable and honest. The format below is lightweight enough to write in under twenty minutes and structured enough to be useful when someone reads it twelve months later.

---

Step 0: Decision trigger checklist

Before writing a record, confirm this decision warrants one. Not every choice needs a formal record — but more decisions warrant records than teams typically capture. Use this checklist:

**Create a decision record if any of these are true:**

  • [ ] The decision affects more than one consuming team
  • [ ] The decision involves a trade-off where reasonable people could disagree
  • [ ] The decision will be referenced during future contribution reviews
  • [ ] The decision changes a naming convention, token architecture, or API contract
  • [ ] The decision deprecates or removes something from the system
  • [ ] Someone asked "why do we do it this way?" and the answer was not documented
  • [ ] The same question has come up more than once

**Skip the decision record if all of these are true:**

  • The decision affects only one component's internal implementation
  • The decision is easily reversible with no consumer impact
  • The decision follows an existing, documented convention without exception

When in doubt, write the record. A twenty-minute investment in documentation saves hours of re-discovery and re-debate.

Step 0b: Find the team's existing records

Before writing, look for where decisions already live and match it: `docs/adr/`, `docs/decisions/`, `adr/`, `decisions/`, an `.adr-dir` file (adr-tools), a MADR template (`template.md` with "Decision Drivers" and "Considered Options"), a log4brains config, or a docs-platform section the user names. If records exist, use their template's section names and their numbering (sequential `NNNN-` prefixes are the norm; take the next number). If none exist, use `docs/decisions/NNNN-<kebab-title>.md` starting at `0001`, and say so. Don't invent a date-based id scheme: two decisions in one month would collide.

Step 1: Clarify the decision

Ask for or confirm:

  • What was decided? (One clear sentence)
  • When was this decided?
  • Who was involved in making the decision?
  • Is this decision already made, or is it still in progress?
  • What options were considered, and why was each rejected? Get these from the user or from linked sources (meeting notes, PR threads, RFCs)

If the decision is in progress, the record still gets written — just with an open status. Decision records for in-progress decisions are often the most valuable, because they capture the thinking before it is lost in the gap between discussion and resolution.

Step 2: Write the record

Use the following structure. Impact assessment is conditional; every other section appears in every record.

Record only options, reasons and trade-offs the user supplied or that appear in the sources you were given. Where something is missing, write `[unknown — ask X]` naming who would know. Never infer rationale: a plausible reason that nobody actually gave is worse than a visible gap, because future readers will treat it as fact.

---

Decision record: [title]

**ID:** [sequential, matching the team's existing records, e.g. 0007] **Date:** [when the decision was made or this record was created] **Status:** Proposed / Accepted / Declined / Superseded / Deprecated **Deciders:** [who made the decision] **Author:** [who wrote this record, if different]

Use Declined for proposals that were turned down (for example, rejection records from `contribution-workflow`); the record then explains which criteria weren't met and under what conditions it could be revisited.

---

Context

What was the situation that made this decision necessary? What problem was being solved, or what question needed an answer?

Write this as a factual description of the state of the world at the time of the decision. Include any constraints that shaped the decision space — technical, organisational, time-based, or otherwise. Do not frame the context to make the eventual decision look inevitable. Future readers need to understand the real landscape, including the pressures that influenced t

Read more
@murphytrueman
Ships withdesign-system-ops

Claude Code skills for the work that keeps a design system alive.

Stars on GitHub

Momentum

stars in total
218
Star history of murphytrueman/design-system-ops on GitHub, a chart by star-history.com

Other skills on design-system-ops.

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills2w309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react5d252k
@facebook@facebookInstall Skill

Questions about decision-record.

Which coding agents can use decision-record?
decision-record installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.