5.9 KiB
description, tags
| description | tags | ||
|---|---|---|---|
| Detect and create bidirectional relationships between existing ADRs with clickable links |
|
Launches the adr-linker agent to analyze existing ADRs and create bidirectional relationship links.
Post-processes generated ADRs to detect relationships (Supersedes, Depends on, Related to, Amends) and update files with clickable Markdown links following MADR standard.
What it does:
- Scans existing ADRs in
docs/adrs/generated/ - Detects 4 relationship types using temporal, semantic, and technical analysis
- Creates bidirectional clickable links (A→B and B→A)
- Updates ADR files automatically with relationship headers
- Validates link integrity and generates comprehensive report
- Uses git history + potential ADR hints for accurate detection
Usage:
/adr-link [modules] [--validate] [--report-only] [--adrs-path=PATH] [--output-dir=PATH]
Examples:
/adr-link
# Process all ADRs across all modules
/adr-link BILLING API
# Process only BILLING and API modules
/adr-link --validate
# Validate existing links without modifying files
/adr-link --report-only
# Generate relationship report without updating files
/adr-link --adrs-path=output/adrs/generated
# Process ADRs in custom path
/adr-link --report-only --output-dir=docs/reports/
# Generate report in specific directory
/adr-link BILLING --adrs-path=custom/adrs --output-dir=reports/
# Process BILLING module with custom paths
Implementation Instructions
When the user invokes /adr-link:
Step 1: Parse Arguments and Determine Scope
Extract options:
- Module IDs (e.g., BILLING, API, DATA) - if provided
- Flags:
--validate,--report-only - Paths:
--adrs-path=<path>,--output-dir=<path>
Determine paths:
- ADRs path:
--adrs-pathvalue or defaultdocs/adrs/generated/ - Output directory:
--output-dirvalue or defaultdocs/adrs/reports/
Determine scope:
- No modules specified: Process ALL modules in
{adrs-path}/ - Modules specified: Process only those modules in
{adrs-path}/{MODULE}/ - Flag behavior:
--validate: Read-only mode, check link integrity, save report to{output-dir}/--report-only: Detect relationships, save report to{output-dir}/, don't update files
Step 2: Discover ADR Files
Scan strategy:
adrs_path = --adrs-path value OR "docs/adrs/generated/"
If modules specified:
Scan: {adrs_path}/{MODULE}/**/*.md
If no modules:
Scan: {adrs_path}/**/*.md
Include:
- Main directory:
{adrs_path}/{MODULE}/ADR-*.md - Subdirectories:
{adrs_path}/{MODULE}/needs-input/ADR-*.md
Exclude:
- Non-ADR files (README.md, index files)
- Archived/deleted ADRs
Build file list:
Example output:
Found 47 ADR files:
- BILLING: 18 ADRs
- API: 12 ADRs
- AUTH: 7 ADRs
- DATA: 6 ADRs
- AUDIT: 4 ADRs
Step 3: Launch adr-linker Agent
CRITICAL: Launch SINGLE agent instance (NOT multiple in parallel)
The adr-linker agent processes ALL ADRs in a single execution to:
- Build complete relationship graph
- Ensure bidirectional consistency
- Avoid file write conflicts
Agent prompt construction:
Basic invocation (no modules):
Analyze and link all ADRs in {adrs_path}. Detect all relationship types (Supersedes, Depends on, Related to, Amends), create bidirectional clickable links, and update ADR files.
With modules:
Analyze and link ADRs in modules: BILLING, API at {adrs_path}. Detect all relationship types, create bidirectional clickable links, and update ADR files.
With --validate flag:
Validate existing ADR relationships in {adrs_path}. Check link integrity, bidirectionality, and target existence. DO NOT modify files. Save validation report to {output_dir}/adr-link-validation-{timestamp}.md.
With --report-only flag:
Analyze and detect relationships between ADRs in {adrs_path} but DO NOT update files. Generate comprehensive relationship report showing all detected relationships, grouped by type and module. Save report to {output_dir}/adr-link-report-{timestamp}.md.
Example Task calls:
1. Process all ADRs (default paths):
Task:
subagent_type: adr-linker
description: Link all ADRs
prompt: "Analyze and link all ADRs in docs/adrs/generated/. Detect all relationship types (Supersedes, Depends on, Related to, Amends), create bidirectional clickable links, and update ADR files. Use git history from repository root for temporal analysis."
Step 4: Handle Agent Response
Agent returns summary report containing:
- Success: Number of relationships detected and ADRs updated, grouped by type (Supersedes, Depends on, Related to, Amends)
- Validation: Link integrity check results, broken links if any
- Errors: Git repository not found, invalid paths, permission issues
Step 5: Integration Notes
When to use:
- After parallel ADR generation (resolves race conditions)
- After manual ADR creation
- After ADR renumbering
- Periodic maintenance
When NOT to use:
- During ADR generation (let adr-generator handle initial relationships)
- On potential ADRs (only works on generated ADRs)
Error Reference
| Error | Solution |
|---|---|
| No ADR files found | Run /adr-generate first |
| Permission denied | Check file permissions: chmod 644 docs/adrs/generated/**/*.md |
| Circular dependency | Agent breaks lowest-confidence link automatically |
| Module not found | Check spelling or run /adr-generate MODULE |
| Custom path not found | Verify path exists or omit --adrs-path |
| Cannot create output dir | Use writable directory with --output-dir |
Summary
The /adr-link command is a powerful post-processing tool that:
- Solves race condition problem in parallel ADR generation
- Creates bidirectional navigation between related decisions
- Maintains MADR compliance with clickable Markdown links
- Validates relationship integrity
- Provides comprehensive analysis of ADR evolution
Use after ADR generation to build a complete, navigable architecture decision graph.