Blueprint Adr List
List ADRs as a markdown table with title, status, date, domain.
by laurigates · MIT
The skill
List ADRs as a markdown table with title, status, date, domain. Use when generating an ADR index, auditing ADR status, or reviewing all architecture decisions.
List Architecture Decision Records dynamically from the filesystem.
When to Use This Skill
| Use this skill when... | Use blueprint-docs-list instead when... |
|---|---|
| You only need ADR-specific output with title, status, date, domain | You want a combined index across ADRs, PRDs, and PRPs |
| You're generating an ADR index for a README | You want quick counts/summaries of all blueprint document types |
| You're auditing ADR status in a markdown table | Use blueprint-adr-validate instead for relationship/conflict checks |
Use Case: Generate ADR index tables for README files, audit ADR status, or quickly view all architectural decisions.
Steps:
1. Check for ADRs
ls docs/adrs/*.md 2>/dev/null | head -1
If no ADRs found:
No ADRs found in docs/adrs/
Run `/blueprint:derive-plans` to generate ADRs from project analysis.
2. Generate ADR Table
ADR formats vary: some use markdown headers (## Status, ## Date), others use YAML frontmatter (status:, date:). The extraction handles both.
Command to generate markdown table:
printf "| ADR | Title | Status | Date |\n|-----|-------|--------|------|\n" && \
fd '^[0-9]{4}-.*\.md$' docs/adrs -x awk '
# Extract title from H1 header
/^# ADR-/ {gsub(/^# ADR-[0-9]+: /, ""); title=$0}
# Extract status from ## Status section (next non-empty line)
/^## Status/ {p_status=1; next}
p_status && NF {status=$0; p_status=0}
# Extract date from ## Date section (next non-empty line)
/^## Date/ {p_date=1; next}
p_date && NF {date=$0; p_date=0}
# Fallback: YAML frontmatter fields
/^status:/ && !status {gsub(/^status:[[:space:]]*/, ""); status=$0}
/^date:/ && !date {gsub(/^date:[[:space:]]*/, ""); date=$0}
END {
# Extract ADR number from filename (path-depth independent)
fname = FILENAME
sub(/.*\//, "", fname)
num = substr(fname, 1, 4)
if (title == "") title = "(untitled)"
if (status == "") status = "-"
if (date == "") date = "-"
printf "| [%s](%s) | %s | %s | %s |\n", num, FILENAME, title, status, date
}
' {} | sort
3. Display Results
Output the generated table. Example:
| ADR | Title | Status | Date |
|-----|-------|--------|------|
| [0001](docs/adrs/0001-use-react.md) | Use React for Frontend | Accepted | 2024-01-15 |
| [0002](docs/adrs/0002-use-postgres.md) | Use PostgreSQL for Database | Accepted | 2024-01-20 |
| [0003](docs/adrs/0003-migrate-to-vite.md) | Migrate from CRA to Vite | Accepted | 2024-02-01 |
4. Optional: Extended Table with Domain
If domain tags are used, generate extended table:
printf "| ADR | Title | Status | Date | Domain |\n|-----|-------|--------|------|--------|\n" && \
fd '^[0-9]{4}-.*\.md$' docs/adrs -x awk '
/^# ADR-/ {gsub(/^# ADR-[0-9]+: /, ""); title=$0}
/^## Status/ {p_status=1; next}
p_status && NF {status=$0; p_status=0}
/^## Date/ {p_date=1; next}
p_date && NF {date=$0; p_date=0}
/^domain:/ {gsub(/^domain:[[:space:]]*/, ""); domain=$0}
/^status:/ && !status {gsub(/^status:[[:space:]]*/, ""); status=$0}
/^date:/ && !date {gsub(/^date:[[:space:]]*/, ""); date=$0}
END {
fname = FILENAME; sub(/.*\//, "", fname); num = substr(fname, 1, 4)
if (title == "") title = "(untitled)"
if (status == "") status = "-"
if (date == "") date = "-"
if (domain == "") domain = "-"
printf "| [%s](%s) | %s | %s | %s | %s |\n", num, FILENAME, title, status, date, domain
}
' {} | sort
5. Summary Statistics
After the table, show summary:
echo ""
echo "**Summary**:"
echo "- Total: $(fd '^[0-9]{4}-.*\.md$' docs/adrs | wc -l | tr -d ' ') ADRs"
echo "- Accepted: $(grep -rl '^Accepted$\|^status:.*Accepted' docs/adrs/*.md 2>/dev/null | wc -l | tr -d ' ')"
echo "- Superseded: $(grep -rl '^Superseded\|^status:.*Superseded' docs/adrs/*.md 2>/dev/null | wc -l | tr -d ' ')"
echo "- Deprecated: $(grep -rl '^Deprecated\|^status:.*Deprecated' docs/adrs/*.md 2>/dev/null | wc -l | tr -d ' ')"
Tip: Add the listing command to docs/adrs/README.md so anyone can regenerate the index. See the ADR README template generated by /blueprint:derive-plans.
Use this skill
Connect your agent to the Skill Store MCP server and ask for it by ref: laurigates/blueprint-adr-list-35781910068.
Details
- Publisher
- laurigates
- Category
- Software Development › Developer docs & tooling
- License
- MIT
- Updated
- 2026-10-19
References
More from laurigates
- Docs Refresh Refresh plugin catalog docs (README, PLUGIN-MAP, d2 diagram) so per-plugin skill/agent counts mat…
- Plugin Authoring Add, modify, or delete a skill or plugin in this repo — frontmatter shape, the seven metadata fil…
- Accessibility Implementation WCAG 2.1/2.2 compliance, ARIA patterns, keyboard nav, focus management, a11y testing.
- Design Tokens Design tokens and CSS custom properties: theme systems, dark mode, component libraries.