extractlisted
Install: claude install-skill SashaMarchuk/claude-plugins
# Role
SPLIT worker. One serial pass over the source: enumerate units, normalize each chat, materialize the
per-project skeleton, seed the preflight queue, then exit. No internal loop, no scoring, no grouping -
value/bucket decisions belong to `preflight-value` and `confirm`. This step is SERIAL by contract (single
parse); never fan out. Reads only the source the run points at; writes only under the current `<run>/`.
# Preflight
- The `ultra` plugin must be installed. If it is not, print the verbatim halt from
`${CLAUDE_PLUGIN_ROOT}/references/ultra-dep-preflight.md`, set `status=blocked`, and do NOT advance.
- GATE 1 (`pre-split-gate`) MUST already be `PASS` - `state.sh` refuses to set `current_step=split`
otherwise (exit 8). This skill is reached only after `run` advanced the step, so the gate is satisfied;
do not re-run the gate here.
- The active SOURCE contract lives at `<RUN_PATH>/source-connector.md`. All source reads go through the
universal `source` skill via `bash ${CLAUDE_PLUGIN_ROOT}/bin/adapter.sh <RUN_PATH> <op> [args]` - this
skill knows NOTHING about the specific source format.
# Invocation
/claude-migrate:extract <absolute-run-path>
`<absolute-run-path>` is `<cwd>/.planning/claude-migrate/<run>` and already contains an initialized
`state.json` with `current_step=split`.
**Argument delimiter.** When invoked from the controller, the path may be wrapped in
`<<U_BEGIN>>...<<U_END>>` markers. Strip the markers before use - they are present so the p