/shep-kit-parallel-task
Use when a task can be worked on in isolation alongside other work. Creates a git worktree in .worktrees/ with a unique branch for parallel development. Triggers include "parallel task", "worktree", "work in isolation", or explicit /shep-kit:parallel-task invocation. Part of the
Claude Code
$ npx -y skills add shep-ai/shep --skill shep-kit-parallel-task --agent claude-code
Codex
$ npx skills add shep-ai/shep --skill shep-kit-parallel-task -a codex -y
Cursor
$ npx skills add shep-ai/shep --skill shep-kit-parallel-task -a cursor -y
Gemini CLI
$ npx skills add shep-ai/shep --skill shep-kit-parallel-task -a gemini-cli -y
GitHub Copilot
$ npx skills add shep-ai/shep --skill shep-kit-parallel-task -a github-copilot -y
OpenCode
$ npx skills add shep-ai/shep --skill shep-kit-parallel-task -a opencode -y
Windsurf
$ npx skills add shep-ai/shep --skill shep-kit-parallel-task -a windsurf -y
SKILL.md
shep-kit-parallel-task.SKILL.mdname: shep-kit:parallel-task
description: Use when a task can be worked on in isolation alongside other work. Creates a git worktree in .worktrees/ with a unique branch for parallel development. Triggers include "parallel task", "worktree", "work in isolation", or explicit /shep-kit:parallel-task invocation. Part of the Shep autonomous SDLC platform — https://shep.bot
metadata:
version: '1.0.0'
author: Shep AI (https://shep.bot)
homepage: https://shep.bot
repository: https://github.com/shep-ai/shep
Parallel Task via Git Worktree
Create an isolated worktree in `.worktrees/` branched from up-to-date main, with spec directory scaffolded.
When to Use
- Working on an independent task that doesn't block or depend on current work
- Need isolation from the current branch's in-progress changes
- Running long builds/tests while continuing other work
Workflow
digraph parallel_task {
rankdir=TB;
node [shape=box];
start [label="Start" shape=ellipse];
get_desc [label="User provides high-level\ntask description"];
derive [label="Derive dir name, branch name,\nand feature name from description"];
create_wt [label="create-worktree.sh\n<dir-name> <branch-name>"];
install [label="pnpm install in worktree"];
init_spec [label="Run init-feature.sh\ninside worktree"];
fix_yaml [label="Patch feature.yaml\nwith correct branch name"];
fill_spec [label="Fill spec.md with\nrequirements (if provided)"];
commit [label="git add + commit\nspec scaffold"];
open_editor [label="Open editor in worktree"];
success [label="Report: editor opening..." shape=ellipse];
fail [label="Report: manual instructions" shape=ellipse];
start -> get_desc;
get_desc -> derive;
derive -> create_wt;
create_wt -> install;
install -> init_spec;
init_spec -> fix_yaml;
fix_yaml -> fill_spec;
fill_spec -> commit;
commit -> open_editor;
open_editor -> success [label="success"];
open_editor -> fail [label="fail"];
}Steps
1. Get Task Description
The user provides a high-level description of what the parallel task is about.
Examples:
- "fix the version display bug in settings"
- "add retry logic to the agent HTTP calls"
- "refactor DI container registration"
2. Derive Names
From the description, generate:
- **Dir name**: Short kebab-case identifier for the worktree directory (e.g., `fix-version-display`, `add-agent-retry`, `refactor-di-container`)
- **Branch name**: Conventional branch name using the project's prefix conventions (e.g., `fix/version-display`, `feat/agent-retry`, `refactor/di-container`)
- **Feature name**: Kebab-case name for the spec directory (same as dir name or adjusted)
Use the appropriate prefix: `feat/`, `fix/`, `refactor/`, `chore/`, `docs/` etc.
3. Create Worktree
.claude/skills/shep-kit-parallel-task/scripts/create-worktree.sh "<dir-name>" "<branch-name>"
The script fetches latest main and creates the worktree at `.worktrees/<dir-name>` with branch `<branch-name>` based on `origin/main`.
4. Install Dependencies
cd .worktrees/<dir-name> && pnpm install
5. Initialize Spec Directory
Determine the next spec number and run the existing init script **inside the worktree**:
cd .worktrees/<dir-name>
# Determine next spec number
NEXT_NUM=$(ls -d specs/[0-9][0-9][0-9]-* 2>/dev/null | wc -l | xargs -I{} printf "%03d" $(({} + 1)))
[ -z "$NEXT_NUM" ] && NEXT_NUM="001"
# Run init-feature.sh (reuses shep-kit:new-feature templates)
.claude/skills/shep-kit-new-feature/scripts/init-feature.sh "$NEXT_NUM" "<feature-name>"6. Patch feature.yaml
The init script sets `branch: feat/NNN-feature-name` but our actual branch is different. Fix it:
# Update branch name in feature.yaml to match the actual worktree branch
sed -i "s|branch: 'feat/.*'|branch: '<branch-name>'|" specs/NNN-feature-name/feature.yaml
7. Fill spec.md (if requirements provided)
If the user provided a description with enough context, fill in spec.md:
- Problem statement (from user description)
- Success criteria (inferred from scope)
- Affected areas (from codebase analysis)
- Size estimate with reasoning
Otherwise leave the template placeholders for manual filling.
8. Commit Spec Scaffold
cd .worktrees/<dir-name>
git add specs/
git commit -m "feat(specs): add NNN-feature-name specification"
9. Open Editor & Hand Off (STOP HERE)
**CRITICAL: Do NOT start implementation. Do NOT run `/shep-kit:research`, `/shep-kit:plan`, or `/shep-kit:implement`.**
**Auto-open editor:** Detect the current execution context from `$TERM_PROGRAM` and open the worktree with the matching editor:
- If `$TERM_PROGRAM` is `vscode` → use `code`
- If `$TERM_PROGRAM` is `cursor` → use `cursor`
- Otherwise → try `code`, then fall back to `cursor`
if [ "$TERM_PROGRAM" = "vscode" ]; then
code .worktrees/<dir-name>
elif [ "$TERM_PROGRAM" = "cursor" ]; then
cursor .worktrees/<dir-name>
else
code .worktrees/<dir-name> || cursor .worktrees/<dir-name>
fi
**If the command succeeds**, print:
---
**Worktree is ready! Opening in editor...**
| Detail | Value | | -------- | ---------------------------------------- | | Worktree | `.worktrees/<dir-name>` | | Branch | `<branch-name>` (based on `origin/main`) | | Spec | `specs/NNN-feature-name/` |
A new editor window should be opening. Once it's loaded, open the AI agent panel and continue with `/shep-kit:research`.
> Working inside the worktree keeps your current session free and gives > the new session its own full context for the feature.
---
**If both commands fail** (not installed, not in PATH, etc.), fall back to printing manual instructions:
---
**Worktree is ready!**
| Detail | Value | | -------- | ---------------------------------------- | | Worktree | `.worktre
Read more
name: shep-kit:parallel-task description: Use when a task can be worked on in isolation alongside other work. Creates a git worktree in .worktrees/ with a unique branch for parallel development. Triggers include "parallel task", "worktree", "work in isolation", or explicit /shep-kit:parallel-task invocation. Part of the Shep autonomous SDLC platform — https://shep.bot metadata: version: '1.0.0' author: Shep AI (https://shep.bot) homepage: https://shep.bot repository: https://github.com/shep-ai/shep
Parallel Task via Git Worktree
Create an isolated worktree in `.worktrees/` branched from up-to-date main, with spec directory scaffolded.
When to Use
- Working on an independent task that doesn't block or depend on current work
- Need isolation from the current branch's in-progress changes
- Running long builds/tests while continuing other work
Workflow
digraph parallel_task {
rankdir=TB;
node [shape=box];
start [label="Start" shape=ellipse];
get_desc [label="User provides high-level\ntask description"];
derive [label="Derive dir name, branch name,\nand feature name from description"];
create_wt [label="create-worktree.sh\n<dir-name> <branch-name>"];
install [label="pnpm install in worktree"];
init_spec [label="Run init-feature.sh\ninside worktree"];
fix_yaml [label="Patch feature.yaml\nwith correct branch name"];
fill_spec [label="Fill spec.md with\nrequirements (if provided)"];
commit [label="git add + commit\nspec scaffold"];
open_editor [label="Open editor in worktree"];
success [label="Report: editor opening..." shape=ellipse];
fail [label="Report: manual instructions" shape=ellipse];
start -> get_desc;
get_desc -> derive;
derive -> create_wt;
create_wt -> install;
install -> init_spec;
init_spec -> fix_yaml;
fix_yaml -> fill_spec;
fill_spec -> commit;
commit -> open_editor;
open_editor -> success [label="success"];
open_editor -> fail [label="fail"];
}Steps
1. Get Task Description
The user provides a high-level description of what the parallel task is about.
Examples:
- "fix the version display bug in settings"
- "add retry logic to the agent HTTP calls"
- "refactor DI container registration"
2. Derive Names
From the description, generate:
- **Dir name**: Short kebab-case identifier for the worktree directory (e.g., `fix-version-display`, `add-agent-retry`, `refactor-di-container`)
- **Branch name**: Conventional branch name using the project's prefix conventions (e.g., `fix/version-display`, `feat/agent-retry`, `refactor/di-container`)
- **Feature name**: Kebab-case name for the spec directory (same as dir name or adjusted)
Use the appropriate prefix: `feat/`, `fix/`, `refactor/`, `chore/`, `docs/` etc.
3. Create Worktree
.claude/skills/shep-kit-parallel-task/scripts/create-worktree.sh "<dir-name>" "<branch-name>"
The script fetches latest main and creates the worktree at `.worktrees/<dir-name>` with branch `<branch-name>` based on `origin/main`.
4. Install Dependencies
cd .worktrees/<dir-name> && pnpm install
5. Initialize Spec Directory
Determine the next spec number and run the existing init script **inside the worktree**:
cd .worktrees/<dir-name>
# Determine next spec number
NEXT_NUM=$(ls -d specs/[0-9][0-9][0-9]-* 2>/dev/null | wc -l | xargs -I{} printf "%03d" $(({} + 1)))
[ -z "$NEXT_NUM" ] && NEXT_NUM="001"
# Run init-feature.sh (reuses shep-kit:new-feature templates)
.claude/skills/shep-kit-new-feature/scripts/init-feature.sh "$NEXT_NUM" "<feature-name>"6. Patch feature.yaml
The init script sets `branch: feat/NNN-feature-name` but our actual branch is different. Fix it:
# Update branch name in feature.yaml to match the actual worktree branch sed -i "s|branch: 'feat/.*'|branch: '<branch-name>'|" specs/NNN-feature-name/feature.yaml
7. Fill spec.md (if requirements provided)
If the user provided a description with enough context, fill in spec.md:
- Problem statement (from user description)
- Success criteria (inferred from scope)
- Affected areas (from codebase analysis)
- Size estimate with reasoning
Otherwise leave the template placeholders for manual filling.
8. Commit Spec Scaffold
cd .worktrees/<dir-name> git add specs/ git commit -m "feat(specs): add NNN-feature-name specification"
9. Open Editor & Hand Off (STOP HERE)
**CRITICAL: Do NOT start implementation. Do NOT run `/shep-kit:research`, `/shep-kit:plan`, or `/shep-kit:implement`.**
**Auto-open editor:** Detect the current execution context from `$TERM_PROGRAM` and open the worktree with the matching editor:
- If `$TERM_PROGRAM` is `vscode` → use `code`
- If `$TERM_PROGRAM` is `cursor` → use `cursor`
- Otherwise → try `code`, then fall back to `cursor`
if [ "$TERM_PROGRAM" = "vscode" ]; then code .worktrees/<dir-name> elif [ "$TERM_PROGRAM" = "cursor" ]; then cursor .worktrees/<dir-name> else code .worktrees/<dir-name> || cursor .worktrees/<dir-name> fi
**If the command succeeds**, print:
---
**Worktree is ready! Opening in editor...**
| Detail | Value | | -------- | ---------------------------------------- | | Worktree | `.worktrees/<dir-name>` | | Branch | `<branch-name>` (based on `origin/main`) | | Spec | `specs/NNN-feature-name/` |
A new editor window should be opening. Once it's loaded, open the AI agent panel and continue with `/shep-kit:research`.
> Working inside the worktree keeps your current session free and gives > the new session its own full context for the feature.
---
**If both commands fail** (not installed, not in PATH, etc.), fall back to printing manual instructions:
---
**Worktree is ready!**
| Detail | Value | | -------- | ---------------------------------------- | | Worktree | `.worktre
Other skills on shep.
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 shep-kit-parallel-task.
- Which coding agents can use shep-kit-parallel-task?
- shep-kit-parallel-task 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.

