commitling

Una mascota pixel-art que vive en el README de tu perfil de GitHub y crece con tus commits.

Así se ve tu tarjeta, animada: Árbol ancestral, radiante. 3.900 XP, racha de 14 días, 27 días activos en los últimos 30. Accesorios: gorro, bufanda, flor.

Pruébalo con tu usuario

Escribe tu usuario de GitHub y mira tu criatura al momento. Se dibuja en tu navegador con el mismo código que la Action; lo único que sale de tu ordenador es la petición pública a GitHub (hasta 60 por hora y por conexión).

En vivo

La criatura de @BertMarti, generada con su actividad pública en GitHub

La criatura de @BertMarti, regenerada cada día con su actividad pública.

Cómo funciona

  1. Una GitHub Action lee tu actividad pública de los últimos 90 días: commits, pull requests, issues y el resto de eventos.
  2. Calcula tu experiencia, tu racha de días seguidos y tus días activos. Los días se cuentan en UTC.
  3. Dibuja un SVG animado: la criatura crece por fases, cambia de ánimo según tu actividad reciente y desbloquea accesorios.
  4. Tu workflow guarda el SVG en tu repositorio de perfil solo si ha cambiado. Mismos datos, mismo dibujo.

Galería

Todas las especies, fases y ánimos, dibujados con estadísticas de ejemplo de un usuario ficticio. La especie se elige con la entrada species de la Action (o --species en la línea de órdenes); si no la indicas, sale el brote de musgo.

Brote de musgo

La especie predeterminada: un brote de musgo con ojos que acaba siendo un árbol ancestral.

Semilla · desde 0 XP

commitling: Semilla, durmiendo. 45 XP, racha de 0 días, 4 días activos en los últimos 30.
Durmiendo
commitling: Semilla, aburrido. 45 XP, racha de 0 días, 9 días activos en los últimos 30.
Aburrido
commitling: Semilla, contento. 45 XP, racha de 3 días, 16 días activos en los últimos 30.
Contento
commitling: Semilla, radiante. 45 XP, racha de 7 días, 22 días activos en los últimos 30.
Radiante

Brote · desde 100 XP

commitling: Brote, durmiendo. 235 XP, racha de 0 días, 4 días activos en los últimos 30.
Durmiendo
commitling: Brote, aburrido. 235 XP, racha de 0 días, 9 días activos en los últimos 30.
Aburrido
commitling: Brote, contento. 235 XP, racha de 3 días, 16 días activos en los últimos 30.
Contento
commitling: Brote, radiante. 235 XP, racha de 7 días, 22 días activos en los últimos 30.
Radiante

Retoño · desde 400 XP

commitling: Retoño, durmiendo. 670 XP, racha de 0 días, 4 días activos en los últimos 30.
Durmiendo
commitling: Retoño, aburrido. 670 XP, racha de 0 días, 9 días activos en los últimos 30.
Aburrido
commitling: Retoño, contento. 670 XP, racha de 3 días, 16 días activos en los últimos 30.
Contento
commitling: Retoño, radiante. 670 XP, racha de 7 días, 22 días activos en los últimos 30.
Radiante

Arbusto · desde 1.000 XP

commitling: Arbusto, durmiendo. 1.675 XP, racha de 0 días, 4 días activos en los últimos 30.
Durmiendo
commitling: Arbusto, aburrido. 1.675 XP, racha de 0 días, 9 días activos en los últimos 30.
Aburrido
commitling: Arbusto, contento. 1.675 XP, racha de 3 días, 16 días activos en los últimos 30.
Contento
commitling: Arbusto, radiante. 1.675 XP, racha de 7 días, 22 días activos en los últimos 30.
Radiante

Árbol ancestral · desde 2.500 XP

commitling: Árbol ancestral, durmiendo. 3.140 XP, racha de 0 días, 4 días activos en los últimos 30.
Durmiendo
commitling: Árbol ancestral, aburrido. 3.140 XP, racha de 0 días, 9 días activos en los últimos 30.
Aburrido
commitling: Árbol ancestral, contento. 3.140 XP, racha de 3 días, 16 días activos en los últimos 30.
Contento
commitling: Árbol ancestral, radiante. 3.140 XP, racha de 7 días, 22 días activos en los últimos 30.
Radiante

Accesorios · Brote de musgo

commitling: Retoño, contento. 700 XP, racha de 3 días, 20 días activos en los últimos 30. Accesorios: gorro.
Gorro: más de 30 días activos en 90
commitling: Arbusto, radiante. 1.500 XP, racha de 12 días, 21 días activos en los últimos 30. Accesorios: bufanda.
Bufanda: racha de 10 días o más
commitling: Brote, contento. 260 XP, racha de 2 días, 12 días activos en los últimos 30. Accesorios: flor.
Flor: 5 repositorios distintos o más
commitling: Árbol ancestral, radiante. 3.900 XP, racha de 14 días, 27 días activos en los últimos 30. Accesorios: gorro, bufanda, flor.
Todo desbloqueado

Hongo

Una seta pequeña con ojos que empieza siendo una espora y acaba en un corro de setas. Se elige con species: mushroom.

Espora · desde 0 XP

commitling: Espora, durmiendo. 45 XP, racha de 0 días, 4 días activos en los últimos 30.
Durmiendo
commitling: Espora, aburrido. 45 XP, racha de 0 días, 9 días activos en los últimos 30.
Aburrido
commitling: Espora, contento. 45 XP, racha de 3 días, 16 días activos en los últimos 30.
Contento
commitling: Espora, radiante. 45 XP, racha de 7 días, 22 días activos en los últimos 30.
Radiante

Botón · desde 100 XP

commitling: Botón, durmiendo. 235 XP, racha de 0 días, 4 días activos en los últimos 30.
Durmiendo
commitling: Botón, aburrido. 235 XP, racha de 0 días, 9 días activos en los últimos 30.
Aburrido
commitling: Botón, contento. 235 XP, racha de 3 días, 16 días activos en los últimos 30.
Contento
commitling: Botón, radiante. 235 XP, racha de 7 días, 22 días activos en los últimos 30.
Radiante

Seta · desde 400 XP

commitling: Seta, durmiendo. 670 XP, racha de 0 días, 4 días activos en los últimos 30.
Durmiendo
commitling: Seta, aburrido. 670 XP, racha de 0 días, 9 días activos en los últimos 30.
Aburrido
commitling: Seta, contento. 670 XP, racha de 3 días, 16 días activos en los últimos 30.
Contento
commitling: Seta, radiante. 670 XP, racha de 7 días, 22 días activos en los últimos 30.
Radiante

Seta grande · desde 1.000 XP

commitling: Seta grande, durmiendo. 1.675 XP, racha de 0 días, 4 días activos en los últimos 30.
Durmiendo
commitling: Seta grande, aburrido. 1.675 XP, racha de 0 días, 9 días activos en los últimos 30.
Aburrido
commitling: Seta grande, contento. 1.675 XP, racha de 3 días, 16 días activos en los últimos 30.
Contento
commitling: Seta grande, radiante. 1.675 XP, racha de 7 días, 22 días activos en los últimos 30.
Radiante

Corro de setas · desde 2.500 XP

commitling: Corro de setas, durmiendo. 3.140 XP, racha de 0 días, 4 días activos en los últimos 30.
Durmiendo
commitling: Corro de setas, aburrido. 3.140 XP, racha de 0 días, 9 días activos en los últimos 30.
Aburrido
commitling: Corro de setas, contento. 3.140 XP, racha de 3 días, 16 días activos en los últimos 30.
Contento
commitling: Corro de setas, radiante. 3.140 XP, racha de 7 días, 22 días activos en los últimos 30.
Radiante

Accesorios · Hongo

commitling: Seta, contento. 700 XP, racha de 3 días, 20 días activos en los últimos 30. Accesorios: gorro.
Gorro: más de 30 días activos en 90
commitling: Seta grande, radiante. 1.500 XP, racha de 12 días, 21 días activos en los últimos 30. Accesorios: bufanda.
Bufanda: racha de 10 días o más
commitling: Botón, contento. 260 XP, racha de 2 días, 12 días activos en los últimos 30. Accesorios: flor.
Flor: 5 repositorios distintos o más
commitling: Corro de setas, radiante. 3.900 XP, racha de 14 días, 27 días activos en los últimos 30. Accesorios: gorro, bufanda, flor.
Todo desbloqueado

Cactus

Un cactus pequeño en su maceta que empieza siendo una yema y acaba en un cactus centenario. Se elige con species: cactus.

Yema · desde 0 XP

commitling: Yema, durmiendo. 45 XP, racha de 0 días, 4 días activos en los últimos 30.
Durmiendo
commitling: Yema, aburrido. 45 XP, racha de 0 días, 9 días activos en los últimos 30.
Aburrido
commitling: Yema, contento. 45 XP, racha de 3 días, 16 días activos en los últimos 30.
Contento
commitling: Yema, radiante. 45 XP, racha de 7 días, 22 días activos en los últimos 30.
Radiante

Bolita · desde 100 XP

commitling: Bolita, durmiendo. 235 XP, racha de 0 días, 4 días activos en los últimos 30.
Durmiendo
commitling: Bolita, aburrido. 235 XP, racha de 0 días, 9 días activos en los últimos 30.
Aburrido
commitling: Bolita, contento. 235 XP, racha de 3 días, 16 días activos en los últimos 30.
Contento
commitling: Bolita, radiante. 235 XP, racha de 7 días, 22 días activos en los últimos 30.
Radiante

Cactus · desde 400 XP

commitling: Cactus, durmiendo. 670 XP, racha de 0 días, 4 días activos en los últimos 30.
Durmiendo
commitling: Cactus, aburrido. 670 XP, racha de 0 días, 9 días activos en los últimos 30.
Aburrido
commitling: Cactus, contento. 670 XP, racha de 3 días, 16 días activos en los últimos 30.
Contento
commitling: Cactus, radiante. 670 XP, racha de 7 días, 22 días activos en los últimos 30.
Radiante

Cactus con brazos · desde 1.000 XP

commitling: Cactus con brazos, durmiendo. 1.675 XP, racha de 0 días, 4 días activos en los últimos 30.
Durmiendo
commitling: Cactus con brazos, aburrido. 1.675 XP, racha de 0 días, 9 días activos en los últimos 30.
Aburrido
commitling: Cactus con brazos, contento. 1.675 XP, racha de 3 días, 16 días activos en los últimos 30.
Contento
commitling: Cactus con brazos, radiante. 1.675 XP, racha de 7 días, 22 días activos en los últimos 30.
Radiante

Cactus centenario · desde 2.500 XP

commitling: Cactus centenario, durmiendo. 3.140 XP, racha de 0 días, 4 días activos en los últimos 30.
Durmiendo
commitling: Cactus centenario, aburrido. 3.140 XP, racha de 0 días, 9 días activos en los últimos 30.
Aburrido
commitling: Cactus centenario, contento. 3.140 XP, racha de 3 días, 16 días activos en los últimos 30.
Contento
commitling: Cactus centenario, radiante. 3.140 XP, racha de 7 días, 22 días activos en los últimos 30.
Radiante

Accesorios · Cactus

commitling: Cactus, contento. 700 XP, racha de 3 días, 20 días activos en los últimos 30. Accesorios: gorro.
Gorro: más de 30 días activos en 90
commitling: Cactus con brazos, radiante. 1.500 XP, racha de 12 días, 21 días activos en los últimos 30. Accesorios: bufanda.
Bufanda: racha de 10 días o más
commitling: Bolita, contento. 260 XP, racha de 2 días, 12 días activos en los últimos 30. Accesorios: flor.
Flor: 5 repositorios distintos o más
commitling: Cactus centenario, radiante. 3.900 XP, racha de 14 días, 27 días activos en los últimos 30. Accesorios: gorro, bufanda, flor.
Todo desbloqueado

Calabaza

Una calabaza de huerto con ojos que empieza siendo una pepita y acaba en una calabaza gigante. Se elige con species: pumpkin.

Pepita · desde 0 XP

commitling: Pepita, durmiendo. 45 XP, racha de 0 días, 4 días activos en los últimos 30.
Durmiendo
commitling: Pepita, aburrido. 45 XP, racha de 0 días, 9 días activos en los últimos 30.
Aburrido
commitling: Pepita, contento. 45 XP, racha de 3 días, 16 días activos en los últimos 30.
Contento
commitling: Pepita, radiante. 45 XP, racha de 7 días, 22 días activos en los últimos 30.
Radiante

Plántula · desde 100 XP

commitling: Plántula, durmiendo. 235 XP, racha de 0 días, 4 días activos en los últimos 30.
Durmiendo
commitling: Plántula, aburrido. 235 XP, racha de 0 días, 9 días activos en los últimos 30.
Aburrido
commitling: Plántula, contento. 235 XP, racha de 3 días, 16 días activos en los últimos 30.
Contento
commitling: Plántula, radiante. 235 XP, racha de 7 días, 22 días activos en los últimos 30.
Radiante

Calabacita · desde 400 XP

commitling: Calabacita, durmiendo. 670 XP, racha de 0 días, 4 días activos en los últimos 30.
Durmiendo
commitling: Calabacita, aburrido. 670 XP, racha de 0 días, 9 días activos en los últimos 30.
Aburrido
commitling: Calabacita, contento. 670 XP, racha de 3 días, 16 días activos en los últimos 30.
Contento
commitling: Calabacita, radiante. 670 XP, racha de 7 días, 22 días activos en los últimos 30.
Radiante

Calabaza · desde 1.000 XP

commitling: Calabaza, durmiendo. 1.675 XP, racha de 0 días, 4 días activos en los últimos 30.
Durmiendo
commitling: Calabaza, aburrido. 1.675 XP, racha de 0 días, 9 días activos en los últimos 30.
Aburrido
commitling: Calabaza, contento. 1.675 XP, racha de 3 días, 16 días activos en los últimos 30.
Contento
commitling: Calabaza, radiante. 1.675 XP, racha de 7 días, 22 días activos en los últimos 30.
Radiante

Calabaza gigante · desde 2.500 XP

commitling: Calabaza gigante, durmiendo. 3.140 XP, racha de 0 días, 4 días activos en los últimos 30.
Durmiendo
commitling: Calabaza gigante, aburrido. 3.140 XP, racha de 0 días, 9 días activos en los últimos 30.
Aburrido
commitling: Calabaza gigante, contento. 3.140 XP, racha de 3 días, 16 días activos en los últimos 30.
Contento
commitling: Calabaza gigante, radiante. 3.140 XP, racha de 7 días, 22 días activos en los últimos 30.
Radiante

Accesorios · Calabaza

commitling: Calabacita, contento. 700 XP, racha de 3 días, 20 días activos en los últimos 30. Accesorios: gorro.
Gorro: más de 30 días activos en 90
commitling: Calabaza, radiante. 1.500 XP, racha de 12 días, 21 días activos en los últimos 30. Accesorios: bufanda.
Bufanda: racha de 10 días o más
commitling: Plántula, contento. 260 XP, racha de 2 días, 12 días activos en los últimos 30. Accesorios: flor.
Flor: 5 repositorios distintos o más
commitling: Calabaza gigante, radiante. 3.900 XP, racha de 14 días, 27 días activos en los últimos 30. Accesorios: gorro, bufanda, flor.
Todo desbloqueado

Tarjeta compacta

Una insignia de 200x60 con la criatura, su fase, su ánimo y una barra de progreso, para firmas, barras laterales o la cabecera de un repositorio. Se pide con size: compact en la Action (o --size compact en la línea de órdenes); sin ella sale la tarjeta de siempre. Mismos dibujos, misma paleta y misma animación.

Brote de musgo

commitling, tarjeta compacta: Semilla, contento. 45 XP, racha de 3 días, 16 días activos en los últimos 30.
commitling, tarjeta compacta: Brote, contento. 235 XP, racha de 3 días, 16 días activos en los últimos 30.
commitling, tarjeta compacta: Retoño, contento. 670 XP, racha de 3 días, 16 días activos en los últimos 30.
commitling, tarjeta compacta: Arbusto, contento. 1.675 XP, racha de 3 días, 16 días activos en los últimos 30.
commitling, tarjeta compacta: Árbol ancestral, contento. 3.140 XP, racha de 3 días, 16 días activos en los últimos 30.

Hongo

commitling, tarjeta compacta: Espora, contento. 45 XP, racha de 3 días, 16 días activos en los últimos 30.
commitling, tarjeta compacta: Botón, contento. 235 XP, racha de 3 días, 16 días activos en los últimos 30.
commitling, tarjeta compacta: Seta, contento. 670 XP, racha de 3 días, 16 días activos en los últimos 30.
commitling, tarjeta compacta: Seta grande, contento. 1.675 XP, racha de 3 días, 16 días activos en los últimos 30.
commitling, tarjeta compacta: Corro de setas, contento. 3.140 XP, racha de 3 días, 16 días activos en los últimos 30.

Cactus

commitling, tarjeta compacta: Yema, contento. 45 XP, racha de 3 días, 16 días activos en los últimos 30.
commitling, tarjeta compacta: Bolita, contento. 235 XP, racha de 3 días, 16 días activos en los últimos 30.
commitling, tarjeta compacta: Cactus, contento. 670 XP, racha de 3 días, 16 días activos en los últimos 30.
commitling, tarjeta compacta: Cactus con brazos, contento. 1.675 XP, racha de 3 días, 16 días activos en los últimos 30.
commitling, tarjeta compacta: Cactus centenario, contento. 3.140 XP, racha de 3 días, 16 días activos en los últimos 30.

Calabaza

commitling, tarjeta compacta: Pepita, contento. 45 XP, racha de 3 días, 16 días activos en los últimos 30.
commitling, tarjeta compacta: Plántula, contento. 235 XP, racha de 3 días, 16 días activos en los últimos 30.
commitling, tarjeta compacta: Calabacita, contento. 670 XP, racha de 3 días, 16 días activos en los últimos 30.
commitling, tarjeta compacta: Calabaza, contento. 1.675 XP, racha de 3 días, 16 días activos en los últimos 30.
commitling, tarjeta compacta: Calabaza gigante, contento. 3.140 XP, racha de 3 días, 16 días activos en los últimos 30.

Reglas

Son deterministas: con los mismos datos, la criatura es siempre la misma.

Experiencia
Commit10 XP
Pull request abierta25 XP
Issue abierta5 XP
Otra actividad pública (estrellas, forks, comentarios…)2 XP
Fases
Semilla / Espora / Yema / Pepitadesde 0 XP
Brote / Botón / Bolita / Plántuladesde 100 XP
Retoño / Seta / Cactus / Calabacitadesde 400 XP
Arbusto / Seta grande / Cactus con brazos / Calabazadesde 1.000 XP
Árbol ancestral / Corro de setas / Cactus centenario / Calabaza gigantedesde 2.500 XP
Ánimos
Durmiendo7 días o más sin actividad (o ninguna)
Aburridode 3 a 6 días sin actividad
Contentoactividad en los últimos 3 días
Radianteracha de 5 días seguidos o más
Accesorios
Gorromás de 30 días activos en los últimos 90
Bufandaracha de 10 días o más
Flor5 repositorios distintos o más con commits, PR o issues

La racha cuenta días seguidos con actividad y se mantiene hasta el final del día siguiente, así no se rompe por la mañana antes de tu primer commit. Si GitHub no indica cuántos commits lleva un push, cuenta como uno.

Instálalo en tu perfil

Son unos 5 minutos y todo se hace en github.com: no hay que instalar nada en tu ordenador ni crear contraseñas o tokens. Elige cómo la quieres y copia lo que sale.

  1. Crea tu repositorio de perfil. Es un repositorio público que se llama exactamente igual que tu usuario (tu-usuario/tu-usuario); marca «Add a README file» al crearlo. Si ya lo tienes, salta este paso.
  2. Crea el archivo del workflow. En tu repositorio pulsa Add file → Create new file y escribe como nombre .github/workflows/commitling.yml (al escribir cada barra, GitHub crea la carpeta). Pega este contenido y pulsa Commit changes:
    name: commitling
    
    on:
      schedule:
        - cron: "23 5 * * *" # cada día a las 05:23 UTC
      workflow_dispatch:
    
    permissions:
      contents: write
    
    jobs:
      commitling:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v7
          - uses: BertMarti/commitling@v1
            with:
              out: commitling.svg
          - name: Guardar la criatura si ha cambiado
            run: |
              git add commitling.svg
              if git diff --cached --quiet; then
                echo "Sin cambios."
                exit 0
              fi
              git config user.name "github-actions[bot]"
              git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
              git commit -m "chore: actualiza commitling"
              if ! git push; then
                echo "::error title=commitling::No se pudo guardar la criatura en el repositorio. Comprueba que este archivo tiene «permissions: contents: write» y, si la rama está protegida, deja que github-actions[bot] suba cambios."
                exit 1
              fi
    

  3. Permisos: no tienes que hacer nada. La línea permissions: contents: write deja que el workflow guarde la imagen en tu repositorio, y nada más. Usa el token temporal que GitHub crea para cada ejecución: no hay secretos ni tokens que crear.
  4. Lánzalo por primera vez. Abre la pestaña Actions de tu repositorio (si te lo pregunta, pulsa «I understand my workflows, go ahead and enable them»), elige commitling a la izquierda y pulsa Run workflow y otra vez Run workflow. Después se ejecuta sola cada día a las 05:23 UTC.
  5. Añade la criatura a tu README. Edita el README.md de tu repositorio de perfil (el lápiz) y pega esto donde quieras verla:
    ![commitling](./commitling.svg)

  6. Mira el resultado. En uno o dos minutos la ejecución aparece con un ✓ verde y tu criatura sale en tu perfil. Si ves una imagen rota, la primera ejecución aún no ha terminado (o falló: mira abajo).

Si algo falla

Abre la ejecución en rojo en Actions: el mensaje de commitling sale arriba, en el resumen.

«No se pudo guardar la criatura en el repositorio»
Comprueba que el archivo tiene permissions: contents: write. Si sigue fallando, en Settings → Actions → General → Workflow permissions elige Read and write permissions, y si tu rama principal está protegida, permite que github-actions[bot] suba cambios.
«no existe en GitHub (404)»
El usuario de user: está mal escrito. Va sin @ y tal y como aparece en tu perfil; si quitas esa línea se usa el dueño del repositorio.
«se ha agotado el límite de peticiones»
Es pasajero: pulsa Run workflow más tarde. Si ya tenías una criatura, se conserva y el workflow ni siquiera falla; este error solo sale si aún no había ninguna.
No aparece «Run workflow»
El archivo debe estar en la rama principal, exactamente en .github/workflows/ y terminar en .yml. Recarga la página de Actions.
Se dejó de actualizar
GitHub pausa los workflows programados tras unos 60 días sin actividad en el repositorio: entra en Actions y pulsa Enable workflow.
¿Ya tienes el workflow y solo quieres añadir el tema oscuro?

Elige «Automático» arriba y sustituye tu archivo por el nuevo, o añade un segundo paso con theme: dark y out: commitling-dark.svg (y súmalo al git add). En el README usa:

<picture>
  <source media="(prefers-color-scheme: dark)" srcset="./commitling-dark.svg">
  <img alt="commitling" src="./commitling.svg">
</picture>

¿Prefieres la terminal? Con Go instalado, go run github.com/BertMarti/commitling/cmd/commitling@latest workflow --user tu-usuario --theme both escribe el mismo archivo.

Privacidad

commitling solo usa la API pública de eventos de GitHub: lo mismo que cualquiera puede ver en tu perfil. No lee repositorios privados, no guarda nada fuera de tu repositorio y no necesita más permisos que el GITHUB_TOKEN de tu propio workflow.