ce-worktree
everyinc/compound-engineering-plugin
Configura árboles de trabajo de git aislados. Utilízalo al iniciar un trabajo aislado o cuando ce-work/ce-code-review ofrezca una opción de árbol de trabajo; detecta primero si ya existe un aislamiento.
...Expandir todoAcerca de ce-worktree
El aislamiento de worktree gestiona la configuración de worktrees de git aislados para que el trabajo pueda continuar sin perturbar la comprobación principal del usuario. Dado que la mayoría de los entornos de codificación ya crean un worktree al inicio de la sesión, la función principal de esta habilidad es detectar un aislamiento existente antes de crear cualquier cosa redundante. Sigue un orden estricto de operaciones: detectar un aislamiento existente, preferir una herramienta de worktree nativa y, si ninguna de las anteriores es aplicable, recurrir únicamente a git estándar.
La detección funciona comparando el directorio git absoluto resuelto con el directorio git común absoluto resuelto. Dado que git mezcla formas de rutas absolutas y relativas dependiendo del directorio actual, la habilidad resuelve primero cada una a una ruta absoluta en lugar de realizar una comparación de cadenas cruda, lo que de otro modo produciría un resultado falso de "ya aislado". Cuando las dos rutas difieren, distingue un worktree vinculado de un submódulo mediante la comprobación del árbol de trabajo del superproyecto y trabaja in situ cuando ya se encuentra dentro de un worktree aislado. Cuando existe un primitivo de worktree nativo (como una herramienta EnterWorktree, un comando /worktree o una bandera --worktree), lo utiliza y termina, porque la adición de un worktree de git realizada a espaldas del entorno crea un estado fantasma que el entorno no puede ver ni limpiar.
El recurso a git se ejecuta desde la raíz del repositorio, elige un nombre de rama significativo derivado de la descripción del trabajo, asegura que .worktrees/ esté ignorado por git (comprobándolo con una barra final para que se respeten las reglas solo de directorio), realiza una recuperación de la rama base no fatal y del mejor esfuerzo, crea el worktree bajo .worktrees/
Preguntas frecuentes
¿Por qué la habilidad comprueba la existencia de un aislamiento antes de crear un worktree?
La mayoría de los entornos de codificación ya crean un worktree de forma predeterminada al inicio de la sesión, por lo que el caso común es que el aislamiento ya exista. Crear otro worktree desde dentro de uno lleva a la rama incorrecta y es invisible para el entorno que creó el actual.
¿Cómo evita un resultado falso de "ya aislado" durante la detección?
Resuelve tanto el directorio git como el directorio git común a rutas absolutas primero y los compara, en lugar de realizar una comparación de cadenas cruda. Git devuelve formas absolutas y relativas mezcladas dependiendo del directorio actual, lo que de otro modo produciría un falso positivo.
¿Cuándo se debe utilizar la herramienta de worktree nativa en lugar de git estándar?
Siempre que el entorno proporcione un primitivo nativo, como una herramienta EnterWorktree/WorktreeCreate, un comando /worktree o una bandera --worktree, la habilidad la utiliza y termina. Las herramientas nativas colocan, rastrean y limpian el worktree para que el entorno pueda gestionarlo; la adición de un worktree de git realizada a espaldas del entorno crea un estado fantasma que el entorno no puede ver.
¿Qué sucede si git worktree add falla con un error de permiso o de sandbox?
El fallo requiere una decisión del usuario bloqueante antes de tocar la comprobación actual. La habilidad lo informa y pregunta a través de la herramienta de preguntas de la plataforma (por ejemplo, AskUserQuestion en Claude Code), ofreciendo opciones como trabajar en la comprobación actual o detenerse para resolver el problema, y solo continúa en la comprobación principal con una confirmación explícita.
¿Cómo evita la habilidad que se confirmen los contenidos del worktree?
Antes de crear cualquier cosa, verifica que .worktrees/ esté ignorado por git ejecutando git check-ignore con una barra final, de modo que se respete una regla existente solo de directorio incluso antes de que exista el directorio, y añade una línea .worktrees/ a .gitignore si es necesario.
Ensure the current work happens in an isolated workspace, without disturbing the user's main checkout. Most coding harnesses now create a worktree by default at session start, so the common case is that isolation already exists.
Done when: the caller is working in an isolated tree — existing or newly created — and its path and branch have been reported, or a blocker has been reported instead.
Order of operations: detect existing isolation -> prefer a native worktree tool -> fall back to plain git. Never create a worktree the harness cannot see.
Two modes, set by the caller's need:
- New work (default). No ref named — create a fresh branch from a base (trunk). This is what
ce-workandce-code-reviewuse when the user picks the worktree option. - Isolate an existing ref. The caller names a PR head, branch, or commit — attach the worktree to that ref instead of creating a new branch. A branch can be checked out in only one worktree at a time. If the named ref is already checked out anywhere (most commonly as the primary checkout's current branch), do not create a second worktree — report that it is already checked out at
<path>and let the caller act (work there in place; or, only if a clean separate tree is essential, create a detached worktree at the same commit).
Step 0: Detect existing isolation
Compare the resolved absolute git dir against the resolved absolute common git dir. Git mixes absolute and relative forms depending on the current directory (from a subdirectory of a normal checkout, --git-dir comes back absolute while --git-common-dir may be relative), so a raw string compare yields a false "already isolated":
git rev-parse --absolute-git-dir # absolute git dir for this worktree(cd "$(git rev-parse --git-common-dir)" && pwd -P) # absolute shared (common) git dir
Equal -> normal checkout; continue to Step 1.
Different -> a linked worktree or a submodule. Distinguish with git rev-parse --show-superproject-working-tree:
- Non-empty -> submodule; treat it as a normal checkout and continue to Step 1.
- Empty -> already isolated. Report the worktree path (
git rev-parse --show-toplevel) and current branch, then work in place — a worktree-from-worktree lands in the wrong tree and is invisible to the harness that made the current one. In isolate-an-existing-ref mode, check that ref out here (unless it is already current) rather than nesting a worktree.
Step 1: Prefer the harness's native worktree tool
If the harness provides a native worktree primitive — for example an EnterWorktree / WorktreeCreate tool, a /worktree command, or a --worktree flag — use it and stop. Native tools place, track, and clean up the worktree so the harness can manage it. A behind-the-back git worktree add creates phantom state the harness cannot see, navigate to, or clean up.
Step 2: Git fallback
Only when there is no native tool and Step 0 found no existing isolation.
- Run from the repo root:
cd "$(git rev-parse --show-toplevel)". The paths below are repo-root-relative, but the skill runs from the user's current directory — without this,.worktrees/<branch>and the.gitignoreedit land in a subdirectory (e.g.src/.worktrees/...). - Choose a meaningful branch name from the work description (e.g.
feat/login,fix/email-validation) — never an opaque auto-generated one. Base: origin's default branch, elsemain. - Ensure
.worktrees/is gitignored before creating anything:git check-ignore -q .worktrees/— with the trailing slash, so an existing directory-only.worktrees/rule is honored even before the directory exists (without the slash the probe misses it and dirties a correctly-configured repo). Not ignored -> add a.worktrees/line to.gitignore. - Refresh the base with
git fetch origin <from-branch>. This is non-fatal — nooriginremote, a differently-named remote, or a local-only branch is not an abort; continue with the local ref. - Create the worktree, per mode:
- New work:
git worktree add -b <branch-name> .worktrees/<branch-name> origin/<from-branch>(use the local<from-branch>ref iforigin/<from-branch>does not exist). - Existing branch or tag:
git worktree add .worktrees/<slug> <target-ref>. - PR: check it out on a local branch —
git fetch origin pull/<n>/head:pr-<n>thengit worktree add .worktrees/pr-<n> pr-<n>. Never a detachedFETCH_HEAD: that orphans the fix loop's commits instead of updating the PR. (For push-tracking back to the PR, create it detached —git worktree add --detach .worktrees/pr-<n>— thencdin and rungh pr checkout <n>, which is fork-safe.) - If git reports the ref is already checked out elsewhere, apply the one-branch-one-worktree rule above — do not force a second worktree.
- New work:
cdinto it, then report the path and branch.
If git worktree add fails with a sandbox or permission error, the requested isolation does not exist. Do not proceed in the current checkout — the user chose isolation specifically to avoid it. Report the failure and ask, offering options such as "work in the current checkout" vs "stop and resolve the permission issue", using the platform's blocking question tool: AskUserQuestion in Claude Code (call ToolSearch with select:AskUserQuestion first if its schema isn't loaded), request_user_input in Codex, ask_question in Antigravity CLI (agy), ask_user in Pi (via the pi-ask-user extension). Only when no blocking tool exists in the harness or the call errors, present the numbered options in chat and wait for the reply. Never skip the confirmation, and do not retry alternative paths automatically.
Todos los archivos
0 archivosInstalar ce-worktree
Descarga y extrae los archivos de habilidades en tu directorio .claude/skills/.
Descargar ZIPClona el repositorio y copia los archivos de la habilidad a tu proyecto.
git clone https://github.com/EveryInc/compound-engineering-plugin/blob/main/skills/ce-worktree/SKILL.md # Copy SKILL.md to your .claude/skills/ directory
Copiar





Hogar
