/ghm-template-sync
Detect template version drift and guide migration to the latest template version. Compares current repo against the template, identifies what's outdated, and automates safe updates while protecting product-specific content. Triggers on requests to sync with template, update
$ npx -y skills add mattgierhart/PRD-driven-context-engineering --skill ghm-template-sync --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/ghm-template-sync
Context preview
The summary Claude sees to decide when to auto-load this skill.
Detect template version drift and guide migration to the latest template version. Compares current repo against the template, identifies what's outdated, and automates safe updates while protecting product-specific content. Triggers on requests to sync with template, update
SKILL.md
ghm-template-sync.SKILL.mdname: ghm-template-sync
description: >
Detect template version drift and guide migration to the latest template version.
Compares current repo against the template, identifies what's outdated, and automates
safe updates while protecting product-specific content.
Triggers on requests to sync with template, update template version, check for template
drift, or when user asks "sync template", "update to v3", "template drift", "check template version".
disable-model-invocation: true
context: fork
allowed-tools:
- Read
- Write
- Edit
- Glob
- Grep
- Bash
Template Sync
Detect template version drift and migrate to the latest template version.
Workflow
Phase 1: Detect Current State
1. Read `.claude/VERSION` (if it exists) to get current template version 2. If no VERSION file, check `CLAUDE.md` frontmatter for `template_version` 3. If neither exists, assume v1.0.0 (pre-versioning) 4. Report: "Your repo is on template v{X}. Latest is v{Y}."
Phase 2: Diff Against Template
Compare your repo structure against what the current template version expects:
**Check for missing files:**
- `.claude/VERSION`
- `.claude/domain-profile.yaml`
- `.claude/hooks/HOOK_CONTRACT.md`
- `.claude/hooks/context-validation.sh`
- `.claude/hooks/context-density-gate.sh`
- `.claude/hooks/sot-update-trigger.sh`
- `CHANGELOG.md`
- `MIGRATION.md`
**Check for stale files (should be removed):**
- `.claude/hooks/context-validation.py`
- `.claude/hooks/context-density-gate.py`
- `.claude/hooks/sot-update-trigger.py`
- `.claude/agents/HORIZON.md` (replaced by subdirectory)
- `.claude/agents/STUDIO.md`
- `.claude/agents/DEVLAB.md`
- `.claude/agents/METRO.md`
**Check for structure issues:**
- `settings.json`: Does it use 3-level nesting? Are timeouts in seconds?
- Agent directories: Do `horizon/`, `studio/`, `devlab/`, `metro/` subdirectories exist with `AGENT.md` + `MEMORY.md`?
- EPIC template: Does it use semantic headers (not numbered)?
- Frontmatter: Do key files have `template_version`?
Phase 3: Generate Migration Plan
Output a table:
| File | Status | Action | Risk | |------|--------|--------|------| | `.claude/VERSION` | Missing | Copy from template | None | | `.claude/hooks/*.py` | Stale | Delete (replaced by .sh) | None | | `.claude/agents/HORIZON.md` | Stale | Split into horizon/AGENT.md + MEMORY.md | **Preserve MEMORY.md content** | | `settings.json` | Outdated | Update hook nesting + commands | Check for custom hooks | | `CLAUDE.md` | Missing frontmatter | Add `template_version: "3.0.0"` | None |
Phase 4: Execute Safe Updates
**Auto-safe** (do without asking):
- Create `.claude/VERSION` with current template version
- Add `template_version` frontmatter to files that lack it
- Report what was done
**Confirm first** (show diff, ask user):
- Update `settings.json` hook configuration
- Restructure agent files (must preserve MEMORY.md)
- Delete stale Python hooks
- Update EPIC template headers
**Never touch** (product-specific):
- `PRD.md` content (only add frontmatter)
- `SoT/*.md` content
- `epics/EPIC-*.md` content (only update headers on closed EPICs)
- `.claude/agents/*/MEMORY.md` content
- `README.md` content
Phase 5: Verify
After all changes: 1. Test all shell hooks produce valid JSON 2. Verify no Python hooks remain 3. Confirm `settings.json` uses correct nesting 4. Check agent subdirectories have both AGENT.md and MEMORY.md 5. Report summary of changes made
Version Migration Matrix
| From | To | Key Changes | |------|----|-------------| | v1.0.0 | v2.0.0 | Add skills, hooks, agents, SoT standardization | | v2.0.0 | v3.0.0 | Shell hooks, agent subdirs, semantic EPICs, versioning, domain-profile | | v1.0.0 | v3.0.0 | All of the above (cumulative) |
Safety Rules
1. **NEVER overwrite MEMORY.md** -- these contain product-specific agent memory 2. **NEVER modify SoT content** -- only add section markers or frontmatter 3. **NEVER modify PRD.md content** -- only add frontmatter version 4. **ALWAYS show diff before destructive changes** (deletes, restructures) 5. **ALWAYS verify hooks work** after updating settings.json 6. **Commit changes incrementally** -- one commit per phase, not one giant commit
Read more
name: ghm-template-sync description: > Detect template version drift and guide migration to the latest template version. Compares current repo against the template, identifies what's outdated, and automates safe updates while protecting product-specific content. Triggers on requests to sync with template, update template version, check for template drift, or when user asks "sync template", "update to v3", "template drift", "check template version". disable-model-invocation: true context: fork allowed-tools: - Read - Write - Edit - Glob - Grep - Bash
Template Sync
Detect template version drift and migrate to the latest template version.
Workflow
Phase 1: Detect Current State
1. Read `.claude/VERSION` (if it exists) to get current template version 2. If no VERSION file, check `CLAUDE.md` frontmatter for `template_version` 3. If neither exists, assume v1.0.0 (pre-versioning) 4. Report: "Your repo is on template v{X}. Latest is v{Y}."
Phase 2: Diff Against Template
Compare your repo structure against what the current template version expects:
**Check for missing files:**
- `.claude/VERSION`
- `.claude/domain-profile.yaml`
- `.claude/hooks/HOOK_CONTRACT.md`
- `.claude/hooks/context-validation.sh`
- `.claude/hooks/context-density-gate.sh`
- `.claude/hooks/sot-update-trigger.sh`
- `CHANGELOG.md`
- `MIGRATION.md`
**Check for stale files (should be removed):**
- `.claude/hooks/context-validation.py`
- `.claude/hooks/context-density-gate.py`
- `.claude/hooks/sot-update-trigger.py`
- `.claude/agents/HORIZON.md` (replaced by subdirectory)
- `.claude/agents/STUDIO.md`
- `.claude/agents/DEVLAB.md`
- `.claude/agents/METRO.md`
**Check for structure issues:**
- `settings.json`: Does it use 3-level nesting? Are timeouts in seconds?
- Agent directories: Do `horizon/`, `studio/`, `devlab/`, `metro/` subdirectories exist with `AGENT.md` + `MEMORY.md`?
- EPIC template: Does it use semantic headers (not numbered)?
- Frontmatter: Do key files have `template_version`?
Phase 3: Generate Migration Plan
Output a table:
| File | Status | Action | Risk | |------|--------|--------|------| | `.claude/VERSION` | Missing | Copy from template | None | | `.claude/hooks/*.py` | Stale | Delete (replaced by .sh) | None | | `.claude/agents/HORIZON.md` | Stale | Split into horizon/AGENT.md + MEMORY.md | **Preserve MEMORY.md content** | | `settings.json` | Outdated | Update hook nesting + commands | Check for custom hooks | | `CLAUDE.md` | Missing frontmatter | Add `template_version: "3.0.0"` | None |
Phase 4: Execute Safe Updates
**Auto-safe** (do without asking):
- Create `.claude/VERSION` with current template version
- Add `template_version` frontmatter to files that lack it
- Report what was done
**Confirm first** (show diff, ask user):
- Update `settings.json` hook configuration
- Restructure agent files (must preserve MEMORY.md)
- Delete stale Python hooks
- Update EPIC template headers
**Never touch** (product-specific):
- `PRD.md` content (only add frontmatter)
- `SoT/*.md` content
- `epics/EPIC-*.md` content (only update headers on closed EPICs)
- `.claude/agents/*/MEMORY.md` content
- `README.md` content
Phase 5: Verify
After all changes: 1. Test all shell hooks produce valid JSON 2. Verify no Python hooks remain 3. Confirm `settings.json` uses correct nesting 4. Check agent subdirectories have both AGENT.md and MEMORY.md 5. Report summary of changes made
Version Migration Matrix
| From | To | Key Changes | |------|----|-------------| | v1.0.0 | v2.0.0 | Add skills, hooks, agents, SoT standardization | | v2.0.0 | v3.0.0 | Shell hooks, agent subdirs, semantic EPICs, versioning, domain-profile | | v1.0.0 | v3.0.0 | All of the above (cumulative) |
Safety Rules
1. **NEVER overwrite MEMORY.md** -- these contain product-specific agent memory 2. **NEVER modify SoT content** -- only add section markers or frontmatter 3. **NEVER modify PRD.md content** -- only add frontmatter version 4. **ALWAYS show diff before destructive changes** (deletes, restructures) 5. **ALWAYS verify hooks work** after updating settings.json 6. **Commit changes incrementally** -- one commit per phase, not one giant commit
PRD-driven Context Engineering: A systematic approach to building AI-powered products using progressive documentation and context-aware development workflows
Repo: mattgierhart/PRD-driven-context-engineering
Other skills on prd-driven-context-engineering.
- /SKILL_TEMPLATE
[1-2 sentence description of what this skill does]. Triggers on [specific phrases/contexts that should activate this skill]. Outputs [what the skill produces].
Open skill - /ghm-gate-check
Validates gate criteria before PRD lifecycle advancement by delegating to the readiness scoring pipeline (scripts/readiness.py). Returns a graduated PASS / WARN / BLOCK verdict with top blockers and their causal chain. Triggers before advancing from v0.X to v0.Y or explicit
Open skill - /ghm-harvest
Extracts durable insights from temp/ files to SoT during EPIC Phase E. Triggers at EPIC completion or explicit `/ghm-harvest` invocation. Outputs new SoT entries and archive manifest.
Open skill - /ghm-id-register
Validates and registers new SoT IDs with cross-reference integrity. Triggers when creating BR-XXX, UJ-XXX, API-XXX, or CFD-XXX entries. Outputs formatted SoT entry with validated cross-references.
Open skill - /ghm-self-install
Install the PRD-Driven Context Engineering methodology into a fresh OR existing repository — the subscription-native alternative to forking the whole repo. Runs an interactive wizard that seeds the framework (.claude/ hooks, skills, agents, rules, scripts) without clobbering
Open skill - /ghm-sot-builder
Creates new Source of Truth (SoT) files when existing templates don't fit your needs. Triggers on requests to create a new SoT file, add a new artifact type, or when user says "I need to track [X] but there's no SoT for it", "create SoT", "new source of truth". Outputs a
Open skill

