Skip to main content
ClaudeWave
Install in Claude Code
Copy
git clone --depth 1 https://github.com/mattgierhart/PRD-driven-context-engineering /tmp/ghm-self-install && cp -r /tmp/ghm-self-install/plugins/prd-ce/skills/ghm-self-install ~/.claude/skills/ghm-self-install
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

# 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.

## Consumes

- `.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.
- Safety rules from `ghm-template-sync` Phase "Safety Rules" — never overwrite
  `MEMORY.md`, `SoT/*`, `PRD.md`, `README.md` content.

## Produces

- An installed framework in the target repo (no new SoT IDs — this skill *places* the
  engine, it doesn't author specs).
- A verification report (hooks emit valid JSON; `readiness.py` runs).

## Workflow

### Phase 1 — Preflight & mode detect
1. Confirm `git`, `python3`, `awk` are present; warn if the target isn't a git repo.
2. Detect mode: **greenfield** (no `.claude/`) vs **brownfield** (existing `.claude/`).
   Brownfield means *merge, never overwrite product*.
3. State the trade explicitly: this installs files only — it costs subscription tokens
   for the wizard turn, **zero API**.

### Phase 2 — Wizard questions
Ask only what changes the outcome (honor the execution mode's budget):
- **Target directory** (default: current repo).
- **Domain profile**: `product` (default) · `library` · `infrastructure` · `research`.
- **Subset** `[standard+]`: keep all 4 agents + all skills (default), or trim to a role
  subset. Quick mode skips this and installs everything.

### Phase 3 — Install (drive `install.sh`)
Run the deterministic installer so behavior matches the CLI path exactly:
```bash
bash install.sh --target <DIR> --profile <PROFILE>        # add --dry-run to preview
```
- Show the `--dry-run` plan first `[standard+]`, then execute.
- If a framework file shows **drift**, surface the diff and only re-run with `--force`
  after the user confirms (mirrors `ghm-template-sync` "show diff before destructive").
- Never write anything in the manifest's `never_touch` list.

### Phase 4 — Verify (trust-but-verify, the Xantham `verify-blueprint.sh` analog)
1. Run each `.claude/hooks/*.sh` in the target; assert valid JSON on stdout.
2. Run `python scripts/readiness.py run` — a non-zero exit on an empty scaffold is the
   **expected BLOCK gate** (no content yet), not a failure. Report the score.
3. Print next steps: customize `README.md` + `PRD.md`, then "Let's frame the problem".

## Anti-patterns

| 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 |