Writing Adrs

pandoscope/skills/original/writing-adrs

作者 pandoscope925fe390437f無授權條款1 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫今天更新

Format, numbering, and when-to-write criteria for Architecture Decision Records in docs/adr/. Use when recording an architectural decision, when another skill flags a decision as ADR-worthy, or when the user asks to write or review an ADR.

AI 產生的概覽

規定 docs/adr/ 中架構決策記錄(ADR)的格式、編號以及何時撰寫的標準。

功能
提供極簡的 ADR 範本、選用章節,以及存放在 docs/adr/ 中的記錄的連續編號規則。它也列出值得記錄決策的三個條件,並給出符合條件決策的範例。其產出是用於撰寫或審閱 ADR 的指引與範本。
適用情境
適用於記錄架構決策、其他技能將某決策標記為值得寫入 ADR,或使用者要求撰寫或審閱 ADR 時。它面向難以逆轉、缺乏背景會令人意外,且源於真實取捨的決策。
執行需求
除智慧體外無需指令碼或工具;如可用,它會引用選用的 writing-prose 技能與 grilling-session 詞彙表文件。

Writing ADRs

ADRs live in docs/adr/ and use sequential numbering: 0001-slug.md, 0002-slug.md, etc.

Create the docs/adr/ directory lazily — only when the first ADR is needed.

Template

md
# {Short title of the decision}
{1-3 sentences: what's the context, what did we decide, and why.}

That's it. An ADR can be a single paragraph. The value is in recording that a decision was made and why — not in filling out sections.

Written and checked with the writing-prose skill if available, surface markdown. Hard limit: precision and understandability must not suffer.

Optional sections

Only include these when they add genuine value. Most ADRs won't need them.

  • Status frontmatter (proposed | accepted | deprecated | superseded by ADR-NNNN) — useful when decisions are revisited
  • Considered Options — only when the rejected alternatives are worth remembering
  • Consequences — only when non-obvious downstream effects need to be called out

Numbering

Scan docs/adr/ for the highest existing number and increment by one.

Grilling gate

ADRs record load-bearing decisions. Decision made in-conversation, never grilled (docs/glossary/grilling-session.md) → ask user: "Decision wasn't grilled — record as-is?" Proceed only on explicit confirmation. Transcribing decision user already stated explicitly → gate doesn't apply.

When to write an ADR

All three of these must be true:

  1. Hard to reverse — the cost of changing your mind later is meaningful
  2. Surprising without context — a future reader will look at the code and wonder "why on earth did they do it this way?"
  3. The result of a real trade-off — there were genuine alternatives and you picked one for specific reasons

If a decision is easy to reverse, skip it — you'll just reverse it. If it's not surprising, nobody will wonder why. If there was no real alternative, there's nothing to record beyond "we did the obvious thing."

What qualifies

  • Architectural shape. "We're using a monorepo." "The write model is event-sourced, the read model is projected into Postgres."
  • Integration patterns between contexts. "Ordering and Billing communicate via domain events, not synchronous HTTP."
  • Technology choices that carry lock-in. Database, message bus, auth provider, deployment target. Not every library — just the ones that would take a quarter to swap out.
  • Boundary and scope decisions. "Customer data is owned by the Customer context; other contexts reference it by ID only." The explicit no-s are as valuable as the yes-s.
  • Deliberate deviations from the obvious path. "We're using manual SQL instead of an ORM because X." Anything where a reasonable reader would assume the opposite. These stop the next engineer from "fixing" something that was deliberate.
  • Constraints not visible in the code. "We can't use AWS because of compliance requirements." "Response times must be under 200ms because of the partner API contract."
  • Rejected alternatives when the rejection is non-obvious. If you considered GraphQL and picked REST for subtle reasons, record it — otherwise someone will suggest GraphQL again in six months.

來源與署名

來源:pandoscope/skills位於original/writing-adrs提交925fe39

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架