home / skills / laurigates / claude-plugins / blueprint-docs-list

blueprint-docs-list skill

/blueprint-plugin/skills/blueprint-docs-list

This skill inventories blueprint documents by type, extracting metadata from frontmatter and headers to enable quick audits and indexed overviews.

npx playbooks add skill laurigates/claude-plugins --skill blueprint-docs-list

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
3.2 KB
---
model: haiku
created: 2026-02-06
modified: 2026-02-06
reviewed: 2026-02-06
description: "List blueprint documents (ADRs, PRDs, PRPs) with metadata extracted from frontmatter and headers"
args: "<type>"
allowed-tools: Bash, Glob
argument-hint: "adrs | prds | prps | all"
name: blueprint-docs-list
---

List blueprint documents programmatically from the filesystem. Extracts metadata from YAML frontmatter and markdown headers.

**Use Case**: Audit document status, generate index tables, or get a quick overview of all project documentation.

## Parameters

| Arg | Description |
|-----|-------------|
| `adrs` | List Architecture Decision Records |
| `prds` | List Product Requirements Documents |
| `prps` | List Product Requirement Prompts |
| `all` | Summary of all document types |

## Execution

### If arg is `adrs`

Run `/blueprint:adr-list` — it handles ADR-specific extraction with both header-section and frontmatter support.

### If arg is `prds`

```bash
printf "| PRD | Title | Status | Date |\n|-----|-------|--------|------|\n" && \
for f in docs/prds/*.md; do
  [ -f "$f" ] || continue
  fname=$(basename "$f")
  [ "$fname" = "README.md" ] && continue
  doc_title=$(head -50 "$f" | grep -m1 "^title:" | sed 's/^title:[[:space:]]*//' || true)
  doc_status=$(head -50 "$f" | grep -m1 "^status:" | sed 's/^status:[[:space:]]*//' || true)
  doc_date=$(head -50 "$f" | grep -m1 "^date:\|^created:" | sed 's/^[^:]*:[[:space:]]*//' || true)
  # Fallback: extract title from H1
  if [ -z "$doc_title" ]; then
    doc_title=$(head -20 "$f" | grep -m1 "^# " | sed 's/^# //')
  fi
  printf "| [%s](%s) | %s | %s | %s |\n" \
    "${fname%.md}" "$f" "${doc_title:-(untitled)}" "${doc_status:--}" "${doc_date:--}"
done
```

### If arg is `prps`

```bash
printf "| PRP | Title | Status | Confidence |\n|-----|-------|--------|------------|\n" && \
for f in docs/prps/*.md; do
  [ -f "$f" ] || continue
  fname=$(basename "$f")
  [ "$fname" = "README.md" ] && continue
  doc_title=$(head -50 "$f" | grep -m1 "^title:" | sed 's/^title:[[:space:]]*//' || true)
  doc_status=$(head -50 "$f" | grep -m1 "^status:" | sed 's/^status:[[:space:]]*//' || true)
  doc_confidence=$(head -50 "$f" | grep -m1 "^confidence:" | sed 's/^confidence:[[:space:]]*//' || true)
  if [ -z "$doc_title" ]; then
    doc_title=$(head -20 "$f" | grep -m1 "^# " | sed 's/^# //')
  fi
  printf "| [%s](%s) | %s | %s | %s |\n" \
    "${fname%.md}" "$f" "${doc_title:-(untitled)}" "${doc_status:--}" "${doc_confidence:--}"
done
```

### If arg is `all`

Show counts and status breakdown for each document type:

```bash
echo "## Blueprint Documents Summary"
echo ""
for doc_type in adrs prds prps; do
  doc_count=$(ls docs/$doc_type/*.md 2>/dev/null | grep -cv 'README.md' || echo 0)
  echo "### ${doc_type^^}: $doc_count documents"
  if [ "$doc_count" -gt 0 ]; then
    for s in Accepted Proposed Deprecated Superseded draft ready approved; do
      sc=$(grep -ril "^status:.*$s\|^$s$" docs/$doc_type/*.md 2>/dev/null | wc -l | tr -d ' ')
      [ "$sc" -gt 0 ] && echo "- $s: $sc"
    done
  fi
  echo ""
done
```

## Post-Actions

After listing, suggest:
- For empty directories: "Run `/blueprint:derive-adr` or `/blueprint:derive-prd` to generate documents"
- For stale documents: "Review documents with status 'draft' or 'Proposed'"

Overview

This skill lists blueprint documents (ADRs, PRDs, PRPs) from a project filesystem and extracts metadata from YAML frontmatter and markdown headers. It generates simple markdown tables and summaries that make it easy to audit document status, counts, and key fields. Use it to build indexes, spot stale work, or produce a quick documentation snapshot.

How this skill works

The tool scans docs/adrs, docs/prds, and docs/prps for .md files (skipping README.md). It looks for YAML frontmatter keys like title, status, date, and confidence, falling back to the first H1 when a title is missing. Output formats include per-type markdown tables and an aggregate summary with counts and status breakdowns.

When to use it

  • Create an index of all PRDs, PRPs, or ADRs for a project
  • Audit documentation status across multiple document types
  • Generate a human-readable table to include in a docs site or changelog
  • Quickly find draft or proposed documents needing review
  • Get counts and status breakdowns for reporting or planning

Best practices

  • Keep title, status, date, and confidence in YAML frontmatter for consistent extraction
  • Avoid embedding metadata far below the top of the file; frontmatter or top headers are easiest to parse
  • Exclude README.md from directories or keep it as a non-document index
  • Run the summary regularly (CI or docs workflow) to detect stale items quickly
  • Use consistent status values (e.g., Accepted, Proposed, draft) so counts are accurate

Example use cases

  • CI job that regenerates a docs index table for every pull request
  • Weekly audit that lists all draft PRDs and PRPs for product review
  • Project onboarding: produce a one-page summary of ADRs and their statuses
  • Manager report: counts of accepted vs proposed decisions across repositories
  • Automated check that warns when a docs directory is empty and suggests generating templates

FAQ

What happens if a file has no frontmatter or title?

The tool falls back to extracting the first H1 as the title and prints placeholders like "untitled" or "-" for missing metadata.

How does the aggregate summary determine status counts?

It greps each document for status lines and counts matching status keywords (Accepted, Proposed, Deprecated, Superseded, draft, ready, approved). Consistent status values improve accuracy.