--- namespace: aiwg name: hook-regenerate platforms: [all] description: Rebuild AIWG hook files from currently installed framework manifests commandHint: argumentHint: "[--provider ] [--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 ` | 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 ``` ### 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 ... --- 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 ` installs a new framework - After `aiwg remove ` 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)