About blueprint-sync
blueprint-sync is an agent skill for detecting modified or outdated generated rules and skills. It compares manifest hashes with files and source PRDs, then offers ways to keep, regenerate, or review content.
Key features
- 01Detects modified and stale generated content
- 02Compares file and PRD hashes with the manifest
- 03Offers keep, regenerate, and diff options
- 04Supports a non-modifying --dry-run report
Use cases
- 01Check generated rules for drift
- 02Review PRD changes affecting generated content
- 03Preview sync status before changing files
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ laurigates/ claude-plugins --skill blueprint-syncAfter installing, type/blueprint-syncin Claude Code to confirm it loaded.
Details
From the project READMECheck the status of generated content and offer options for modified or stale files.
When to Use This Skill
| Use this skill when... | Use blueprint-promote instead when... |
|---|---|
| You want to detect stale or modified generated rules/skills | You've decided to keep one specific edited rule (single artifact) |
You're reconciling drift between .claude/rules/ and the manifest | You want to acknowledge modifications and stop sync warnings |
| You want regenerate/promote/keep options for many files at once | Use blueprint-generate-rules instead to (re)generate from PRDs |
You preview status with --dry-run before changing anything | Use blueprint-sync-ids instead for ID assignment, not content drift |
Flags
| Flag | Description |
|---|---|
--dry-run | Preview sync status report without interactive prompts or file modifications |
Steps
Purpose:
- Detect when generated skills/commands have been manually modified
- Detect when source PRDs have changed (making generated content stale)
- Offer appropriate actions: regenerate, promote to custom, or keep as-is
-
Read manifest:
cat docs/blueprint/manifest.json- Extract
generated.rulessection - If no generated content, report "Nothing to sync"
- Extract
-
Check each generated rule: For each rule in
manifest.generated.rules:a. Verify file exists:
test -f .claude/rules/{name}.mdb. Hash current content:
sha256sum .claude/rules/{name}.md | cut -d' ' -f1c. Compare hashes:
- If
content_hashmatches → status:current - If
content_hashdiffers → status:modified
d. Check source freshness (for rules from PRDs):
- Hash current PRD content
- Compare with
source_hashin manifest - If differs → status:
stale
- If
-
Display sync report:
Generated Content Sync Status Rules (.claude/rules/): ✅ architecture-patterns.md: Current ⚠️ testing-strategies.md: Modified locally 🔄 implementation-guides.md: Stale (PRDs changed) ✅ quality-standards.md: Current Summary: - Current: 3 files - Modified: 1 file (user edited) - Stale: 1 file (source changed) -
If
--dry-run: Output the sync report from Step 3 and exit. Skip all remaining steps. -
For modified content, offer options:
question: "{name} has been modified locally. What would you like to do?" options: - label: "Keep modifications" description: "Mark as acknowledged, preserve your changes" - label: "Discard modifications (regenerate)" description: "Overwrite with fresh generation from PRDs" - label: "View diff" description: "See what changed before deciding" - label: "Skip this file" description: "Leave as-is for now"Based on selection:
- "Keep modifications" → Update
content_hashto current, mark as acknowledged - "Regenerate" → Regenerate this rule from PRDs
- "View diff" → Show diff then re-ask
- "Skip" → Continue to next file
- "Keep modifications" → Update
-
For stale content, offer options:
question: "{name} is stale (PRDs have changed). What would you like to do?" options: - label: "Regenerate from PRDs (Recommended)" description: "Update with latest patterns from docs/prds/" - label: "Keep current version" description: "Mark as current without regenerating" - label: "View what changed in PRDs" description: "See PRD changes before deciding" - label: "Skip this file" description: "Leave stale for now"Based on selection:
- "Regenerate" → Regenerate this rule from PRDs
- "Keep" → Update
source_hashto current, mark as current - "View" → Show PRD diff then re-ask
- "Skip" → Continue to next file
-
Update manifest after changes:
- Update
content_hashfor regenerated files - Update
source_hashif PRD changes acknowledged - Update
statusfield appropriately
- Update
-
Final report:
Sync Complete Actions taken: - testing-strategies.md: Modifications acknowledged - implementation-guides.md: Regenerated from PRDs Current state: - 4 generated rules (all current) Manifest updated.
Tips:
- Run
/blueprint:syncperiodically to check for drift - Acknowledge modifications you want to keep
- Regenerating will overwrite local changes
- Stale content still works, but may miss new patterns from PRDs