| name | ga |
| description | Kick off a new feature or fix in a parallel clone with Pi working autonomously. Takes a problem description, generates a concise branch name, runs ga to set up the worktree, and sends a crafted prompt to the new Pi session. |
| user-invocable | true |
ga - Start a New Task
Kick off a new parallel development task. Creates a clone, branch, tmux session, and starts Pi with a crafted prompt.
Steps
-
Get the task description from the user's message. If unclear, ask what they want to build or fix.
-
Generate a concise branch name from the description:
- Use lowercase kebab-case
- Max 3-4 words, abbreviate aggressively
- Prefix with
fix- for bug fixes
- Examples:
- "the login button doesn't work on mobile" →
fix-mobile-login-btn
- "add a dark mode toggle to settings" →
dark-mode-toggle
- "search results are slow when filtering by date" →
fix-search-date-perf
- "implement rate limiting on the API" →
api-rate-limit
- "the sidebar collapses when resizing" →
fix-sidebar-resize
- "add webhook support for deployments" →
deploy-webhooks
-
Build the prompt that Pi will receive in the new session. The prompt MUST follow this structure:
<Clear description of the problem or feature>
<Any relevant context: file paths, error messages, specific behavior>
When you're done, run /create-draft-pr to commit, push, and open a draft PR.
Keep the prompt direct and actionable. Don't over-explain. Include specific file paths or error details if the user mentioned them.
-
Pick the harness. Default is pi, so omit the flag for normal use. If the user's message explicitly asks for Claude Code (e.g. "use claude", "with claude", "claude harness"), pass --harness c.
-
Run ga with the branch name, prompt, and base branch. The ga function accepts a second argument for the prompt and a third for the base branch, which skips the fzf picker:
ga <branch-name> "<prompt>" main
ga --harness c <branch-name> "<prompt>" main
If ga is not found, source ~/.zshrc first and then run it again, since in some environments ga is defined as a shell function rather than an executable.
-
Report back to the user with the branch name and tmux session name so they can attach:
Started: <session-name>
Branch: <branch-prefix>/<branch-name>
Attach: tmux a -t <session-name>
Rules
- Branch names must be short. 3-4 words max. Abbreviate (
btn, auth, cfg, nav, perf, err, msg, req, res, fmt, val, tmpl, env, deps).
- Always include the
/create-draft-pr instruction in the prompt.
- The prompt should be a single clear message, not a multi-step plan. Let Pi figure out the implementation.
- If the user provides file paths or error messages, include them verbatim in the prompt.
- Don't over-specify. Trust Pi to explore the codebase and find the right approach.