Best for
- A non-trivial architectural choice needs a written record (kernel
- A decision overrides a previous one and needs supersedes: linkage.
- A roadmap phase closes and the chosen variant must be cited.
event4u-app/agent-config/src/skills/adr-create/SKILL.md
Use when capturing an architectural decision — file naming, next ADR number, Status / Context / Decision / Consequences, index regen; fires even without saying 'ADR'.
Decision brief
Use when capturing an architectural decision — file naming, next ADR number, Status / Context / Decision / Consequences, index regen; fires even without saying 'ADR'.
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/adr-create"Inspect the Agent Skill "adr-create" from https://github.com/event4u-app/agent-config/blob/0adf49a8ae84b0ff6e2de8759eea43257e020eff/src/skills/adr-create/SKILL.md at commit 0adf49a8ae84b0ff6e2de8759eea43257e020eff. 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
Ask one question only if both are plausible:
A non-trivial architectural choice needs a written record (kernel
Sequential ADR-NNN-.md numbering with no gaps.
An ADR directory exists. Two layouts coexist (see
Ask one question only if both are plausible:
Permission review
The documentation asks the agent to create, modify, or delete local files.
Never delete an ADR file — supersede it. Deletion breaksEvidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 90/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 7 | 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
Use this skill when:
supersedes: linkage.Do NOT use when:
ADR-NNN-<slug>.md numbering with no gaps.docs/contracts/adr-layout.md):
docs/decisions/ (or docs/adr/ alias): cross-cutting
governance ADRs, 3-digit numbering (ADR-NNN-<slug>.md).docs/adrs/<area>/: sub-area ADRs, 4-digit
numbering (NNNN-<slug>.md); <area> must match the canonical
inventory in scripts/audit_adr_coverage.ts.adversarial-review first.Ask one question only if both are plausible:
docs/decisions/
(fallback docs/adr/). Filename: ADR-NNN-<slug>.md.docs/adrs/<area>/. Filename:
NNNN-<slug>.md (4-digit, no ADR- prefix).<area> not in the inventory: refuse with a
hint to add the area to AREAS in
scripts/audit_adr_coverage.ts in the same PR. Do not invent.docs/decisions/ (or docs/adr/) for
ADR-*.md, parse the leading 3-digit number, take max + 1
(zero-padded to 3). For an empty directory, start at 001.docs/adrs/<area>/ for
[0-9][0-9][0-9][0-9]-*.md, parse the leading 4-digit number,
take max + 1 (zero-padded to 4). For an empty area, start at
0001. README.md is not an ADR — skip it.Reject re-use of an existing number — index regeneration treats duplicates as a hard failure on both surfaces.
Short, hyphen-lowercase, scope-revealing. Match peer ADRs in the
directory. Examples: kernel-swap-deferred, flat-cluster-subs,
http-bridge-deferred-with-trigger,
per-tier-smoke-scripts. Reject slugs longer than 60 chars.
Use the surface-specific template. All sections are required; "—" is acceptable for genuinely empty Alternatives or References blocks but never for Status, Context, Decision, or Consequences.
review_trigger is required and it names a CONDITION, not a date. A
decision is a call made under conditions that held at the time; the trigger
records which change would make it worth re-deciding. "Review annually" is
ignored by everyone and rots into ceremony —
check_adr_frontmatter.ts rejects bare cadences for exactly that reason. Write
the event: "when a second consumer reports the same preservation surprise",
"when a host ships a native primitive for this", "if the measured lift drops
below the pre-registered threshold". Enforced from 2026-07-25 forward; earlier
ADRs are grandfathered by date.
When you later reopen one, say which premise moved and what evidences the move — not "we were wrong". If the original was right under its own conditions, record that too. A premise that turns out false while the decision stays correct gets a logged correction block, never a silent edit.
Flat-surface template (docs/decisions/ADR-NNN-<slug>.md):
---
adr: NNN
status: proposed | accepted | superseded | deprecated
date: YYYY-MM-DD
decision: <slug>
supersedes: — | ADR-MMM
superseded_by: — | ADR-MMM
phase: <roadmap> · <phase-id>
review_trigger: <the CONDITION that would reopen this decision>
---
# ADR-NNN — <Decision Title>
## Status
**<Proposed | Accepted | …>** · YYYY-MM-DD.
## Context / Decision / Consequences / Alternatives / References
Per-area template (docs/adrs/<area>/NNNN-<slug>.md):
# ADR NNNN — <Decision Title>
> Area: `<area>` · Status: accepted · Date: YYYY-MM-DD · Type: retrospective | new
> Roadmap: `agents/roadmaps/<file>.md` <phase-id>
> Supersedes: —
## Context / Decision / Considered alternatives / Consequences / References
Per-area ADRs use a quote-style header (no YAML frontmatter) so
audit_adr_coverage.ts's permissive parser can index them. Cite
the area's contract from the README in
docs/adrs/<area>/README.md.
./scripts-run src/scripts/adr/regenerate_index --dir docs/decisions/ writes INDEX.md from ADR-*.md../scripts-run src/scripts/audit_adr_coverage --regen-area-readme <area> rewrites docs/adrs/<area>/README.md.
Coverage gate: run ./scripts-run src/scripts/audit_adr_coverage (no
args) — exit 0 only when every canonical area has ≥ 1 ADR../scripts-run src/scripts/adr/regenerate_index --check exits 0../scripts-run src/scripts/audit_adr_coverage --check exits 0.quality.local_auto_run: true; under the default (false / missing)
remote CI is the gate and no local pipeline run happens.After drafting an ADR, run
judge-artifact-completeness
with rubric architecture-score to confirm alternatives, consequences,
reversibility, and risk are present. Invoke when the user asks for a
completeness check — not on every ADR by default.
docs/decisions/ in this package; some
projects use docs/adr/. Pass --dir when running outside the
default.NNNN-<slug>.md); the flat
surface stays 3-digit (ADR-NNN-<slug>.md). Do not mix.<area> must already exist in
AREAS in scripts/audit_adr_coverage.ts. Adding a new area is
a separate PR with explicit reviewer sign-off.adr: (flat) is the canonical number; the filename
prefix must match. The flat regenerator fails on mismatch.supersedes: ADR-MMM (flat) or a Supersedes: line in
the header quote-block (per-area) and flip the old one's status
to superseded.Apply the Frugality Charter to every ADR you author.
Examples in this artifact:
## Context states the
forcing function in 2–3 sentences; no historical narrative.## Decision links the
rules / contracts it overrides; no rule body is quoted in full.## Alternatives considered lists
genuine design alternatives, not strawmen.Pre-save self-check:
## Context carry more than 5 sentences of setup?## Decision restate rule text instead of citing the rule?no-roadmap-references,
council clause).