/migrate-hook
Migrate existing CLAUDE.md full-injection to the AIWG.md hook file architecture
Claude Code
$ npx -y skills add jmagly/aiwg --skill migrate-hook --agent claude-code
Codex
$ npx skills add jmagly/aiwg --skill migrate-hook -a codex -y
Cursor
$ npx skills add jmagly/aiwg --skill migrate-hook -a cursor -y
Gemini CLI
$ npx skills add jmagly/aiwg --skill migrate-hook -a gemini-cli -y
GitHub Copilot
$ npx skills add jmagly/aiwg --skill migrate-hook -a github-copilot -y
OpenCode
$ npx skills add jmagly/aiwg --skill migrate-hook -a opencode -y
Windsurf
$ npx skills add jmagly/aiwg --skill migrate-hook -a windsurf -y
SKILL.md
migrate-hook.SKILL.mdnamespace: aiwg
name: migrate-hook
platforms: [all]
description: Migrate existing CLAUDE.md full-injection to the AIWG.md hook file architecture
commandHint:
argumentHint: "[--provider <name>] [--all] [--dry-run] [--no-backup] [--force]"
allowedTools: Read, Write, Edit, Bash, Glob
model: haiku
category: hook-management
modelRole: efficiency
modelTier: economy
Migrate 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 | |------|-------------| | `--provider <name>` | Migrate only this provider: `claude`, `warp`, `copilot`, `cursor`, `factory`, `windsurf`, `opencode`, `codex` | | `--all` | Migrate all detected providers (default) | | `--dry-run` | Show exactly what would change without writing any files | | `--no-backup` | Skip creating `.bak` files (use in CI environments) | | `--force` | 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 `$AIWG_ROOT` reference
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 | `CLAUDE.md` | `AIWG.md` | | Warp Terminal | `WARP.md` | `AIWG-warp.md` | | Windsurf | `AGENTS.md` | `AIWG-windsurf.md` | | GitHub Copilot | `.github/copilot-instructions.md` | `AIWG-copilot.md` | | Cursor | `.cursorrules` | `AIWG-cursor.md` | | Factory AI | `AGENTS.md` | `AIWG-factory.md` | | OpenCode | `.opencode/context.md` | `AIWG-opencode.md` |
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:
1. **Read** the full context file 2. **Create backup** (unless `--no-backup`): copy to `{filename}.bak` 3. **Extract** AIWG content block to `{hookfile}` 4. **Rewrite** context file: user content + `@{hookfile}` directive 5. **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.mdDry 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 warpSafety Features
- **Always creates `.bak`** unless `--no-backup`
- **`--dry-run` is safe** — shows exactly what would happen without writing
- **Aborts on ambiguous detection** rather than guessing incorrectly
- **Never modifies user-owned content
Read more
namespace: aiwg name: migrate-hook platforms: [all] description: Migrate existing CLAUDE.md full-injection to the AIWG.md hook file architecture commandHint: argumentHint: "[--provider <name>] [--all] [--dry-run] [--no-backup] [--force]" allowedTools: Read, Write, Edit, Bash, Glob model: haiku category: hook-management modelRole: efficiency modelTier: economy
Migrate 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 | |------|-------------| | `--provider <name>` | Migrate only this provider: `claude`, `warp`, `copilot`, `cursor`, `factory`, `windsurf`, `opencode`, `codex` | | `--all` | Migrate all detected providers (default) | | `--dry-run` | Show exactly what would change without writing any files | | `--no-backup` | Skip creating `.bak` files (use in CI environments) | | `--force` | 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 `$AIWG_ROOT` reference
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 | `CLAUDE.md` | `AIWG.md` | | Warp Terminal | `WARP.md` | `AIWG-warp.md` | | Windsurf | `AGENTS.md` | `AIWG-windsurf.md` | | GitHub Copilot | `.github/copilot-instructions.md` | `AIWG-copilot.md` | | Cursor | `.cursorrules` | `AIWG-cursor.md` | | Factory AI | `AGENTS.md` | `AIWG-factory.md` | | OpenCode | `.opencode/context.md` | `AIWG-opencode.md` |
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:
1. **Read** the full context file 2. **Create backup** (unless `--no-backup`): copy to `{filename}.bak` 3. **Extract** AIWG content block to `{hookfile}` 4. **Rewrite** context file: user content + `@{hookfile}` directive 5. **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.mdDry 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 warpSafety Features
- **Always creates `.bak`** unless `--no-backup`
- **`--dry-run` is safe** — shows exactly what would happen without writing
- **Aborts on ambiguous detection** rather than guessing incorrectly
- **Never modifies user-owned content
Reusable project context and specialist workflows for the AI tools you already use. Plan software, coordinate specialist reviews, prepare campaigns, investigate incidents, organize research, curate media, and maintain operational knowledge.
Other skills on aiwg.
More skills from other plugins.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
ask-matt
Ask which skill or flow fits your situation. A router over the skills in this repo.
Questions about migrate-hook.
- Which coding agents can use migrate-hook?
- migrate-hook installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

