From blueprint-plugin
Analyzes Architecture Decision Records for domain conflicts, relationship validation, orphan detection, and consistency. Use when creating or reviewing ADRs.
npx claudepluginhub laurigates/claude-plugins --plugin blueprint-pluginThis skill is limited to using the following tools:
Provides logic for domain analysis, conflict detection, and relationship tracking in Architecture Decision Records.
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Provides logic for domain analysis, conflict detection, and relationship tracking in Architecture Decision Records.
| 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-adr: Pre-creation conflict analysis/blueprint:adr-validate: Full validation report/blueprint:status: ADR health summary