@tmegit/opencode-worktree-session
v1.1.0
Published
OpenCode plugin that manages Git worktrees for AI sessions
Maintainers
Readme
opencode-worktree-session
A plugin for OpenCode that automatically manages Git worktrees for every AI session created from the opencode-plugin-template.
This plugin ensures your main working directory remains clean while the AI works in an isolated branch. On session end, it automatically generates a commit message, pushes the branch, and removes the worktree.
Features
- Isolation: Automatically creates a new Git worktree in
.opencode/worktrees/. - Safety: Refuses to run on the
mainbranch to prevent accidental corruption. - Context-Aware: Pivots the AI's working directory (
cwd) to the worktree automatically. - Automated Cleanup: Commits changes using AI-generated messages and deletes the worktree upon exit.
Installation
NPM
Add to your opencode.json:
{
"plugin": ["@tmegit/opencode-worktree-session"]
}Workflow
- Start Session: Run
opencode. - Branch Prompt: You will be prompted for a branch suffix (e.g.,
feature-xyz). - Worktree Creation: The plugin creates
opencode/feature-xyzand moves the session into that path. - Execution: The AI performs tasks inside the isolated worktree.
- Exit: Upon closing the session, the plugin:
- Stages all changes.
- Generates a commit message via OpenCode API.
- Pushes to
origin. - Removes the worktree safely.
Requirements
- Node.js runtime
- Git installed and configured in PATH
- OpenCode CLI
Config
Example (save as .opencode/opencode-worktree-session-config.json):
{
"terminal": {
"mode": "custom",
"bin": "alacritty",
"args": "",
"workingDirectoryArgument": "--working-directory",
"commandFlag": "-e"
},
"postWorktree": {
"cmd": "webstorm",
"args": ""
},
"configToolsAvailable": false
}Configure the plugin in .opencode/opencode-worktree-session-config.json.
terminal— Controls how the plugin launches a terminal.mode— launch mode:default|custom|specificbin— terminal binaryargs— extra argsworkingDirectoryArgument— workdir flagcommandFlag— command flagterminal(specific mode) —Alacritty,iTerm,iTerm2,Terminal
postWorktree— Command run after worktree creation.cmd— command to runargs— command args
configToolsAvailable— Enable or disable config helper tools (affectssetpostworktree,setworktreesync,setterminal).boolean— true/false
Note: change configToolsAvailable and restart your OpenCode session for it to take effect.
Development
bun run typecheck- TypeScript type checkingbun run lint- Fix linting issuesbun run format- Format code with Prettierbun run test- Run testsbun run build- Build the plugin
License
Apache License 2.0
