adr-relationships

v2026.09.24

Domain analysis, conflict detection, and relationship validation for Architecture Decision Records. Use when creating or validating ADRs to ensure consistency.

GitHub
安装命令
npx skhub add laurigates/adr-relationships
Markdown
SKILL.md

ADR Relationship Management

Provides logic for domain analysis, conflict detection, and relationship tracking in Architecture Decision Records.

When to Use This Skill

Use this skill when...Use blueprint-adr-validate instead when...
You need domain tagging logic for grouping related ADRsYou're running a one-shot ADR validation report
You need conflict detection between ADRs in the same domainYou're auditing all ADRs before a release
You need bidirectional relationship validation between ADRsUse blueprint-adr-list instead when you only need a flat ADR index
You're authoring a new ADR and want to find related decisionsUse blueprint-derive-plans instead when generating ADRs from existing code

Core Capabilities

  1. Domain Analysis: Scope ADRs by domain tag to find related decisions
  2. Conflict Detection: Surface potential conflicts in same domain
  3. Relationship Validation: Ensure bidirectional consistency
  4. Orphan Detection: Find ADRs with broken references

Standard Domains

DomainCovers
state-managementRedux, Zustand, MobX, Context, signals
data-layerDatabase choice, ORM, caching strategies
api-designREST, GraphQL, tRPC, versioning
authenticationAuth providers, session handling, tokens
testingTest frameworks, strategies, coverage
deploymentCI/CD, containers, serverless, hosting
frontend-frameworkReact, Vue, Svelte, Angular
stylingTailwind, CSS-in-JS, SCSS, design tokens
build-toolingBundlers, compilers, dev servers
monitoringLogging, metrics, error tracking

Frontmatter Format

---
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
---

Conflict Detection Logic

Pre-Creation Analysis

When creating a new ADR with a domain:

  1. Scan docs/adrs/*.md for matching domain: field
  2. For each match with status "Accepted", extract:
    • ADR number and title
    • Key decision outcome
  3. Calculate conflict score

Conflict Scoring

IndicatorWeightDescription
Same domain+0.3Both decisions in same domain
Both "Accepted"+0.2Neither has been superseded
Opposite outcomes+0.4Decisions recommend different solutions
Time gap > 6 months+0.1Older decision may be stale

Threshold: Score >= 0.7 indicates potential conflict requiring user decision.

Relationship Types

RelationshipWhen to UseExample
supersedesNew decision replaces old"Use Zustand" supersedes "Use Redux"
extendsNew decision builds on old"Add persistence" extends "Use Zustand"
relatedDecisions are connected"Use TypeScript" related to "Use Vite"

Domain Inference

Map discussion topics to domains:

Topic KeywordsInferred Domain
Redux, Zustand, MobX, useState, signalsstate-management
Prisma, Drizzle, PostgreSQL, MongoDB, ORMdata-layer
REST, GraphQL, tRPC, OpenAPI, endpointsapi-design
OAuth, JWT, auth0, session, tokensauthentication
Vitest, Jest, Playwright, Cypress, coveragetesting
Tailwind, styled-components, CSS modulesstyling
React, Vue, Svelte, Next.js, Nuxtfrontend-framework
Vite, Webpack, esbuild, turbopackbuild-tooling
Docker, Kubernetes, Vercel, serverlessdeployment
Sentry, DataDog, logging, metricsmonitoring

Validation Rules

Reference Integrity

CheckValidation
supersedes target existsADR file must exist
supersedes target statusMust be "Superseded" with superseded-by set
extends target existsADR file must exist
extends target not supersededWarning if extending outdated decision
related targets existAll referenced ADRs must exist
No self-referenceADR cannot reference itself
No circular supersedesA->B->A is invalid

Bidirectional Consistency

When ADR-A supersedes ADR-B:

  • ADR-A: supersedes: ADR-B
  • ADR-B: superseded-by: ADR-A, status: Superseded

Commands

Find ADRs by domain

grep -l "^domain: state-management" docs/adrs/*.md

Extract ADR metadata

for f in docs/adrs/*.md; do
  echo "=== $f ==="
  head -20 "$f" | grep -E "^(date|status|domain|supersedes|extends|related):"
done

Find potential conflicts

# 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

Validate references

# 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

Quick Reference

OperationPattern
Find by domaingrep -l "^domain: X" docs/adrs/*.md
List all domainsgrep -h "^domain:" docs/adrs/*.md | sort -u
Find supersededgrep -l "^status: Superseded" docs/adrs/*.md
Check referencesParse frontmatter, verify targets exist
Detect conflictsMultiple Accepted in same domain

Integration Points

  • /blueprint:derive-plans: Pre-creation conflict analysis
  • /blueprint:adr-validate: Full validation report
  • /blueprint:status: ADR health summary
  • document-detection skill: Domain inference for auto-detected ADRs
发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

2026年9月24日

分类

未分类

许可证

MIT

源路径

blueprint-plugin/skills/adr-relationships

默认分支

main

最新提交

1668324

Tree SHA

b2d4cc3