Agent Skills: worktree

[Utilities] Create isolated git worktree for parallel development

UncategorizedID: duc01226/easyplatform/worktree

Install this agent skill to your local

pnpm dlx add-skill https://github.com/duc01226/EasyPlatform/tree/HEAD/.claude/skills/worktree

Skill Files

Browse the full folder contents for worktree.

Download Skill

Loading file tree…

.claude/skills/worktree/SKILL.md

Skill Metadata

Name
worktree
Description
'[Git] Create isolated git worktree for parallel development'

[IMPORTANT] Use TaskCreate to break ALL work into small tasks BEFORE starting — including tasks for each file read. This prevents context loss from long files. For simple tasks, AI MUST ATTENTION ask user whether to skip.

Quick Summary

Goal: Create isolated git worktrees for parallel feature development with automatic branch naming and env file setup.

Workflow:

  1. Get Repo Info — Run worktree.cjs info to detect repo type, base branch, env files
  2. Detect Prefix — Infer branch prefix from keywords (fix, feat, refactor, docs, etc.)
  3. Convert Slug — Transform description to kebab-case slug (max 50 chars)
  4. Execute — Run worktree.cjs create with project, slug, prefix, and env files

Key Rules:

  • For monorepos, ask user which project if not specified
  • Always ask which env files to copy via AskUserQuestion
  • Handle error codes (BRANCH_CHECKED_OUT, WORKTREE_EXISTS, etc.) gracefully

Be skeptical. Apply critical thinking, sequential thinking. Every claim needs traced proof, confidence percentages (Idea should be more than 80%).

Create an isolated git worktree for parallel feature development.

Workflow

Step 1: Get Repository Info

node .claude/scripts/worktree.cjs info --json

Response fields:

  • repoType: "monorepo" or "standalone"
  • baseBranch: detected base branch
  • projects: array of {name, path} for monorepo
  • envFiles: array of .env* files found
  • dirtyState: boolean

Step 2: Gather Info via AskUserQuestion

Detect branch prefix from user's description:

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

For MONOREPO: Use AskUserQuestion if project not specified:

// If user said "/worktree add auth" but multiple projects exist
AskUserQuestion({
    questions: [
        {
            header: 'Project',
            question: 'Which project should the worktree be created for?',
            options: projects.map(p => ({ label: p.name, description: p.path })),
            multiSelect: false
        }
    ]
});

For env files: Always ask which to copy:

AskUserQuestion({
    questions: [
        {
            header: 'Env files',
            question: 'Which environment files should be copied to the worktree?',
            options: envFiles.map(f => ({ label: f, description: 'Copy to worktree' })),
            multiSelect: true
        }
    ]
});

Step 3: Convert Description to Slug

  • "add authentication system" → add-auth
  • "fix login bug" → login-bug
  • Remove filler words, kebab-case, max 50 chars

Step 4: Execute Command

Monorepo:

node .claude/scripts/worktree.cjs create "<PROJECT>" "<SLUG>" --prefix <TYPE> --env "<FILES>"

Standalone:

node .claude/scripts/worktree.cjs create "<SLUG>" --prefix <TYPE> --env "<FILES>"

Options:

  • --prefix - Branch type: feat|fix|refactor|docs|test|chore|perf
  • --env - Comma-separated .env files to copy
  • --json - Output JSON for parsing
  • --dry-run - Preview without executing

Commands

| Command | Usage | Description | | -------- | ---------------------------- | -------------------------- | | create | create [project] <feature> | Create new worktree | | remove | remove <name-or-path> | Remove worktree and branch | | info | info | Get repo info | | list | list | List existing worktrees |

Error Codes

| Code | Meaning | Action | | -------------------------- | ------------------------------------ | ------------------------- | | MISSING_ARGS | Missing project/feature for monorepo | Ask for both | | MISSING_FEATURE | No feature name (standalone) | Ask for feature | | PROJECT_NOT_FOUND | Project not in .gitmodules | Show available projects | | MULTIPLE_PROJECTS_MATCH | Ambiguous project name | Use AskUserQuestion | | MULTIPLE_WORKTREES_MATCH | Ambiguous worktree for remove | Use AskUserQuestion | | BRANCH_CHECKED_OUT | Branch in use elsewhere | Suggest different name | | WORKTREE_EXISTS | Path already exists | Suggest use or remove | | WORKTREE_CREATE_FAILED | Git command failed | Show git error | | WORKTREE_REMOVE_FAILED | Cannot remove worktree | Check uncommitted changes |

Example Session

User: /worktree fix the login validation bug

Claude: [Runs: node .claude/scripts/worktree.cjs info --json]
        [Detects: standalone repo, envFiles: [".env.example"]]
        [Detects prefix from "fix" keyword: fix]
        [Converts slug: "login-validation-bug"]

Claude: [Uses AskUserQuestion for env files]
        "Which environment files should be copied?"
        Options: .env.example

User: .env.example

Claude: [Runs: node .claude/scripts/worktree.cjs create "login-validation-bug" --prefix fix --env ".env.example"]

Output: Worktree created at ../worktrees/myrepo-login-validation-bug
        Branch: fix/login-validation-bug

Closing Reminders

  • IMPORTANT MUST ATTENTION break work into small todo tasks using TaskCreate BEFORE starting
  • IMPORTANT MUST ATTENTION search codebase for 3+ similar patterns before creating new code
  • IMPORTANT MUST ATTENTION cite file:line evidence for every claim (confidence >80% to act)
  • IMPORTANT MUST ATTENTION add a final review todo task to verify work quality