adr-authoring
Architecture Decision Record format and process. Use when making architectural decisions, documenting technical choices, evaluating alternatives, or when asked about past decisions. Triggers on ADR creation, architecture discussions, or "why did we choose" questions.
What this skill does
# Architecture Decision Records (ADRs)
ADRs document significant technical decisions with context, alternatives considered, and rationale. They answer "WHY did we choose this approach?"
## When to Write an ADR
Create an ADR when:
- Choosing between multiple valid approaches
- Adopting a new technology, framework, or pattern
- Making decisions that are hard to reverse
- Deviating from established patterns
- Trade-offs need documentation for future reference
Do NOT create an ADR for:
- Obvious best practices
- Decisions with only one viable option
- Implementation details that don't affect architecture
## ADR Format
```markdown
# ADR-{NNNN}: {Title}
**Status**: {Proposed | Accepted | Deprecated | Superseded by ADR-XXXX}
**Date**: {YYYY-MM-DD}
**Deciders**: {Names or roles}
**Relates to**: {SPEC-XX.YY, ADR-XXXX, bd-XXXX}
## Context
{What is the issue we're facing? What forces are at play?}
## Decision
{What is the change we're proposing/decided?}
**We will {specific decision}.**
## Alternatives Considered
### Alternative 1: {Name}
{Description}
**Pros**:
- {advantage}
**Cons**:
- {disadvantage}
### Alternative 2: {Name}
{Description}
**Pros**:
- {advantage}
**Cons**:
- {disadvantage}
## Consequences
### Positive
- {benefit}
### Negative
- {cost/tradeoff}
### Neutral
- {side effect}
## References
- {Link to spec, discussion, research}
```
## ADR Lifecycle
```
Proposed → Accepted → [Active]
↘ Deprecated
↘ Superseded by ADR-XXXX
```
### Status Definitions
| Status | Meaning |
|--------|---------|
| Proposed | Under discussion, not yet decided |
| Accepted | Decision made, in effect |
| Deprecated | No longer relevant, kept for history |
| Superseded | Replaced by newer ADR (link to it) |
## Numbering
ADRs are numbered sequentially: `ADR-0001`, `ADR-0002`, etc.
- Never reuse numbers
- Superseded ADRs keep their number
- Numbers indicate chronological order, not importance
## File Organization
```
docs/adr/
├── 0001-use-postgresql-for-persistence.md
├── 0002-adopt-event-sourcing.md
├── 0003-switch-to-grpc.md
├── template.md
└── index.md # Optional: ADR index/summary
```
## Writing Guidelines
### Context Section
- State facts, not opinions
- Describe the problem space
- List constraints and forces
- Be specific about what prompted this decision
### Decision Section
- Start with "We will..."
- Be specific and actionable
- State what, not how (implementation comes later)
### Alternatives Section
- Include at least 2 alternatives
- Be fair to rejected options
- Explain why they were rejected
- "Do nothing" is often a valid alternative
### Consequences Section
- Be honest about negatives
- Think about operational impact
- Consider learning curve, tooling, hiring
## Examples
### Good ADR Title
- ✅ "Use PostgreSQL for User Data Persistence"
- ✅ "Adopt Circuit Breaker Pattern for External APIs"
- ✅ "Switch from REST to gRPC for Internal Services"
### Bad ADR Title
- ❌ "Database Decision" (too vague)
- ❌ "Use the best database" (not specific)
- ❌ "Technical stuff" (meaningless)
## Linking to Specs and Tasks
Reference related artifacts:
```markdown
**Relates to**: SPEC-03.07, SPEC-03.08, bd-a1b2
## Context
Per SPEC-03.07, the system MUST validate input length.
This ADR decides HOW we implement that validation.
```
## ADR Review Checklist
- [ ] Clear, specific title
- [ ] Correct status and date
- [ ] Context explains the problem
- [ ] Decision is specific and actionable
- [ ] At least 2 alternatives considered
- [ ] Pros/cons listed for each alternative
- [ ] Consequences include positives AND negatives
- [ ] Links to related specs/tasks if applicable
## Quick Reference
1. **Trigger**: Architectural choice between alternatives
2. **Format**: Context → Decision → Alternatives → Consequences
3. **Status**: Proposed → Accepted (or Deprecated/Superseded)
4. **Numbering**: Sequential, never reused
5. **Location**: `docs/adr/NNNN-<slug>.md`
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.