mcpField
B
blueprint-adr-list

blueprint-adr-list

github.com/laurigates开发5958 次安装1 天前更新
代码仓库

关于 blueprint-adr-list

这是一个从 `docs/adrs/` 文件动态生成架构决策记录(ADR)索引的 skill。它兼容不同的 Markdown 和 YAML 元数据格式,可生成表格与状态统计。

主要功能

  1. 01列出 ADR 标题和状态
  2. 02提取日期和领域标签
  3. 03读取 Markdown 标题与 YAML frontmatter
  4. 04生成 Markdown 索引表
  5. 05汇总 ADR 状态数量

适用场景

  1. 01为 README 创建 ADR 索引
  2. 02审查架构决策的状态
  3. 03查看 ADR 日期和领域

安装

复制下面的命令,在终端中运行。

$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 frontmatter(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 ' ')"

提示:将列出 ADR 的命令添加到 docs/adrs/README.md,方便任何人重新生成索引。请参阅 /blueprint:derive-plans 生成的 ADR README 模板。

评论

支持 Markdown