Generate project-specific rules from Product Requirements Documents. When to Use This Skill Use this skill when... Use alternative when... Need to generate rules from existing PRDs Use /blueprint:rules to manually create/edit rules Want path-scoped rules for specific file types Use /blueprint:claude-md for general project instructions Automating rule creation from requirements Writing custom rules without PRD reference Extracting architecture/testing patterns from PRDs Need to create one-off rules for specific contexts Rules are generated to .claude/rules/ directory. Rules with paths frontmatter are loaded conditionally when working on matching files. Prerequisites : docs/prds/ directory exists At least one PRD file in docs/prds/ Steps : Find and read all PRDs : Use Glob to find all .md files in docs/prds/ Read each PRD file If no PRDs found, report error and suggest writing PRDs first Check for existing generated rules : ls .claude/rules/ 2
/dev/null If rules exist, check manifest for content hashes Compare current content hash vs stored hash If modified, offer options: overwrite, skip, or backup Analyze PRDs and extract (aggregated from all PRDs): Architecture Patterns : Project structure and organization Architectural style (MVC, layered, hexagonal, etc.) Design patterns Dependency injection approach Error handling strategy Code organization conventions Integration patterns Testing Strategies : TDD workflow requirements Test types (unit, integration, e2e) Mocking patterns Coverage requirements Test structure and organization Test commands Implementation Guides : How to implement APIs/endpoints How to implement UI components (if applicable) Database operation patterns External service integration patterns Background job patterns (if applicable) Quality Standards : Code review checklist Performance baselines Security requirements (OWASP, validation, auth) Code style and formatting Documentation requirements Dependency management Generate four aggregated domain rules : Create in .claude/rules/ : architecture-patterns.md : Aggregated patterns from all PRDs Fill in project-specific patterns extracted from PRDs Include code examples where possible Reference specific files/directories testing-strategies.md : Aggregated testing requirements from all PRDs Fill in TDD requirements from PRDs Include coverage requirements Include test commands for the project Add paths frontmatter if tests live in specific directories:
paths : - "tests//*" - "/.{test,spec}."
implementation-guides.md : Aggregated implementation patterns from all PRDs Fill in step-by-step patterns for feature types Include code examples Scope to source paths if applicable:
paths : - "src//*" - "lib//*"
- quality-standards.md
- :
- Aggregated quality requirements from all PRDs
- Fill in performance baselines from PRDs
- Fill in security requirements from PRDs
- Create project-specific checklist
- Path-scoping guidance
- Add
paths
frontmatter when a rule only applies to specific file types or directories. This reduces context noise — Claude only loads the rule when working on matching files. Use brace expansion for concise patterns:
.{ts,tsx}
,
src/{api,routes}//
.
Update manifest with generation tracking
:
{
"generated"
:
{
"rules"
:
{
"architecture-patterns"
:
{
"source"
:
"docs/prds/*"
,
"source_hash"
:
"sha256:..."
,
"generated_at"
:
"[ISO timestamp]"
,
"plugin_version"
:
"3.0.0"
,
"content_hash"
:
"sha256:..."
,
"status"
:
"current"
}
,
"testing-strategies"
:
{
...
}
,
"implementation-guides"
:
{
...
}
,
"quality-standards"
:
{
...
}
}
}
}
Update task registry
:
Update the task registry entry in
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 For source_prd_hashes , compute sha256sum of each PRD file and pass as a JSON object via --argjson . Report : Rules generated from PRDs! Created in .claude/rules/: - 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! Prompt for next action (use 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" Based on selection: "Generate workflow commands" -> Run /blueprint:generate-commands "Update CLAUDE.md" -> Run /blueprint:claude-md "Review generated rules" -> Show rule file locations and exit "I'm done for now" -> Exit Important : Rules should be markdown files with clear headings Keep rule content specific and focused Include code examples to make patterns concrete Reference PRD sections for traceability Rules should be actionable, not just documentation Error Handling : If no PRDs found -> Guide user to derive PRDs first ( /blueprint:derive-prd ) If PRDs incomplete -> Generate rules with TODO markers for missing sections If rules already exist and modified -> Offer to backup before overwriting