io.github.CloudCorpRecords/gitcleanplan
Plan stale and merged branch cleanup: keep / review / delete per branch, with reasons.
Que pouvez-vous faire avec io.github.CloudCorpRecords/gitcleanplan ?
plan_branch_cleanup— Plan stale and merged branch
Installation
Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).
@reneturcios/gitcleanplanclaude mcp add gitcleanplan -- npx -y @reneturcios/gitcleanplan@0.1.0 mcp
{
"mcpServers": {
"gitcleanplan": {
"command": "npx",
"args": [
"-y",
"@reneturcios/gitcleanplan@0.1.0",
"mcp"
]
}
}
}
ghcr.io/cloudcorprecords/gitcleanplan:0.1.0claude mcp add gitcleanplan -- docker run -i --rm ghcr.io/cloudcorprecords/gitcleanplan:0.1.0 mcp
{
"mcpServers": {
"gitcleanplan": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/cloudcorprecords/gitcleanplan:0.1.0",
"mcp"
]
}
}
}
Documentation
Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.
gitcleanplan
Branch lists grow quietly. A feature lands, its branch stays; an experiment is abandoned, its branch stays too; the upstream disappears and the local copy lingers. Deleting branches on a hunch is how work gets lost, so gitcleanplan takes the middle road: you hand it the branch data, and it hands back a plan — lists first, deletes nothing.
For every branch you supply, the plan gives one of three decisions, each with the reason that produced it:
- keep — the default branch, a protected branch, the branch currently checked out, or a branch that is simply still active.
- review — merged but recently active, upstream gone but not merged, or stale but not merged: promising cleanup candidates that deserve a human look before anything else.
- delete — merged and either its upstream is gone or
it has been stale for at least
stale_days. Only merged branches can ever land here.
Decisions follow a fixed rule order, so the reason is never
ambiguous: the default branch wins over protection,
protection wins over a merged-and-gone branch, being checked
out wins over being merged, and "merged and upstream is
gone" wins over "merged and stale". Staleness is inclusive —
a branch whose last commit was exactly stale_days ago
counts as stale.
Alongside the per-branch decisions, the result groups the
branch names under each action, counts them, and lists one
safe-delete command (git branch -d <name>) per branch
planned for deletion, in name order. Those commands are
listed, never run: gitcleanplan does not invoke git,
open a repository, or delete anything. You read the plan,
and you decide what to execute yourself.
Malformed input — a missing or empty branch list, a missing,
empty, or duplicated branch name, a missing, negative, or
non-integer last_commit_days_ago, a wrongly typed flag, a
bad stale_days or default_branch — is a validation error
naming the offending path (for example
branches[1].last_commit_days_ago must be an integer >= 0),
and no partial plan is produced. The computation is pure and
local: no network, no configuration, no files read beyond
the input you pass in.
CLI
npx @reneturcios/gitcleanplan plan --input args.json
npx @reneturcios/gitcleanplan --version
args.json contains the full arguments object:
{
"stale_days": 90,
"branches": [
{ "name": "main", "last_commit_days_ago": 0, "current": true },
{ "name": "shipped-feature", "merged": true, "upstream_gone": true, "last_commit_days_ago": 45 },
{ "name": "old-spike", "last_commit_days_ago": 180 }
]
}
merged, upstream_gone, protected, and current
default to false per branch; stale_days defaults to
90; default_branch defaults to "main". The plan is
printed as JSON:
{
"branches": [
{ "name": "main", "action": "keep", "reason": "default branch" },
{ "name": "old-spike", "action": "review", "reason": "stale but not merged" },
{ "name": "shipped-feature", "action": "delete", "reason": "merged and upstream is gone" }
],
"plan": {
"delete": ["shipped-feature"],
"review": ["old-spike"],
"keep": ["main"]
},
"counts": { "delete": 1, "review": 1, "keep": 1 },
"commands": ["git branch -d shipped-feature"]
}
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/gitcleanplan mcp
MCP client config:
{
"mcpServers": {
"gitcleanplan": {
"command": "npx",
"args": ["-y", "@reneturcios/gitcleanplan", "mcp"]
}
}
}
Tools
plan_branch_cleanup— Plan stale and merged branch cleanup.branches(array, required, at least one) — branches as{name, last_commit_days_ago, merged?, upstream_gone?, protected?, current?}objects;nameis unique across the set andlast_commit_days_agois a whole-day count of at least 0stale_days(integer, optional, default 90, at least 1) — a branch is stale at this many days since its last commitdefault_branch(string, optional, default"main") — the default branch name; it is never planned for deletion
Returns
{branches, plan, counts, commands}.
Docker
docker run -i ghcr.io/cloudcorprecords/gitcleanplan
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/gitcleanplan plan --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
Questions fréquentes
Qu'est-ce que io.github.CloudCorpRecords/gitcleanplan ?
Plan stale and merged branch cleanup: keep / review / delete per branch, with reasons.
Comment installer io.github.CloudCorpRecords/gitcleanplan ?
Il s'exécute sur votre machine. Dans Claude Code : claude mcp add gitcleanplan -- npx -y @reneturcios/gitcleanplan@0.1.0 mcp. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.
Faut-il une clé API pour io.github.CloudCorpRecords/gitcleanplan ?
Son entrée au registre n'indique aucune clé ni secret obligatoire. Certaines fonctions peuvent tout de même demander un compte auprès du service auquel il se connecte.
io.github.CloudCorpRecords/gitcleanplan est-il open source ?
Oui. Son code est sur GitHub sous licence MIT.
Qui maintient io.github.CloudCorpRecords/gitcleanplan ?
Il est publié par CloudCorpRecords. AI.tn le référence sans le maintenir ni le recommander.
Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.