worktreelisted
Install: claude install-skill rudi193-cmd/willow-2.0
# Worktree — Required Development Pattern
**This is a hard constraint, not a guideline.** Every change to the codebase goes through a worktree branch and a PR. Direct commits to master are banned.
## Start work
```bash
# 1. Create branch (simple) or isolated worktree directory (multi-session)
git checkout -b feat/<slug>
# — or —
git worktree add worktrees/<slug> -b feat/<slug>
```
```
# 2. Register a Willow fork (SOIL tracking)
fork_create(app_id="hanuman", title="<title>", created_by="hanuman", topic="<slug>")
# Save the returned fork_id
# 3. Log the branch
fork_log(fork_id=<fork_id>, component="git", type="branch", ref="feat/<slug>", app_id="hanuman")
```
Check `$WILLOW_HOME/session_anchor_${WILLOW_AGENT_NAME}.json` for an active `fork_id` before creating a new one.
Check open forks before starting: `fork_list(status="open", app_id="hanuman")`
## During work
- All commits go to the feature branch only
- Log KB writes: `fork_log(fork_id, "kb", "atom", atom_id, app_id="hanuman")`
- Branch naming: `fix/<slug>` · `feat/<slug>` · `chore/<slug>`
## Open PR
```bash
git push -u origin feat/<slug>
gh pr create --title "..." --body "..."
```
CI must pass. USER approves. Then merge.
## Teardown after merge
```bash
git worktree remove worktrees/<slug> # only if worktree directory was used
git branch -d feat/<slug>
```
### Husk removal runs on the host (S18 exception)
A worktree directory is bind-mounted into **every** Kart sandbox, so `git worktree remove` / `rmdir` /