From blueprint-plugin
Analyzes ADR domains, detects conflicts between related decisions, validates bidirectional relationships, and finds orphaned ADRs. Use when authoring or auditing Architecture Decision Records.
How this skill is triggered — by the user, by Claude, or both
Slash command
/blueprint-plugin:adr-relationshipsThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Provides logic for domain analysis, conflict detection, and relationship tracking in Architecture Decision Records.
Provides logic for domain analysis, conflict detection, and relationship tracking in Architecture Decision Records.
| Use this skill when... | Use blueprint-adr-validate instead when... |
|---|---|
| You need domain tagging logic for grouping related ADRs | You're running a one-shot ADR validation report |
| You need conflict detection between ADRs in the same domain | You're auditing all ADRs before a release |
| You need bidirectional relationship validation between ADRs | Use blueprint-adr-list instead when you only need a flat ADR index |
| You're authoring a new ADR and want to find related decisions | Use blueprint-derive-plans instead when generating ADRs from existing code |
| Domain | Covers |
|---|---|
state-management | Redux, Zustand, MobX, Context, signals |
data-layer | Database choice, ORM, caching strategies |
api-design | REST, GraphQL, tRPC, versioning |
authentication | Auth providers, session handling, tokens |
testing | Test frameworks, strategies, coverage |
deployment | CI/CD, containers, serverless, hosting |
frontend-framework | React, Vue, Svelte, Angular |
styling | Tailwind, CSS-in-JS, SCSS, design tokens |
build-tooling | Bundlers, compilers, dev servers |
monitoring | Logging, metrics, error tracking |
---
date: 2026-01-15
status: Accepted | Superseded | Deprecated | Proposed
domain: state-management
supersedes: ADR-0003
superseded_by: ADR-0012 # Set when superseded
extends: ADR-0005
related:
- ADR-0002
- ADR-0007
---
When creating a new ADR with a domain:
docs/adrs/*.md for matching domain: field| Indicator | Weight | Description |
|---|---|---|
| Same domain | +0.3 | Both decisions in same domain |
| Both "Accepted" | +0.2 | Neither has been superseded |
| Opposite outcomes | +0.4 | Decisions recommend different solutions |
| Time gap > 6 months | +0.1 | Older decision may be stale |
Threshold: Score >= 0.7 indicates potential conflict requiring user decision.
| Relationship | When to Use | Example |
|---|---|---|
supersedes | New decision replaces old | "Use Zustand" supersedes "Use Redux" |
extends | New decision builds on old | "Add persistence" extends "Use Zustand" |
related | Decisions are connected | "Use TypeScript" related to "Use Vite" |
Map discussion topics to domains:
| Topic Keywords | Inferred Domain |
|---|---|
| Redux, Zustand, MobX, useState, signals | state-management |
| Prisma, Drizzle, PostgreSQL, MongoDB, ORM | data-layer |
| REST, GraphQL, tRPC, OpenAPI, endpoints | api-design |
| OAuth, JWT, auth0, session, tokens | authentication |
| Vitest, Jest, Playwright, Cypress, coverage | testing |
| Tailwind, styled-components, CSS modules | styling |
| React, Vue, Svelte, Next.js, Nuxt | frontend-framework |
| Vite, Webpack, esbuild, turbopack | build-tooling |
| Docker, Kubernetes, Vercel, serverless | deployment |
| Sentry, DataDog, logging, metrics | monitoring |
| Check | Validation |
|---|---|
supersedes target exists | ADR file must exist |
supersedes target status | Must be "Superseded" with superseded_by set |
extends target exists | ADR file must exist |
extends target not superseded | Warning if extending outdated decision |
related targets exist | All referenced ADRs must exist |
| No self-reference | ADR cannot reference itself |
| No circular supersedes | A->B->A is invalid |
When ADR-A supersedes ADR-B:
supersedes: ADR-Bsuperseded_by: ADR-A, status: Supersededgrep -l "^domain: state-management" docs/adrs/*.md
for f in docs/adrs/*.md; do
echo "=== $f ==="
head -20 "$f" | grep -E "^(date|status|domain|supersedes|extends|related):"
done
# Count Accepted ADRs per domain
grep -h "^domain:" docs/adrs/*.md | sort | uniq -c | while read count domain; do
if [ "$count" -gt 1 ]; then
echo "Potential conflict in $domain: $count Accepted ADRs"
fi
done
# Check all supersedes references
grep -h "^supersedes: ADR-" docs/adrs/*.md | cut -d' ' -f2 | while read ref; do
num="${ref#ADR-}"
ls docs/adrs/*-"$num"-*.md 2>/dev/null || echo "Missing: $ref"
done
| Operation | Pattern |
|---|---|
| Find by domain | grep -l "^domain: X" docs/adrs/*.md |
| List all domains | grep -h "^domain:" docs/adrs/*.md | sort -u |
| Find superseded | grep -l "^status: Superseded" docs/adrs/*.md |
| Check references | Parse frontmatter, verify targets exist |
| Detect conflicts | Multiple Accepted in same domain |
/blueprint:derive-plans: Pre-creation conflict analysis/blueprint:adr-validate: Full validation report/blueprint:status: ADR health summarynpx claudepluginhub laurigates/claude-plugins --plugin blueprint-pluginAuthors, indexes, and lints Architecture Decision Records as append-only project memory for recovering decision rationale.
Captures architectural decisions as structured ADRs during coding sessions. Auto-detects decision moments, records context, alternatives, and rationale, maintaining a log for future developers.