Toolkit Operacional

Compilado das ferramentas reutilizaveis criadas para alimentar e manter o vault do Oningume Guneta. Tudo vive no workspace /Users/goia/.openclaw/workspace-lol/ e atua sobre o vault Obsidian /Users/goia/Documents/Obsidian/goia/lol/ (exposto como team-wiki/ dentro do workspace).

Referencias relacionadas: riot-id-resolution, index, log.

Credenciais

Riot API Key

  • Armazenamento: macOS Keychain.
  • Service: openclaw.lol-helper.riot-api-key.
  • Account: usuario macOS atual.
  • Documentado em: TOOLS.md na raiz do workspace.
  • Regra: nunca persistir a chave no vault, MEMORY.md, logs ou saida de comandos. Leitura apenas em runtime.

Helper scripts/riot-api-key

Bash helper com permissao 700.

Path: /Users/goia/.openclaw/workspace-lol/scripts/riot-api-key

scripts/riot-api-key set      # grava ou rotaciona a chave no Keychain
scripts/riot-api-key status   # informa se ha chave armazenada
scripts/riot-api-key get      # imprime a chave em stdout (apenas para uso encadeado)
RIOT_API_KEY="$(scripts/riot-api-key get)"

Rotacao diaria: quando Goia envia uma chave nova, rodar scripts/riot-api-key set e colar o valor.

Scripts utilitarios

scripts/get-team-recent-matches

Path: /Users/goia/.openclaw/workspace-lol/scripts/get-team-recent-matches

Ruby. Usa MATCH-V5 GET /lol/match/v5/matches/by-puuid/{puuid}/ids no host americas.api.riotgames.com para coletar as ultimas 5 partidas de cada player registrado, intersecciona os resultados e devolve apenas matches compartilhados por 2 ou mais membros.

Flags:

scripts/get-team-recent-matches --check   # valida registry, PUUIDs e chave
scripts/get-team-recent-matches           # imprime JSON agregado em stdout

Formato de saida:

[
  {"Match":"BR1_3246636980","players":["bastardo","be","dab","fuji","goia"]},
  {"Match":"BR1_3246565789","players":["be","fuji","goia"]}
]

Persistencia raw: respostas individuais sao salvas em
team-wiki/raw/players/<slug>/riot-api/match-ids-<timestamp>.json.

Consumido pela skill ingest-shared-matches.

scripts/extract-match-analysis-input

Path: /Users/goia/.openclaw/workspace-lol/scripts/extract-match-analysis-input

Ruby. Transforma o payload completo de cada partida em um resumo compacto para
consumo pela futura skill de análise. Preserva o JSON original e gera:

team-wiki/raw/matches/<match-id>/analysis-input.json

O resumo mantém contexto geral, objetivos, bans, composição dos dois times,
estatísticas dos 10 participantes e destaque dos players cadastrados. Inclui
KDA, posição, champion, farm, ouro, dano, visão, wards, objetivos, itens, runas
compactadas e challenges selecionados.

Uso:

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

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

Path: /Users/goia/.openclaw/workspace-lol/scripts/update-match-wiki-from-analysis-input

Ruby. Projeta evidências objetivas do analysis-input.json para a página
compilada da partida sem realizar análise estratégica. Preenche frontmatter com
data, horário, patch, fila, resultado dos membros cadastrados, duração, modo e
versão. Atualiza a seção gerada com objetivos, composições e placares.

Uso:

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

Skills

Todas as skills vivem em /Users/goia/.openclaw/workspace-lol/skills/<nome>/ com SKILL.md no nivel raiz e o executavel em scripts/<nome>. Permissao 700.

get-players-puuid

  • Path da skill: skills/get-players-puuid/SKILL.md
  • Script: skills/get-players-puuid/scripts/get-players-puuid
  • Objetivo: preencher o campo puuid de cada player em team-wiki/wiki/players/.

Funcionamento:

  1. Le Riot IDs do registry em team-wiki/schema/PLAYER_REGISTRY.md.
  2. Obtem a chave via scripts/riot-api-key get.
  3. Consulta ACCOUNT-V1 by-riot-id em americas.api.riotgames.com.
  4. Salva a resposta imutavel em team-wiki/raw/players/<slug>/riot-api/account-by-riot-id-<timestamp>.json.
  5. Atualiza o YAML do player com puuid e puuid_source (referencia relativa ao raw).
  6. Pula players ja preenchidos, exceto com --refresh.

Paths referenciados:

  • Entrada: team-wiki/schema/PLAYER_REGISTRY.md.
  • Saida raw: team-wiki/raw/players/<slug>/riot-api/.
  • Saida compilada: team-wiki/wiki/players/<slug>.md.

Uso:

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

Documentacao de fundo: riot-id-resolution.

ingest-shared-matches

  • Path da skill: skills/ingest-shared-matches/SKILL.md
  • Script: skills/ingest-shared-matches/scripts/ingest-shared-matches
  • Objetivo: criar paginas de matches e teams canonicos a partir das partidas compartilhadas descobertas.

Funcionamento:

  1. Invoca scripts/get-team-recent-matches e consome o JSON agregado.
  2. Para cada match ausente em team-wiki/wiki/matches/, cria <match-id>.md com analyzed: false, lista de players e wikilink para o team canonico.
  3. Calcula o slug canonico do team ordenando os slugs e juntando por - (por exemplo bastardo-be-dab-fuji-goia).
  4. Cria ou atualiza team-wiki/wiki/teams/<team-slug>.md apontando de volta para todos os matches conhecidos do agrupamento.
  5. Idempotente: nao sobrescreve paginas existentes nem duplica wikilinks.

Paths referenciados:

  • Entrada: saida do scripts/get-team-recent-matches.
  • Saida: team-wiki/wiki/matches/<match-id>.md e team-wiki/wiki/teams/<team-slug>.md.

Uso:

skills/ingest-shared-matches/scripts/ingest-shared-matches --check
skills/ingest-shared-matches/scripts/ingest-shared-matches

fetch-pending-match-data

  • Path da skill: skills/fetch-pending-match-data/SKILL.md
  • Script: skills/fetch-pending-match-data/scripts/fetch-pending-match-data
  • Objetivo: hidratar com o payload completo do Riot toda partida ainda nao analisada.

Funcionamento:

  1. Varre team-wiki/wiki/matches/ em busca de paginas com analyzed: false e sem raw associado.
  2. Chama MATCH-V5 GET /lol/match/v5/matches/{matchId} em americas.api.riotgames.com.
  3. Persiste o payload original em team-wiki/raw/matches/<match-id>/riot-api.json (nunca sobrescreve).
  4. Executa scripts/extract-match-analysis-input --match-id <match-id>.
  5. Persiste o resumo derivado em team-wiki/raw/matches/<match-id>/analysis-input.json.
  6. Executa scripts/update-match-wiki-from-analysis-input --match-id <match-id>.
  7. Atualiza a página compilada com frontmatter objetivo, objetivos, composições e placares.
  8. Mantem analyzed: false. Analise estratégica sera feita por outra skill futura.

Paths referenciados:

  • Entrada: team-wiki/wiki/matches/*.md.
  • Saida raw: team-wiki/raw/matches/<match-id>/riot-api.json.
  • Saida filtrada: team-wiki/raw/matches/<match-id>/analysis-input.json.
  • Saida compilada: campo raw_sources da pagina do match.

Uso:

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

Endpoints Riot API em uso

EndpointHostUsado por
ACCOUNT-V1 /riot/account/v1/accounts/by-riot-id/{gameName}/{tagLine}americas.api.riotgames.comget-players-puuid
MATCH-V5 /lol/match/v5/matches/by-puuid/{puuid}/idsamericas.api.riotgames.comget-team-recent-matches
MATCH-V5 /lol/match/v5/matches/{matchId}americas.api.riotgames.comfetch-pending-match-data

Tratamentos comuns:

  • 429: respeitar Retry-After.
  • 404: registrar e seguir (player ou match nao encontrado).
  • 401/403: chave invalida ou expirada; rotacionar com scripts/riot-api-key set.
  • 5xx: backoff e nova tentativa.

Convencoes do vault aplicadas

  • Raw imutavel em team-wiki/raw/, jamais sobrescrito.
  • Compilado em team-wiki/wiki/, sempre com YAML valido.
  • Wikilinks bidirecionais entre match e team canonico.
  • Slugs estaveis: goia, dab, bastardo, fuji, deco, be, joao.
  • Team slug: lista ordenada de slugs unida por -.
  • Match page comeca com analyzed: false.
  • Toda atualizacao relevante deve refletir em log.

Pipeline tipico do dia

# 1. rotacionar a chave diaria
scripts/riot-api-key set
 
# 2. garantir PUUIDs (idempotente)
skills/get-players-puuid/scripts/get-players-puuid
 
# 3. descobrir e ingerir partidas compartilhadas recentes
skills/ingest-shared-matches/scripts/ingest-shared-matches
 
# 4. hidratar payloads completos das partidas pendentes
skills/fetch-pending-match-data/scripts/fetch-pending-match-data
 
# 5. a hidratacao ja gera analysis-input.json compacto automaticamente
 
# 6. (futuro) skill de analise para marcar analyzed: true

Pendencias e proximos passos

  • Skill de analise das partidas hidratadas (planejada para apos o almoco).
  • Lint do vault como passo final apos cada execucao.
  • Considerar agendamento automatico do pipeline diario apos validacao manual.