agentleFS
ultimatileultimatile/development-skills/skills/file-adr/SKILL.md

file-adr

Skill0 starsChanged 32 days agoMITView on GitHub

Draft an Architecture Decision Record (a timeless decision, distinct from an implementation schedule) and write the file. Use file-issue instead when the artifact is a task list, bug report, or phase plan.

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

Show its rules and text

We split this skill into the rules it gives an agent

13 rules. About 0 are common, 7 are distinctive, and 6 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈7

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 6

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Before any drafting, classify the topic against this distinction:

    line 12
  2. Distinctive:

    If the topic mixes both, separate them.

    line 19
  3. Distinctive:

    Read the most recent 1–2 ADRs to recover:

    line 61
  4. Very specific:

    Use Accepted only when the user is asking to record a decision already made or explicitly says the decision is accepted.

    line 77
  5. Very specific:

    Use Proposed when the ADR is being prepared for review, the decision is still being evaluated, or the user's intent is ambiguous.

    line 78
  6. Distinctive:

    Do not treat approval to write the file as approval of the architectural decision.

    line 79
  7. Very specific:

    Use Rejected, Superseded by ADR-NNNN, or Deprecated only when recording that lifecycle state explicitly.

    line 80
  8. Distinctive:

    Before drafting body text, answer these explicitly:

    line 84
  9. Very specific:

    If the answer to "what is the decision" reduces to "implement X by Y", the artifact is not an ADR.

    line 91
  10. Distinctive:

    If the user requests changes, revise and re-show.

    line 131
  11. Very specific:

    Write the approved body to <adr-dir>/<NNNN>-<slug>.md.

    line 140
  12. Distinctive:

    Do not write into the ADR body:

    line 151
  13. Very specific:

    "Pending decision" placeholders: If the decision is not ready, do not draft yet.

    line 156

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

File ADR

Draft a project Architecture Decision Record (ADR) body that matches the project's existing structure and follows a timeless-decision discipline. Show for approval, then write to the project's ADR directory.

The classification step — MANDATORY before drafting

Before any drafting, classify the topic against this distinction:

Artifact kindWhat it capturesSkill
DecisionA choice between alternatives with context and consequences, expressed in timeless tense.file-adr
ScheduleWhen / by whom / in what order something is implemented. Phases, checklists, dates.file-issue

If the topic mixes both, separate them. The decision goes in the ADR, the implementation schedule goes in an Issue. Do NOT write Phase-N sections inside the ADR — that conflates schedule with decision and ages the document the moment phases complete.

Diagnostic question: read the candidate body imagining the project is two years older and every Phase mentioned has long completed. Does the body still read as a coherent decision record? If no, the body has schedule content that belongs in an Issue.

Status taxonomy

StatusMeaningBody mutability
ProposedDrafted, under review. Not yet in force.Mutable until acceptance.
AcceptedDecision in effect.Frozen. Refinements go in a new ADR or downstream Issue body, not in this file.
Superseded by ADR-NNNNReplaced by a later ADR.Frozen, mark status and cross-link.
DeprecatedNo longer in force, no successor (e.g. constraint went away).Frozen, mark status only.
RejectedDrafted but not adopted. Kept as a record.Frozen at draft state.

Lifecycle transitions:

  • Proposed → Accepted — decision finalized.
  • Proposed → Rejected — decided against; keep the file as a record of the considered path.
  • Accepted → Superseded by ADR-X — replaced by a later ADR. Add the cross-link in the status line.
  • Accepted → Deprecated — no longer relevant, no successor.

Status changes are reserved for decision-lifecycle transitions above. Do not add dated amendment footnotes to an Accepted ADR body. Later clarification, drift, or supplemental decisions belong in a new ADR, a downstream Issue, or an implementing PR description.

Discipline rules

  • Frozen-after-Acceptance. Once an ADR is Accepted, its body is not edited for drift, clarification footnotes, or retrospective cleanup. Drift discovered during implementation goes to PR descriptions, Issue bodies, or new ADRs (Superseded / follow-up decision) — never back to the original. Editing an Accepted body rewrites history that commit messages and cross-references already point to.
  • Timeless tense. Present-tense description of the decision and its consequences. No "this PR will...", no "after Phase 1d...", no "the next step is...".
  • API identifiers only when they are the decision. ADRs state durable API patterns and any concrete identifiers that are themselves part of the architectural decision. Exhaustive implementation inventories belong in Issues (e.g., the ADR states "each op gets a *_with_policy sibling"; the Issue enumerates every concrete op name).
  • Scope-out framing. Frame out-of-scope items as "decisions this ADR does not commit to" or "out-of-scope design concerns", NOT "Phase N does not cover X".
  • Alternatives. Each rejected alternative gets a one-line rationale. Table form is conventional.
  • Cross-references. From ADR to Issue: "tracked in Issue #N". From ADR to ADR: link to file. Issue → ADR cross-references are governed by the project's audience-model rules and may be omitted — check project memory.

Procedure

1. Read the project's existing ADRs

Locate the ADR directory. Default convention is dev-docs/design/adr/; check project memory or CLAUDE.md for the configured path. If no ADR directory or project convention exists, propose creating dev-docs/design/adr/ and get user confirmation before making the directory.

ls <adr-dir>

Read the most recent 1–2 ADRs to recover:

  • The project's language (English / Japanese / other).
  • Section names and structure (e.g., コンテキスト / 決定 / 代替案 / 帰結 vs. Context / Decision / Alternatives / Consequences).
  • Header format and metadata fields.
  • Numbering pattern (typically zero-padded NNNN).
  • Filename slug convention (NNNN-kebab-case-slug.md).

Match what is already there. Do not impose the skeleton in this skill if the project uses a different shape.

2. Determine the new ADR number and status

Take the maximum number from existing ADR filenames and add 1. Match the file-name pattern. If there are no existing ADRs and no project-specific numbering rule exists, start at 0001.

Determine the intended status before drafting:

  • Use Accepted only when the user is asking to record a decision already made or explicitly says the decision is accepted.
  • Use Proposed when the ADR is being prepared for review, the decision is still being evaluated, or the user's intent is ambiguous.
  • Do not treat approval to write the file as approval of the architectural decision. File-write approval only means the drafted artifact may be saved.
  • Use Rejected, Superseded by ADR-NNNN, or Deprecated only when recording that lifecycle state explicitly.

3. Classify (mandatory)

Before drafting body text, answer these explicitly:

  • What is the decision being recorded?
  • What alternatives were considered, and why are they rejected?
  • What are the consequences (API, behavior, design premises)?
  • What is explicitly out of scope (= not committed by this ADR)?

If the answer to "what is the decision" reduces to "implement X by Y", the artifact is not an ADR. Stop and use file-issue instead.

4. Draft

Apply the project's section structure recovered in step 1. A lean fallback skeleton when no project precedent exists:

# ADR-NNNN: <topic>

**Status**: Proposed | Accepted | ...
**Date**: YYYY-MM-DD
**Related**: [ADR-NNNN](path) (optional)

## Context

<state of the project, forces driving the decision>

## Decision

<the decision, optionally numbered sub-points>

## Alternatives

| Option | Reason rejected |
|---|---|
| A. ... | ... |

## Consequences

<API impact, behavior changes, design premises, items explicitly not committed>

## References

<related ADRs, Issues, PRs, external sources>

5. Show for approval

Present the drafted body to the user verbatim. Do not write the file without confirmation.

If the user requests changes, revise and re-show. Do not write a partial draft.

6. Write the file

mkdir -p <adr-dir>                       # idempotent
test ! -e "<adr-dir>/<NNNN>-<slug>.md"   # refuse to clobber

Write the approved body to <adr-dir>/<NNNN>-<slug>.md. If the target file already exists, surface to the user before proceeding (number collision or accidental re-draft).

7. Report

Show the user:

  • The new ADR file path and number.
  • Any follow-up actions (linking from related Issues, updating the project's ADR index if one exists, marking superseded ADRs).

Anti-patterns

Do not write into the ADR body:

  • Phase-N sections (## Phase 1d の具体的 API, ## Phase N スコープ外). Schedule content belongs in Issues.
  • Exhaustive API identifier inventories. State the durable pattern in the ADR; list implementation inventories in the Issue. Include concrete identifiers only when the identifiers themselves are part of the decision.
  • Time-bounded language. "Next week", "after the refactor lands", "during Phase 2". Reframe in timeless terms or move to the Issue.
  • "Pending decision" placeholders. If the decision is not ready, do not draft yet. Proposed is for "I am proposing this decision now", not "I will decide later".
  • Re-editing Accepted bodies for drift or amendment footnotes. Drift goes in a new ADR or in the implementing PR / Issue body.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.