autojanet/skills/writing-adr/SKILL.md
Zoë cc74ad0bd0
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
fix: use library/ Harbor project, add skills, fix pipeline secrets
- .woodpecker.yaml: image paths -> library/autojanet-{agent,dispatcher}
- .woodpecker.yaml: secret names RS_HARBOR_USER / RS_HARBOR_PASS (global)
- container/Dockerfile: restore COPY skills/, skills/ populated from opencode config
- skills/: 84 opencode skills bundled into image
- k8s/manifests: update image refs to library/
2026-05-30 15:43:14 -07:00

3.1 KiB

name description
writing-adr Use when a technical decision needs to be recorded — choosing between viable approaches, establishing a convention, reversing a prior decision, or capturing any "why did we do it this way?" decision for homelab or work contexts.

Writing ADRs

Overview

ADRs capture the WHY behind decisions so future-Zoe and future-AI sessions don't re-litigate them. Not a design spec. Not an implementation plan. Just the decision record — short, factual, permanent.

When to Write an ADR

Write one when:

  • Choosing between two viable technical approaches (CNI, storage backend, auth method, DB operator)
  • Establishing a convention followed everywhere (naming, secret paths, namespace strategy)
  • Making a non-obvious decision that will be questioned later
  • Reversing a previous decision

Don't write one for:

  • Implementation details (how, not why)
  • Temporary decisions
  • Only one viable option existed
  • Routine work following established patterns

ADR Format (MADR-lite)

# ADR-NNNN: [Decision Title]

**Date:** YYYY-MM-DD
**Status:** Accepted | Superseded by ADR-XXXX | Deprecated
**Deciders:** [who was involved]
**Context:** [1-3 sentences — what problem/situation required a decision]

## Decision

[1-2 sentences — what was decided]

## Alternatives Considered

| Option | Pros | Cons | Why rejected |
|--------|------|------|--------------|
| [Option A — chosen] | ... | ... | N/A — chosen |
| [Option B] | ... | ... | [reason] |
| [Option C] | ... | ... | [reason] |

## Consequences

**Good:** [what gets better]
**Bad / trade-offs:** [what gets worse or is accepted]
**Risks:** [what could go wrong]

## Links

- Related ADRs: ADR-XXXX
- Relevant docs: [BookStack or external links]

Workflow

  1. Identify the decision — often surfaces from a brainstorming/design session
  2. Ask: "What were the real alternatives?" — list at least 2 options even if the choice felt obvious
  3. Fill in the template — half a page ideal, full page max
  4. Check BookStack for an existing ADR chapter in the relevant book; create one if missing
  5. Find the next ADR number (check existing pages, start at ADR-0001 if none)
  6. Save to BookStack using bookstack_pages_create
  7. If this supersedes an existing ADR, update the old ADR's Status field

BookStack Storage

Homelab ADRs:

Work/project ADRs:

  • Chapter "ADRs" inside the relevant project book
  • Create a new book if the project doesn't have one yet

Page name format: ADR-NNNN: [Decision Title]

API: Use bookstack_pages_create with chapter_id (preferred) or book_id

Numbering

  • Sequential per context (homelab and each work project have independent sequences)
  • Check BookStack for existing ADRs to determine the next number
  • Start at ADR-0001 if none exist for this context

Tone

Direct and factual. Future readers need context, not impressive prose.

  • "We chose X because Y" — not "After careful consideration of all available options..."
  • Include what was NOT chosen and why — that's the most valuable part
  • Short beats comprehensive every time