From ai-dev-assistant
Converts a flat task into an epic folder with children, promotes a subtask to a sub_epic, or expands an epic with more children. Runs an 8-step transactional migration that never leaves a half-migrated state.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ai-dev-assistant:epic-migratorinheritThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Thin wrapper around `${CLAUDE_PLUGIN_ROOT}/scripts/migrate-to-epic.sh`. The script implements transactional migration; this skill exists to be callable-via-Skill and to spell out the invocation contract + session-context handoff.
Thin wrapper around ${CLAUDE_PLUGIN_ROOT}/scripts/migrate-to-epic.sh. The script implements transactional migration; this skill exists to be callable-via-Skill and to spell out the invocation contract + session-context handoff.
Input (CLI args to the script):
<project_path> — absolute project path<task_name> — the task folder to operate on. The script picks the operation by where the name resolves and its current kind:
[--dry-run] — prints plan, changes nothing[<child1> <child2> ...] — zero or more child namesOutput:
KEY=VALUE lines — SESSION_CONTEXT_CASE, EPIC_FOR_CTX, NEW_TASK_PATHExit codes:
0 success (live or dry-run)1 abort (preflight/validation/mid-migration error — nothing committed) OR no-op (epic with no children to add)2 usage error (missing required arg)"${CLAUDE_PLUGIN_ROOT}/scripts/migrate-to-epic.sh" "$PROJECT_PATH" "$TASK_NAME" --dry-run child_a child_b
"${CLAUDE_PLUGIN_ROOT}/scripts/migrate-to-epic.sh" "$PROJECT_PATH" "$TASK_NAME" child_a child_b
"${CLAUDE_PLUGIN_ROOT}/scripts/migrate-to-epic.sh" "$PROJECT_PATH" "$TASK_NAME"
Parse the stderr KEY=VALUE lines (SESSION_CONTEXT_CASE, EPIC_FOR_CTX, NEW_TASK_PATH), then write session context by running scripts/session-context-write.sh directly (Bash, zero model context — v4.16.0):
"${CLAUDE_PLUGIN_ROOT}/scripts/session-context-write.sh" \
"$PROJECT_NAME" "$PROJECT_PATH" "$TASK" "$TASK_PATH" "$EPIC_ARG"
Choose the $EPIC_ARG (5th positional) and $TASK_PATH by the case the script emitted:
| Case | When | $EPIC_ARG (5th arg) | $TASK_PATH (4th arg) |
|---|---|---|---|
| A | Migrated task != active task | literal {CURRENT_EPIC_OR_NULL} (preserve) | unchanged |
| B | Migrated task == active task | null (clear) | unchanged |
| C | A move_existing child == active task | $EPIC_FOR_CTX (= $TASK_NAME, set epic) | $NEW_TASK_PATH |
${CLAUDE_PLUGIN_ROOT}/scripts/migrate-to-epic.sh — the script (header comments document invariants, preflight rejections, and architectural rationale)${CLAUDE_PLUGIN_ROOT}/scripts/fm-helpers.sh — shared helperstask-frontmatter-reader skill — wraps fm-read.sh/ai-dev-assistant:migrate-to-epic command — user orchestratorgit mv — task folders are NOT in git (framework memory).npx claudepluginhub camoa/claude-skills --plugin ai-dev-assistantMigrates single-file tasks to folder-based structure, preserving content, creating organized folders, and backing up originals.
Upgrades existing DIA repositories between versions by running migration scripts: rename IDs, flatten analysis, regenerate BACKLOG.md. Idempotent.
Converts plan files into beads epics, TDD-quality tasks, implementation prompts, and worktrees to structure projects before coding begins.