version-bump
Skill1 starsChanged 10 days agoMITView on GitHub
Control de cambio de versión GENERAL para cualquier repositorio (Rust/Cargo, Node/npm, Python, Go, .NET, Java, o proyectos sin gestor). Úsalo cuando el usuario pida subir/cambiar la versión, preparar o publicar un release, o cuando sospeche incoherencias de versión entre código, manifests, docs y web. REGLA CRÍTICA — distinguir SIEMPRE los marcadores de "versión actual" (se bumpean) de las referencias HISTÓRICAS de changelog (se conservan); `version_probe.py` hace esa clasificación de forma determinista en vez de dejarla al criterio del agente. Verificar cada paso con comandos reales antes de afirmar que está hecho.
- Deletes or force-pushes
- Commits and pushes
25 other projects use a version of this, 1 of them edited.
Adopted by
Most recently taken up by
- MMACABRE/SKILLStheir own version, first seen Nov 8, 2026
- SamuelAlev/control-centertheir own version, first seen Nov 8, 2026
- marketcalls/openalgotheir own version, first seen Nov 2, 2026
- bostonaholic/skillstheir own version, first seen Oct 25, 2026
- susantedit/claude-skillstheir own version, first seen Oct 20, 2026
- swoosh/swooshtheir own version, first seen Oct 17, 2026
Used with
Projects with it also use commit.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
SentrySkillcommit
Create commit messages following Sentry conventions. Use when committing code changes, writing commit messages, or formatting git history. Follows conventional commits with Sentry-specific issue references.
Also in 3 projects that use this
Other versions25 projects use a version of this.
Word for word · 0
None found.
Edited · 1
- vladimiracunadev-create/codex-skills-toolkit★ 098% same
Wrote their own version · 24
- meteor/meteor★ 45ksame name
- BenedictKing/ccx★ 4ksame name
- marketcalls/openalgo★ 3ksame name
- swoosh/swoosh★ 1.5ksame name
- microsoft/roosterjs★ 1.3ksame name
- deadlock-mod-manager/deadlock-mod-manager★ 584same name
- Kindness-Kismet/Storage-redirection-X-Public★ 527same name
- Kindness-Kismet/One-Player★ 486same name
- feichai0017/QuillSQL★ 277same name
- novitalabs/pegaflow★ 221same name
14 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository22 other files it gives its agents.
- bitcoin-custody-auditSkill
- clone-repoSkill
- docker-cleanupSkill
- docker-compose-doctorSkill
- functional-user-flow-testerSkill
- git-pushSkill
- md-lint-fixSkill
- md-to-docSkill
- pre-commit-guardSkill
- preliminary-product-testerSkill
- pre-push-guardSkill
- python-deps-pinningSkill
- python-lint-guardSkill
- python-version-controlSkill
- release-evidence-auditorSkill
- repo-coherence-auditSkill
- security-auditSkill
- software-resilience-state-testerSkill
- sync-forkSkill
- nombre-del-skillSkill
- web-snapSkill
- yaml-controlSkill
The file
We split this skill into the rules it gives an agent
4 rules. 0 are common, 4 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 22 edited versions we read keep these.
4
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 60
No dejes esta clasificación al ojo.
- Distinctive: line 193
Repos públicos: no commitees imágenes/logs/fixtures con datos personales (usuario, rutas, IPs, PIDs, tokens).
- Distinctive: line 247
No lee ficheros binarios ni mayores de 2 MB.
- Distinctive: line 248
No conoce convenciones de versionado propias (fechas, build numbers): asume que la cadena que le pasas es la que hay que buscar.
“Common” is measured: kept by at least 6 in 10 of the 22 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
version-bump — control de versión general
Objetivo: cambiar la versión de un producto de forma coherente en TODO el repositorio y, si aplica, publicar el release verificándolo. Sirve para cualquier stack. No asume ninguna herramienta concreta hasta detectarla.
Alcance y permisos
| Capacidades del script | file_read |
| Qué toca | Lee los marcadores de versión de cualquier stack (Cargo, npm, Python, Go, .NET, Java) y clasifica cada aparición en ACTUAL / HISTÓRICO / AMBIGUO. |
| Qué nunca toca | No toca las referencias históricas del changelog, y el tag y el release se confirman antes de publicarse. |
| Herramientas retiradas | WebFetch, WebSearch |
No declara allowed-tools, y es deliberado: ese campo preaprueba herramientas —se salta la confirmación durante el turno que invoca el skill— en vez de limitarlas. Declararlo aquí no acotaría nada: quitaría la confirmación del usuario. disallowed-tools sí retira herramientas del pool mientras el skill está activo, y ahí es donde se acota de verdad.
Publica tags y releases.
Principio #1 — actual vs histórico (el error más común)
Un grep de la versión vieja devuelve DOS cosas mezcladas:
- Marcadores de versión ACTUAL → hay que bumpearlos.
(badge/banner del README, campo del manifiesto, "versión actual" del roadmap,
versión en la landing, sample outputs,
--version.) - Referencias HISTÓRICAS → NO se tocan. ("Entregado en v0.13", "version bump a 0.13.0" dentro de la sección de esa versión, entradas de CHANGELOG, "Completado en vX".)
Para el changelog/roadmap: añade una entrada NUEVA para la versión nueva y marca la anterior como "entregada"; nunca reescribas la historia.
version_probe.py — la regla, en código
No dejes esta clasificación al ojo. El script la resuelve y marca lo que no puede decidir:
python ~/.claude/skills/version-bump/version_probe.py --old 0.2.0Clasifica cada aparición en tres cubos:
| Cubo | Significado | Acción |
ACTUAL | Badge, campo de manifest, --version, "versión actual", encabezado de roadmap | Se bumpea |
HISTORICO | Entrada de CHANGELOG, "entregado en vX", "released in", enlaces de comparación | Se conserva |
AMBIGUO | Sin señal concluyente | Revisión humana — el script no adivina |
Reglas que aplica, en orden:
- En ficheros
CHANGELOG/HISTORY/RELEASES/NEWS, todo es histórico salvo la secciónUnreleased. - En manifests (
package.json,pyproject.toml,Cargo.toml,*.csproj,pom.xml,VERSION…), el campo de versión es actual por definición. - Señales inequívocas de presente (badge
shields.io,__version__,"version":,<Version>,--version) ganan a cualquier otra cosa — un badge que enlaza aCHANGELOG.mdsigue siendo estado actual. - Señales de pasado (
entregado,released in,since v,added in). - Señales débiles de presente (
versión actual,en curso). - Encabezados: en
ROADMAP/PLANson estado; en el resto, ambiguos.
Prueba de fuego automatizada al terminar el bump:
python ~/.claude/skills/version-bump/version_probe.py --verify --old 0.2.0 --new 0.3.0Exit
1si algún marcador ACTUAL sigue mostrando la versión vieja.
Paso 0 — Semver y alcance
Confirma el salto con el usuario si no es obvio:
- patch (x.y.Z): bugfixes compatibles.
- minor (x.Y.0): features compatibles.
- major (X.0.0): cambios incompatibles.
Define OLD y NEW (ej. OLD=0.13.0, NEW=0.14.0).
Paso 1 — Detectar la fuente de verdad de la versión
version_probe.py sin argumentos ya reporta la versión canónica de cada
manifest de la raíz y avisa si no coinciden entre sí:
python ~/.claude/skills/version-bump/version_probe.py| Stack | Fuente canónica |
| Rust | Cargo.toml → version = "..." (y Cargo.lock si versiona el propio crate) |
| Node | package.json → "version" (+ package-lock.json / npm-shrinkwrap.json) |
| Python | pyproject.toml version, o setup.py, o __init__.py::__version__, o VERSION |
| Go | normalmente solo git tags; a veces version.go o -ldflags -X |
| .NET | *.csproj → <Version> / <AssemblyVersion>; a veces Directory.Build.props |
| Java | Maven pom.xml <version>; Gradle build.gradle(.kts) version = |
| Genérico | fichero VERSION, version.txt, header de shell/Makefile |
Paso 2 — Inventariar TODAS las ocurrencias
python ~/.claude/skills/version-bump/version_probe.py --old "$OLD" --json > /tmp/probe.jsonClasifica cada resultado en:
- Canónico (paso 1).
- Manifests / distribución: scoop
.json, winget.yaml, chocolatey.nuspec, Homebrew formula, AURPKGBUILD, Snap, Flatpak,Chart.yaml, imágenes Docker,package.json. (Ojo: muchos usan$version/latesten la URL → solo el campo versión cambia.) - Docs de estado actual: badge/banner del README, "versión actual" del
ROADMAP/PLAN, tabla de soporte de
SECURITY.md. - Web/landing: badge de versión, botón de descarga, sección de evolución.
- Muestras / fixtures: outputs de ejemplo, snapshots de tests, capturas.
- Histórico → no tocar (ver Principio #1).
Paso 3 — Aplicar el bump
- Cambia el canónico y regenera lockfiles si contienen la versión propia
(
cargo update -p <crate>/npm installpara refrescar*-lock). - Bump de cada manifiesto y de cada marcador de estado actual.
- Web: badge + botón + añade/extiende la sección de changelog a
NEW. - Changelog/roadmap: entrada nueva para
NEW; la anterior pasa a "entregada". - Muestras de
--versionu outputs de ejemplo que muestren la versión.
Usa reemplazos acotados (por fichero/línea). Evita un sed global ciego que
pise referencias históricas.
Paso 4 — Verificar coherencia (obligatorio, con salida real)
python ~/.claude/skills/version-bump/version_probe.py --verify --old "$OLD" --new "$NEW"Debe reportar ✓ en ambas comprobaciones. Complementa con
repo-coherence-audit para el resto de
afirmaciones de los docs (conteos, workflows, prerequisitos).
Compila/valida si el stack lo permite (cargo build / npm run build /
pytest…). Si el entorno local no compila, deja constancia y confía en CI —
pero NO afirmes "listo" sin evidencia.
Paso 5 — Commit limpio (evita accidentes)
NUNCA
git add -Aa ciegas. Puede colar ficheros no relacionados o sensibles (capturas con datos reales, credenciales, artefactos). Usa rutas explícitas:git add <fichero-canónico> <manifests...> README.md docs/... web/... git status # revisa qué queda fuera a propósito- Repos públicos: no commitees imágenes/logs/fixtures con datos personales
(usuario, rutas, IPs, PIDs, tokens). Si ya se coló y es el commit tip recién
pusheado, rehazlo (
git reset --soft HEAD~1→ re-stage selectivo →git commit→git push --force-with-lease). - Mensaje claro que liste qué se bumpeó y aclare que lo histórico se conserva.
Paso 6 — Tag y release (si el proyecto publica)
- Confirma que CI de la rama está verde antes de etiquetar.
- Averigua el mecanismo de release:
- CI se dispara con el tag (
on: push: tags: v*) → sologit tag vNEW && git push origin vNEWy CI compila+publica. - Manual → construye artefactos y
gh release create/ equivalente.
- CI se dispara con el tag (
- Descarga artefactos por run/tag EXPLÍCITO, no "latest" — "latest" puede resolver a un run viejo o en curso y darte un binario incorrecto.
Checksums: el fichero de hashes debe listar los basenames reales de los assets (no rutas internas de CI tipo
build\...). Verifícalo:sha256sum -c SHA256SUMS.txt # todos OK- Verifica el binario publicado:
--version==NEWy sin hacks de debug.
Paso 7 — Verificación final (no afirmar sin evidencia)
gh release view vNEW --json assets --jq '.assets[]|.name+" — "+(.size|tostring)+" B"'- Web/landing en vivo muestra
NEW(fetch de la URL pública). - Manifests de distribución (scoop/winget/choco) con
NEWy hashes actualizados.
⚠️
ghmuestra los tamaños en KB con truncamiento: un asset de 700 B se ve como "0 KB". Compara bytes, no la vista formateada.
Qué NO hace / limitaciones
version_probe.pyno modifica nada. Es solo lectura: clasifica y verifica. Aplicar el bump es trabajo del agente, con reemplazos acotados.- No adivina lo ambiguo. Lo que no tiene señal clara se reporta como
AMBIGUOpara revisión humana, en vez de arriesgar una clasificación mala. - No distingue un badge real de un badge citado como ejemplo. Una línea de
documentación que muestra la sintaxis
[]se clasifica comoACTUAL, porque textualmente es indistinguible de una real. Produce falsos positivos en docs que explican el propio versionado — se detecta a simple vista en el listado, pero conviene saberlo antes de tratar la salida de--verifycomo un veredicto ciego. - No lee ficheros binarios ni mayores de 2 MB.
- No conoce convenciones de versionado propias (fechas, build numbers): asume que la cadena que le pasas es la que hay que buscar.
Dependencias
| Dependencia | Cómo instalar | Requerida u opcional |
python>=3.11 | viene con el SO | requerida (usa tomllib) |
gh | https://cli.github.com/ | opcional — solo para el paso de release |
Checklist rápido
OLD/NEWy salto semver acordadosversion_probe.pysin drift entre manifests- Fuente canónica + lockfiles bumpeados
- Todos los manifests/distribución bumpeados
- Marcadores de estado (README, ROADMAP, SECURITY, web) →
NEW - Changelog: entrada NUEVA; histórico intacto
version_probe.py --verifyen verde- Cero apariciones
AMBIGUOsin revisar - Commit con rutas explícitas; sin ficheros sensibles
- CI verde → tag → release; artefactos por run/tag explícito
- Checksums con basenames reales y
-cOK - Binario/web publicados verificados con salida real
Errores reales a no repetir
- Bumpear una entrada de changelog histórica y romper la trazabilidad.
- Dejar la landing/README/roadmap con la versión vieja como "actual".
git add -Aque cuela capturas con datos personales a un repo público.- Fichero de checksums con rutas internas de CI →
sha256sum -cfalla. - Descargar "latest" y publicar un binario de la versión anterior.
- Afirmar "release publicado" sin ver los assets con tamaño real (> 0 bytes).
- Olvidar los lockfiles (
Cargo.lock/package-lock.json) cuando versionan el paquete.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

