apply-turbo-handoffs
Audit the turbo skill lessons that /self-improve writes into this repo's .turbo/handoff/ from other projects, apply the ones the…
Execute an approved split plan, shipping each change group separately as its own branch and PR or as sequential commits on the current branch. Use when the user asks to \"split and ship\", \"ship the split plan\", \"create separate PRs\", or \"split changes into branches\".
Claude Code
$ npx -y skills add tobihagemann/turbo --skill split-and-ship --agent claude-code
Codex
$ npx skills add tobihagemann/turbo --skill split-and-ship -a codex -y
Cursor
$ npx skills add tobihagemann/turbo --skill split-and-ship -a cursor -y
Gemini CLI
$ npx skills add tobihagemann/turbo --skill split-and-ship -a gemini-cli -y
GitHub Copilot
$ npx skills add tobihagemann/turbo --skill split-and-ship -a github-copilot -y
OpenCode
$ npx skills add tobihagemann/turbo --skill split-and-ship -a opencode -y
Windsurf
$ npx skills add tobihagemann/turbo --skill split-and-ship -a windsurf -y
name: split-and-ship description: "Ship an approved split plan as one branch and PR per change group, or as sequential commits. Use when the user asks to \"split and ship\" or \"create separate PRs\"."
Ship an approved split plan so each change group becomes its own reviewable unit, either as a separate branch and PR or as a sequential commit on the current branch.
A split plan must exist in the conversation. The plan specifies an ordered list of groups, each with a name, file list, and any dependencies on earlier groups.
At the start, use `TaskCreate` to create a task for each phase:
1. Choose realization path 2. Ship the groups 3. Summarize
Detect the repository state:
Sample the prevailing workflow from recent default-branch history (`git log --first-parent origin/<default-branch> -n 30 --pretty=%s`): judge whether changes mostly land through pull requests (merge-PR commits or `(#N)`-suffixed squash commits) or are committed directly to the default branch.
Output a one-line summary of the detected state as text. Then use `AskUserQuestion` to choose how to ship the groups:
Recommend the option that fits this repo by listing it first and labeling it `(Recommended)`: a PR-based history recommends separate branches and PRs; a direct-commit history recommends committing each group on the current branch.
If the user declines (chooses the free-form "Other" option or asks to abort), leave the changes staged and do not commit.
Take this step only when the user chose separate branches and PRs.
Stash all changes including untracked files (`git stash --include-untracked`) without unstaging first.
Verify `git stash list` shows the saved changes and `git status --short` lists nothing the stash should have taken before proceeding. Entries for a submodule, a nested repository, or files a stashed ignore rule had hidden may remain. When either check fails, stop and report where the changes now are.
Use `TaskCreate` to create a task for each group. Process groups in order.
A group is held when it builds on a group whose PR was handed over for editing and is neither posted nor cancelled yet, or when it builds on a held group. Leave a held group unshipped and continue with the next group.
For each group:
1. **Determine branch**: If the current branch already has an open PR and this group's changes align with the PR's purpose, stay on the current branch. Otherwise, use `AskUserQuestion` to confirm the proposed branch name and create it from the appropriate base:
2. **Restore and stage** this group's files from the stash's staged snapshot (`git checkout 'stash^2' -- <files>` restores and stages in one operation). For files with hunks belonging to different groups, restore the file, use Edit to remove the unwanted hunks, then re-stage it (`git add <file>`): for an independent group, remove every other group's hunks; for a stacked group, remove only later groups' hunks (earlier groups' hunks are already in its base). Before committing a stacked group, check its staged diff against HEAD and restore from HEAD any earlier group's content it would revert. After committing, reset the working tree (`git checkout -- .`) to clean up before the next group. 3. **Commit**: run the `/commit-rules` skill to load commit message rules, then commit the staged changes following them 4. **Push and create or update PR**:
When held groups remain once every other group has shipped, output which groups are held, which handed-over PR each waits on, and that the stash holds their changes. Keep the stash and end the turn.
Once a handed-over PR is posted, take the groups it held through the same four steps in order, branching each from the current tip of the branch it builds on. When that PR is cancelled instead, use `AskUserQuestion` to ask whether to ship the groups it held stacked on its branch, which has no PR, or to leave them unshipped.
1. Drop the stash 2. Check out the last created branch 3. Output a summary table: group name, branch, PR URL, and base branch. For a group whose PR was not posted, print the handed-over body file path in place of the URL.
Then use the TaskList tool and proceed to any remaining task.
Take this step only when the user chose to commit each group. This path stays on the current branch and creates no branches or PRs.
Stash all changes including untracked files (`git stash --include-untracked`) without unstaging first.
Verify `git stash lis
Reusable workflows for planning, building, reviewing, and shipping with Claude Code and Codex.
Audit the turbo skill lessons that /self-improve writes into this repo's .turbo/handoff/ from other projects, apply the ones the…
Apply findings by making the suggested code changes. Applies accepted verdicts, escalates ambiguous findings to the user, and…
Assess project-wide structural technical debt: complexity hotspots, deprecated API usage, duplication clusters, architecture rot,…
Shared changelog conventions and formatting rules referenced by /create-changelog and /update-changelog. Not typically invoked…
Enforce existence, reuse, mirror, and symmetry principles to keep new code minimal and consistent with surrounding code. Use when…
Run autonomous task execution using the codex CLI. Use when the user asks to \"codex exec\", \"run codex exec\", \"execute a task…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.