io.github.CloudCorpRecords/branchname
Build a branch name from an issue title and number, in the repo's naming convention.
ماذا يمكنك أن تفعل مع io.github.CloudCorpRecords/branchname؟
make_branch_name— Build a branch name from an issue
التثبيت
أضف هذا إلى إعدادات MCP في عميلك (Claude Desktop: claude_desktop_config.json، وCursor: .cursor/mcp.json، ويستخدم VS Code وغيره الصيغة نفسها «mcpServers»).
@reneturcios/branchnameclaude mcp add branchname -- npx -y @reneturcios/branchname@0.1.0 mcp
{
"mcpServers": {
"branchname": {
"command": "npx",
"args": [
"-y",
"@reneturcios/branchname@0.1.0",
"mcp"
]
}
}
}
ghcr.io/cloudcorprecords/branchname:0.1.0claude mcp add branchname -- docker run -i --rm ghcr.io/cloudcorprecords/branchname:0.1.0 mcp
{
"mcpServers": {
"branchname": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/cloudcorprecords/branchname:0.1.0",
"mcp"
]
}
}
}
التوثيق
مأخوذ من ملف README للمشروع على GitHub ويُحدَّث أسبوعيًا. تفتح الروابط على GitHub.
branchname
Naming a branch sounds trivial until every contributor does
it differently: fix-login, 123-login-bug, johns-branch,
and a dozen variants of the same issue, none of them greppable
in the same way. branchname takes the other approach — you
hand it the issue, and it hands back one name, built the
repo's way every time.
The title is slugified by a fixed, pinned recipe: lowercase
it, replace every maximal run of characters outside
[a-z0-9] with a single -, and strip leading and trailing
-. Punctuation clusters collapse instead of multiplying,
digits survive, and characters outside ASCII — accents,
dashes, emoji — count as separators like any other
punctuation. A title with nothing slugifiable in it at all
is an error ("title produces an empty slug"), not a branch
named -.
When the slug runs long, it is truncated: cut to exactly
max_slug_length characters (40 by default, never below 8),
then strip any trailing - the cut left behind, so a branch
never ends mid-word on a dangling hyphen.
The slug is then composed in one of four conventions:
type-issue-slug(the default) —<type>/<issue_number>-<slug>, for examplefix/123-login-redirect-loop. Requires bothtypeandissue_number.type-slug—<type>/<slug>, for exampledocs/update-install-guide. Requirestype.issue-slug—<issue_number>-<slug>, for example42-login-redirect-loop. Requiresissue_number.slug— just<slug>, for examplelogin-redirect-loop. Requires neither.
type is one of feat, fix, chore, docs, refactor,
or test. Asking a convention for a component you did not
supply is an error naming that component, and malformed
input — a missing, empty, or non-string title, an
issue_number that is not an integer of at least 1, a
type or convention outside its enum, or a
max_slug_length that is not an integer of at least 8 — is
a validation error naming the offending path, with no
partial result. The computation is pure and local: no
network, no configuration, and no repository is read or
touched — branchname only builds the name.
CLI
npx @reneturcios/branchname make --input args.json
npx @reneturcios/branchname --version
args.json contains the full arguments object:
{
"title": "Fix login redirect loop",
"issue_number": 123,
"type": "fix"
}
convention defaults to "type-issue-slug" and
max_slug_length defaults to 40. The result is printed
as JSON:
{
"branch": "fix/123-fix-login-redirect-loop",
"slug": "fix-login-redirect-loop",
"convention": "type-issue-slug"
}
Exit codes: 0 on success, 1 on a runtime error (including
an unreadable or invalid input file, or invalid input), 2
on a usage error.
MCP server
npx -y @reneturcios/branchname mcp
MCP client config:
{
"mcpServers": {
"branchname": {
"command": "npx",
"args": ["-y", "@reneturcios/branchname", "mcp"]
}
}
}
Tools
make_branch_name— Build a branch name from an issue title.title(string, required, non-empty) — the issue title to slugifyissue_number(integer, optional, at least 1) — the issue numbertype(string, optional) — change type prefix, one offeat,fix,chore,docs,refactor,testconvention(string, optional, default"type-issue-slug") — one oftype-issue-slug,type-slug,issue-slug,slugmax_slug_length(integer, optional, default 40, at least 8) — maximum slug length before truncation
Returns
{branch, slug, convention}, whereslugis the final (possibly truncated) slug andconventionechoes the resolved convention.
Docker
docker run -i ghcr.io/cloudcorprecords/branchname
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/branchname make --input /w/args.json
Development
npm install
npm run build # tsc -> dist/
npm test # tsx --test test/*.test.ts (pure local, no network)
npm run dev # run the CLI from source
License
MIT — Copyright (c) 2026 Rene Turcios
الأسئلة الشائعة
ما هو io.github.CloudCorpRecords/branchname؟
Build a branch name from an issue title and number, in the repo's naming convention.
كيف أثبّت io.github.CloudCorpRecords/branchname؟
يعمل على جهازك. في Claude Code: claude mcp add branchname -- npx -y @reneturcios/branchname@0.1.0 mcp. وفي العملاء الآخرين، الصق إعداد JSON من هذه الصفحة في إعدادات MCP الخاصة بهم.
هل يحتاج io.github.CloudCorpRecords/branchname إلى مفتاح API؟
لا يذكر إدراجه في السجل أي مفتاح أو سر إلزامي. قد تتطلب بعض الميزات حسابًا لدى الخدمة التي يتصل بها.
هل io.github.CloudCorpRecords/branchname مفتوح المصدر؟
نعم. شيفرته متاحة على GitHub بترخيص MIT.
من يصون io.github.CloudCorpRecords/branchname؟
ينشره CloudCorpRecords. يدرجه AI.tn لكنه لا يصونه ولا يوصي به.
من سجل MCP الرسمي. الإدراج ليس توصية: راجع شيفرة الخادم وصلاحياته قبل منحه الوصول إلى بياناتك.