A git worktree is a separate working directory linked to the same git repository. It has its own files and branch but shares git history and remotes.
I find Claude Code's native flag claude --worktree <name> (or -w) especially convenient: it creates one at .claude/worktrees/<name> on a new branch. You can also trigger it mid-session by saying "work in a worktree".
To run agents in parallel, open terminal tabs and run claude -w <name> in each. Each session gets its own branch, staged changes, and uncommitted work, but they share git history.
Merging back is git merge worktree-<name> from your main branch. Each worktree needs its own npm install, and you can't check out the same branch in worktrees at once.