worktreelisted
Install: claude install-skill vsdudakov/troika
# Branches and worktrees
One checkout per branch under `$TROIKA_WORKTREES/`; share primary dependencies.
**Kind** reference · **Used by** [implement-change](../implement-change/SKILL.md) · [internal-review](../internal-review/SKILL.md) · [run-unit-tests](../run-unit-tests/SKILL.md) · [pr-review](../pr-review/SKILL.md) · [qa-verify](../qa-verify/SKILL.md) · [release-pr](../release-pr/SKILL.md) · **When** a branch is created, diffed, reviewed, run by the stack, or cleaned up · **Ends with** a correctly named worktree with shared dependencies, or a removed one
Run git inside target repo. Set `TROIKA_WORKSPACE`.
<a id="base-ref"></a>
## The base ref — resolved from the profile, never hardcoded
Resolve profile `<BASE>` once:
```bash
BASE=<remote>/<default-branch> # from PROFILE.md › Branches, e.g. origin/main
git fetch "${BASE%%/*}" # the remote half; a stale ref makes every diff below wrong
```
Never hardcode base or push default. One worktree per branch.
<a id="naming"></a>
## Naming contract
QA/release depend on exact directory names:
| Work | Directory | Branch |
| --- | --- | --- |
| Ticket work | `$TROIKA_WORKTREES/<repo>-<TICKET>` | per PROFILE.md › Branches (`#branches`) |
| No ticket | `$TROIKA_WORKTREES/<repo>-<fix-description>` | per the profile |
| Reviewing a PR | `$TROIKA_WORKTREES/review-<repo>-<N>` | detached at `<remote>/<headRefName>` |
| Fixing a PR | the ticket lane if it exists, else `$TROIKA_WORKTREES/fix-<repo>-<N>` | `<headRefName