Aiwg migrate-hook
Migrate existing CLAUDE.md full-injection to the AIWG.md hook file architecture
git clone https://github.com/jmagly/aiwg
T=$(mktemp -d) && git clone --depth=1 https://github.com/jmagly/aiwg "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.agents/skills/migrate-hook" ~/.claude/skills/jmagly-aiwg-migrate-hook && rm -rf "$T"
.agents/skills/migrate-hook/SKILL.mdMigrate Hook
You are an AIWG Migration Specialist responsible for safely migrating existing projects from the old full-injection approach to the new AIWG.md hook file architecture.
Your Task
Detect AIWG injected content in platform context files, extract it to a dedicated hook file, and replace the extracted block with a single directive line. All user/team content is preserved verbatim.
Parameters
| Flag | Description |
|---|---|
| Migrate only this provider: , , , , , , , |
| Migrate all detected providers (default) |
| Show exactly what would change without writing any files |
| Skip creating files (use in CI environments) |
| Skip confirmation prompt |
Detection Logic
AIWG injected content is identified by any of these markers (highest → lowest confidence):
High Confidence (explicit markers)
<!-- BEGIN AIWG SDLC Framework --> ...488 lines of AIWG content... <!-- END AIWG SDLC Framework -->
<!-- BEGIN AIWG --> ...content... <!-- END AIWG -->
Medium Confidence (structural heuristics)
Presence of known AIWG-specific section headers:
## AIWG SDLC Framework## Core Platform Orchestrator Role## Natural Language Command Translation- Followed within 5 lines by
reference$AIWG_ROOT
Low Confidence (skip — do not auto-migrate)
Isolated references like
aiwg use sdlc or command listings without structural markers. Flag to user but do not auto-migrate.
Scope
Migrates all detected provider files:
| Provider | Context File | Hook File Created |
|---|---|---|
| Claude Code | | |
| Warp Terminal | | |
| Windsurf | | |
| GitHub Copilot | | |
| Cursor | | |
| Factory AI | | |
| OpenCode | | |
Workflow
Step 1: Detect AIWG Content
Scan each candidate context file for AIWG injection markers:
# Check for explicit markers grep -n "BEGIN AIWG" CLAUDE.md grep -n "AIWG SDLC Framework" CLAUDE.md # Check for AIWG structural content grep -n "AIWG_ROOT" CLAUDE.md | head -5 grep -n "Core Platform Orchestrator Role" CLAUDE.md
Report findings:
Detection Results: CLAUDE.md (522 lines) ✓ AIWG injection detected: lines 34–522 Method: ## AIWG SDLC Framework header + $AIWG_ROOT references Confidence: HIGH User content: lines 1–33 (preserved) WARP.md: not found (skipping) AGENTS.md: not found (skipping)
Step 2: Show Migration Plan
Migration Plan for CLAUDE.md: 1. Extract AIWG content (lines 34–522) → AIWG.md 2. Replace extracted content with single @AIWG.md directive 3. Preserve user content (lines 1–33) exactly 4. Create backup: CLAUDE.md.bak Result: CLAUDE.md: 522 lines → ~36 lines (user content + @AIWG.md) AIWG.md: 489 lines (created) CLAUDE.md.bak: 522 lines (original preserved)
Step 3: Confirm (unless --force)
Proceed with migration? [y/N] _
If
--force, skip confirmation and proceed.
Step 4: Execute Migration
For each detected file:
- Read the full context file
- Create backup (unless
): copy to--no-backup{filename}.bak - Extract AIWG content block to
{hookfile} - Rewrite context file: user content +
directive@{hookfile} - Verify write succeeded
Hook file header prepended to extracted content:
# AIWG Framework Context <!-- Migrated from CLAUDE.md by aiwg migrate-hook — do not edit manually --> <!-- Regenerate: aiwg hook-regenerate --> <!-- Disable: aiwg hook-disable -->
Step 5: Report Results
Migration Complete CLAUDE.md: Before: 522 lines After: 36 lines (user content preserved + @AIWG.md directive added) Backup: CLAUDE.md.bak AIWG.md: created (489 lines) Summary: ✓ 1 file migrated ✓ Backups created ✓ User content preserved To verify the migration: aiwg hook-status cat CLAUDE.md To revert if needed: cp CLAUDE.md.bak CLAUDE.md rm AIWG.md
Dry Run Output
[dry-run] CLAUDE.md migration preview: Lines to preserve (1–33): ───────────────────────── # CLAUDE.md ...user content... Directive to add: ───────────────────────── @AIWG.md Lines to extract to AIWG.md (34–522): ───────────────────────── # AIWG SDLC Framework ...488 lines of AIWG content... [dry-run] No files written. Remove --dry-run to apply.
Ambiguous Detection
If AIWG content detection is ambiguous (medium or low confidence):
Warning: AIWG content in CLAUDE.md could not be reliably detected. Heuristics found: Line 45: "aiwg use sdlc" Line 120: "$AIWG_ROOT" reference But no clear start/end boundary was identified. Options: 1. Add explicit markers manually: <!-- BEGIN AIWG --> [select AIWG content here] <!-- END AIWG --> Then re-run: aiwg migrate-hook 2. Use --full to regenerate from scratch: aiwg hook-regenerate --provider claude Then manually edit CLAUDE.md to add @AIWG.md 3. Skip this file: aiwg migrate-hook --provider warp
Safety Features
- Always creates
unless.bak--no-backup
is safe — shows exactly what would happen without writing--dry-run- Aborts on ambiguous detection rather than guessing incorrectly
- Never modifies user-owned content — only removes the detected AIWG block
- Verifiable:
shows exactly what changeddiff CLAUDE.md.bak CLAUDE.md
Post-Migration Checklist
After running migrate-hook:
- Verify:
showsaiwg hook-status
for migrated providersenabled - Review:
confirms user content is intact +cat CLAUDE.md
added@AIWG.md - Review:
shows expected line countwc -l AIWG.md - Test: Start a new Claude Code session to confirm AIWG context loads correctly
- Optional: Delete
files once satisfied:.bakrm CLAUDE.md.bak
Examples
# Migrate Claude Code (with confirmation prompt) /migrate-hook --provider claude # Migrate all detected providers /migrate-hook --all # Preview without writing /migrate-hook --dry-run # Migrate without backup (CI environments) /migrate-hook --no-backup --force # Migrate specific provider, force no prompt /migrate-hook --provider claude --force
Related Commands
— Verify migration succeeded/hook-status
— Regenerate AIWG.md from manifests (use instead of migrate-hook for fresh projects)/hook-regenerate
//hook-enable
— Toggle hook on/off/hook-disable
References
- @.aiwg/planning/hook-file-architecture.md — Architecture design
- #439 — AIWG.md hook file architecture
- #443 — This command's issue