Files
english/.opencode/skills/worktree/SKILL.md
2026-04-12 01:06:31 +07:00

3.4 KiB

name, description, argument-hint, metadata
name description argument-hint metadata
ck:worktree Create isolated git worktree for parallel development in monorepos. [feature-description] OR [project] [feature]
author version
claudekit 1.0.0

Git Worktree

Create an isolated git worktree for parallel feature development.

Workflow

Step 1: Get Repo Info

node .opencode/skills/worktree/scripts/worktree.cjs info --json

Parse JSON response for: repoType, baseBranch, projects, worktreeRoot, worktreeRootSource.

Step 2: Detect Branch Naming Mode

Check for exact branch name first: If caller provides a pre-formed branch name (contains uppercase letters, issue tracker keys like ABC-1234, forward slashes for multi-segment conventions like user/type/feature, or explicitly says "use this exact branch name"): → Use --no-prefix flag — skip Step 3, pass name directly as slug. Examples:

  • "ND-1377-cleanup-docs"--no-prefix → branch ND-1377-cleanup-docs
  • "kai/feat/604-startup-option"--no-prefix → branch kai/feat/604-startup-option

Otherwise, detect prefix from description:

  • "fix", "bug", "error", "issue" → fix
  • "refactor", "restructure", "rewrite" → refactor
  • "docs", "documentation", "readme" → docs
  • "test", "spec", "coverage" → test
  • "chore", "cleanup", "deps" → chore
  • "perf", "performance", "optimize" → perf
  • Default → feat

Step 3: Convert to Slug

Skip if --no-prefix was chosen in Step 2.

"add authentication system" → add-auth "fix login bug" → login-bug Max 50 chars, kebab-case.

Step 4: Handle Monorepo

If repoType === "monorepo" and project not specified, use AskUserQuestion:

AskUserQuestion({
  questions: [{
    header: "Project",
    question: "Which project for the worktree?",
    options: projects.map(p => ({ label: p.name, description: p.path })),
    multiSelect: false
  }]
})

Step 5: Execute

Monorepo:

node .opencode/skills/worktree/scripts/worktree.cjs create "<PROJECT>" "<SLUG>" --prefix <TYPE>

Standalone:

node .opencode/skills/worktree/scripts/worktree.cjs create "<SLUG>" --prefix <TYPE>

Options:

  • --prefix - Branch type: feat|fix|refactor|docs|test|chore|perf
  • --no-prefix - Skip branch prefix and preserve original case and slashes (for Jira keys, multi-segment branches like user/type/feature)
  • --worktree-root <path> - Override default location (only if needed)
  • --json - JSON output
  • --dry-run - Preview

Step 6: Install Dependencies

Based on project context, run in background:

  • bun.lockbun install
  • pnpm-lock.yamlpnpm install
  • yarn.lockyarn install
  • package-lock.jsonnpm install
  • poetry.lockpoetry install
  • requirements.txtpip install -r requirements.txt
  • Cargo.tomlcargo build
  • go.modgo mod download

Commands

Command Usage Description
create create [project] <feature> Create worktree
remove remove <name-or-path> Remove worktree
info info Repo info with worktree location
list list List worktrees

Notes

  • Script auto-detects superproject, monorepo, and standalone repos
  • Default worktree location is smart: superproject > monorepo > sibling
  • Use --worktree-root only to override defaults
  • Env templates (.env*.example) auto-copied with .example suffix removed