Forge-core ArchitectureDecision
Find, read, create, validate, and capture Architecture Decision Records. USE WHEN ADR lookup, architecture decision, project context, decision history, create ADR, new ADR, validate ADR, capture ADRs, decisions directory.
git clone https://github.com/N4M3Z/forge-core
T=$(mktemp -d) && git clone --depth=1 https://github.com/N4M3Z/forge-core "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/ArchitectureDecision" ~/.claude/skills/n4m3z-forge-core-architecturedecision && rm -rf "$T"
skills/ArchitectureDecision/SKILL.mdArchitecture Decisions
Find, read, create, validate, and capture Architecture Decision Records (ADRs). ADRs document significant decisions with context, alternatives, and rationale. Rules enforce; ADRs explain the why.
@user/ForgeADR.md
@TemplateReference.md
@SchemaValidation.md
@user/ContextKeeper.md
Workflow Routing
| Workflow | Trigger | Section |
|---|---|---|
| Find | "list ADRs", "show decisions", "what did we decide" | Find Workflow |
| Create | "create ADR", "new ADR", "write ADR" | Create Workflow |
| Validate | "validate ADR", "check ADR", "lint ADR" | Validate Workflow |
| Capture | Post-compaction prompt, "capture ADRs from session" | Capture Workflow |
ADR Conventions
Placement
| Scope | Location | When to use |
|---|---|---|
| Ecosystem-spanning | at project root | Decisions affecting multiple modules |
| Module-internal | within a module | Decisions scoped to one module |
Status Values
| Status | Meaning |
|---|---|
| Under discussion, not yet decided |
| Decision in effect |
| No longer recommended, not replaced |
| Replaced by a newer ADR — link the successor |
Never modify an accepted ADR's decision text. To revise, create a new ADR and mark the old one superseded.
Find Workflow
-
Search
(default$ADR_DIRECTORY
). If not found, search fallbacks:docs/decisions/doc/adr/docs/adr/**/adr/
Use Glob to find markdown files with numbered or dated prefixes. Exclude template files.
-
Present an index table:
| # | Title | Status | Date | | ---- | ----------------------------------- | -------- | ---------- | | 0001 | Adopt Architecture Decision Records | accepted | 2026-03-02 |Extract title from frontmatter
field, status and date fromtitle:
andstatus:
.created: -
When asked about a specific topic, search ADR titles and content for relevant keywords. Read and summarize matching ADRs with: Context, Decision, Consequences, Status.
Create Workflow
-
Determine scope: ecosystem-spanning (root
) or module-internal? If the user hasn't specified, ask.$ADR_DIRECTORY -
If the ADR directory does not exist, scaffold it: create the directory and copy
if one exists in the project's templates.$ADR_MDSCHEMA -
Scan existing ADRs and assign the next available number.
-
Gather content from the user or conversation context: title (short noun phrase), context (what prompted this?), options considered, decision (what was chosen and why?), consequences (optional tradeoffs).
-
Check for overlap first. Read every existing ADR in the target directory (titles AND bodies, not just filenames). For each existing ADR, evaluate the relationship:
- Subset: already covered — tell the user which ADR covers it. Do not create.
- Extension: adds a new dimension — suggest amending the existing ADR.
- Contradiction: reverses an existing decision — create with
, mark oldaccepted
.superseded - Complementary: genuinely different ground — proceed, add cross-references.
-
Use the
(default$ADR_TEMPLATE
). Fill in all frontmatter fields and body sections. Write to the ADR directory.templates/structured-madr.md -
Set status to
unless the decision is already confirmed — then setproposed
.accepted -
Run the Validate workflow on the new file.
Validate Workflow
-
If a file path was provided, validate that file. Otherwise, ask which ADR to validate or validate the entire ADR directory.
-
Run frontmatter schema validation against
(default$ADR_SCHEMA
). Use the first available tool:templates/structured-madr.jsona.
local checkout atstructured-madr
:~/Data/Developer/zircote/structured-madrINPUT_PATH=$ADR_DIRECTORY INPUT_SCHEMA=$ADR_SCHEMA npm run validate --prefix ~/Data/Developer/zircote/structured-madrb.
:check-jsonschemacheck-jsonschema --schemafile $ADR_SCHEMA $ADR_DIRECTORY/*.md -
Check structural compliance if
exists in the ADR directory.$ADR_MDSCHEMA -
Check content rules:
- Filename matches
pattern (number or date)$ADR_PREFIX - All required frontmatter fields present (title, description, type, category, tags, status, created, updated, author, project)
is one of: proposed, accepted, deprecated, supersededstatus
andcreated
are YYYY-MM-DD formatupdated
is present and non-empty## Context and Problem Statement
or## Decision Outcome
is present and non-empty## Decision- If status is superseded: the successor filename is referenced
- Filename matches
-
Report COMPLIANT (all checks pass) or NON-COMPLIANT (list failures with fixes, offer to fix automatically).
Capture Workflow
Triggered post-compaction or by the user asking to capture decisions from the current session.
-
If ContextKeeper MCP is available, query
for additional session context that may have been compressed away.search_archive -
Review the current conversation context for architectural decisions. Look for: technology choices, pattern adoptions, convention changes, structural refactors, trade-off evaluations with explicit reasoning.
-
For each identified decision, run the Create workflow. Set status to
if the decision was confirmed during the session,accepted
if it was discussed but not finalized.proposed -
If no architectural decisions are found, report that and exit.
Constraints
- Never modify an accepted ADR's decision text — create a new ADR and mark old as superseded
must contain$ADR_DIRECTORY
when it exists — scaffold it if missing$ADR_MDSCHEMA- Status must be set at creation — never leave it blank
- Always search multiple common locations before concluding no ADRs exist
- Include links to related ADRs when decisions are connected