Best for
- A team is about to commit to a non-trivial architectural choice and
- Two engineers disagree on an approach — surface the options and
- A previous decision needs revisiting; the result must supersede:
event4u-app/agent-config/src/skills/decision-record/SKILL.md
Use when choosing between alternatives with trade-offs — X-or-Y decisions or a weighted decision matrix / gewichtete Entscheidungsmatrix ('score my options'); ADR via `adr-create`.
Decision brief
Shape the thinking behind an architectural decision: list the options, expose trade-offs, lock the chosen variant, and wire the supersession chain. Hands off to adr-create for file mechanics (numbering, index, frontmatter). This skill does not write the ADR file itself.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/decision-record"Inspect the Agent Skill "decision-record" from https://github.com/event4u-app/agent-config/blob/6a5670b7881a676c0da90d2afb950298087c4ccb/src/skills/decision-record/SKILL.md at commit 6a5670b7881a676c0da90d2afb950298087c4ccb. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
"We need to decide X because Y." If you cannot, the decision is not ripe — surface that and stop.
A team is about to commit to a non-trivial architectural choice and
Mental model 4 — Second-order thinking. Every decision unlocks
"We need to decide X because Y." If you cannot, the decision is not ripe — surface that and stop.
Add an explicit "do nothing" option whenever it is plausible — forces the user to compare the change against the status quo.
Permission review
The documentation asks the agent to create, modify, or delete local files.
not write the ADR file itself.The documentation asks the agent to create, modify, or delete local files.
`adr-create` — turns it into the file.Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 91/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 9 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Shape the thinking behind an architectural decision: list the options, expose trade-offs, lock the chosen variant, and wire the supersession chain. Hands off to
adr-createfor file mechanics (numbering, index, frontmatter). This skill does not write the ADR file itself.
supersede:
the older ADR with explicit rationale.Do NOT use when:
adr-create.docs/contracts/mental-models.md § 4.mental-models.md § 6.mental-models.md § 10.
Corollary — a shortcut through a one-way door is a decision, not a
defer. The cheap-and-simple option is preferred where the choice can
be walked back later. Where it cannot — a public API shape, a DB schema,
a migration, a wire format, a published identifier — "we can simplify
this later" is false, so it never ships as a deferred note; it lands
here as a recorded decision with its consequences named. The one-way
categories are enumerated so the call is not left to a judgement about
what feels important."We need to decide X because Y." If you cannot, the decision
is not ripe — surface that and stop.
Each option gets:
Add an explicit "do nothing" option whenever it is plausible — forces the user to compare the change against the status quo.
| Criterion | Option 1 | Option 2 | ... |
|---|---|---|---|
| Implementation cost | |||
| Operational cost | |||
| Reversibility | |||
| Blast radius | |||
| Time-to-value |
Pick criteria that separate the options. Criteria where every option scores the same are noise — drop them.
Write:
<Option name>."decision-revisit-gate for
what happens when a later change is blocked by it without one.
It is an externally observable condition, never a cadence and never
permanence under a field name: terminal, none, "never" and "forever"
are invalid, and unclassified is legal only on an existing record
during the migration — never on the one you are locking now.file:line, a URL, a
docs/CLAIMS.md claim id, a benchmark id — or is labelled an
assumption. There is no third state. Cite nothing and the record grades
E0, which is honest and publishable; a confident grade over no citations
is not. Agreement is not evidence: the council converging, or two
models liking the same option, is provenance: agentic with
agentic_mode: council — sources and measurements raise the grade,
consensus does not. A human product call records E0 plus
authority_basis: owner_intent rather than a faked grade. Vocabulary:
adr-layout § Provenance and evidence.If this decision overrides a prior ADR:
supersedes: linkage to adr-create.Classify before handing off. A locked choice earns an ADR only when it is architecturally significant on at least one axis:
None of the three → no ADR. The record still exists; it lands as a
decision note in agents/decisions/, a config value, a measurement record in
docs/CLAIMS.md, an experiment, or a roadmap item. Explicitly not ADRs: a
temporary numeric threshold · a benchmark value · a model mapping · one-off
release sequencing · a reversible local implementation detail.
The reference case is in this tree. ADR-002 encodes 25 000 → 26 000 and
a 4.0k override ceiling as architecture law (ADR-002:55, :62), and
ADR-114 then had to add another override while recording that 7 of 9 kernel
rules already carry them (ADR-114:74). The principle — a kernel budget
exists, is measured, and is capped — is the ADR. The numbers belong in a
versioned budget contract with a regression gate, so a recalibration stops
needing an architecture supersession.
Gate passed → output the structured payload (below). The user — or
adr-create — turns it into the file.
Optional numeric variant of step 3. Gate — fire only when ALL hold:
≥ 3 options · no single dominant criterion · costly / hard-to-reverse
decision · commensurable criteria (no values conflict). A 2-option or
reversible choice gets a one-line redirect: just decide, or use the
qualitative matrix above. Full procedure, anchors, worked example:
references/weighted-matrix.md.
(AI-suggested).
Never propose criteria first (anchoring).adversarial-review, scoped: "attack
the winner, using the losing options' strongest criteria" (the
premortem delegation pattern — never reimplemented inline).Output appends matrix + sensitivity block + attack summary + the intuition
caveat (resistance to the result signals a wrong weight or unquantified
information — surface it, don't ignore it). The score is a structured
argument, not a verdict. Hand-off to adr-create is unchanged.
WHEN to use this
WHEN NOT to use this
stakeholder-tradeoff;
this skill locks the choice after the human cost is mapped.adr-create; this skill produces the
payload, not the file.risk-officer first, then return.rice-prioritization;
the weighted-matrix mode here is for ONE choice on custom criteria.Decision: <one sentence>
Options:
1. <name> — <sketch>
Pros: ...
Cons: ...
Reversibility: easy | costly | one-way
2. ...
N. Do nothing — <sketch>
Trade-off matrix:
| Criterion | <opt 1> | <opt 2> | ... |
| ...
Locked: <chosen option name>
Consequences:
+ <becomes true>
- <becomes harder>
✗ <becomes impossible>
Assumptions:
~ <load-bearing claim with no basis ref>
Evidence:
<basis ref> — file:line | URL | CLAIMS id | benchmark id (or: none — E0)
Provenance: human | agentic | mixed | unknown (agentic_mode: single | council | delegated)
Grade: E0 | E1 | E2 | E3 | E4 (authority_basis: evidence | owner_intent)
Supersedes: <ADR-XYZ "title"> (if any)
Trigger: <what changed> (if superseding)
Revisit-if: <observable condition>
Admission gate: ADR | decision note | config value | measurement | experiment | roadmap item
Next: /adr-create with the payload above (only when the gate says ADR)
E0 — write it.adr-create owns
filenames, numbering, and index regeneration.Replacing the in-house cron runner with a managed scheduler:
+ on-call gets paged on scheduler infra, not
application code. – job definitions move to a vendor format,
raising migration cost if we leave. ✗ we cannot run jobs in the
app process anymore — assumes vendor uptime./adr-create with the payload, append supersedes: ADR-014.Frequently asked questions
Shape the thinking behind an architectural decision: list the options, expose trade-offs, lock the chosen variant, and wire the supersession chain. Hands off to adr-create for file mechanics (numbering, index, frontmatter). This skill does not write the ADR file itself.
The source record exposes this install command: npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/decision-record". Inspect the command and pinned source before running it.
Static rules flagged write-files in the source; the page lists the matching lines and excerpts.