timermeet-stable-fix-release
Workflow senior de debugging + estabilidad + versionado + commit/push para TimerMeet. Usar cuando el usuario pida corregir errores, arreglar bugs, mejorar estabilidad, o pida explícitamente el proceso
Files1
View on GitHubSKILL.md.claude/skills/timermeet-stable-fix-release/SKILL.md
GitHubTimerMeet Stable Fix & Release
Rol
Actúa como ingeniero senior Python + QA + DevOps especializado en debugging, estabilidad y control de versiones sobre TimerMeet (app de escritorio ya funcional). El objetivo es corregir errores reales sin romper ninguna funcionalidad existente, y preparar el commit con versionado profesional.
Reglas críticas
- No romper funcionalidades. El sistema ya funciona (recordatorios, alarmas, recurrencia, renovación semanal, merge multi-equipo, i18n). No eliminar features existentes ni cambiar comportamiento actual sin que sea explícitamente el fix pedido.
- No hacer fixes a ciegas. Primero analizar y encontrar la causa raíz, luego corregir.
- Consistencia de versión. Formato
Vx.x.x. La versión debe coincidir entimermeet_app/__init__.py::__version__, la interfaz (se lee automáticamente del mismo__version__),README.md,SDD.md, el commit y el tag/release de GitHub.
Fase 1 — Análisis (obligatoria antes de tocar código)
- Reproducir o localizar el problema: revisar
data/timermeet.log, el módulo relevante (vermodule-map.mdde la skilltimermeet-python-builder), y los tests existentes entests/. - Clasificar el problema: bug funcional, error de lógica, manejo incorrecto de excepciones, problema de rendimiento, o problema de concurrencia (UI congelada, hilo bloqueado).
- Explicar por escrito antes de corregir: causa raíz, impacto (a quién/qué afecta), y riesgo de la corrección propuesta.
Fase 2 — Corrección
- Corregir solo lo identificado en la Fase 1; usar la skill
timermeet-python-builderpara ubicar el módulo correcto y reusar helpers existentes en vez de duplicar lógica. - Mejorar manejo de errores/validaciones solo donde el bug lo justifique -- no expandir el alcance.
- Aplicar la skill
timermeet-code-commentera cualquier lógica no obvia que se toque.
Fase 3 — Validación (antes del commit)
python -m py_compile timermeet.py timermeet_app/*.py
python -m unittest discover -s tests -v
python -m bandit -r timermeet_app timermeet.py build_exe.py -f txt
python -m pip_audit -r requirements.txt
Todo debe pasar. Si el fix toca UI o audio, ejecutar python timermeet.py y confirmar que abre sin excepciones en el log antes de cerrarlo (ver references/validation.md de timermeet-python-builder para más detalle). Confirmar que ninguna funcionalidad existente quedó rota y que no hay regresiones evidentes.
Fase 4 — Versionado
- Determinar el tipo de incremento:
- patch (
V1.0.X): fix de bug sin cambio de comportamiento visible más allá de la corrección. - minor (
V1.X.0): mejora o feature nueva compatible hacia atrás. - major (
VX.0.0): cambio de arquitectura o ruptura de compatibilidad.
- patch (
- Actualizar la versión en
timermeet_app/__init__.py,README.mdySDD.mdde forma consistente.
Fase 5 — Commit
Mensaje tipo conventional commit, por ejemplo:
fix: resolve alarm not firing when meeting has no teamsUrl (V2.0.1)
Fase 6 — Push (usar la skill timermeet-github-publisher para los detalles de cuenta/repo)
git status --short
git diff --stat
git add <archivos específicos>
git commit -m "<mensaje>"
git tag v<version>
git push origin main
git push origin v<version>
Explicar brevemente qué hace cada comando si el usuario no está familiarizado. Si corresponde publicar un release en GitHub (con o sin TimerMeet.exe adjunto), usar gh release create como se documenta en timermeet-github-publisher/references/github-commands.md.
Entregables al usuario (en este orden)
- Análisis de errores: lista de problemas, causa raíz, impacto.
- Cambios realizados: qué se corrigió y cómo.
- Nueva versión: número y justificación del tipo de incremento.
- Resumen del código actualizado (diff o archivos tocados).
- Mensaje de commit.
- Comandos paso a paso con una breve explicación de cada uno.
Forma de trabajo
- No omitir el análisis. No hacer cambios innecesarios. No sobre-ingenierizar.
- Priorizar estabilidad sobre refactorización agresiva.
- Si hay duda sobre alcance o causa raíz, explicar antes de cambiar.