Help us improve
Share bugs, ideas, or general feedback.
From devrunway
Manage git branches and scaffold new feature boilerplate. Usage — /devrunway:branch <sub-command> [args]
npx claudepluginhub manikumarkv/devrunway-claude-plugin --plugin devrunwayHow this skill is triggered — by the user, by Claude, or both
Slash command
/devrunway:branch <create|switch|list|delete|status> [args]<create|switch|list|delete|status> [args]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Create branches following the team convention and optionally scaffold feature boilerplate.
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
Create branches following the team convention and optionally scaffold feature boilerplate.
Branch naming convention: feature/<ticket>-<short-name> for features, fix/<ticket>-<short-name> for bugs, chore/<short-name> for maintenance.
Sub-command is $ARGUMENTS[0].
/branch create <ticket> <short-name> [type]Create a feature branch and optionally scaffold boilerplate.
Arguments:
ticket — GitHub issue number (e.g. 42)short-name — kebab-case slug (e.g. user-profile)type — frontend, backend, or fullstack (default: ask user or infer from tech design)# Ensure on develop and up to date
git checkout develop && git pull origin develop
# Create branch
git checkout -b feature/$TICKET-$NAME
After creating the branch, ask: "Scaffold boilerplate? (frontend / backend / fullstack / skip)"
Consult your frontend layer skill for the exact file structure and templates for your stack.
Universal structure to create under src/features/<name>/:
types.<ext> — data types / interfaces for this feature
api/<name>.api.<ext> — data-fetching hooks / queries
hooks/use<Name>.<ext> — business logic hook
components/<Name>/ — UI component(s)
<Name>.<ext> — main component (loading / empty / error / data states)
<Name>.test.<ext> — component tests
index.<ext> — barrel export
index.<ext> — feature public API (re-exports)
Replace <ext> with the file extension for your language (e.g. ts, tsx, js, vue, py).
Replace $NAME with PascalCase name, $name with camelCase.
Consult your backend layer skill for the exact file structure and templates for your stack.
Universal structure to create under src/:
types/<name>.types.<ext> — input/output types and validation schemas
repositories/<name>.repository.<ext> — data access (DB queries)
services/<name>.service.<ext> — business logic and ownership checks
controllers/<name>.controller.<ext> — request handling, validation, response
Register the new route in your app's route registry (entry point file) after scaffolding.
Do both frontend and backend scaffolds.
After scaffolding, print:
✅ Branch: feature/<ticket>-<name>
✅ Scaffolded: <files created>
Next steps:
1. Fill in types in the types file
2. Implement the repository and service
3. Run: /task start <ticket>
/branch switch <branch-name-or-number>Switch to a branch. If argument looks like an issue number (digits only), find the branch for that issue:
# By issue number — find matching branch
git branch -a | grep "feature/$ARG" | head -1
# By branch name
git checkout $BRANCH_NAME
/branch list [filter]List branches. Optional filter: feature, fix, mine.
# All local branches sorted by recency
git branch --sort=-committerdate
# Remote branches
git branch -r --sort=-committerdate | head -20
Show current branch with * marker. Include last commit message and date.
/branch delete <branch-name>Delete a local branch (and optionally the remote).
# Safety check: not on the branch being deleted
CURRENT=$(git branch --show-current)
if [ "$CURRENT" = "$BRANCH" ]; then
echo "Cannot delete current branch. Switch first."
exit 1
fi
# Check if merged
git branch --merged develop | grep "$BRANCH"
git branch -d $BRANCH # safe delete (merged only)
# git branch -D $BRANCH # force (only if user confirms unmerged)
Ask before force-deleting an unmerged branch.
Optionally delete remote:
git push origin --delete $BRANCH
/branch statusShow current branch status: uncommitted changes, commits ahead/behind develop, linked issue.
BRANCH=$(git branch --show-current)
AHEAD=$(git rev-list develop..HEAD --count)
BEHIND=$(git rev-list HEAD..develop --count)
UNCOMMITTED=$(git status --short | wc -l | tr -d ' ')
echo "Branch: $BRANCH"
echo "Ahead: $AHEAD commit(s)"
echo "Behind: $BEHIND commit(s)"
echo "Uncommitted: $UNCOMMITTED file(s)"
# Extract issue number from branch name and show issue title
TICKET=$(echo $BRANCH | grep -oE '[0-9]+' | head -1)
if [ -n "$TICKET" ]; then
gh issue view $TICKET --json title,state -q '"#\(.number) \(.state): \(.title)"' 2>/dev/null
fi