# New Feature

Isolate repository edits in a Git worktree before starting a feature, fix, or...

- Repository: https://github.com/michaelshimeles/rstack (1423 stars)
- Category: Git and review
- License: see repository
- Last updated: 2026-10-26
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add michaelshimeles/rstack --skill new-feature -g -a claude-code -y`
Codex: `npx skills add michaelshimeles/rstack --skill new-feature -g -a codex -y`
Cursor: `npx skills add michaelshimeles/rstack --skill new-feature -g -a cursor -y`
Gemini CLI: `npx skills add michaelshimeles/rstack --skill new-feature -g -a gemini-cli -y`

## Description

Isolate repository edits in a Git worktree before starting a feature, fix, or documentation change. Preserve a worktree already assigned to the same task. Read-only reviews and investigations do not need a new worktree.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# New Feature

Each editing task gets its own worktree and branch, created from the latest
`origin/main` unless the user specifies a different base. Read-only work can
use the existing checkout. Never build on `main` or reuse another task's work.

## Check existing isolation first

Inspect `git worktree list`, `git status --short`, the current branch, and the
session's task assignment. If the environment already created a worktree for
this task, keep its path and branch and skip steps 3 and 4. In step 5, use the
actual assigned path. Do not infer isolation from the editor name or a branch
prefix alone. Otherwise follow all steps.

## Steps

1. **Sync**: `git fetch origin`.

2. **Scope check**: run `gh pr list` and skim the open PRs' changed files
   (`gh pr diff <n> --name-only`). For shared files, read the overlapping
   diffs. Independent edits may proceed in your own worktree. Ask for direction
   only when the changes conflict in behavior, require another task's unfinished
   work, or ownership is unclear. Check shared checkouts for uncommitted work
   without changing it. On another hosting platform, use its equivalent PR/MR
   tools; if unavailable, report the scope-check limitation and still isolate.

3. **Name the task**: lowercase-with-hyphens plus a short unique suffix,
   e.g. `user-auth-0816a`. If `git worktree add` fails because the name
   exists, pick a different name, never force or reuse.

4. **Create the worktree** from the repo root:

   ```bash
   git worktree add <worktrees-dir>/<task-name> \
     -b <branch-prefix>/<task-name> origin/main
   ```

   Use a directory outside the checkout, or a **gitignored** directory inside
   it, so worktrees cannot be committed by accident. Use a
   consistent branch prefix (e.g. `agent/`). Follow the repo's conventions
   if it defines them.

5. **Enter and verify**:

   ```bash
   cd <worktrees-dir>/<task-name>
   git branch --show-current   # must print your new branch, not main
   ```

The rest: https://github.com/michaelshimeles/rstack/blob/HEAD/new-feature/SKILL.md
