SkillAgentSearch skills...

create-adr

Creates Architecture Decision Records (ADRs) to document significant architectural choices and their rationale for future team members

Install / Use

npx skills add tech-leads-club/agent-skills --skill create-adr

Installs into whichever agent you are using.

About this skill
📄

SKILL.md

Installable skill definition

Quality Score

96/100

Supported Platforms

Universal

Our assessment of create-adr

create-adr scores 96/100 on our quality scale, 49th of 710 Content & Media skills we index (top 7%).

Its SKILL.md is 14 KB long, well organised into 50 sections with 12 code examples: a thorough specification that gives an agent plenty to work with.

With 6,832 GitHub stars, it is one of the more widely adopted skills in the catalogue.

Substance
30/30
Structure
20/20
Description
15/15
Adoption
16/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated 7 days ago, so create-adr is actively maintained.
  • No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
  • Its trust signals score 88/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

Safety scan

No issues found

Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands.

Automated pattern scan on 2026-09-28. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.

create-adr compared with similar skills

All 4 of these similar skills score higher than create-adr; compare them before choosing.

SkillScoreStarsUpdatedFormat
create-adr (this skill)by tech-leads-club966.8k7d agoSKILL.md
siyuanby siyuan-note10046.5ktodayMCP Server
algorithmic-artby anthropics100177.9k5d agoSKILL.md
pptxby anthropics100177.9k5d agoSKILL.md
designby nextlevelbuilder100130.2k6d agoSKILL.md

Frequently asked questions

How do I install create-adr?
Run npx skills add tech-leads-club/agent-skills --skill create-adr. The install tabs above show the steps for each supported agent.
Which AI agents does create-adr work with?
It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
Is create-adr safe to use?
Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. It declares no license and scores 88/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is create-adr still maintained?
The repository was last updated 7 days ago, so create-adr is actively maintained.

name: create-adr description: Creates Architecture Decision Records (ADRs) to document significant architectural choices and their rationale for future team members. Use when the user says "write an ADR", "document this decision", "record why we chose X", "add an architecture decision record", "create an ADR for", or wants to capture the reasoning behind a technical choice so the team understands it later. Do NOT use when the decision hasn't been made yet (use create-rfc instead), for implementation planning (use technical-design-doc-creator), or for general documentation. license: CC-BY-4.0 metadata: author: Tech Leads Club - github.com/tech-leads-club version: '1.0.0'

ADR Creator

You are an expert in creating Architecture Decision Records (ADRs) — concise, durable documents that capture the context, decision, and consequences of significant architectural choices so future team members understand why things are the way they are.

When to Use This Skill

Use this skill when:

  • User asks to "write an ADR", "create an ADR", "add an architecture decision record"
  • User wants to "document why we chose X", "record this decision", "capture this architectural choice"
  • A significant technical decision has been made (or is being finalized) and needs to be recorded
  • The team wants to preserve the reasoning behind a choice for future engineers
  • User asks "why did we choose X" and the answer should be written down permanently

Do NOT use for:

  • Decisions not yet made — use create-rfc to drive the decision process first
  • Implementation planning after the decision — use technical-design-doc-creator
  • Simple configuration choices or trivial code decisions
  • Meeting notes or general documentation

ADR vs RFC — Critical Distinction

| Aspect | ADR | RFC | |--------|-----|-----| | Timing | Decision already made (or being finalized) | Before the decision (seeking input) | | Purpose | Record for future team members | Proposal seeking approval | | Audience | Engineers joining months or years later | Current stakeholders | | Length | Short — 200–500 words | Long — thorough comparison | | Mutability | Immutable — superseded, never edited | Iterative — evolves during review | | Tone | Historical record | Deliberative proposal |

If the user says "I need to decide whether to do X" → use create-rfc. If the user says "We decided to do X, let me document it" → use this skill.

Language Adaptation

CRITICAL: Always generate the ADR in the same language as the user's request. Detect the language automatically.

  • Keep technical terms in English when appropriate (e.g., "ADR", "API", "microservices")
  • All section headers and content should be in the user's language
  • Company/product names remain in original form

ADR Format Selection

Three formats are widely used. Detect the right one from context, or ask:

| Format | Best For | Length | |--------|----------|--------| | MADR (Markdown ADR) | Teams that want structured options comparison | Medium | | Nygard (original) | Minimal, fast recording; obvious decisions | Short | | Y-Statement | Inline documentation, very compact contexts | One paragraph |

Default to MADR unless the user specifies otherwise or the decision is very simple.


Interactive Workflow

Step 1: Gather Context (if not provided)

If the user provides minimal context, use AskQuestion to collect essential information:

{
  "title": "ADR Information",
  "questions": [
    {
      "id": "adr_decision",
      "prompt": "What was the decision made? (e.g., 'Use PostgreSQL for primary storage')",
      "options": [
        { "id": "free_text", "label": "I'll describe it in my next message" }
      ]
    },
    {
      "id": "adr_format",
      "prompt": "Which ADR format would you like to use?",
      "options": [
        { "id": "madr", "label": "MADR — structured, with options comparison (recommended)" },
        { "id": "nygard", "label": "Nygard — minimal: Context / Decision / Consequences" },
        { "id": "y_statement", "label": "Y-Statement — single paragraph, very compact" }
      ]
    },
    {
      "id": "adr_status",
      "prompt": "What is the current status of this decision?",
      "options": [
        { "id": "accepted", "label": "Accepted — decision is final" },
        { "id": "proposed", "label": "Proposed — decision is being finalized" },
        { "id": "deprecated", "label": "Deprecated — this approach is no longer recommended" },
        { "id": "superseded", "label": "Superseded — replaced by a newer decision" }
      ]
    },
    {
      "id": "adr_supersedes",
      "prompt": "Does this ADR supersede a previous decision?",
      "options": [
        { "id": "yes", "label": "Yes — I'll provide the ADR number/title" },
        { "id": "no", "label": "No — this is a new decision" }
      ]
    }
  ]
}

Step 2: Validate Mandatory Fields

MANDATORY fields — ask if missing:

  • Decision title (noun phrase, not a question — e.g., "Use Redis for session storage")
  • Date of the decision (or today's date)
  • Status (Accepted / Proposed / Deprecated / Superseded)
  • Context — the forces, constraints, and situation that made this decision necessary
  • The decision itself — what was chosen and why
  • Consequences — what becomes easier, harder, or different as a result

RECOMMENDED fields:

  • Decision drivers — the key criteria or constraints
  • Options considered — what alternatives were evaluated
  • Pros/cons per option — honest trade-off assessment
  • Decision outcome rationale — why this option over the others
  • Links — related ADRs, RFCs, tickets, or documentation

If any mandatory fields are missing, ask IN THE USER'S LANGUAGE before generating the document.

Step 3: Assign ADR Number

Scan the existing ADR directory for the next sequential number:

  1. Check if an ADR directory exists (docs/adr/, docs/decisions/, .adr/, or adr/)
  2. Find the highest existing number
  3. Assign the next number (e.g., if ADR-007 exists, this becomes ADR-008)
  4. If no directory exists, start at ADR-001 and suggest creating the directory

Step 4: Generate the ADR

Generate the ADR following the format selected in Step 1.

Step 5: Offer File Placement

After generating, ask where to save it:

ADR Created: "ADR-{NNN}: {Title}"

Suggested file path: docs/adr/{NNN}-{kebab-case-title}.md

Would you like me to:
1. Save it to docs/adr/ (recommended convention)
2. Save it to a different location
3. Just show the content (I'll place it manually)

Document Templates

MADR Format (Default)

# ADR-{NNN}: {Title}

- **Date**: YYYY-MM-DD
- **Status**: Accepted | Proposed | Deprecated | Superseded by [ADR-NNN]({link})
- **Deciders**: {who was involved in the decision}
- **Tags**: {optional: architecture, security, performance, database, etc.}

## Context and Problem Statement

{Describe the context and the problem or question that led to this decision.
2–4 sentences. What situation forced this choice?}

## Decision Drivers

- {Driver 1 — e.g., "Must support 10k concurrent users"}
- {Driver 2 — e.g., "Team has no Go experience"}
- {Driver 3 — e.g., "Must be deployable on-premise"}

## Considered Options

- {Option A}
- {Option B}
- {Option C — "Do nothing / status quo" when relevant}

## Decision Outcome

Chosen option: **"{Option A}"**, because {concise rationale tied to decision drivers}.

### Positive Consequences

- {Benefit 1}
- {Benefit 2}

### Negative Consequences

- {Trade-off 1 — be honest}
- {Trade-off 2}

## Pros and Cons of the Options

### {Option A} ✅ Chosen

- ✅ {Pro 1}
- ✅ {Pro 2}
- ❌ {Con 1}

### {Option B}

- ✅ {Pro 1}
- ❌ {Con 1}
- ❌ {Con 2}

### {Option C}

- ✅ {Pro 1}
- ❌ {Con 1}

## Links

- {Related ADR, RFC, ticket, or documentation}
- Supersedes: [ADR-{NNN}: {Title}]({link}) (if applicable)
- Superseded by: [ADR-{NNN}: {Title}]({link}) (if applicable)

Nygard Format (Minimal)

# ADR-{NNN}: {Title}

## Status

Accepted | Proposed | Deprecated | Superseded by ADR-{NNN}

## Context

{What is the situation that led to this decision?
What forces are at play — technical, business, organizational?
What constraints exist? 2–5 sentences.}

## Decision

{What did we decide to do?
State it directly, in active voice: "We will use X" or "We decided to adopt Y."
Include a brief rationale — why this option over the alternatives.}

## Consequences

{What becomes easier or better as a result?}
{What becomes harder or worse? Be honest about trade-offs.}
{What new concerns or constraints does this introduce?}

Y-Statement Format (Compact)

# ADR-{NNN}: {Title}

**Date**: YYYY-MM-DD | **Status**: Accepted

In the context of **{situation/use case}**,
facing **{concern or constraint}**,
we decided **{the option chosen}**,
to achieve **{quality attribute or goal}**,
accepting **{the downside or trade-off}**.

**Deciders**: {names or roles}
**Links**: {related ADRs, tickets}

ADR Quality Checklist

Before finalizing, verify:

  • [ ] Title is a noun phrase describing the decision (not a question, not a vague label)
  • [ ] Date is included (decisions without dates lose context quickly)
  • [ ] Status is set correctly — Accepted, Proposed, Deprecated, or Superseded
  • [ ] Context explains the forces that made this decision necessary, not just what was done
  • [ ] Decision is stated directly and tied to the context
  • [ ] Consequences include honest trade-offs — not just positives
  • [ ] Options (MADR format) include at least 2 alternatives actually considered
  • [ ] Supersedes / superseded by links are included when applicable
  • [ ] File follows naming convention: NNN-kebab-case-title.md
  • [ ] Number is sequential in the ADR directory

ADR File Naming Convention

docs/adr/
├── 001-use-postgresql-for-primary-storage.md
├── 002-adopt-event-driven-architecture.md
├── 003-replace-jenkins-with-github-actions.md   ← supersedes ADR-001 if relevant
└── README.md                                     ← optional index
  • Zero-padded numbers: 001, 002, ... 099, 100
  • Kebab-case title
  • .md extension
  • Common directories: docs/adr/, docs/decisions/, adr/, .adr/

Common Anti-Patterns to Avoid

Title as a Question

BAD: # ADR-001: Should we use PostgreSQL?

GOOD: # ADR-001: Use PostgreSQL for Primary Storage

Titles should record the decision, not the question. Future readers need to know what was decided, not what was considered.


Vague Context

BAD:

We needed a database and chose PostgreSQL.

GOOD:

Our application requires a relational database with strong ACID guarantees.
The team has deep PostgreSQL experience. MySQL was evaluated but lacks
native support for JSONB columns, which our schema design requires.
Our cloud provider (AWS) offers managed PostgreSQL via RDS at acceptable cost.

Context should explain the forces — why wasn't the alternative obviously better?


Consequences Without Trade-offs

BAD:

## Consequences
PostgreSQL is fast and reliable.

GOOD:

## Consequences
- Enables JSONB columns and advanced indexing for our query patterns
- Team expertise means fast onboarding and fewer operational surprises
- Adds operational burden compared to a managed NoSQL service
- Schema migrations require careful planning in a relational model

Honest trade-offs are what make ADRs valuable years later.


Editing Instead of Superseding

BAD: Editing an old ADR to change the decision after the fact.

GOOD: Creating a new ADR with Status: Superseded by ADR-{NNN} on the old one and linking back.

ADRs are historical records. The old decision was correct given what was known at the time. Superseding preserves that context.


Missing the "Why Not" Rationale

BAD:

## 

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars6.8k
CategoryContent
Updated7d ago
Forks551

Languages

TypeScript

Trust signals

88/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

1 medium