mcpField
B
blueprint-generate-rules

blueprint-generate-rules

github.com/laurigatesAgent 工作流5956 次安装1 天前更新
代码仓库

关于 blueprint-generate-rules

此 Agent 技能从产品需求文档(PRD)提取项目特定规则,并按领域生成规则文件。适用于希望将需求中的架构、测试和实现规范转化为按路径加载指引的项目。

主要功能

  1. 01汇总多个 PRD 的项目模式
  2. 02生成四类领域规则文件
  3. 03支持按文件路径限定规则
  4. 04记录生成状态与 PRD 哈希

适用场景

  1. 01从现有 PRD 建立项目规则
  2. 02为测试或源码配置路径规则
  3. 03检查并处理已修改的生成规则

安装

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

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

安装后在 Claude Code 中输入/blueprint-generate-rules确认已加载。

详细介绍

根据产品需求文档生成项目专属规则。

何时使用此技能

在以下情况下使用此技能……在以下情况下使用替代方案……
需要根据现有 PRD 生成规则使用 /blueprint:rules 手动创建/编辑规则
希望为特定文件类型创建按路径限定的规则使用 /blueprint:claude-md 编写通用项目说明
根据需求自动创建规则不参考 PRD 编写自定义规则
从 PRD 中提取架构/测试模式需要为特定情境创建一次性规则

规则会生成到 structure.generated_rules_path 配置的目录中(如果缺少该字段,默认为 .claude/rules/)。带有 paths frontmatter 的规则会在处理匹配的文件时有条件地加载。

步骤

先决条件:

  • docs/prds/ 目录存在
  • docs/prds/ 中至少有一个 PRD 文件
  1. 解析输出路径:

    从 docs/blueprint/manifest.json 中读取 structure.generated_rules_path(默认为 .claude/rules/):

    RULES_DIR=$(jq -r '.structure.generated_rules_path // ".claude/rules/"' docs/blueprint/manifest.json)
    mkdir -p "$RULES_DIR"
    

    后续所有读写操作均使用 $RULES_DIR。这样可将 Blueprint 管理的规则与父级 .claude/rules/ 目录中的手写文件隔离开来(问题 #1043)。

  2. 查找并读取所有 PRD:

    • 使用 Glob 查找 docs/prds/ 中的所有 .md 文件
    • 读取每个 PRD 文件
    • 如果未找到 PRD,报告错误并建议先编写 PRD
  3. 检查是否已有生成的规则:

    ls "$RULES_DIR" 2>/dev/null
    
    • 仅检查 $RULES_DIR 下的文件是否存在范围冲突——绝不要检查父级 .claude/rules/。$RULES_DIR 外的手写文件对此检查不可见。
    • 如果存在规则,检查 manifest 中是否包含内容哈希
    • 比较当前内容哈希与已存储的哈希
    • 如果内容已修改,提供以下选项:覆盖、跳过或备份
  4. 分析 PRD 并提取内容(汇总所有 PRD):

    架构模式:

    • 项目结构与组织方式
    • 架构风格(MVC、分层、六边形等)
    • 设计模式
    • 依赖注入方式
    • 错误处理策略
    • 代码组织惯例
    • 集成模式

    测试策略:

    • TDD 工作流要求
    • 测试类型(单元、集成、端到端)
    • 模拟模式
    • 覆盖率要求
    • 测试结构与组织方式
    • 测试命令

    实现指南:

    • 如何实现 API/端点
    • 如何实现 UI 组件(如适用)
    • 数据库操作模式
    • 外部服务集成模式
    • 后台作业模式(如适用)

    质量标准:

    • 代码审查清单
    • 性能基线
    • 安全要求(OWASP、验证、身份验证)
    • 代码风格与格式
    • 文档要求
    • 依赖管理
  5. 生成四个汇总的领域规则:

    在 $RULES_DIR 中创建(即配置的 structure.generated_rules_path):

    architecture-patterns.md:

    • 汇总所有 PRD 中的模式
    • 填入从 PRD 中提取的项目专属模式
    • 尽可能包含代码示例
    • 引用具体文件/目录

    testing-strategies.md:

    • 汇总所有 PRD 中的测试要求
    • 填入 PRD 中的 TDD 要求
    • 包含覆盖率要求
    • 包含项目的测试命令
    • 如果测试位于特定目录,添加 paths frontmatter:
      ---
      paths:
        - "tests/**/*"
        - "**/*.{test,spec}.*"
      ---
      

    implementation-guides.md:

    • 汇总所有 PRD 中的实现模式
    • 为各类功能填入分步模式
    • 包含代码示例
    • 如适用,限定到源代码路径:
      ---
      paths:
        - "src/**/*"
        - "lib/**/*"
      ---
      

    quality-standards.md:

    • 汇总所有 PRD 中的质量要求
    • 填入 PRD 中的性能基准
    • 填入 PRD 中的安全要求
    • 创建项目专属检查清单

    路径范围限定指南:当规则仅适用于特定文件类型或目录时,添加 paths frontmatter。这可以减少上下文噪音——Claude 只会在处理匹配的文件时加载该规则。使用大括号展开来简化模式:*.{ts,tsx}、src/{api,routes}/**/*。

  6. 更新清单并跟踪生成情况:

    将文件名存储为相对于 $RULES_DIR 的路径,这样即使 generated_rules_path 发生变化,注册表也能保持稳定。路径本身位于 structure.generated_rules_path 中;此处的键是纯文件名(不含目录)。

    {
      "generated": {
        "rules": {
          "architecture-patterns.md": {
            "source": "docs/prds/*",
            "source_hash": "sha256:...",
            "generated_at": "[ISO timestamp]",
            "plugin_version": "3.0.0",
            "content_hash": "sha256:...",
            "status": "current"
          },
          "testing-strategies.md": { ... },
          "implementation-guides.md": { ... },
          "quality-standards.md": { ... }
        }
      }
    }
    
  7. 更新任务注册表:

    更新 docs/blueprint/manifest.json 中的任务注册表条目:

    jq --arg now "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
      --argjson processed "${PRDS_READ:-0}" \
      --argjson created "${RULES_GENERATED:-0}" \
      '.task_registry["generate-rules"].last_completed_at = $now |
       .task_registry["generate-rules"].last_result = "success" |
       .task_registry["generate-rules"].context.source_prd_hashes = ($source_prd_hashes // {}) |
       .task_registry["generate-rules"].stats.runs_total = ((.task_registry["generate-rules"].stats.runs_total // 0) + 1) |
       .task_registry["generate-rules"].stats.items_processed = $processed |
       .task_registry["generate-rules"].stats.items_created = $created' \
      docs/blueprint/manifest.json > tmp.json && mv tmp.json docs/blueprint/manifest.json
    

    对于 source_prd_hashes,计算每个 PRD 文件的 sha256sum,并通过 --argjson 作为 JSON 对象传入。

  8. 报告:

    Rules generated from PRDs!
    
    Created in $RULES_DIR (configured via structure.generated_rules_path):
    - architecture-patterns.md
    - testing-strategies.md
    - implementation-guides.md
    - quality-standards.md
    
    PRDs analyzed:
    - docs/prds/[List PRD files]
    
    Key patterns extracted:
    - Architecture: [Brief summary]
    - Testing: [Brief summary]
    - Implementation: [Brief summary]
    - Quality: [Brief summary]
    
    Rules are immediately available - Claude auto-discovers them based on context!
    
  9. 提示用户选择下一步操作(使用 AskUserQuestion):

    question: "Rules generated. What would you like to do next?"
    options:
      - label: "Generate workflow commands (Recommended)"
        description: "Create /project:continue and /project:test-loop commands"
      - label: "Update CLAUDE.md"
        description: "Regenerate project overview document with new rules"
      - label: "Review generated rules"
        description: "I'll examine and refine the rules manually"
      - label: "I'm done for now"
        description: "Exit - rules are already available"
    

    根据所选操作执行:

    • “生成工作流命令” -> 运行 /blueprint:generate-commands
    • “更新 CLAUDE.md” -> 运行 /blueprint:claude-md
    • “检查生成的规则” -> 显示规则文件位置并退出
    • “我暂时先到这里” -> 退出

重要事项:

  • 规则应为包含清晰标题的 Markdown 文件
  • 规则内容应具体且聚焦
  • 添加代码示例,使模式更具体
  • 引用 PRD 章节以便追溯
  • 规则应具有可操作性,而不只是文档说明

错误处理:

  • 如果未找到 PRD -> 引导用户先推导计划(/blueprint:derive-plans)
  • 如果 PRD 不完整 -> 为缺失章节生成带 TODO 标记的规则
  • 如果规则已存在且有修改 -> 在覆盖前询问是否备份

评论

支持 Markdown