AgentPlayerAchievements

Plataforma local impulsada por MCP que convierte el "vibe coding" en un juego. Logros al estilo Steam para Claude Code, Hermes y más.

Documentación

Agent Player Achievements (AGPA) 🏆

AGPA Logo

EN | 中文 | ES | 한국어 | 日本語

Sistema de logros gamificado para agentes de codificación de IA.
Gana XP, desbloquea trofeos, sube de nivel — solo haciendo lo que ya haces.

License: MIT 217 achievements 1207 tests Node >= 18 27 CLI commands GitHub stars Last commit i18n: 5 languages

Claude Code · Kilo Code · OpenCode · Hermes · OpenClaw

Inicio rápido · Cómo funciona · Características · Herramientas compatibles · Comandos CLI · Paquetes comunitarios · Panel · Seguridad y privacidad · Contribuir · FAQ


Sin AGPA ❌

  • Sin visibilidad de tus hábitos de codificación entre sesiones
  • No puedes seguir tu progreso — ¿vas más rápido? ¿Usas más herramientas? No hay forma de saberlo
  • Sin motivación para explorar todas las funciones de tu agente
  • La misma rutina todos los días — sin sorpresas, sin hitos

Con AGPA ✅

  • Seguimiento automático — cada llamada a herramienta, edición de archivo y commit de git se registra automáticamente
  • Panel estilo Steam — barra de XP, niveles, rachas, mapas de calor, vitrina de logros
  • 217 logros en 11 categorías — desde "Hello World" hasta "Completionist"
  • Retroalimentación instantánea — ventanas emergentes en terminal, notificaciones de macOS, sonidos de 8 bits al desbloquear

Vista previa del panel

AGPA Home
Inicio — barra de XP, rachas, estadísticas del agente
Achievement Grid
Logros — 217 logros × 11 categorías
Achievement Sets
Conjuntos — colecciones temáticas con seguimiento de progreso
Achievement Detail
Tarjeta de detalle — rareza, fecha de desbloqueo, animación de repetición


Inicio rápido

Requisitos previos: Node.js ≥ 18

# Option A: install globally (recommended for users)
npm install -g @eiainano/agpa
agpa init

# Option B: clone and link (recommended for contributors)
git clone https://github.com/eiainano/AgentPlayerAchievements.git
cd AgentPlayerAchievements && npm install && npm link
agpa init

Eso es todo. Sigue usando tu agente — los logros se desbloquean automáticamente mientras trabajas.

[!TIP] ¿Quieres ver cómo se ve el panel sin esperar desbloqueos reales? Ejecuta agpa demo para generar datos de muestra al instante.

agpa dashboard         # open the achievement dashboard
agpa stats             # check your progress
agpa assets download   # (optional) pre-download all 219 pixel-art badges

Cómo funciona

Your Coding Session
  │
  ├─ You code, agent responds — every action is tracked
  │   └─ dual-channel: MCP tools + Hook events
  │
  ├─ Session ends → engine evaluates 217 achievements
  │   └─ unlocked? → macOS notification 🎉
  │
  └─ agpa dashboard → view, sort, filter, share

Dos canales de datos → un motor → un panel:

CanalMétodoCaptura
Hook CLIHooks de herramientas (subproceso vía stdin)file.read/write/edit, tool.complete, git.commit, session.start/end, task.complete, agent.spawn
Servidor MCPProtocolo STDIO (7 herramientas)image.read, file.language_used, plan.mode_entered, user.message, automode.start, achievement config, explain

Ambos canales escriben en el mismo registro de eventos ~/.agent-achievements/. El motor evalúa 12 tipos de condiciones contra 217 logros.

[!NOTE] Cero sobrecarga. El Hook CLI es un subproceso de sub-milisegundo. El servidor MCP se ejecuta en STDIO sin llamadas de red. Todos los datos permanecen en tu máquina.

Características

  • 🎮 Panel de logros — barra de XP, nivel, racha, mapa de calor de actividad, desglose de rareza, vitrina
  • 🏆 217 logros en 11 categorías — desde "Hello World" hasta "Completionist"
  • 🔥 Mapa de calor de actividad estilo GitHub — 4 meses de actividad de codificación de un vistazo
  • 📸 Tarjeta para compartir — tema claro/oscuro, bilingüe, PNG descargable
  • 🔊 Efectos de sonido y notificaciones de 8 bits — sonidos retro graduados por rareza + notificaciones push de escritorio al desbloquear
  • 📂 Multi-perfil — hasta 4 perfiles, cambia cuando quieras (trabajo, personal, experimentación)

Herramientas compatibles

Claude Code Kilo Code OpenCode Cursor VS Code Hermes OpenClaw

HerramientaAuto-seguimientoSeguimiento MCPConfiguración más fácil
Claude Codeagpa init detecta automáticamente
Kilo CodePlugin TS + configuración MCP
OpenCodePlugin TS + configuración MCP
HermesConfiguración MCP JSON
OpenClawPlugin + configuración MCP

Las cinco herramientas tienen cobertura completa de doble canal excepto Hermes (sin API de hooks). Para cualquier cliente compatible con MCP (Cursor, VS Code, Windsurf, etc.), el seguimiento solo con MCP funciona de inmediato — solo te pierdes el auto-seguimiento basado en hooks.

[!TIP] ¿Nuevo en MCP? Empieza con agpa init — detecta automáticamente tus herramientas instaladas y configura todo. Las configuraciones JSON manuales a continuación son alternativas.

Claude Code — auto-seguimiento + MCP (cobertura completa)

agpa init detecta automáticamente Claude Code y registra ambos canales. Para configuración manual:

Configuración MCP (~/.claude/.mcp.json o .mcp.json en la raíz del proyecto):

{
  "mcpServers": {
    "agpa": {
      "command": "npx",
      "args": ["-y", "@eiainano/agpa", "agpa-mcp"]
    }
  }
}

Registro de hooksagpa init añade entradas de hooks a tu configuración de Claude Code. Verifica con agpa verify.

Cursor / VS Code — solo MCP

Estos editores soportan MCP pero no exponen APIs de hooks para auto-seguimiento. Obtienes seguimiento de llamadas a herramientas vía MCP.

Cursor (.cursor/mcp.json):

{
  "mcpServers": {
    "agpa": {
      "command": "npx",
      "args": ["-y", "@eiainano/agpa", "agpa-mcp"]
    }
  }
}

VS Code (.vscode/mcp.json):

{
  "mcpServers": {
    "agpa": {
      "command": "npx",
      "args": ["-y", "@eiainano/agpa", "agpa-mcp"]
    }
  }
}
Kilo Code / OpenCode — auto-seguimiento + MCP (cobertura completa)

Estas herramientas soportan plugins TS para auto-seguimiento a nivel de hooks. agpa init registra el plugin + configuración MCP.

Configuración MCP manual (opencode.json o ajustes de Kilo Code):

{
  "mcpServers": {
    "agpa": {
      "command": "npx",
      "args": ["-y", "@eiainano/agpa", "agpa-mcp"]
    }
  }
}

El plugin TS (registrado por agpa init) maneja PostToolUse, SessionStart, SessionEnd y otros eventos de hooks automáticamente.

Hermes — solo MCP

Hermes no expone una API de hooks. El seguimiento basado en MCP cubre llamadas a herramientas y eventos de sesión.

Configuración MCP (~/.hermes/mcp.json):

{
  "mcpServers": {
    "agpa": {
      "command": "npx",
      "args": ["-y", "@eiainano/agpa", "agpa-mcp"]
    }
  }
}
OpenClaw — auto-seguimiento + MCP (cobertura completa)

OpenClaw soporta un sistema de plugins para seguimiento a nivel de hooks. agpa init registra tanto el plugin como la configuración MCP.

Configuración MCP manual:

{
  "mcpServers": {
    "agpa": {
      "command": "npx",
      "args": ["-y", "@eiainano/agpa", "agpa-mcp"]
    }
  }
}

Servidor MCP

AGPA ejecuta un servidor Model Context Protocol (transporte stdio) que expone 7 herramientas para cualquier cliente compatible con MCP — Claude Desktop, Cursor, VS Code, Windsurf y más.

HerramientaDescripción
achievement.trackRegistrar un evento de agente (ligero, escritura de solo añadir <1ms)
achievement.pollEvaluar eventos pendientes → comprobar desbloqueos → devolver nuevos logros
achievement.statsObtener estadísticas del jugador: XP, nivel, logros totales, rachas, actividad reciente
achievement.showcaseMostrar todas las definiciones de logros — nombre, categoría, rareza, progreso
achievement.configLeer/escribir configuración de AGPA: idioma, preferencias de notificación, perfil
achievement.suggestObtener recomendaciones personalizadas de logros según el progreso actual
achievement.explainExplicar por qué un logro está (des)bloqueado — desglose de condiciones con historial de eventos

Inicio rápido con cualquier cliente MCP:

{
  "mcpServers": {
    "agpa": {
      "command": "npx",
      "args": ["-y", "@eiainano/agpa", "agpa-mcp"]
    }
  }
}

¿Ya tienes AGPA instalado globalmente? Ejecuta agpa-mcp directamente. El servidor detecta automáticamente tu perfil activo y la fuente de la herramienta.

Comandos CLI

ComandoDescripción
agpa initDetectar automáticamente y registrar con tus herramientas de agente
agpa uninstallEliminar AGPA limpiamente de todas las herramientas configuradas
agpa verifyVerificar la correcta instalación
agpa doctorDiagnosticar el estado del sistema
agpa dashboardIniciar el panel de logros (localhost:3867)
agpa statsMostrar resumen de progreso de logros
agpa progressListar todos los logros con estado de desbloqueo
agpa profileGestionar perfiles de logros (crear, listar, cambiar, softwares, eliminar)
agpa demoGenerar datos de demostración MVP para pruebas
agpa resetRestablecer todos los datos de seguimiento
agpa configVer/modificar configuración (idioma, sonido, depuración...)
agpa showcaseGestionar vitrina (listar, fijar, desfijar, autocompletar)
agpa searchBuscar logros por palabra clave/rareza/categoría
agpa suggestSugerir el siguiente logro a conseguir
agpa soundActivar/desactivar efectos de sonido de 8 bits graduados por rareza (on, off)
agpa activityVer racha + mapa de calor de actividad de 4 meses
agpa exportExportar datos de logros como JSON
agpa importImportar desde copia de seguridad
agpa mcpIniciar servidor MCP (modo stdio)
agpa webAlias de agpa dashboard
agpa packListar o inspeccionar paquetes de logros comunitarios instalados
agpa bannerCambiar tema de color del banner de terminal (Neon/Arcade/Gold)
agpa historyNavegar por entradas del registro de eventos sin procesar
agpa explainMostrar por qué un logro está bloqueado/desbloqueado (desglose de condiciones)
agpa watchMonitor de progreso de logros en tiempo real
agpa upgradeComprobar actualizaciones y actualizar AGPA
agpa completionGenerar script de autocompletado de shell (bash/zsh/fish)

Referencia completa de CLI: agpa --help

Paquetes comunitarios

Cualquiera puede crear y compartir paquetes de logros. Coloca un archivo YAML en ~/.agent-achievements/packs/ para instalarlo:

agpa pack list              # list installed packs
agpa pack info <id>         # show pack details

Consulta Creación de paquetes de logros para la especificación del formato de paquete, el catálogo de tipos de eventos y los 12 tipos de condiciones.

Panel

Fila de estadísticas → Racha + Mapa de calor → Vitrina → Cuadrícula de logros con búsqueda/filtro

agpa dashboard           # default :3867
agpa dashboard 8080      # custom port
agpa dashboard --profile work   # launch with specific profile
  • Estadísticas: XP, nivel, logros totales, racha, tareas, usos de herramientas
  • Mapa de calor: cuadrícula de actividad de 4 meses estilo GitHub
  • Vitrina: logros favoritos fijados (hasta 6)
  • Cuadrícula de logros: búsqueda, ordenar por rareza/categoría, filtrar desbloqueados/bloqueados
  • Alternar sonido: efectos de 8 bits clasificados por rareza
  • Botón de compartir: genera una hermosa tarjeta bilingüe → descarga PNG

Arquitectura

                    ┌─────────────────────────┐
                    │   Engine (src/engine/)   │
                    │   track() / poll()       │
                    └─────────────────────────┘
                      ↗                    ↖
            MCP Server               Hook CLI
          (src/main.ts)           (src/cli/hook.ts)
                │                        │
          STDIO long-lived      short-lived subprocess
                │                  (stdin pipe)
                │                        │
          Agent calls             Hooks fire
          consciously             automatically
                │                        │
          ┌─────┴─────┐          ┌──────┴──────┐
          │ Manual     │          │ Auto-track  │
          │ image.read │          │ tool.complete│
          │ lang_used  │          │ file.edit   │
          │ plan.mode  │          │ session.*   │
          │ ...        │          │ agent.spawn │
          └───────────┘          └─────────────┘
                    ╲            ╱
                     event.log  ← both write here
                          │
                     engine.poll()
                          │
                     state.json
                          │
                     Dashboard

Estructura del Proyecto

src/
├── main.ts                  # MCP Server entry (STDIO)
├── tool-registry.ts         # Central tool registration
├── cli/
│   ├── index.ts             # Unified CLI entry (27 commands)
│   ├── hook.ts              # Hook CLI (track + poll + auto modes)
│   ├── init.ts              # Interactive install wizard
│   ├── dashboard.ts         # Dashboard launcher
│   ├── doctor.ts            # System diagnostic
│   └── ...                  # 22 more CLI commands
├── engine/
│   ├── engine.ts            # Core engine (track / poll / stats)
│   ├── evaluator.ts         # 12 condition type evaluators
│   ├── store.ts             # JSONL event log + state persistence
│   ├── types.ts             # TypeScript interfaces
│   └── yaml-parser.ts       # YAML achievement definition parser
├── dashboard/
│   ├── server.ts            # HTTP server + API routes
│   ├── api.ts               # Card data, stats aggregation
│   ├── public/              # Zero-framework HTML/CSS/JS frontend
│   └── customize-api.ts     # Self-customize endpoint
├── tools/                   # MCP tool definitions (7 tools)
├── utils/                   # notify, validate, profile, pixel-art, battery, etc.
├── verify/
│   └── auditor.ts           # Achievement verification logic
├── config.ts                # Global configuration
└── helpers.ts               # Shared utilities

pixel-art-output/            # Logo images (README)
achievement-definitions.yaml   # 217 achievement definitions (authoritative)
scripts/                     # dev tools (logo gen, pixel art gen, sounds)

🔒 Seguridad y Privacidad

  • Local primero — Todos los datos de eventos permanecen en ~/.agent-achievements/. Sin telemetría, sin sincronización en la nube, sin llamadas de red en tiempo de ejecución.
  • Auditable — El motor son funciones puras de TypeScript que operan sobre archivos JSONL. Sin ofuscación, sin blobs binarios.
  • Dependencias mínimas — 5 dependencias de ejecución (@modelcontextprotocol/sdk, yaml, zod, figlet, tsx) — todas ampliamente auditadas.
  • Aislamiento STDIO — El servidor MCP se comunica solo mediante E/S estándar. No se exponen endpoints HTTP.
  • Sandbox de Hook — La CLI de Hook se ejecuta como un subproceso de sub-milisegundo — no puede persistir estado ni acceder a la red.
  • Cadena de suministro — Sin módulos nativos, sin scripts de postinstalación, sin descargas binarias en la instalación.

Para reportar una vulnerabilidad, consulta SECURITY.md.

👥 Contribuciones

¡Damos la bienvenida a contribuciones! Ya sea un paquete de logros, una mejora del Dashboard, una nueva integración de herramienta o una corrección del motor — hay un camino para cada nivel de habilidad.

🌐 Variables de Entorno

VariableDescripciónPredeterminadoValores
AGPA_PROFILENombre del perfil activodefaultcualquier cadena
AGPA_LANGIdioma de la interfazenen, zh
AGPA_ENABLED_CATEGORIESFiltrar qué categorías de logros están activasallseparados por comas (p. ej. onboarding,tool_mastery)
AGPA_DEBUGHabilitar registro de depuración detalladofalsetrue
AGPA_SOUNDSobrescribir efectos de sonidoconfiguraciónon, off, true, false
AGPA_SIMPLE_ANIMATIONSUsar animaciones de terminal simplificadasfalsetrue
AGPA_BANNER_THEMEEstilo del banner de inicio de CLIArcadeNeon, Arcade, Gold
AGPA_TELEMETRYHabilitar telemetría de uso anónimafalsetrue, false
AGPA_TELEMETRY_SERVERURL de endpoint de telemetría personalizada'' (ninguno)cadena URL
AGPA_TOOL_SOURCESobrescribir identificador de fuente de herramientaauto-detectadoclaude-code, hermes, openclaw, etc.
AGPA_MODELNombre del modelo de IA actual (para logros)autocualquier cadena de modelo

[!TIP] Las variables de entorno sobrescriben la configuración de config.json. Configúralas en tu perfil de shell o en la configuración del agente para sobrescrituras persistentes.

Preguntas Frecuentes

P: ¿Esto ralentiza mi agente? R: No. La CLI de Hook es un subproceso de sub-milisegundo. El servidor MCP se ejecuta en STDIO con cero sobrecarga de red.

P: ¿Puedo usarlo con múltiples agentes? R: Sí. El asistente de inicialización detecta automáticamente Claude Code, Kilo Code, OpenCode, Hermes y OpenClaw. Cada uno puede tener su propio perfil.

P: ¿Mis logros no se desbloquean? R: Ejecuta agpa doctor — diagnostica el estado de seguimiento, el registro de hooks y la cobertura de eventos.

P: ¿En qué se diferencia de WakaTime o de los rastreadores de actividad de codificación? R: WakaTime te dice qué hiciste — horas, lenguajes, proyectos. AGPA lo hace divertido — XP, niveles, logros, rachas y descargas de dopamina estilo Steam. Es gamificación superpuesta a tu flujo de trabajo existente, no otro panel que revisar. Piénsalo como la diferencia entre el conteo de pasos crudo de un rastreador de fitness y una insignia de Pokémon Go — mismos datos, experiencia diferente.

P: ¿Puedo personalizar los nombres de los logros? R: Sí. La página /customize en el panel te permite renombrar cualquier logro.

Solución de Problemas

[!IMPORTANT] Primer paso para cualquier problema: Ejecuta agpa doctor — diagnostica el estado de seguimiento, el registro de hooks, la cobertura de eventos y los problemas de configuración de una sola vez.

SíntomaCausa probableSolución
Los logros no se desbloqueanHook/MCP no registradoEjecuta agpa doctor para verificar el registro de hooks + cobertura de eventos
El panel no se iniciaEl puerto 3867 ya está en usoagpa dashboard 8080 (o cualquier puerto libre)
agpa init fallaHerramienta de agente no detectadaRevisa la lista de herramientas compatibles; usa la configuración manual de MCP JSON como respaldo
Sin notificaciones de macOSFalta terminal-notifierEjecuta brew install terminal-notifier, o agpa init lo instala automáticamente
El sonido no se reproduceContexto de audio bloqueado por el navegadorHaz clic en cualquier parte de la página del panel para habilitar el audio
El cambio de perfil no funcionaEl perfil no existeagpa profile list para ver los perfiles disponibles, luego agpa profile switch <name>
Errores de la CLI de Hook en los registros del agenteLa tubería stdin está vacía (esperado en la primera ejecución)Normal — los hooks son subprocesos de corta duración; los errores se registran en ~/.agent-achievements/error.log

Para problemas persistentes, revisa ~/.agent-achievements/error.log o abre un issue.

Historial de Estrellas

Star History Chart

Licencia

MIT — consulta LICENSE