feature-branchlisted
Install: claude install-skill fmind/dot
# Feature Branch
Create and switch to a `<type>/<slug>` branch from the selected base for the work the user described; [conventional-commit](../conventional-commit/SKILL.md) owns the commits that follow.
## Workflow
1. **Ask when the work is undescribed**: without a description, an issue reference, or a desired branch name, ask and stop.
1. **Inspect the tree**:
```bash
git branch --show-current # current branch
git status --short # uncommitted changes
```
1. **Derive the name** as `<type>/<slug>`:
- `<type>`: a commit type from [conventional-commit](../conventional-commit/SKILL.md), usually `feat`, `fix`, `chore`, `docs`, `refactor`, `test`, `perf`, or `ci`.
- `<slug>`: lowercase ASCII kebab-case, under 50 characters, no trailing punctuation.
1. **Reuse a valid name**: when the user's input already is a valid branch name, use it as is.
1. **Resolve the base**: use the user-specified base; otherwise state that the new branch starts at the current commit. Ask only if competing branch histories make the intended base unclear.
1. **Preserve a dirty tree**: record existing changes and let them stay in place when branching from the current commit. Do not stash, reset, or overwrite work to switch bases; resolve a conflicting target with the user.
1. **Create and switch**; if the branch already exists, stop and report it:
```bash
git switch -c <branch>
```
1. **Report** only these two lines after success:
```text
Branch: <branch>