io.github.CloudCorpRecords/branchname

Official registry Other

Build a branch name from an issue title and number, in the repo's naming convention.

What can you do with io.github.CloudCorpRecords/branchname?

  • make_branch_name — Build a branch name from an issue

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

NPM package @reneturcios/branchname
Claude Code
claude mcp add branchname -- npx -y @reneturcios/branchname@0.1.0 mcp
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "branchname": {
            "command": "npx",
            "args": [
                "-y",
                "@reneturcios/branchname@0.1.0",
                "mcp"
            ]
        }
    }
}
OCI package ghcr.io/cloudcorprecords/branchname:0.1.0
Claude Code
claude mcp add branchname -- docker run -i --rm ghcr.io/cloudcorprecords/branchname:0.1.0 mcp
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "branchname": {
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "ghcr.io/cloudcorprecords/branchname:0.1.0",
                "mcp"
            ]
        }
    }
}

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. branchname
  2. CLI
  3. MCP server
  4. Docker
  5. Development
  6. License

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 example fix/123-login-redirect-loop. Requires both type and issue_number.
  • type-slug — <type>/<slug>, for example docs/update-install-guide. Requires type.
  • issue-slug — <issue_number>-<slug>, for example 42-login-redirect-loop. Requires issue_number.
  • slug — just <slug>, for example login-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 slugify
    • issue_number (integer, optional, at least 1) — the issue number
    • type (string, optional) — change type prefix, one of feat, fix, chore, docs, refactor, test
    • convention (string, optional, default "type-issue-slug") — one of type-issue-slug, type-slug, issue-slug, slug
    • max_slug_length (integer, optional, default 40, at least 8) — maximum slug length before truncation

    Returns {branch, slug, convention}, where slug is the final (possibly truncated) slug and convention echoes 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

Frequently asked questions

What is io.github.CloudCorpRecords/branchname?

Build a branch name from an issue title and number, in the repo's naming convention.

How do I install io.github.CloudCorpRecords/branchname?

It runs on your machine. In Claude Code: claude mcp add branchname -- npx -y @reneturcios/branchname@0.1.0 mcp. For other clients, paste the JSON configuration from this page into their MCP settings.

Does io.github.CloudCorpRecords/branchname need an API key?

Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.

Is io.github.CloudCorpRecords/branchname open source?

Yes. Its code is on GitHub under the MIT license.

Who maintains io.github.CloudCorpRecords/branchname?

It is published by CloudCorpRecords. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.