decisions
Guide for recording significant architectural and design decisions in docs/decisions.md. Use this skill when clearly significant architectural decisions are made (database choices, frameworks, core design patterns) or when explicitly asked to document a decision. Be conservative - only suggest for major decisions, not minor implementation details.
Works with
---
name: decisions
description: Guide for recording significant architectural and design decisions in docs/decisions.md. Use this skill when clearly significant architectural decisions are made (database choices, frameworks, core design patterns) or when explicitly asked to document a decision. Be conservative - only suggest for major decisions, not minor implementation details.
license: MIT
---
# Decisions
## Overview
This skill maintains a chronological record of significant project decisions in `docs/decisions.md`. It captures important architectural and design decisions, especially those involving tradeoffs, to create a permanent record of why key choices were made.
## When to Use This Skill
**Proactive (Conservative):**
Suggest recording decisions only when there is a clearly significant architectural choice, such as:
- Choosing between database systems (e.g., SQLite vs PostgreSQL)
- Selecting major frameworks or libraries
- Deciding on core architectural patterns (e.g., monolith vs microservices, rendering approach)
- Making fundamental design choices that will shape the project long-term
**Do NOT proactively suggest for:**
- Minor implementation details
- Routine coding decisions
- Small refactoring choices
- Trivial technical choices
**Manual:**
Record decisions when explicitly requested by the user with phrases like:
- "Record this decision"
- "Document this in the decision log"
- "Add this to decisions.md"
## Recording a Decision
### Step 1: Identify the Decision
From the conversation context, identify:
- What decision was made
- Why it was needed (context)
- What alternatives were considered (if applicable)
- Key tradeoffs evaluated (if applicable)
- Rationale for the final choice
### Step 2: Determine Detail Level
Adapt the level of detail based on decision complexity:
**Brief** (simple decisions):
- Title and 1-2 sentence summary
- Example: Choosing a well-established library
**Moderate** (typical decisions):
- Decision description
- Brief context (why it was needed)
- The choice made
**Detailed** (complex decisions):
- Decision description
- Context and motivation
- Alternatives considered
- Key tradeoffs evaluated
- Rationale for final choice
### Step 3: Format the Entry
Use this format:
```markdown
## YYYY-MM-DD: [Decision Title]
[Description paragraph(s) adapted to the complexity level]
```
Example (brief):
```markdown
## 2025-10-23: Use httprouter for HTTP routing
Chose httprouter for its simplicity and performance. It's a well-established library that fits our needs without unnecessary complexity.
```
Example (detailed):
```markdown
## 2025-10-23: Choose SQLite for primary database
After evaluating PostgreSQL and SQLite, we chose SQLite for the following reasons:
Context: Need a reliable database for the application that handles moderate traffic (< 1000 concurrent users) and simple relational data.
Alternatives considered:
- PostgreSQL: More features and better for high concurrency, but adds operational complexity
- SQLite: Simpler deployment, embedded database, sufficient performance for our scale
Tradeoffs: SQLite has limitations with high write concurrency and some advanced features, but offers zero-configuration deployment and excellent read performance. Given our expected load and preference for operational simplicity, these tradeoffs favor SQLite.
Decision: Use SQLite with WAL mode enabled for improved concurrency. We can migrate to PostgreSQL later if scaling needs change.
```
### Step 4: Write to File
1. Check if `docs/` directory exists; create it if needed
2. Check if `docs/decisions.md` exists:
- If not, create it with this header:
```markdown
# Project Decisions
This document records significant architectural and design decisions made throughout the project's development.
```
- If it exists, read the current content
3. Append the new decision entry to the bottom of the file
4. Ensure proper spacing (blank line before the new entry)
### Step 5: Confirm with User
After recording the decision, briefly confirm what was recorded. For example:
- "Recorded the decision to use SQLite in docs/decisions.md"
- "Added the routing decision to the decision log"
## Proactive Suggestion Pattern
When detecting a significant architectural decision during conversation, suggest recording it:
```
This seems like a significant architectural decision. Would you like me to record it in docs/decisions.md?
```
Wait for user confirmation before recording.
## Important Notes
- Always append to the bottom (chronological order from oldest to newest)
- Use today's date (YYYY-MM-DD format) for new entries
- Maintain formatting consistency with existing entries
- Don't create duplicate entries for the same decision
- Create `docs/` directory if it doesn't exist
- Avoid recording trivial decisions that don't have long-term architectural impactMore Architecture skills
architecture-decision-records
wshobson/agents
Write and maintain Architecture Decision Records (ADRs) following best practices for technical decision documentation. Use when documenting significant technical decisions, reviewing past architectural choices, or establishing decision processes.
microservices-patterns
wshobson/agents
Design microservices architectures with service boundaries, event-driven communication, and resilience patterns. Use when building distributed systems, decomposing monoliths, or implementing microservices.
clickhouse-architecture-advisor
clickhouse/agent-skills
MUST USE when designing ClickHouse architectures, selecting between ingestion or modeling patterns, or translating best practices into workload-specific system designs. Complements clickhouse-best-practices with decision frameworks and explicit provenance labels.

