Marketplace @knack decision-log

Decision Log

Capture one decision in an ADR-style record: alternatives, trade-offs, reversibility, and a revisit cue. Optimized for future-you in 6 months.

v0.1.0 by @knack (Knack) decision-log

Install with the knack CLI: knack pull @knack/decision-log — then it runs in Claude Code, Cursor, Codex, or any agent that reads the open Anthropic Skills format.

A short, structured record of one decision. Optimized for "future-you reading this in 6 months" — what changed, why, and what you'd need to know to reconsider.

When to use

  • An ADR (architecture decision record) for an engineering pick
  • A product call where the path-not-taken matters
  • An ops/policy change that future maintainers will hit

Skip for: pure code reviews (the diff is the record), small reversible tweaks (the commit message is enough), brainstorming sessions before a decision is made.

Workflow

  1. State the decision in one sentence. Past tense, declarative. "We chose Postgres over DynamoDB for the v1 marketplace data store." Not "We will use" or "We are considering."

  2. Context: what forced the decision. 2–3 sentences. What was the situation that made this a fork in the road? What constraint or goal was load-bearing?

  3. Alternatives considered. Bullet list, 2–4 items. For each: one line on what it was, one line on why it lost. The losers matter more than the winner for future-you.

  4. Trade-offs accepted. What did the chosen path cost us? Be specific. "Slower writes than DynamoDB at >10K QPS, accepted because v1 traffic is single-digit QPS." Hand-waving here defeats the purpose.

  5. Reversibility + revisit date. Two lines:

    • Reversibility: cheap / medium / expensive (and roughly why).
    • Revisit: a specific event ("when we hit 100 paying customers") or a date ("Q3 2026"). Without a revisit cue, decision logs become dead text.
  6. Owner. One name. The person who picks up the revisit and writes the follow-up entry.

Template

# <Decision title>

**Date:** YYYY-MM-DD
**Owner:** <name>
**Decision:** <one sentence, past tense>

## Context
<2–3 sentences. What forced the fork?>

## Alternatives considered
- **<option A>** — <one line>. Lost because <reason>.
- **<option B>** — <one line>. Lost because <reason>.

## Trade-offs accepted
- <thing we gave up + why we're OK with it>

## Reversibility
<cheap | medium | expensive>. <one-sentence rationale>

## Revisit
<event or date>

Definition of done

  • One sentence summary, past tense
  • At least 2 alternatives with their lose-reasons
  • Explicit reversibility note
  • A real revisit cue (not "as needed")
  • Owner named

Gotchas

  1. The retro is not the decision log. Don't write the postmortem here. The log captures the call as made; the postmortem captures how it played out.
  2. Don't lie about alternatives. If only one option was seriously considered, say so — and explain why. Fake "we considered X" entries fool no one and dilute future signal.
  3. Reversibility is the most important field. Cheap-to-reverse decisions get less rigor; expensive ones deserve more analysis upfront. Mislabeling reversibility is the most common mistake.
  4. Revisit dates rot. If your log has six entries with revisit dates that have passed and no follow-up, the system is broken — fix the rhythm, not the template.
  5. One decision per entry. "We're switching to Postgres AND deprecating the v0 API AND renaming the service" is three decisions. Split them.