From optimus
Creates and switches to a new git branch named from inline description, conversation context, or local diffs. Preserves all uncommitted changes for in-progress work or starting fresh on clean branches.
npx claudepluginhub oprogramadorreal/optimus-claude --plugin optimusThis skill uses the workspace's default tool permissions.
Create and switch to a new, conventionally named branch. Works in two common scenarios:
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Checks Next.js compilation errors using a running Turbopack dev server after code edits. Fixes actionable issues before reporting complete. Replaces `next build`.
Create and switch to a new, conventionally named branch. Works in two common scenarios:
/optimus:branch "add user authentication").The branch name is derived from the first available context: an inline description, conversation history, or local git diffs. Never commits, pushes, stages, or modifies anything — purely a local branch operation.
Read $CLAUDE_PLUGIN_ROOT/skills/init/references/multi-repo-detection.md for workspace detection. If a multi-repo workspace is detected:
.git/, so git commands must target individual repos)git status --short is non-empty)AskUserQuestion — header "Target repo", question "Multiple repos have local changes. Which repo should get the new branch?": list each repo as an optionRecord the current branch:
git rev-parse --abbrev-ref HEAD
Determine a meaningful description for the branch from the first source that provides enough signal (check in this priority order):
/optimus:branch "fix login timeout"), use it directlygit status --short
If there are local changes, analyze them to infer intent:
# File-level overview
git diff --stat
git diff --cached --stat
# Content details (for deeper analysis if file names alone are ambiguous)
git diff
git diff --cached
When analyzing diffs, look for:
src/auth/ → authentication, tests/ → testing)If no source provides enough signal to generate a meaningful name (no inline description, no conversation context, and either no local changes or changes too ambiguous to interpret), inform the user:
Could not determine a meaningful branch name from the conversation or local changes.
Provide a description, e.g., `/optimus:branch "add user authentication"`
Then stop — do not create a branch with a generic or meaningless name.
Read $CLAUDE_PLUGIN_ROOT/skills/commit/references/branch-naming.md for the naming convention. Use the Type Detection Keywords section to determine <type> from context, and apply the Slug Rules to generate <slug>.
Handle collisions: if git show-ref --verify --quiet refs/heads/<branch-name> succeeds (branch exists), append -2 to the slug. If that also exists, try -3, and so on up to -9. If all collide, inform the user and stop.
git checkout -b <branch-name>
Report (adapt based on whether local changes exist):
## Branch
Created `<branch-name>` from `<original-branch>`.
Local changes preserved (nothing committed or pushed).
If the working tree was clean (no local changes), omit the "Local changes preserved" line:
## Branch
Created `<branch-name>` from `<original-branch>`.
Recommend the next step based on context:
/optimus:tdd to build the feature test-first/optimus:commit to stage, commit, and optionally push/optimus:worktree for an isolated workspace/optimus:commit when readyTell the user: Tip: for best results, start a fresh conversation for the next skill — each skill gathers its own context from scratch.
git checkout -b carries staged, unstaged, and untracked files to the new branch untouched. Do not run git stash, git add, git reset, or any command that alters the working tree or indexAskUserQuestion when multiple repos have changes or when context is truly insufficient