AgentPlayerAchievements

Plataforma local com tecnologia MCP transforma vibe coding em um jogo. Conquistas no estilo Steam para Claude Code, Hermes e outros.

Documentação

Agent Player Achievements (AGPA) 🏆

AGPA Logo

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

Sistema de conquistas gamificado para agentes de codificação de IA.
Ganhe XP, desbloqueie troféus, suba de nível — apenas fazendo o que você já faz.

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

Início Rápido · Como Funciona · Recursos · Ferramentas Suportadas · Comandos CLI · Pacotes da Comunidade · Painel · Segurança e Privacidade · Contribuindo · FAQ


Sem AGPA ❌

  • Sem visibilidade dos seus hábitos de codificação entre sessões
  • Não consegue acompanhar o progresso — está ficando mais rápido? Usando mais ferramentas? Não há como saber
  • Sem motivação para explorar todo o conjunto de recursos do seu agente
  • Mesma rotina todos os dias — sem surpresas, sem marcos

Com AGPA ✅

  • Rastreamento automático — cada chamada de ferramenta, edição de arquivo e commit git registrado automaticamente
  • Painel estilo Steam — barra de XP, níveis, sequências, mapas de calor, vitrine de conquistas
  • 217 conquistas em 11 categorias — de "Hello World" a "Completionist"
  • Feedback instantâneo — popups no terminal, notificações do macOS, sons de 8 bits ao desbloquear

Prévia do Painel

AGPA Home
Início — barra de XP, sequências, estatísticas do agente
Achievement Grid
Conquistas — 217 conquistas × 11 categorias
Achievement Sets
Conjuntos — coleções temáticas com acompanhamento de progresso
Achievement Detail
Cartão de Detalhes — raridade, data de desbloqueio, animação de repetição


Início Rápido

Pré-requisitos: 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

É isso. Continue usando seu agente — as conquistas desbloqueiam automaticamente enquanto você trabalha.

[!TIP] Quer ver como o painel fica sem esperar por desbloqueios reais? Execute agpa demo para gerar dados de exemplo instantaneamente.

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

Como 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

Dois canais de dados → um mecanismo → um painel:

CanalMétodoCapturas
Hook CLIHooks de ferramenta (subprocesso via stdin)file.read/write/edit, tool.complete, git.commit, session.start/end, task.complete, agent.spawn
Servidor MCPProtocolo STDIO (7 ferramentas)image.read, file.language_used, plan.mode_entered, user.message, automode.start, achievement config, explain

Ambos os canais gravam no mesmo log de eventos ~/.agent-achievements/. O mecanismo avalia 12 tipos de condição contra 217 conquistas.

[!NOTE] Zero sobrecarga. O Hook CLI é um subprocesso de submilissegundo. O servidor MCP roda em STDIO sem chamadas de rede. Todos os dados permanecem na sua máquina.

Recursos

  • 🎮 Painel de Conquistas — barra de XP, nível, sequência, mapa de calor de atividade, detalhamento de raridade, vitrine
  • 🏆 217 Conquistas em 11 categorias — de "Hello World" a "Completionist"
  • 🔥 Mapa de calor de atividade estilo GitHub — 4 meses de atividade de codificação de relance
  • 📸 Cartão de Compartilhamento — tema escuro/claro, bilíngue, PNG para download
  • 🔊 Efeitos sonoros e notificações de 8 bits — sons retrô graduados por raridade + notificações push na área de trabalho ao desbloquear
  • 📂 Multi-perfil — até 4 perfis, alterne a qualquer momento (trabalho, pessoal, experimentação)

Ferramentas Suportadas

Claude Code Kilo Code OpenCode Cursor VS Code Hermes OpenClaw

FerramentaRastreamento automáticoRastreamento MCPConfiguração mais fácil
Claude Codeagpa init detecta automaticamente
Kilo Codeplugin TS + config MCP
OpenCodeplugin TS + config MCP
Hermesconfig JSON MCP
OpenClawPlugin + config MCP

Todas as cinco ferramentas têm cobertura total de canal duplo, exceto Hermes (sem API de hook). Para qualquer cliente compatível com MCP (Cursor, VS Code, Windsurf, etc.), o rastreamento somente MCP funciona imediatamente — você apenas perde o rastreamento automático baseado em hooks.

[!TIP] Novo no MCP? Comece com agpa init — ele detecta automaticamente suas ferramentas instaladas e configura tudo. Configs JSON manuais abaixo são alternativas.

Claude Code — rastreamento automático + MCP (cobertura total)

agpa init detecta automaticamente o Claude Code e registra ambos os canais. Para configuração manual:

Config MCP (~/.claude/.mcp.json ou raiz do projeto .mcp.json):

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

Registro de hookagpa init adiciona entradas de hook às configurações do Claude Code. Verifique com agpa verify.

Cursor / VS Code — somente MCP

Esses editores suportam MCP, mas não expõem APIs de hook para rastreamento automático. Você obtém rastreamento de chamadas de ferramenta via 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 — rastreamento automático + MCP (cobertura total)

Essas ferramentas suportam plugins TS para rastreamento automático em nível de hook. agpa init registra o plugin + config MCP.

Config MCP manual (opencode.json ou configurações do Kilo Code):

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

O plugin TS (registrado por agpa init) lida com PostToolUse, SessionStart, SessionEnd e outros eventos de hook automaticamente.

Hermes — somente MCP

Hermes não expõe uma API de hook. O rastreamento baseado em MCP cobre chamadas de ferramenta e eventos de sessão.

Config MCP (~/.hermes/mcp.json):

{
  "mcpServers": {
    "agpa": {
      "command": "npx",
      "args": ["-y", "@eiainano/agpa", "agpa-mcp"]
    }
  }
}
OpenClaw — rastreamento automático + MCP (cobertura total)

OpenClaw suporta um sistema de plugins para rastreamento em nível de hook. agpa init registra tanto o plugin quanto a config MCP.

Config MCP manual:

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

Servidor MCP

AGPA executa um servidor Model Context Protocol (transporte stdio) que expõe 7 ferramentas para qualquer cliente compatível com MCP — Claude Desktop, Cursor, VS Code, Windsurf e outros.

FerramentaDescrição
achievement.trackRegistra um evento de agente (leve, gravação somente anexação <1ms)
achievement.pollAvalia eventos pendentes → verifica desbloqueios → retorna novas conquistas
achievement.statsObtém estatísticas do jogador: XP, nível, total de conquistas, sequências, atividade recente
achievement.showcaseExibe todas as definições de conquistas — nome, categoria, raridade, progresso
achievement.configLê/grava config do AGPA: idioma, preferências de notificação, perfil
achievement.suggestObtém recomendações personalizadas de conquistas com base no progresso atual
achievement.explainExplica por que uma conquista está (des)bloqueada — detalhamento de condições com histórico de eventos

Início rápido com qualquer cliente MCP:

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

Já instalou o AGPA globalmente? Execute agpa-mcp diretamente. O servidor detecta automaticamente seu perfil ativo e a origem da ferramenta.

Comandos CLI

ComandoDescrição
agpa initDetecta automaticamente e registra com suas ferramentas de agente
agpa uninstallRemove o AGPA de todas as ferramentas configuradas de forma limpa
agpa verifyVerifica a corretude da instalação
agpa doctorDiagnostica o estado do sistema
agpa dashboardInicia o painel de conquistas (localhost:3867)
agpa statsMostra resumo do progresso de conquistas
agpa progressLista todas as conquistas com status de desbloqueio
agpa profileGerencia perfis de conquistas (criar, listar, alternar, softwares, excluir)
agpa demoGera dados de demonstração MVP para testes
agpa resetRedefine todos os dados de rastreamento
agpa configVer/modificar config (idioma, som, debug...)
agpa showcaseGerencia vitrine (listar, fixar, desafixar, preenchimento automático)
agpa searchPesquisa conquistas por palavra-chave/raridade/categoria
agpa suggestSugere a próxima conquista a buscar
agpa soundAlterna efeitos sonoros de 8 bits graduados por raridade (ligado, desligado)
agpa activityVer sequência + mapa de calor de atividade de 4 meses
agpa exportExporta dados de conquistas como JSON
agpa importImporta de backup
agpa mcpInicia servidor MCP (modo stdio)
agpa webAlias para agpa dashboard
agpa packLista ou inspeciona pacotes de conquistas da comunidade instalados
agpa bannerAlterna tema de cor do banner do terminal (Neon/Arcade/Gold)
agpa historyNavega pelas entradas brutas do log de eventos
agpa explainMostra por que uma conquista está bloqueada/desbloqueada (detalhamento de condições)
agpa watchMonitor de progresso de conquistas em tempo real
agpa upgradeVerifica atualizações e atualiza o AGPA
agpa completionGera script de conclusão de shell (bash/zsh/fish)

Referência completa da CLI: agpa --help

Pacotes da Comunidade

Qualquer pessoa pode criar e compartilhar pacotes de conquistas. Coloque um arquivo YAML em ~/.agent-achievements/packs/ para instalar:

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

Veja Criando Pacotes de Conquistas para a especificação do formato do pacote, catálogo de tipos de evento e 12 tipos de condição.

Painel

Linha de estatísticas → Sequência + Mapa de calor → Vitrine → Grade de conquistas com busca/filtro

agpa dashboard           # default :3867
agpa dashboard 8080      # custom port
agpa dashboard --profile work   # launch with specific profile
  • Estatísticas: XP, nível, conquistas totais, sequência, tarefas, usos de ferramentas
  • Mapa de calor: grade de atividade de 4 meses no estilo GitHub
  • Vitrine: conquistas favoritas fixadas (até 6)
  • Grade de Conquistas: busca, ordenação por raridade/categoria, filtro desbloqueadas/bloqueadas
  • Alternância de som: efeitos de 8 bits classificados por raridade
  • Botão de compartilhar: gera um belo cartão bilíngue → download em PNG

Arquitetura

                    ┌─────────────────────────┐
                    │   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

Estrutura do Projeto

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)

🔒 Segurança e Privacidade

  • Local-first — Todos os dados de eventos permanecem em ~/.agent-achievements/. Sem telemetria, sem sincronização em nuvem, sem chamadas de rede em tempo de execução.
  • Auditável — O motor é composto por funções TypeScript puras que operam em arquivos JSONL. Sem ofuscação, sem blobs binários.
  • Dependências mínimas — 5 dependências de tempo de execução (@modelcontextprotocol/sdk, yaml, zod, figlet, tsx) — todas amplamente auditadas.
  • Isolamento STDIO — O servidor MCP se comunica apenas via entrada/saída padrão. Nenhum endpoint HTTP exposto.
  • Sandbox de hooks — O Hook CLI é executado como um subprocesso de submilissegundo — ele não pode persistir estado ou acessar a rede.
  • Cadeia de suprimentos — Sem módulos nativos, sem scripts de pós-instalação, sem downloads binários na instalação.

Para relatar uma vulnerabilidade, consulte SECURITY.md.

👥 Contribuindo

Aceitamos contribuições! Seja um pacote de conquistas, uma melhoria no Dashboard, uma nova integração de ferramenta ou uma correção no motor — há um caminho para cada nível de habilidade.

🌐 Variáveis de Ambiente

VariávelDescriçãoPadrãoValores
AGPA_PROFILENome do perfil ativodefaultqualquer string
AGPA_LANGIdioma da interfaceenen, zh
AGPA_ENABLED_CATEGORIESFiltra quais categorias de conquistas estão ativasallseparados por vírgula (ex.: onboarding,tool_mastery)
AGPA_DEBUGAtiva logs de depuração detalhadosfalsetrue
AGPA_SOUNDSubstitui efeitos sonorosconfiguraçãoon, off, true, false
AGPA_SIMPLE_ANIMATIONSUsa animações de terminal simplificadasfalsetrue
AGPA_BANNER_THEMEEstilo do banner de inicialização do CLIArcadeNeon, Arcade, Gold
AGPA_TELEMETRYAtiva telemetria anônima de usofalsetrue, false
AGPA_TELEMETRY_SERVERURL personalizada do endpoint de telemetria'' (nenhum)string de URL
AGPA_TOOL_SOURCESubstitui o identificador da fonte da ferramentadetectado automaticamenteclaude-code, hermes, openclaw, etc.
AGPA_MODELNome do modelo de IA atual (para conquistas)autoqualquer string de modelo

[!TIP] As variáveis de ambiente substituem as configurações de config.json. Defina-as no seu perfil de shell ou na configuração do agente para substituições persistentes.

FAQ

P: Isso deixa meu agente mais lento? R: Não. O Hook CLI é um subprocesso de submilissegundo. O servidor MCP roda em STDIO com zero sobrecarga de rede.

P: Posso usar com vários agentes? R: Sim. O assistente de inicialização detecta automaticamente Claude Code, Kilo Code, OpenCode, Hermes e OpenClaw. Cada um pode ter seu próprio perfil.

P: Minhas conquistas não estão desbloqueando? R: Execute agpa doctor — ele diagnostica o status de rastreamento, registro de hooks e cobertura de eventos.

P: Qual é a diferença entre isso e o WakaTime ou rastreadores de atividade de codificação? R: O WakaTime informa o que você fez — horas, linguagens, projetos. O AGPA torna isso divertido — XP, níveis, conquistas, sequências e doses de dopamina no estilo Steam. É gamificação aplicada sobre seu fluxo de trabalho existente, não outro painel para verificar. Pense como a diferença entre a contagem bruta de passos de um rastreador de fitness e uma medalha do Pokémon Go — mesmos dados, experiência diferente.

P: Posso personalizar os nomes das conquistas? R: Sim. A página /customize no dashboard permite renomear qualquer conquista.

Solução de Problemas

[!IMPORTANT] Primeiro passo para qualquer problema: Execute agpa doctor — ele diagnostica status de rastreamento, registro de hooks, cobertura de eventos e problemas de configuração de uma só vez.

SintomaCausa ProvávelCorreção
Conquistas não desbloqueiamHook/MCP não registradoExecute agpa doctor para verificar o registro de hooks + cobertura de eventos
Dashboard não iniciaPorta 3867 já em usoagpa dashboard 8080 (ou qualquer porta livre)
agpa init falhaFerramenta do agente não detectadaVerifique a lista de ferramentas suportadas; use configuração MCP JSON manual como alternativa
Sem notificações no macOSterminal-notifier ausenteExecute brew install terminal-notifier, ou agpa init instala automaticamente
Som não tocaContexto de áudio bloqueado pelo navegadorClique em qualquer lugar da página do dashboard para habilitar o áudio
Troca de perfil não funcionaPerfil não existeExecute agpa profile list para ver os perfis disponíveis, depois agpa profile switch <name>
Erros do Hook CLI nos logs do agentePipe stdin vazio (esperado na primeira execução)Normal — hooks são subprocessos de curta duração; erros são registrados em ~/.agent-achievements/error.log

Para problemas persistentes, verifique ~/.agent-achievements/error.log ou abra uma issue.

Histórico de Estrelas

Star History Chart

Licença

MIT — consulte LICENSE