Skip to content
Back to skills

Adr Adoption

ASecurity

How to adopt an architecture decision (ADR) into ProvenMap and measure the estate against it — the /adopt-adr arc. Use when the org has made a decision, standard, or policy that boards should be governed by and checked against. Key capabilities: ADR normalization, blast-radius sweep per aspect family, the decision grill, the durable decision board, compliance insight batches, federated per-app remediation work items.

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 25, 2026
code-qualitygonodeexpressapi

Works with

  • api

Security analysis

A100/100

Scanned September 25, 2026

npx -y skills add provenmap/pmap-claude --skill adr-adoption --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Adr Adoption?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Adr Adoption
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/provenmap-adr-adoption/badge)](https://www.skillsdirectory.com/skills/provenmap-adr-adoption)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: adr-adoption
description: How to adopt an architecture decision (ADR) into ProvenMap and measure the estate against it — the /adopt-adr arc. Use when the org has made a decision, standard, or policy that boards should be governed by and checked against. Key capabilities: ADR normalization, blast-radius sweep per aspect family, the decision grill, the durable decision board, compliance insight batches, federated per-app remediation work items.
---

# ADR Adoption

An adopted decision becomes three things: a **decision board** (the durable record — where the
ADR lives and is found), a **compliance insight batch** per affected app (the _is_ — where the
estate violates it today), and **remediation work items** (the _ought_, as work that can actually
be delivered and confirmed). Work items are per-board and cross-board anchors are inert, so a
cross-cutting ADR **federates**: per-app work items landed together in the working copy and
committed as one decision.

The split matters: the decision board holds the _standing_ rule, which never "completes"; the
work items hold the _bounded_ work each app owes to comply, which does. Do not try to express a
standing rule as a work item that can never reach Implemented.

## 1 — Intake: normalize the decision

Normalize the material (prose, a pasted ADR, a session file) into Context / Decision /
Consequences / Alternatives-considered. Ask for what's missing — never invent. The decision
itself must compress to **one active-voice sentence**; if it can't, it's more than one ADR —
split.

## 2 — Scope the blast radius

From the decision, determine the affected apps (root landscape + `get_board_tree`). Per app,
sweep the elements the decision governs — spine nodes/edges plus the relevant aspect families:

| Decision shape                | Sweep                               |
| ----------------------------- | ----------------------------------- |
| Gateway / API standard        | `api.endpoint` rows + edge topology |
| Data residency / retention    | `db.table` rows                     |
| UI consent / accessibility    | `ui.page` rows                      |
| Eventing / messaging standard | `event.channel` rows + async edges  |
| Access control                | `authz.registry` rows               |

Default depth: each affected app board **plus one layer down**; full tree only on explicit
request (deeper detail rarely changes an ADR verdict, and the list caps bite). Classify every
swept element: compliant / violating / unclear.

## 3 — The grill

Bounded rounds (2–4 questions each): decision crispness (the one sentence); drivers (why now);
applicability scope (which apps, which element classes — this becomes the work item wording);
exceptions & grandfathering (violations the architect explicitly accepts); migration stance
(fix-now vs comply-on-next-touch); supersedes check (`list_boards` for an existing `ADR:`
decision board, and `list_work_items` per affected app — does open work already cover this
ground?). Keep the running normalized record in the drafts file so the interview is resumable.

## 4 — Mint the decision's durable home

`create_decision_board {name: "ADR: <title>"}` (durable `adr` type, standalone) and draw/write
the normalized record there — the workspace-level decision log. This is the record's home: it
is where "what did we decide, and why" is answered six months on. There is no delete tool for
it — durable records retire in the platform.

## 5 — Record the assessment

Where the sweep found violations: `create_insight` per swept app — insights anchored to the
violating elements, severity from the grill (exceptions the architect accepted are recorded as
observations, not violations), a `proposal` on the insight where the fix is graph-shaped. Draft
batches.

## 6 — Land the remediation, federated

`create_epic {name: "ADR: <title>", description: <the normalized record>}` first: the epic is
what holds a cross-cutting decision's per-app work together as one plan, and every remediation
work item below is filed under it (`epicSlug` on `create_work_item`; `set_work_item_epic` after
`promote_insights`). A single-app ADR still gets its epic when more than one work item lands.

The writes join the working copy automatically. Two paths, both producing draft work items:

- **From the assessment** — `promote_insights` on the reviewed violation insights (one
  draft work item each, origin-linked, so insight coverage stays derived). This is the default
  where the sweep found concrete violations.
- **Authored directly** — `create_work_item` per affected **code-bound** app board, named
  `ADR: <title>`, `type` from the work's shape (usually `refactor`, `fix` where the sweep found
  wrong behaviour), description = the normalized record (identical across apps) plus that app's
  applicability, directive = that app's **enforceable consequences**, element-grounded by slug.
  Use this where compliance requires work the sweep cannot see as an insight. Pre-flight each
  payload with `--validate work-item`.

A single-app ADR degenerates to one work item. Affected but **unbound** boards: name them, skip
them, narrate the binding gate (work items need a code-bound board).

## 7 — Hand off

Enrich each generated draft via the work-items-authoring loop (anchor notes are what the implementer
reads), then the closing move: preview → commit. Not now → `/insights` (review batches),
`/work-items` (release the drafts). Every stop names the next command.

The arc: _decision in → durable record + measured compliance + per-app remediation queue out_ —
all reviewable drafts.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…