blueprint-plugin/skills/blueprint-adr-validate/SKILL.md
Validate ADR relationships, domain consistency, and duplicate ADR numbers. Use when auditing ADRs before release, finding broken supersedes/extends links, cycles, or number collisions.
npx skillsauth add laurigates/claude-plugins blueprint-adr-validateInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Validate Architecture Decision Records for relationship consistency, reference integrity, and domain conflicts.
Usage: /blueprint:adr-validate [--report-only]
| Use this skill when... | Use alternative when... |
|------------------------|-------------------------|
| Maintaining ADR integrity before releases | Creating new ADRs (use /blueprint:derive-plans) |
| Auditing after refactoring or changes | Quick one-time documentation review |
| Regular documentation review process | General ADR reading |
find . -path '*/docs/adrs' -maxdepth 2 -type dfind . -path '*/docs/adrs/*' -name "*.md" -type ffind . -path '*/docs/adrs/*' -maxdepth 3 -name '*.md' -exec grep -l "^domain:" {} +echo "${1:---}"Parse $ARGUMENTS:
--report-only: Output validation report without prompting for fixes
Execute complete ADR validation and remediation workflow:
docs/adrs/ls docs/adrs/*.mdFor each ADR, validate:
workspaces.role):
Recognise these reference forms in supersedes/extends/related fields:
ADR-NNN — local to the current workspace (existing behaviour).<workspace-path>/ADR-NNN — points into a sibling/child workspace. Resolve
by reading <workspace-path>/docs/adrs/ from the monorepo root. Warn if
the workspace is not listed in root workspaces.children./ADR-NNN — points at the monorepo root's ADR set. Resolve using the
manifest's workspaces.root_relative_path (for child manifests) or the
current directory (for root manifests).
Unresolved cross-workspace refs are reported as warnings (not errors) so
they do not block validation during migration.See REFERENCE.md for detailed checks.
ADR numbers are chosen at branch time but only claimed at merge time, so two
in-flight ADR PRs can pick the same number and both land (issue #1585 — the FVH
infrastructure #2015 collision where two ADRs both claimed 0038). Run the
deterministic guard:
bash ${CLAUDE_SKILL_DIR}/scripts/check-adr-numbers.sh --project-dir "$(pwd)"
It emits the structured STATUS= / ISSUE_COUNT= convention and reports three
classes (see REFERENCE.md):
duplicate_adr_number (ERROR) — two files in the working tree claim the same number.adr_number_collision (ERROR) — a working-tree ADR claims a number a different filename already holds on the base ref (origin/main). This is the pre-merge parallel-PR case, caught before the second PR merges.adr_missing_index_row (WARN) — an ADR is not referenced from the ADR directory's README index (how the 0038 collision went unnoticed for a week).Fold any findings into the Step 4 report. A STATUS=ERROR is a blocking
collision; resolve it by renumbering the newer ADR to the next free sequential
number and backfilling the README index row.
Compile comprehensive report showing:
If --report-only flag present:
Ask user action via AskUserQuestion:
docs/adrs/validation-report.mdExecute based on selection (see REFERENCE.md).
Update the task registry entry in docs/blueprint/manifest.json:
jq --arg now "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
--arg result "${VALIDATION_RESULT:-success}" \
--argjson processed "${ADRS_VALIDATED:-0}" \
'.task_registry["adr-validate"].last_completed_at = $now |
.task_registry["adr-validate"].last_result = $result |
.task_registry["adr-validate"].stats.runs_total = ((.task_registry["adr-validate"].stats.runs_total // 0) + 1) |
.task_registry["adr-validate"].stats.items_processed = $processed' \
docs/blueprint/manifest.json > tmp.json && mv tmp.json docs/blueprint/manifest.json
Where VALIDATION_RESULT is "success", "{N} warnings", or "failed: {reason}".
Report all changes made:
| Context | Command |
|---------|---------|
| Check ADR directory | test -d docs/adrs && echo "YES" \|\| echo "NO" |
| Count ADRs | ls docs/adrs/*.md 2>/dev/null \| wc -l |
| Extract frontmatter | head -50 {file} \| grep -m1 "^field:" \| sed 's/^[^:]*:[[:space:]]*//' |
| Find by domain | grep -l "^domain: {domain}" docs/adrs/*.md |
| Detect cycles | Build supersession graph and traverse |
| Number collisions | bash ${CLAUDE_SKILL_DIR}/scripts/check-adr-numbers.sh --project-dir "$(pwd)" |
For validation rules, remediation procedures, and report format details, see REFERENCE.md.
development
Debug HTTP APIs: trace requests, inspect headers. Use when a request fails: check status first.
documentation
Render architecture diagrams from text sources. Use when documenting system topology.
tools
Inspect JSON payloads and extract nested fields. Use when parsing API responses.
tools
--- name: no-description allowed-tools: Read --- # No Description This skill has no description and must be dropped with a warning.