decision-logger

timequity's avatarfrom timequity

Logs architectural decisions to docs/DECISIONS.md in ADR format.Use when: making significant architectural or technology choices.Integrates with /craft and /why commands.

⭐0stars🔀0forks📁View on GitHub🕐Updated Dec 10, 2025

When & Why to Use This Skill

The Decision Logger Claude skill automates the creation and management of Architecture Decision Records (ADRs) within your codebase. By standardizing the documentation of significant technical choices, it ensures that the rationale, context, and trade-offs of every major architectural decision are preserved, enhancing long-term maintainability and team alignment.

Use Cases

  • Tech Stack Documentation: Automatically log the reasoning behind choosing specific frameworks, languages, or libraries during the project initiation phase.
  • Database & Infrastructure Choices: Record why a particular database (e.g., SQLite vs. PostgreSQL) or infrastructure component was selected, including the considered alternatives.
  • Pattern & Structure Definition: Document decisions regarding project directory structure, design patterns, and coding standards to ensure consistency across the development team.
  • Historical Context Retrieval: Use integrated commands like /why to help new developers understand the 'why' behind legacy architectural choices without searching through old chat logs.
  • Trade-off Analysis: Explicitly capture the positive, negative, and neutral consequences of a decision to better manage technical debt and future system evolutions.
namedecision-logger
description|
Use whenmaking significant architectural or technology choices.

Decision Logger

Automatically logs architectural decisions in ADR (Architecture Decision Record) format.

When to Use

Log a decision when:

  • Choosing a technology stack
  • Selecting a library over alternatives
  • Defining project structure
  • Making trade-off decisions
  • Changing established patterns

ADR Format

## ADR-{number}: {title}

**Date:** {YYYY-MM-DD}
**Status:** Proposed | Accepted | Deprecated | Superseded by ADR-XXX

### Context
{What is the issue we're seeing that motivates this decision?}

### Decision
{What is the change we're proposing/have agreed to implement?}

### Consequences

**Positive:**
- {benefit_1}
- {benefit_2}

**Negative:**
- {tradeoff_1}
- {tradeoff_2}

**Neutral:**
- {implication}

### Alternatives Considered

| Alternative | Why Rejected |
|-------------|--------------|
| {option_1} | {reason} |
| {option_2} | {reason} |

Process

1. Check for docs/DECISIONS.md

test -f docs/DECISIONS.md || mkdir -p docs && touch docs/DECISIONS.md

If file doesn't exist, create with header:

# Architecture Decision Records

This document captures significant architectural decisions made during development.

Format: [ADR (Architecture Decision Record)](https://adr.github.io/)

---

2. Determine Next ADR Number

Parse existing file for highest ADR number:

ADR-001, ADR-002, ... → next is ADR-003

3. Gather Decision Details

Required fields:

  • title: Short description (e.g., "Use SQLite for storage")
  • context: Why this decision is needed
  • decision: What was chosen
  • consequences: Impact of the decision
  • alternatives: What else was considered

4. Append to File

Add new ADR at the end of docs/DECISIONS.md.

Integration Points

With /craft

During project creation, automatically log:

  • ADR-001: Technology Stack
  • ADR-002: Project Structure
  • ADR-003: Database Choice (if applicable)

With /why

/why reads from docs/DECISIONS.md to provide context for past decisions.

With /next

When implementing features that require architectural choices, prompt to log decision.

Example Decisions

Technology Stack

## ADR-001: Rust + Axum for Backend

**Date:** 2025-01-15
**Status:** Accepted

### Context
Building a notes app that needs fast response times (<50ms) and single-binary deployment.

### Decision
Use Rust with Axum web framework.

### Consequences

**Positive:**
- Sub-millisecond response times achievable
- Single binary, no runtime dependencies
- Memory safety guarantees

**Negative:**
- Steeper learning curve than Go or Node.js
- Longer compile times
- Smaller ecosystem for web libraries

### Alternatives Considered

| Alternative | Why Rejected |
|-------------|--------------|
| Go + Chi | Less type safety, wanted stronger guarantees |
| Node + Hono | Not single binary, runtime required |
| Python + FastAPI | Too slow for <50ms requirement |

Database Choice

## ADR-002: SQLite for Persistence

**Date:** 2025-01-15
**Status:** Accepted

### Context
Single-user notes app needs persistent storage. Simplicity and portability are priorities.

### Decision
Use SQLite with sqlx for database operations.

### Consequences

**Positive:**
- Zero configuration required
- Database is a single file (portable)
- Fast for single-user workloads
- Compile-time SQL checking with sqlx

**Negative:**
- No concurrent write support
- Limited to single machine
- Manual migration management

### Alternatives Considered

| Alternative | Why Rejected |
|-------------|--------------|
| PostgreSQL | Overkill for single-user, requires setup |
| In-memory | Data lost on restart, requirement violation |
| File-based JSON | No query capabilities, slow for large data |

Output

After logging, confirm:

Logged: ADR-{number} "{title}"
View: docs/DECISIONS.md
Query: /why {topic}