> 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 product content. Triggers on "install the methodology", "adopt this into my repo", "self-install", "set up PRD lifecycle here", "onboard existing project". Outputs an installed framework + a verification report.
npx skills add https://github.com/mattgierhart/PRD-driven-context-engineering --skill ghm-self-install
Install the methodology into a target repo from the install manifest, the way
Xantham's blueprint installs from markdown: the agent runtime *is* the installer, so
the whole thing runs inside your Claude Code subscription — no API key, no metered
calls, no service to stand up.
> Two paths, one manifest. This skill is the interactive path. install.sh is the
> deterministic CLI path. Both read .claude/install-manifest.yaml, so they can't drift.
> Prefer driving install.sh from this skill; fall back to manual copies only when the
> script isn't reachable.
.claude/install-manifest.yaml — authoritative framework / template_seed /never_touch lists (the keystone; never hardcode file lists).
install.sh — the deterministic installer this skill normally drives.ghm-template-sync Phase "Safety Rules" — never overwriteMEMORY.md, SoT/*, PRD.md, README.md content.
engine, it doesn't author specs).
readiness.py runs).git, python3, awk are present; warn if the target isn't a git repo..claude/) vs brownfield (existing .claude/).Brownfield means *merge, never overwrite product*.
for the wizard turn, zero API.
Ask only what changes the outcome (honor the execution mode's budget):
product (default) · library · infrastructure · research.[standard+]: keep all 4 agents + all skills (default), or trim to a rolesubset. Quick mode skips this and installs everything.
install.sh)Run the deterministic installer so behavior matches the CLI path exactly:
bash install.sh --target <DIR> --profile <PROFILE> # add --dry-run to preview
--dry-run plan first [standard+], then execute.--forceafter the user confirms (mirrors ghm-template-sync "show diff before destructive").
never_touch list.verify-blueprint.sh analog).claude/hooks/*.sh in the target; assert valid JSON on stdout.python scripts/readiness.py run — a non-zero exit on an empty scaffold is theexpected BLOCK gate (no content yet), not a failure. Report the score.
README.md + PRD.md, then "Let's frame the problem".| Pattern | Fix |
|---------|-----|
| Hardcoding the file list in the skill | Read .claude/install-manifest.yaml |
| Overwriting a brownfield repo's PRD.md/SoT | Honor never_touch; seed templates once |
| Treating readiness BLOCK on a fresh scaffold as a bug | It's the gate working — report the score |
| Re-implementing copy logic instead of driving install.sh | One code path = no drift |
Take mattgierhart/ghm-self-install from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.