关于 blueprint-generate-rules
此 Agent 技能从产品需求文档(PRD)提取项目特定规则,并按领域生成规则文件。适用于希望将需求中的架构、测试和实现规范转化为按路径加载指引的项目。
主要功能
- 01汇总多个 PRD 的项目模式
- 02生成四类领域规则文件
- 03支持按文件路径限定规则
- 04记录生成状态与 PRD 哈希
适用场景
- 01从现有 PRD 建立项目规则
- 02为测试或源码配置路径规则
- 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 文件
-
解析输出路径:
从
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)。 -
查找并读取所有 PRD:
- 使用 Glob 查找
docs/prds/中的所有.md文件 - 读取每个 PRD 文件
- 如果未找到 PRD,报告错误并建议先编写 PRD
- 使用 Glob 查找
-
检查是否已有生成的规则:
ls "$RULES_DIR" 2>/dev/null- 仅检查
$RULES_DIR下的文件是否存在范围冲突——绝不要检查父级.claude/rules/。$RULES_DIR外的手写文件对此检查不可见。 - 如果存在规则,检查 manifest 中是否包含内容哈希
- 比较当前内容哈希与已存储的哈希
- 如果内容已修改,提供以下选项:覆盖、跳过或备份
- 仅检查
-
分析 PRD 并提取内容(汇总所有 PRD):
架构模式:
- 项目结构与组织方式
- 架构风格(MVC、分层、六边形等)
- 设计模式
- 依赖注入方式
- 错误处理策略
- 代码组织惯例
- 集成模式
测试策略:
- TDD 工作流要求
- 测试类型(单元、集成、端到端)
- 模拟模式
- 覆盖率要求
- 测试结构与组织方式
- 测试命令
实现指南:
- 如何实现 API/端点
- 如何实现 UI 组件(如适用)
- 数据库操作模式
- 外部服务集成模式
- 后台作业模式(如适用)
质量标准:
- 代码审查清单
- 性能基线
- 安全要求(OWASP、验证、身份验证)
- 代码风格与格式
- 文档要求
- 依赖管理
-
生成四个汇总的领域规则:
在
$RULES_DIR中创建(即配置的structure.generated_rules_path):architecture-patterns.md:- 汇总所有 PRD 中的模式
- 填入从 PRD 中提取的项目专属模式
- 尽可能包含代码示例
- 引用具体文件/目录
testing-strategies.md:- 汇总所有 PRD 中的测试要求
- 填入 PRD 中的 TDD 要求
- 包含覆盖率要求
- 包含项目的测试命令
- 如果测试位于特定目录,添加
pathsfrontmatter:--- paths: - "tests/**/*" - "**/*.{test,spec}.*" ---
implementation-guides.md:- 汇总所有 PRD 中的实现模式
- 为各类功能填入分步模式
- 包含代码示例
- 如适用,限定到源代码路径:
--- paths: - "src/**/*" - "lib/**/*" ---
quality-standards.md:- 汇总所有 PRD 中的质量要求
- 填入 PRD 中的性能基准
- 填入 PRD 中的安全要求
- 创建项目专属检查清单
路径范围限定指南:当规则仅适用于特定文件类型或目录时,添加
pathsfrontmatter。这可以减少上下文噪音——Claude 只会在处理匹配的文件时加载该规则。使用大括号展开来简化模式:*.{ts,tsx}、src/{api,routes}/**/*。 -
更新清单并跟踪生成情况:
将文件名存储为相对于
$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": { ... } } } } -
更新任务注册表:
更新
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 对象传入。 -
报告:
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! -
提示用户选择下一步操作(使用 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 标记的规则
- 如果规则已存在且有修改 -> 在覆盖前询问是否备份