Skills do LoL Helper

Resumo das skills locais responsáveis por consultar a Riot API, manter o vault
e gerar relatórios do Oningume Guneta.

Fluxo pós-partida

Depois que o time terminar uma partida, o fluxo recomendado para uso interno é
o bundle:

/close_latest_match_cycle

No Discord, o comando indicado para o time é:

/analise

/analise aciona o ciclo de análise e prepara a publicação do relatório no
mesmo chat Discord.

analise

Objetivo: rodar o ciclo completo da última partida e publicar o relatório
no Discord em partes seguras.

A skill analise depende de close-latest-match-cycle e só deve publicar
depois que o ciclo estiver fechado e o relatório validado. O helper local:

skills/analise/scripts/prepare-analysis-report-discord --match-id BR1_3248491056 --jsonl
skills/analise/scripts/prepare-analysis-report-discord --report team-wiki/wiki/reports/matches/BR1_3248491056-analysis.md --jsonl

Regras do helper:

  • lê reports em wiki/reports/matches/;
  • exige frontmatter type: "match_analysis" e analyzed: true;
  • rejeita marcadores reais de incompleto (TODO/PLACEHOLDER em linha,
    blocos HINT, templates {{...}});
  • remove frontmatter YAML antes do envio;
  • remove comentários HTML internos;
  • converte wikilinks Obsidian [[page|Texto]] para Texto e [[page]] para
    page;
  • neutraliza mass mentions no Discord com zero-width space;
  • divide o conteúdo em partes de até 1900 caracteres.

O limite de content da API do Discord é 2000 caracteres por mensagem; a skill
usa 1900 como margem para cabeçalhos parte X/Y.

close-latest-match-cycle

Objetivo: executar o ciclo completo da última partida em fases.

É o bundle local dos 5 passos:

  1. Descobrir e ingerir partidas compartilhadas.
  2. Hidratar payloads pendentes.
  3. Preparar scaffold narrativo via analyze-latest-match.
  4. Finalizar análise e preparar recompilação de players.
  5. Finalizar recompilação e marcar players_analyzed: true.

Como duas etapas exigem trabalho do agente, o bundle é dividido em fases:

skills/close-latest-match-cycle/scripts/close-latest-match-cycle --check
skills/close-latest-match-cycle/scripts/close-latest-match-cycle
skills/close-latest-match-cycle/scripts/close-latest-match-cycle --post-narrative --match-id BR1_3248491056
skills/close-latest-match-cycle/scripts/close-latest-match-cycle --post-merge --match-id BR1_3248491056

Validação prática em 2026-06-04: a skill fechou BR1_3248491056 e
BR1_3247511781, ambas com analyzed: true e players_analyzed: true.

Discord bot e exposição de skills

O Discord está conectado ao agente lol-helper por binding:

openclaw agents bindings
# lol-helper <- discord

Estado operacional em 2026-06-04:

  • bot autenticado como Oningume no Faker;
  • canal Discord configurado, rodando e conectado;
  • agents.list[1].skills limitado a:
["close-latest-match-cycle", "analise"]

Comandos de skill antigos que pertenciam ao agente principal foram removidos do
registro global do Discord via API. Exemplos removidos: apple_reminders,
apple_notes, empreendedora, github, gog, home_assistant, discord.

Comandos de guild registrados para o Oningume Guneta:

/analise
/close_latest_match_cycle

Observações:

  • comandos globais do Discord podem demorar para sumir do cliente por cache;
  • comandos de guild aparecem quase imediatamente;
  • comandos core do OpenClaw podem continuar visíveis porque
    channels.discord.commands.native permanece true;
  • não salvar nem imprimir DISCORD_BOT_TOKEN.

report-latest-match

Objetivo: executar o fluxo pós-partida de ponta a ponta.

Descobre partidas recentes compartilhadas, cria páginas ausentes, hidrata os
payloads pendentes e conduz a análise narrativa da partida pendente mais
recente. É a skill indicada para uso rotineiro depois de jogar.

skills/report-latest-match/scripts/report-latest-match --check
skills/report-latest-match/scripts/report-latest-match

get-players-puuid

Objetivo: resolver os identificadores técnicos dos players cadastrados.

Lê os Riot IDs de PLAYER_REGISTRY, consulta ACCOUNT-V1 by-riot-id,
persiste as respostas raw sem sobrescrever evidência e preenche o campo
puuid das páginas em wiki/players/.

skills/get-players-puuid/scripts/get-players-puuid --check
skills/get-players-puuid/scripts/get-players-puuid
skills/get-players-puuid/scripts/get-players-puuid --slug goia
skills/get-players-puuid/scripts/get-players-puuid --refresh

ingest-shared-matches

Objetivo: descobrir partidas recentes compartilhadas e criar a estrutura
inicial compilada.

Consulta as cinco partidas mais recentes de cada player por padrão. Quando um
match aparece para pelo menos dois cadastrados, cria a página inicial em
wiki/matches/ com analyzed: false e cria ou atualiza o time canônico em
wiki/teams/.

Também sincroniza as páginas dos times:

  • recalcula propriedades win e loss;
  • atualiza Sinergias observadas com retrospecto e aproveitamento;
  • atualiza Pontos de atenção com derrotas a revisar e lacunas de evidência;
  • preserva ## Notas manuais.
skills/ingest-shared-matches/scripts/ingest-shared-matches --check
skills/ingest-shared-matches/scripts/ingest-shared-matches

fetch-pending-match-data

Objetivo: hidratar partidas descobertas com dados objetivos completos.

Para cada página pendente, consulta MATCH-V5 GET_getMatch, persiste
raw/matches/<match-id>/riot-api.json imutavelmente, extrai
analysis-input.json e projeta placares, objetivos, composições, data, patch e
resultado na página compilada.

Depois da projeção, sincroniza novamente os times para que win, loss,
Sinergias observadas e Pontos de atenção reflitam os resultados recém
hidratados.

skills/fetch-pending-match-data/scripts/fetch-pending-match-data --check
skills/fetch-pending-match-data/scripts/fetch-pending-match-data
skills/fetch-pending-match-data/scripts/fetch-pending-match-data --match-id BR1_3246636980

analyze-latest-match

Objetivo: produzir o relatório narrativo baseado nas evidências
persistidas.

Seleciona a partida pendente mais recente, gera um scaffold com números
objetivos e sugestões automáticas, exige revisão narrativa pelo Agent Faker e
finaliza a compilação.

Ao finalizar:

  • cria o relatório em wiki/reports/matches/;
  • marca match e relatório como analyzed: true;
  • atualiza as seções de resumo da partida;
  • registra evidências recentes nas páginas dos players participantes;
  • reconcilia o time canônico e sincroniza seus resultados.
skills/analyze-latest-match/scripts/analyze-latest-match --check
skills/analyze-latest-match/scripts/analyze-latest-match --prepare
skills/analyze-latest-match/scripts/analyze-latest-match --prepare --match-id BR1_3246636980
skills/analyze-latest-match/scripts/analyze-latest-match --finalize --match-id BR1_3246636980

Scripts auxiliares

Descoberta

scripts/get-team-recent-matches --check
scripts/get-team-recent-matches

Lista partidas compartilhadas por pelo menos dois players cadastrados.

Extração compacta

scripts/extract-match-analysis-input --check
scripts/extract-match-analysis-input

Transforma o payload raw completo em evidência compacta para análise.

Projeção objetiva

scripts/update-match-wiki-from-analysis-input --check
scripts/update-match-wiki-from-analysis-input

Projeta dados objetivos do analysis-input.json nas páginas das partidas.

Sincronização de times

scripts/update-team-results

Recalcula resultados e compila sinais objetivos em wiki/teams/. É
idempotente: execuções repetidas não duplicam partidas nem contagens.

Regras de segurança

  • Nunca salvar a chave da Riot API no vault.
  • Nunca sobrescrever evidências existentes em raw/.
  • Não inventar estatísticas ausentes.
  • Separar observation, player_report e hypothesis.
  • Preservar conteúdo escrito manualmente fora das seções geradas.