Skip to content
Development
Skill

/architecture-decisions

Use when a significant technical decision needs to be recorded. Produces Architecture Decision Records that capture context, options, the decision, and its consequences — so the reasoning survives the people who made it. Trigger on "write an adr for this", "document why we chose

From plugin
claude-skills-collection
34137 skills

Claude Code

$ npx -y skills add nimadorostkar/Claude-Skills-collection --skill architecture-decisions --agent claude-code

SKILL.md

architecture-decisions.SKILL.md
name: architecture-decisions
description: Use when a significant technical decision needs to be recorded. Produces Architecture Decision Records that capture context, options, the decision, and its consequences — so the reasoning survives the people who made it. Trigger on "write an adr for this", "document why we chose postgres", "record this decision", "nobody remembers why we did this". Do not use for designing the system itself — see the system-design skill.
metadata:
  category: development
  version: 1.0.0
  tags: [adr, documentation, architecture, decision-record]

Architecture Decisions

Purpose

Record why a decision was made, not just what was decided. Code shows the what. The context, the alternatives, and the constraints that made the choice correct at the time are otherwise lost within months.

When to Use

  • Choosing a database, framework, protocol, or vendor.
  • Adopting or abandoning an architectural pattern.
  • Making a decision that will be expensive to reverse.
  • Revisiting a decision someone made and nobody can explain.

Capabilities

  • ADR authoring in a consistent, greppable format.
  • Options analysis with honest trade-offs.
  • Superseding and amending existing decisions without rewriting history.

Inputs

  • The decision to be made and the forces acting on it.
  • The realistic options, including "do nothing".
  • Constraints: team, time, budget, compliance, existing systems.

Outputs

A numbered ADR in `docs/adr/NNNN-short-title.md` with:

  • Status: proposed, accepted, superseded by NNNN.
  • Context: the situation and the forces, written so a new hire understands them.
  • Decision: what was chosen, in the active voice.
  • Consequences: what becomes easier, what becomes harder, what is now hard to reverse.

Workflow

1. **State the forces** — What is pushing on this decision? Latency, cost, team familiarity, compliance, an existing commitment. If there are no forces, there is no decision to record. 2. **List real options** — Including the status quo. An ADR with one option is a justification, not a decision. 3. **Evaluate against the forces** — Each option, against each force. The trade-offs should be visible in the table. 4. **Decide and state it plainly** — "We will use PostgreSQL." Not "PostgreSQL was considered favorably." 5. **Write the consequences honestly** — Especially the negative ones. An ADR with only upsides is marketing. 6. **Never delete an ADR** — Supersede it. The old reasoning is what explains the old code.

Best Practices

  • One decision per record. If the title needs "and", split it.
  • Write for someone who joins in two years and has none of your context.
  • Include the numbers that drove the decision. "Cheaper" is not a reason; "$400/month vs $3,100/month at our volume" is.
  • Record decisions you rejected loudly, especially the popular ones. The next person will ask "why not Kafka?" — answer it once, in writing.
  • Keep them in the repository, in version control, next to the code they govern.
  • Status changes are edits to the old ADR; the reasoning is never rewritten.

Examples

# 0007. Use Postgres advisory locks for job deduplication

- Status: Accepted
- Date: 2025-03-11
- Deciders: platform team

## Context

Scheduled jobs run on three application instances. Each instance's cron
fires independently, so a nightly reconciliation job runs three times.
Two of the three runs are wasted work; occasionally they interleave and
double-write ledger entries.

We already run Postgres 15 and have no Redis or Zookeeper in production.
Adding one introduces a new operational dependency for a problem that
occurs once per night.

## Options

| Option                     | Correctness | New infra | Ops cost |
|----------------------------|-------------|-----------|----------|
| Postgres advisory lock     | Strong      | None      | None     |
| Redis SETNX lock           | Strong      | Redis     | Moderate |
| Leader election (Raft lib) | Strong      | None      | High     |
| Single designated instance | Weak (SPOF) | None      | Low      |

## Decision

We will use Postgres transaction-level advisory locks, keyed by job name,
acquired at the start of each scheduled run. An instance that cannot
acquire the lock exits immediately.

## Consequences

- No new infrastructure; the lock is released automatically if an instance
  dies, because it is tied to the transaction.
- Job scheduling now depends on Postgres availability. If Postgres is down,
  no jobs run — which is already true, since every job writes to it.
- This does not generalize to jobs that must run without a database. If we
  add such a job, this decision must be revisited.

Notes

  • ADRs are cheap to write and expensive to skip. The cost of the missing one is a six-month argument two years from now.
  • If a decision is reversed, write a new ADR that supersedes the old one and explain what changed. "We were wrong" is a perfectly good context section.
Read more
@nimadorostkar
Ships withclaude-skills-collection

A curated library of 137 production-grade skills for Claude and other AI coding agents. Every skill follows one structure, speaks with one voice, and earns its place by changing what the agent does.

Stars on GitHub

Momentum

stars in total
34
Star history of nimadorostkar/Claude-Skills-collection on GitHub, a chart by star-history.com

Other skills on claude-skills-collection.

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.

skills10d309k
@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,…

ecc12d293k
@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…

react1d252k
@facebook@facebookInstall Skill

Questions about architecture-decisions.

Which coding agents can use architecture-decisions?
architecture-decisions 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.