Cut a clean new branch off the latest origin/main and verify it matches the remote.
Scanned 9/2/2026
Install to Claude Code
npx -y skills add Surething-io/cockpit --skill new-branch --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of New Branch?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/surething-io-new-branch)More formats (shields.io, HTML) on the badges page.
---
name: new-branch
description: "Cut a clean new branch off the latest origin/main and verify it matches the remote."
argument-hint: "[branch name; ask if omitted]"
---
# New Branch (create a branch off the latest mainline)
Branch off the latest `origin/main` so the starting point is clean and in sync with the remote.
## Trigger
The user asks to "create a new branch / new branch / cut a branch" and wants it based on the latest mainline.
## Scope (important)
This skill is **only responsible for quickly creating a clean new branch**, up to "verify right after cutting".
- **Do**: fetch → branch from `origin/main` → verify sync → output confirmation.
- **Do NOT**: explore / read code, spawn Explore / Plan agents, produce an implementation plan, or start writing code.
Any requirement description the user includes at trigger time (e.g. "improve the add-to-slack onboarding flow") is **only used to derive the branch name / record intent**, not a dev task to start here. Follow-up requirement refinement and implementation are discussed by the user in a new conversation and are out of scope for this skill.
## Pre-checks
1. Confirm the branch name (always in English, following the `<type>/<short-desc>` convention, e.g. `feat/credit-guard`, `fix/stream-recovery`):
- User already gave a ready branch name → use it directly.
- User gave a requirement sentence (e.g. "improve the add-to-slack onboarding flow") → **derive** an English branch name from it (e.g. `feat/slack-onboarding-flow`) and create it directly, no need to ask.
- No derivable information at all → only then ask.
2. Confirm the working tree is clean (`git status`). If there are uncommitted changes, stop and ask the user how to handle them; do not force-switch.
## Steps
```bash
# 1. Fetch the latest remote mainline
git fetch origin main
# 2. Create and switch to the new branch off the latest origin/main
git checkout -b <branch-name> origin/main
# 3. Verify: should be 0 ahead, 0 behind
git rev-list --left-right --count origin/main...HEAD
```
`git checkout -b <name> origin/main` in one step guarantees the new branch's start = the latest remote mainline; no need to update local main first.
## Verification
- `git rev-list --left-right --count origin/main...HEAD` outputs `0 0` (0 ahead, 0 behind).
- `git status` shows you are on the new branch with a clean working tree.
Output confirmation: branch name, current HEAD commit, and sync status against origin/main.
## When to stop and ask
- No ready branch name and no derivable requirement description → ask.
- Uncommitted changes in the working tree → ask how to handle (stash / commit / discard); never discard on your own.
- A branch with the same name already exists → ask whether to overwrite or rename.
## Key principles
- **Start from the latest**: always base on `origin/main`, never on a possibly stale local main.
- **Never lose changes**: confirm before any operation that could lose the user's work.
- **Verify right after cutting**: use rev-list to confirm actual sync; never assume.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!