Awesome-omni-skill mine.adrs
Create and maintain Architecture Decision Records (ADRs) for significant project decisions. Tracks context, choices, consequences, and alternatives.
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/development/mine.adrs" ~/.claude/skills/diegosouzapw-awesome-omni-skill-mine-adrs && rm -rf "$T"
manifest:
skills/development/mine.adrs/SKILL.mdsource content
Architecture Decision Records
Lightweight system for recording significant architectural and technical decisions.
When to Activate
- Making architecture or design pattern choices
- Selecting technologies, libraries, or frameworks
- Planning major refactors that change system structure
- Changing infrastructure or deployment strategies
- Introducing breaking changes to APIs or data models
ADR Template
# ADR-NNNN: Title ## Status Accepted ## Context What is the issue or situation that requires a decision? Include relevant constraints, requirements, and forces at play. ## Decision What is the change that we're proposing and/or doing? State the decision clearly and concisely. ## Consequences What becomes easier or harder as a result of this decision? Include both positive and negative consequences. ## Alternatives Considered What other options were evaluated? Why were they rejected? Keep it brief but include the key trade-offs.
Directory Convention
The recommended location is
design/adrs/:
design/adrs/ ├── 0001-use-sqlite-for-persistence.md ├── 0002-adopt-command-pattern.md └── ...
ADRs are numbered sequentially and append-only — superseded decisions get a
Superseded by: ADR-NNN status, not deleted.
Relationship with Research and Audits
ADRs sit in a workflow with research briefs and audits:
- Research (
) explores the problem space and evaluates options/mine.research - ADR records the chosen option and why
- Research prereqs then guide the implementation of that decision
A research brief without a corresponding ADR means the work is still exploratory. An ADR without a research brief means the decision was straightforward enough not to need one.
Audits (
/mine.audit) are backward-looking assessments that may surface issues requiring architectural decisions — those decisions get recorded as ADRs.
Workflow
Creating a New ADR
- Check existing ADRs:
(orls design/adrs/
) to find the next sequence numberadrs/ - Create the directory if it doesn't exist
- Name the file:
(zero-padded, e.g.,NNNN-kebab-case-title.md
)0001 - Fill in all sections — Context and Alternatives are the most valuable parts
- Set Status to
Accepted
Updating an Existing ADR
- Superseded: When a new ADR replaces an old one, update the old ADR's Status to
and link to the new oneSuperseded by ADR-XXXX - Deprecated: When a decision is reversed without replacement, set Status to
and add a note explaining whyDeprecated
What Makes a Good ADR
Good titles describe the decision, not the problem:
- "Use PostgreSQL for persistence" (not "Database choice")
- "Adopt event sourcing for order processing" (not "Order system design")
- "Switch from REST to GraphQL for client API" (not "API refactor")
Good context explains the forces and constraints:
- What problem are we solving?
- What constraints exist (team size, timeline, existing tech)?
- What quality attributes matter most (performance, maintainability)?
Good consequences are honest about trade-offs:
- What do we gain?
- What do we lose or accept as a cost?
- What new risks or complexities does this introduce?
Status Values
| Status | Meaning |
|---|---|
| Decision is active and in effect |
| Replaced by a newer decision |
| Decision reversed, no longer applies |
Example
# ADR-0001: Use SQLite for Local Development Database ## Status Accepted ## Context The application needs a local database for development and testing. Developers use different operating systems and we want minimal setup friction. Production uses PostgreSQL. ## Decision Use SQLite for local development and testing environments. Production will continue to use PostgreSQL. We will use an ORM abstraction layer to minimize database-specific code. ## Consequences - Easier onboarding: no database server installation needed - Faster test execution: in-memory SQLite for unit tests - Risk of subtle behavior differences between SQLite and PostgreSQL - Must avoid PostgreSQL-specific features in application code ## Alternatives Considered - **Docker PostgreSQL**: Closer to production but adds Docker dependency and slower test startup. Rejected for development friction. - **In-memory data structures**: Simplest but no SQL testing. Rejected because we need to test query logic.