Create and maintain Architecture Decision Records (ADRs) in Confluence. Use when documenting technical decisions, architecture choices, technology selections, or when user mentions ADR, architecture decisions, technical choices, or design decisions.
From confluencenpx claudepluginhub ramirez-justin/claude-plugins --plugin confluenceThis skill uses the workspace's default tool permissions.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Expert assistance for creating and maintaining Architecture Decision Records in Confluence.
This skill complements the superpowers workflow skills. ADRs often emerge from superpowers workflows:
| Superpowers Skill | Creates ADR Opportunity |
|---|---|
brainstorming | Technology/approach decisions made during design |
writing-plans | Architectural choices in implementation plans |
receiving-code-review | Decisions made in response to review feedback |
Recommended workflow:
brainstorming to explore options and make decisionsKey principle: Superpowers handles the decision-making process, this skill captures decisions for posterity.
Architecture Decision Records document important architectural decisions made during a project:
# [Number]. [Title]
**Date**: YYYY-MM-DD
**Status**: [Proposed | Accepted | Deprecated | Superseded]
**Decision Makers**: [Names or team]
**Technical Story**: [Optional ticket/issue reference]
## Context
What is the issue we're seeing that is motivating this decision or change?
## Decision
What is the change that we're proposing and/or doing?
## Consequences
What becomes easier or more difficult to do because of this change?
### Positive
- List of positive consequences
### Negative
- List of negative consequences
- Known limitations
- Trade-offs
# 001. Use PostgreSQL for Primary Database
**Date**: 2024-01-15
**Status**: Accepted
**Decision Makers**: Engineering Team
**Technical Story**: PROJ-123
## Context
We need to select a database system for our new user management service. The service will:
- Handle up to 1M users initially, growing to 10M
- Require complex queries across multiple tables
- Need ACID compliance for user transactions
- Support full-text search on user profiles
- Integrate with our existing infrastructure
We evaluated several options:
- PostgreSQL
- MySQL
- MongoDB
- DynamoDB
## Decision
We will use PostgreSQL 15 as our primary database.
**Key factors in this decision:**
1. **ACID Compliance**: Strong guarantees for user data integrity
2. **Complex Queries**: Excellent support for JOINs and aggregations
3. **JSON Support**: Native JSONB for flexible schema evolution
4. **Full-Text Search**: Built-in search capabilities with tsvector
5. **Proven at Scale**: Used successfully by similar applications
6. **Team Expertise**: Team has 5+ years PostgreSQL experience
7. **Cost**: Open source with commercial support available
## Consequences
### Positive
- **Data Integrity**: ACID compliance ensures user data consistency
- **Query Flexibility**: Rich SQL support for complex reporting
- **Future-Proof**: JSON support allows schema evolution
- **Performance**: Excellent performance for our workload patterns
- **Ecosystem**: Vast ecosystem of tools and extensions
- **Monitoring**: Mature monitoring and debugging tools
- **Team Velocity**: Team can be productive immediately
### Negative
- **Scaling Complexity**: Horizontal scaling requires additional tooling (Citus)
- **Operational Overhead**: Requires database administration expertise
- **Backup Strategy**: Need to implement robust backup/recovery
- **Cloud Lock-in**: Managed PostgreSQL ties us to cloud provider
- **Migration Cost**: Future migration to different database would be expensive
### Mitigation Strategies
- Use connection pooling (PgBouncer) for connection management
- Implement read replicas for read scaling
- Regular backup testing and disaster recovery drills
- Database versioning with migration tools (Flyway)
- Monitor query performance with pg_stat_statements
### Alternatives Considered
**MySQL**:
- ✅ Similar performance and features
- ❌ Less sophisticated JSON support
- ❌ Team less experienced
**MongoDB**:
- ✅ Excellent horizontal scaling
- ❌ No ACID transactions (at the time)
- ❌ Weak JOIN support for complex queries
**DynamoDB**:
- ✅ Fully managed, auto-scaling
- ❌ Complex query limitations
- ❌ Higher cost at scale
- ❌ AWS lock-in
## Notes
This decision can be revisited if:
- Scale exceeds 50M users
- Query patterns change dramatically
- Team expertise shifts
- Cost becomes prohibitive
## References
- [PostgreSQL Documentation](https://www.postgresql.org/docs/)
- [Benchmark Results](link-to-internal-benchmarks)
- [Cost Analysis Spreadsheet](link-to-analysis)
# 005. Use React for Frontend Framework
## Context
Need to select frontend framework for new dashboard application.
Requirements:
- Rich interactive UI
- Real-time updates
- Mobile responsive
- Large community support
- Component reusability
## Decision
Selected React 18 with TypeScript.
## Consequences
[...]
# 008. Adopt Microservices Architecture
## Context
Monolithic application becoming difficult to maintain and deploy.
Challenges:
- Long deployment cycles
- Tight coupling
- Difficult to scale independently
- Team coordination overhead
## Decision
Migrate to microservices architecture over 12 months.
## Consequences
[...]
# 012. Implement OAuth 2.0 for Authentication
## Context
Need secure, industry-standard authentication.
Requirements:
- Third-party login support
- Token-based authentication
- Refresh token rotation
- Security best practices
## Decision
Implement OAuth 2.0 with PKCE flow.
## Consequences
[...]
# 015. Deploy on AWS Using ECS Fargate
## Context
Need container orchestration solution.
Options evaluated:
- Self-managed Kubernetes
- AWS ECS Fargate
- Google Cloud Run
- Heroku
## Decision
Use AWS ECS Fargate for container deployment.
## Consequences
[...]
Team realizes: "We need to decide on a caching strategy"
Options:
- Redis
- Memcached
- In-memory (application)
- CDN caching
Create ADR with:
- Context and requirements
- Options evaluated
- Recommendation
- Trade-offs
Team reviews:
- Technical lead approval
- Security review if needed
- Architecture team input
- Mark as "Accepted"
- Publish to Confluence
- Implement the decision
- Link from related docs
- Update if context changes
- Deprecate if superseded
- Add learnings and updates
Architecture Space
├── ADR Index (list of all ADRs)
├── ADR Template
└── Decision Records/
├── 001-use-postgresql-for-database.md
├── 002-adopt-microservices-architecture.md
├── 003-implement-oauth-authentication.md
├── 004-use-redis-for-caching.md
└── ...
# Architecture Decision Records
## Active Decisions
| Number | Title | Date | Status | Decision Makers |
|--------|-------|------|--------|-----------------|
| 015 | Deploy on AWS ECS Fargate | 2024-01-20 | Accepted | DevOps Team |
| 014 | Use GraphQL for API | 2024-01-18 | Accepted | Backend Team |
| 013 | Implement Feature Flags | 2024-01-15 | Accepted | Engineering |
## Deprecated Decisions
| Number | Title | Date | Status | Superseded By |
|--------|-------|------|--------|---------------|
| 007 | Use MongoDB | 2023-06-10 | Deprecated | ADR-001 |
| 003 | Deploy to Heroku | 2023-03-15 | Deprecated | ADR-015 |
## Rejected Proposals
| Number | Title | Date | Reason |
|--------|-------|------|--------|
| 011 | Use Vue.js | 2023-11-20 | Team lacks expertise |
| 006 | Self-host Kubernetes | 2023-05-10 | Too much operational overhead |
## Categories
### Infrastructure
- ADR-001: Database Selection
- ADR-015: Container Orchestration
### Frontend
- ADR-005: Frontend Framework
- ADR-009: State Management
### Backend
- ADR-012: Authentication Method
- ADR-014: API Design
### Security
- ADR-012: OAuth 2.0 Authentication
- ADR-016: Encryption at Rest
# [Number]. Select [Technology Type] for [Purpose]
**Date**: YYYY-MM-DD
**Status**: Proposed
**Decision Makers**: [Team]
## Context
### Requirements
- List functional requirements
- List non-functional requirements
- List constraints
### Evaluation Criteria
1. Criterion 1 (weight: X%)
2. Criterion 2 (weight: Y%)
3. Criterion 3 (weight: Z%)
## Options Evaluated
### Option 1: [Technology A]
**Pros**:
- Pro 1
- Pro 2
**Cons**:
- Con 1
- Con 2
**Score**: X/10
### Option 2: [Technology B]
[Same structure]
### Option 3: [Technology C]
[Same structure]
## Decision
Selected [Technology X] because [brief reasoning].
## Consequences
### Implementation Impact
- What changes are needed
- What stays the same
### Performance Impact
- Expected performance characteristics
- Benchmarks if available
### Cost Impact
- Initial costs
- Ongoing costs
- Hidden costs
### Team Impact
- Training needed
- Learning curve
- Hiring implications
### Risk Assessment
| Risk | Likelihood | Impact | Mitigation |
|------|-----------|--------|------------|
| Risk 1 | High | Medium | Mitigation strategy |
| Risk 2 | Low | High | Mitigation strategy |
# [Number]. Adopt [Process/Practice]
**Date**: YYYY-MM-DD
**Status**: Proposed
**Decision Makers**: [Team]
## Context
### Current State
- How things work now
- Pain points
- Metrics showing problems
### Desired State
- What we want to achieve
- Success metrics
- Expected benefits
## Decision
Adopt [Process/Practice] with the following approach:
1. Step 1
2. Step 2
3. Step 3
## Consequences
### Team Changes
- New roles or responsibilities
- Required training
- Schedule impacts
### Tooling Changes
- New tools needed
- Integration requirements
- Costs
### Rollout Plan
- Phase 1: Pilot (dates)
- Phase 2: Expansion (dates)
- Phase 3: Full adoption (dates)
### Success Metrics
- Metric 1: Target value
- Metric 2: Target value
- Metric 3: Target value
DO update when:
DON'T update when:
Add updates section at the end:
## Updates
### 2024-03-15: Performance Issues Discovered
After 3 months in production, we discovered that [issue]. We've mitigated this by [solution]. Consider ADR-XXX for future improvements.
### 2024-06-20: Cost Higher Than Expected
Actual monthly cost is $X vs expected $Y because [reason]. Updated cost estimates in budget.
When creating ADRs, I will:
Identify the decision:
Research context:
Structure the ADR:
Evaluate options:
Create in Confluence:
Maintain over time:
You: "We just decided to use Redis for caching. Can you create an ADR?"
Me: "I'll create an ADR for the Redis caching decision.
Let me gather some information:
[You provide context]
I'll create ADR-004: Use Redis for Application Caching
Draft:
Should I create this in Confluence? Which space?"
You: "Yes, space 456789"
Me: [Creates ADR page] "Created ADR-004 in space 456789! Link: https://your-domain.atlassian.net/wiki/spaces/456789/pages/...
Also updating the ADR Index to include this new decision."