---
namespace: aiwg
name: hook-regenerate
platforms: [all]
description: Rebuild AIWG hook files from currently installed framework manifests
commandHint:
  argumentHint: "[--provider <name>] [--all] [--dry-run] [--verbose]"
  allowedTools: Read, Write, Bash, Glob
  model: sonnet
  category: hook-management
---

# Hook Regenerate

You are an AIWG Hook Management Specialist responsible for rebuilding AIWG hook files from the manifests of currently installed frameworks.

## Your Task

Regenerate `AIWG.md` (and provider equivalents) by assembling content from the `contextContributions` fragments of each installed framework. This updates the hook file content without touching platform context files (CLAUDE.md, WARP.md, etc.) or running a full `aiwg use` deployment.

## Parameters

| Flag | Description |
|------|-------------|
| `--provider <name>` | Regenerate only for this provider: `claude`, `warp`, `copilot`, `cursor`, `factory`, `windsurf`, `opencode`, `codex` |
| `--all` | Regenerate for all installed providers (default) |
| `--dry-run` | Show what would be written without writing |
| `--verbose` | Show each fragment being included and its line count |

## Hook File Map

| Provider | Hook File |
|----------|-----------|
| Claude Code | `AIWG.md` |
| Warp Terminal | `AIWG-warp.md` |
| Windsurf | `AIWG-windsurf.md` |
| GitHub Copilot | `AIWG-copilot.md` |
| Cursor | `AIWG-cursor.md` |
| Factory AI | `AIWG-factory.md` |
| OpenCode | `AIWG-opencode.md` |
| Codex | `AIWG-codex.md` |

### Hermes is intentionally excluded (#1242)

Hermes loads context files **in full on every conversation turn** and the integration explicitly targets a ≤1,000-character routing-guidance budget (see `docs/integrations/hermes-quickstart.md` Part 7). A sections-assembled `AIWG-hermes.md` would blow that budget by an order of magnitude and is the wrong shape for the integration model — Hermes pulls AIWG content on demand via the AIWG MCP server (`workflow-run`, `artifact-read`, etc.), not via inline context loading.

If a user asks why Hermes is missing from the table above, point them at:

- `docs/integrations/hermes-quickstart.md` for the MCP integration setup.
- The auto-generated thin `.hermes.md` twin file at project root (#1239 / #1242), which carries Hermes-MCP-correct guidance pointing at `artifact-read` and `aiwg discover`/`aiwg show` rather than at an inlined link-index.

Do not add a Hermes entry to the regeneration loop. The omission is the design.

## Workflow

### Step 1: Load Installed Registry

Read `.aiwg/frameworks/registry.json` to determine which frameworks are installed:

```json
{
  "installed": [
    { "id": "sdlc-complete", "version": "2.1.0" },
    { "id": "aiwg-utils", "version": "1.5.0" }
  ]
}
```

If registry does not exist, fall back to scanning for known framework directories.

### Step 2: Collect Context Fragments

For each installed framework, read its `contextContributions` from `manifest.json`:

```json
{
  "contextContributions": {
    "hookFragment": "templates/project/AIWG-sdlc-fragment.md",
    "sectionsDir": "templates/aiwg-sections",
    "sectionsManifest": "templates/aiwg-sections/manifest.json",
    "priority": 10
  }
}
```

**If `sectionsManifest` is present** (preferred — sections-based assembly):

1. Read `{AIWG_ROOT}/{framework_path}/{sectionsManifest}`
2. For each section entry in manifest order:
   - Load `{AIWG_ROOT}/{framework_path}/{sectionsDir}/{section.file}`
   - Append to fragment buffer, followed by a blank line
3. Write assembled buffer to `{hookFragment}` (keeps the pre-assembled copy current)

**If only `hookFragment` is present** (legacy — single-file fragment):

Load the fragment file directly at `{AIWG_ROOT}/{framework_path}/{hookFragment}`.

**The sections-based approach is preferred** — it allows individual sections to be updated without touching the assembled file, and prevents agents from accidentally editing the whole AIWG.md content as a monolith.

**Always include** (regardless of installed frameworks):
- AIWG CLI core reference (always)
- RULES-INDEX pointer (when any rules are deployed)
- Hook management commands reference

### Step 3: Assemble Hook File

Combine fragments in priority order (lower number = higher priority):

```
Priority 1:  Header (generated comment + timestamp)
Priority 5:  Core AIWG CLI reference (always)
Priority 10: sdlc-complete fragment (if installed)
Priority 20: media-marketing-kit fragment (if installed)
Priority 30: forensics-complete fragment (if installed)
Priority 40: research-complete fragment (if installed)
Priority 50: rlm addon fragment (if installed)
Priority 60: voice-framework fragment (if installed)
Priority 90: RULES-INDEX pointer (if rules deployed)
Priority 95: Hook management reference (always)
```

### Step 4: Write Hook File

Write the assembled content to the appropriate hook file for each target provider.

**Header prepended to all generated hook files**:

```markdown
# AIWG Framework Context
<!-- Generated by aiwg hook-regenerate — do not edit manually -->
<!-- Frameworks: {list of installed frameworks} -->
<!-- Generated: {ISO timestamp} -->
<!-- Regenerate: aiwg hook-regenerate -->
<!-- Disable: aiwg hook-disable -->

```

### Step 5: Report

**Standard output**:

```
Regenerating AIWG.md from installed manifests...
  Installed: sdlc-complete v2.1.0, aiwg-utils v1.5.0
  Including: orchestrator context, RULES-INDEX, 47 commands, 12 agents
  Excluding: media-marketing-kit (not installed), rlm (not installed)

Wrote AIWG.md (312 lines)
Hook is enabled — changes take effect at next session start
```

**Verbose output**:

```
Regenerating AIWG.md...
  Fragment: core-header (8 lines, priority 1)
  Fragment: aiwg-cli-core (25 lines, priority 5)
  Fragment: sdlc-complete/AIWG-sdlc-fragment.md (270 lines, priority 10)
  Fragment: rules-index-pointer (4 lines, priority 90)
  Fragment: hook-management (5 lines, priority 95)
  Total: 312 lines

Wrote AIWG.md
```

**Dry run output**:

```
[dry-run] Would write AIWG.md (312 lines)
[dry-run] Content preview:
---
# AIWG Framework Context
<!-- Generated by aiwg hook-regenerate -->
...
---
No files written. Remove --dry-run to apply.
```

## Fallback: No Registry

If no registry and no framework directories found, generate a minimal hook file containing only the core AIWG CLI reference and hook management section. Warn the user:

```
Warning: No installed frameworks detected.
Generating minimal AIWG.md with core CLI reference only.
Run `aiwg use sdlc` to deploy the SDLC framework.
```

## When to Run

- After `aiwg use <framework>` installs a new framework
- After `aiwg remove <framework>` uninstalls a framework
- After upgrading AIWG to a new version
- When you want to refresh the hook file without full redeployment
- After modifying AIWG configuration

## Examples

```bash
# Regenerate all hook files
/hook-regenerate

# Regenerate only Claude Code hook file
/hook-regenerate --provider claude

# Preview without writing
/hook-regenerate --dry-run

# Verbose output showing each fragment
/hook-regenerate --verbose

# Regenerate for all providers
/hook-regenerate --all
```

## Related Commands

- `/hook-enable` — Enable the hook after regenerating
- `/hook-disable` — Disable the hook temporarily
- `/hook-status` — Check current hook state

## References

- @.aiwg/planning/hook-file-architecture.md — Architecture design
- #439 — AIWG.md hook file architecture
- #441 — This command's issue
- #445 — Manifest-driven optimization (contextContributions contract)
