adr-authoring
This skill should be used when writing Architecture Decision Records (ADRs), documenting technical decisions, or reviewing architecture choices. Triggers on phrases like "document this decision", "create ADR", "architecture decision", "why did we choose", "record the decision", "MADR template", or when the user is working on plan files that contain ADR sections.
What this skill does
# Architecture Decision Record Authoring
Write clear, useful ADRs that capture the context, options, and rationale behind technical decisions. Good ADRs prevent re-litigation of decisions and help new team members understand the codebase.
## Quick Reference
### MADR Template Levels
| Level | When to Use | Required Fields |
|-------|-------------|-----------------|
| **Lightweight** | Quick decisions, low impact | Status, Context, Decision, Consequences |
| **Standard** | Most architectural decisions | + Date, Decision-makers, Drivers, Options |
| **Full** | Critical/reversible decisions | + Confirmation, Traceability |
### ADR Lifecycle
```
proposed → accepted → [deprecated → superseded]
↘ rejected
```
## Lightweight ADR Template
For quick decisions with limited impact:
```markdown
### ADR-XXX: [Short Title]
**Status**: proposed | accepted | rejected | deprecated | superseded
**Context and Problem Statement**
[2-3 sentences describing the situation and what needs to be decided]
**Decision Outcome**
Chosen option: "[Option name]"
[1-2 sentences explaining why]
**Consequences**
- Good: [positive outcomes]
- Bad: [negative outcomes or trade-offs]
```
## Standard ADR Template
For most architectural decisions:
```markdown
### ADR-XXX: [Short Title]
**Status**: proposed | accepted | rejected | deprecated | superseded
**Date**: YYYY-MM-DD
**Decision-makers**: [names or roles]
**Context and Problem Statement**
[2-3 sentences describing the situation requiring a decision.
What is the issue? Why does it need to be addressed now?]
**Decision Drivers**
- [Driver 1: e.g., "Need to support 10x current load"]
- [Driver 2: e.g., "Team has no experience with technology X"]
- [Driver 3: e.g., "Budget constraint of $X/month"]
**Considered Options**
1. [Option 1 name]
2. [Option 2 name]
3. [Option 3 name]
**Decision Outcome**
Chosen option: "[Option N]" because [1-2 sentence rationale linking to drivers].
**Consequences**
- Good: [positive outcome 1]
- Good: [positive outcome 2]
- Bad: [trade-off or negative outcome]
- Neutral: [side effect that's neither good nor bad]
```
## Full ADR Template
For critical decisions requiring traceability:
```markdown
### ADR-XXX: [Short Title]
**Status**: proposed | accepted | rejected | deprecated | superseded
**Date**: YYYY-MM-DD
**Decision-makers**: [names or roles]
**Context and Problem Statement**
[Detailed context with background information.
Include relevant constraints and dependencies.]
**Decision Drivers**
- [Driver 1 with quantifiable metric if possible]
- [Driver 2]
- [Driver 3]
**Considered Options**
1. **[Option 1 name]**: [Brief description]
2. **[Option 2 name]**: [Brief description]
3. **[Option 3 name]**: [Brief description]
**Pros and Cons of Options**
#### Option 1: [Name]
- Good: [Pro 1]
- Good: [Pro 2]
- Bad: [Con 1]
#### Option 2: [Name]
- Good: [Pro 1]
- Bad: [Con 1]
- Bad: [Con 2]
#### Option 3: [Name]
- Good: [Pro 1]
- Neutral: [Neither good nor bad]
- Bad: [Con 1]
**Decision Outcome**
Chosen option: "[Option N]" because [rationale].
**Consequences**
- Good: [outcome 1]
- Bad: [outcome 2]
**Confirmation**
[How will we verify this decision was correct?]
- [Metric or checkpoint 1]
- [Metric or checkpoint 2]
**Traceability**
- Requirements: REQ-XXX, REQ-YYY
- Tasks: TASK-XXX, TASK-YYY
- Supersedes: ADR-ZZZ (if applicable)
```
## Writing Effective ADRs
### Context Section
**Do:**
- State the problem clearly in 2-3 sentences
- Include relevant constraints (time, budget, team skills)
- Mention what triggered this decision
**Don't:**
- Write a novel (save details for options analysis)
- Assume reader knows the background
- Include the solution in the context
### Decision Drivers
Quantify when possible:
| Vague | Specific |
|-------|----------|
| "Need better performance" | "Must handle 1000 req/sec" |
| "Team preference" | "3 of 4 developers have React experience" |
| "Cost concerns" | "Budget limit: $500/month" |
### Considered Options
Include at least 2 options. Always include:
- The chosen option
- The obvious alternative
- "Do nothing" if applicable
### Consequences
Be honest about trade-offs:
```markdown
**Consequences**
- Good: Reduces API latency by 40%
- Good: Team already knows this technology
- Bad: Adds operational complexity (new service to maintain)
- Bad: Vendor lock-in to AWS
- Neutral: Requires migration of existing data (one-time effort)
```
## ADR Numbering
Use sequential numbering within the project:
```markdown
ADR-001: Database Selection
ADR-002: Authentication Strategy
ADR-003: API Versioning Approach
```
For domain-specific ADRs in larger projects:
```markdown
ADR-AUTH-001: OAuth Provider Selection
ADR-DATA-001: Cache Strategy
ADR-INFRA-001: Container Orchestration
```
## When to Write an ADR
| Situation | ADR Level |
|-----------|-----------|
| Choosing a database | Standard or Full |
| Selecting a framework | Standard |
| API design patterns | Standard |
| Deployment strategy | Standard or Full |
| Library selection | Lightweight |
| Code organization | Lightweight |
| Naming conventions | Lightweight (or skip) |
## Integration with SpecKit
ADRs created during `/speckit.plan` should:
1. **Use consistent numbering** - ADR-001, ADR-002, etc.
2. **Reference requirements** - Link to REQ-XXX from spec
3. **Be validated** - `/speckit.analyze` checks ADR completeness
4. **Trace to tasks** - Tasks reference implementing ADRs
## Additional Resources
For detailed patterns and examples, see:
- **`references/madr-full-template.md`** - Complete MADR template with all fields
- **`references/adr-examples.md`** - Real-world ADR examples
## Checklist Before Finalizing
- [ ] Status is set (proposed for new ADRs)
- [ ] Context explains WHY a decision is needed
- [ ] At least 2 options were considered
- [ ] Decision clearly states the chosen option
- [ ] Consequences include both good AND bad
- [ ] Date and decision-makers are recorded (Standard+)
Related in Writing & Docs
jax-development
IncludedUse this skill when the user is writing, debugging, profiling, refactoring, reviewing, benchmarking, parallelising, exporting, or explaining JAX code, or when they mention JAX, jax.numpy, jit, grad, value_and_grad, vmap, scan, lax, random keys, pytrees, jax.Array, sharding, Mesh, PartitionSpec, NamedSharding, pmap, shard_map, Pallas, XLA, StableHLO, checkify, profiler, or the JAX repo. It helps turn NumPy or PyTorch-style code into pure functional JAX, fix tracer/control-flow/shape/PRNG bugs, remove recompiles and host-device syncs, choose transforms and sharding strategies, inspect jaxpr/lowering/IR, and benchmark compiled code correctly.
nature-article-writer
IncludedDrafts, rewrites, diagnostically critiques, and style-calibrates primary research manuscripts for Nature and Nature Portfolio journals. Use when the user wants a Nature-style title, summary paragraph or abstract, introduction, results, discussion, methods, figure legends, presubmission enquiry, cover letter, reviewer response, or when a scientific draft sounds generic, jargon-heavy, structurally weak, or AI-ish and needs precise, broad-reader-friendly prose without inventing data, analyses, or references. Best for primary research articles and letters rather than reviews or press releases unless explicitly adapting one.
deckrd
IncludedDocument-driven framework that derives requirements, specifications, implementation plans, and executable tasks from goals through structured AI dialogue. Use when user says "write requirements", "create spec", "plan implementation", "derive tasks", "structure this feature", "break down into tasks", or "document this module". Also use for reverse engineering existing code into docs (/deckrd rev). Do NOT use for direct code writing — use /deckrd-coder after tasks are generated. Do NOT use when the user only wants to run or fix existing code without planning.
clinical-decision-support
IncludedGenerate professional clinical decision support (CDS) documents for pharmaceutical and clinical research settings, including patient cohort analyses (biomarker-stratified with outcomes) and treatment recommendation reports (evidence-based guidelines with decision algorithms). Supports GRADE evidence grading, statistical analysis (hazard ratios, survival curves, waterfall plots), biomarker integration, and regulatory compliance. Outputs publication-ready LaTeX/PDF format optimized for drug development, clinical research, and evidence synthesis.
handling-sf-data
IncludedSalesforce data operations with 130-point scoring. Use this skill to create, update, delete, bulk import/export, generate test data, and clean up org records using sf CLI and anonymous Apex. TRIGGER when: user creates test data, performs bulk import/export, uses sf data CLI commands, needs data factory patterns for Apex tests, or needs to seed/clean records in a Salesforce org. DO NOT TRIGGER when: SOQL query writing only (use querying-soql), Apex test execution (use running-apex-tests), or metadata deployment (use deploying-metadata).
accelint-ac-to-playwright
IncludedConvert and validate acceptance criteria for Playwright test automation. Use when user asks to (1) review/evaluate/check if AC are ready for automation, (2) assess if AC can be converted as-is, (3) validate AC quality for Playwright, (4) turn AC into tests, (5) generate tests from acceptance criteria, (6) convert .md bullets or .feature Gherkin files to Playwright specs, (7) create test automation from requirements. Handles both bullet-style markdown and Gherkin syntax with JSON test plan generation and validation.