Architecture Decision Records

Formal, versioned records of technical decisions made within a project.

ADRs capture the context, decision, and consequences of significant technical or architectural choices. They are the durable decision log for your project — searchable, reviewable, and auditable.

What is an ADR?

An ADR (Architecture Decision Record) documents a technical or architectural decision that affects the project. Unlike session notes, ADRs are permanent — they represent decisions that should be understood and respected by all future agents and team members.

ADRs are first-class entities in Nexus with a formal review lifecycle. They are searchable via kb_search and surface automatically in agent context at session start via kb_memory.

ADR lifecycle

draft -> under_review -> accepted / rejected
StatusDescription
draftInitial state. The ADR is being written and refined.
under_reviewSubmitted for team review. Comments can be added via dc_add.
acceptedThe decision is approved and becomes authoritative.
rejectedThe decision was not approved. Preserved for historical context.
supersededReplaced by a newer ADR. Automatically set when the superseding ADR is accepted.

ADR structure

Every ADR follows a standard format:

  • Name
    Title
    Type
    string
    Description

    Short, descriptive. Format: "Use X for Y" or "Adopt X over Y".

  • Name
    Context
    Type
    markdown
    Description

    What is the situation? What problem are we solving? What constraints exist? What alternatives were considered?

  • Name
    Decision
    Type
    markdown
    Description

    What is the decision? Stated clearly and directly. Includes key implementation details that affect the architecture.

  • Name
    Consequences
    Type
    markdown
    Description

    Expected positive outcomes, known trade-offs or risks, follow-up work required.

Creating an ADR

Use the /nexus-adr-draft skill for guided ADR creation:

/nexus-adr-draft

Or create directly via MCP tools:

{
  "tool": "adr_create",
  "project_id": "...",
  "title": "Use Supabase RLS for row-level access control",
  "context": "We need to enforce data isolation...",
  "decision": "We will use Supabase Row Level Security...",
  "consequences": "Positive: automatic enforcement at the DB layer..."
}

After drafting, submit for review:

{
  "tool": "adr_submit",
  "adr_id": "..."
}

Supersession

When a new ADR replaces an existing one, specify the supersedes field during creation. When the new ADR is accepted, the superseded ADR is automatically marked as superseded.

Use kb_related to navigate supersession chains and understand the evolution of decisions.

MCP tools

ToolDescription
adr_createCreate a new ADR in draft status
adr_submitSubmit a draft ADR for review
adr_decideAccept or reject an ADR under review
dc_addAdd a comment to an ADR under review
dc_listList comments on an ADR

Was this page helpful?