Productividad del desarrollador

Caveman Commit

Julius BrusseeApache-2.0Idioma del Skill: Inglés
Licencia verificadaSin scripts
DemostraciónEjecución real · claude-opus-5-5 · octubre de 2026
Write a commit message for this staged diff: ```diff --- a/src/auth/session.py +++ b/src/auth/session.py @@ -8,9 +8,15 @@ SESSION_TTL = timedelta(hours=12) def is_session_valid(session) -> bool: - return session.created_at + SESSION_TTL > datetime.now() + # created_at is stored in UTC; naive local now() made sessions expire + # early or late depending on the server's timezone. + return session.created_at + SESSION_TTL > datetime.now(timezone.utc) --- a/tests/test_session.py +++ b/tests/test_session.py @@ -20,3 +20,12 @@ def test_session_expires_after_ttl(): assert not is_session_valid(old) + + +def test_session_valid_on_non_utc_server(monkeypatch): + monkeypatch.setenv("TZ", "Asia/Shanghai") + time.tzset() + fresh = make_session(created_at=datetime.now(timezone.utc)) + assert is_session_valid(fresh) ``` Users on our Singapore and Shanghai servers were being logged out about 8 hours early. This fixes issue #214.
Skill: caveman-commit
fix(auth): compare session expiry against UTC now

created_at is stored in UTC, but expiry was checked against naive
local datetime.now(). On UTC+8 servers (Singapore, Shanghai) users
were logged out ~8 hours early.

Closes #214

The diff doesn't show any import changes, so check two things before you commit:

  • session.py needs timezone imported from datetime.
  • The test file needs time and timezone imported.

created_at also has to be timezone-aware. If it's ever stored as a naive datetime, comparing it with datetime.now(timezone.utc) will raise a TypeError.

Real run recorded with claude-code / claude-opus-5-5. Output is shown verbatim, unmodified.

Qué hace

Escribe un mensaje de commit para tu cambio en formato Conventional Commits: <type>(<scope>): <imperative summary>, idealmente de 50 caracteres o menos y nunca de más de 72.

Cómo funciona

  1. Se activa con «write a commit», «commit message», /commit o /caveman-commit.
  2. Añade un cuerpo solo cuando el motivo no es obvio y siempre para cambios incompatibles, correcciones de seguridad, migraciones de datos y reversiones.
  3. Omite «this commit does…», los emojis y las líneas de atribución de IA, a menos que tus propias reglas exijan un trailer de atribución.

Ideal para

Mantener el historial de git breve, coherente y útil para la próxima persona que depure.

Conviene saber

Muestra el mensaje como un bloque de código y se detiene. No añade archivos al staging, no hace commit ni amend.

Notas y riesgos

Solo contiene instrucciones: sin scripts, sin acceso a la red y sin escritura de archivos. El paquete también contiene README, LICENSE y NOTICE del repositorio original. Nunca ejecuta comandos de git.

SKILL.md original4 archivos en este paquete