mcpField
B
blueprint-adr-list

blueprint-adr-list

github.com/laurigates開発5958 回インストール1 日前に更新
リポジトリ

blueprint-adr-list について

`docs/adrs/` のファイルからアーキテクチャ決定記録(ADR)の一覧を作るスキルです。Markdown と YAML の異なるメタデータ形式に対応し、表やステータス集計を生成できます。

主な機能

  1. 01ADR のタイトルとステータスの一覧化
  2. 02日付とドメインタグの抽出
  3. 03Markdown 見出しと YAML frontmatter の読み取り
  4. 04Markdown インデックス表の生成
  5. 05ADR ステータス数の集計

活用シーン

  1. 01README 用 ADR インデックスの作成
  2. 02アーキテクチャ決定のステータス監査
  3. 03ADR の日付とドメインの確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/laurigates/claude-plugins --skill blueprint-adr-list

インストール後、Claude Code で/blueprint-adr-listを入力して読み込まれたか確認します。

詳細

ファイルシステムからアーキテクチャ決定記録を動的に一覧表示します。

このスキルを使用する場面

次の場合はこのスキルを使用します…次の場合は blueprint-docs-list を使用します…
タイトル、ステータス、日付、ドメインを含む ADR 固有の出力だけが必要な場合ADR、PRD、PRP をまとめたインデックスが必要な場合
README 用の ADR インデックスを生成する場合すべてのブループリント文書の種類について、件数や概要をすばやく確認したい場合
Markdown の表で ADR のステータスを監査する場合関係性や競合の確認には、代わりに blueprint-adr-validate を使用します

ユースケース:README 用の ADR インデックスを生成する、ADR のステータスを監査する、またはすべてのアーキテクチャ上の決定をすばやく確認します。

手順:

1. ADR を確認する

ls docs/adrs/*.md 2>/dev/null | head -1

ADR が見つからない場合:

No ADRs found in docs/adrs/
Run `/blueprint:derive-plans` to generate ADRs from project analysis.

2. ADR の表を生成する

ADR の形式はさまざまです。Markdown の見出し(## Status、## Date)を使うものもあれば、YAML フロントマター(status:、date:)を使うものもあります。抽出処理はどちらにも対応しています。

Markdown の表を生成するコマンド:

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. 結果を表示する

生成された表を出力します。例:

| 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. 任意:ドメインを含む拡張テーブル

ドメインタグを使用している場合は、拡張テーブルを生成します:

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. 概要統計

表の後に、概要を表示します:

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 ' ')"

ヒント:誰でもインデックスを再生成できるように、一覧表示コマンドを docs/adrs/README.md に追加します。/blueprint:derive-plans で生成される ADR README テンプレートを参照してください。

コメント