Elquer Carlos

Council 3-0 contra FastAPI, thinking skills instaladas, e 10 commits no kmaroteApp

Council vota 3-0 contra FastAPI para o gerador de títulos. Quatro thinking skills instaladas. Dez commits no kmaroteApp cobrindo FTP, watermark e CSRF.

O dia

O dia teve dois blocos distintos que mal se tocam. No projeto elquercarlos: decisão arquitetural para o gerador de títulos com Grok, instalação de thinking skills para avaliação de planos. No kmaroteApp: dez commits cobrindo watermark, monitoramento FTP, monitoramento de vídeo inline, CSRF e fila de agendamento. Zero atividade no projeto Larissa.


Council derruba FastAPI

A pergunta de partida era direta: qual stack usar para o gerador de títulos com Grok — FastAPI + SQLite-vec no Render, ou chamada direta da API Grok a partir do PHP já existente?

Invoquei o /council para levar a decisão a quatro vozes. O Skeptic, o Pragmatist e a voz in-context votaram 3-0 contra FastAPI. O argumento central: para 10 requisições por dia, um microserviço em Python é infraestrutura sem problema real a resolver.

Enquanto o Claude Code preparava a argumentação para as vozes, encontrou algo que já existia: funcs/ia.inc.php — o arquivo já tem Grok configurado com ia_gerar_texto(). Zero nova infraestrutura HTTP. O plano v1.1 foi reescrito no mesmo dia: FastAPI, Railway e sqlite-vec removidos do escopo; arquitetura PHP-direto via ia.inc.php documentada; custo estimado em $5-12/mês sem hospedagem adicional. Commit 824da780.

O ponto relevante aqui não é só “evitar over-engineering”. É que o /council gerou pressão suficiente para o Claude Code investigar mais a fundo o que já existia antes de propor nova infraestrutura. A decisão final não veio do voto — veio da descoberta que o voto motivou.


Thinking skills para avaliação de planos

Depois de fechar o plano do gerador de títulos, a pergunta seguinte foi: existe uma skill para validar planos antes de executar? A busca levou ao repositório tjboudreaux/cc-thinking-skills, com quatro skills de pensamento crítico:

  • Pre-mortem — imagina que o plano falhou, pergunta por quê
  • Second-order — consequências de segunda ordem de cada decisão
  • Red team — ataca o plano como adversário
  • Inversion — inverte o objetivo para encontrar o que evitar

O Claude Code leu o conteúdo real de cada skill antes de instalar. A decisão de usar Opus como modelo para avaliação de planos foi tomada explicitamente: detectar gaps sutis e inconsistências lógicas é onde Haiku e Sonnet perdem para Opus.

Nenhum plano foi avaliado com as skills no mesmo dia — foram instaladas para uso futuro.


kmaroteApp: watermark e monitoramento de vídeo

A manhã no kmaroteApp teve dois commits de watermark:

  • 72de99e4 — watermark melhorado com ajustes de CSS e parâmetros na tela de configuração de edição
  • 2bf19085 — limite do watermark reduzido, atualização de docs

À noite, o monitoramento de edição de vídeo passou a exibir o vídeo inline na tela de acompanhamento (b1b5295f), seguindo o mesmo padrão já implantado no monitoramento FTP naquele dia.


kmaroteApp: painel FTP em três commits

O monitoramento FTP teve tarde de iterações:

  1. 9532834d — visualização de vídeo inline no painel FTP (funcionalidade nova)
  2. 0fda5c29 — validação de vídeo local antes de exibir, para evitar erro em vídeos ausentes
  3. 3e57df61 — suprime preview de FTP já enviado (não exibe item que já foi processado)

A sequência build-fix-fix é típica de feature que depende de estado externo. O primeiro commit entrega a feature; os dois seguintes corrigem os edge cases que só aparecem com dados reais em produção. Não é regressão — é o custo de trabalhar com estado real.


CSRF e fila de agendamento

Dois fixes menores fecharam lacunas de validação:

  • c45b0b31 — CSRF adicionado nas ações de editar_canal.php e lista_trabalhos.php. O fix de ontem (d1dd9fe3) eliminou o token nulo no módulo principal; este commit estende a validação para os dois arquivos que ainda aceitavam requisição sem token.

  • d5cfc82f — a tela de agendamento agora exibe a fila quando não há vídeo pronto para processar. Antes ficava vazia sem contexto, sem informar o usuário do estado real da fila.


SKILL.md do daily-summary: cursor por fonte

Uma melhoria no design do próprio daily-summary: a skill passou a rastrear cursor por fonte (sources[X]) em vez de usar um cursor global único.

O efeito prático: se o SSH de Larissa falhar numa execução, apenas o cursor da Larissa fica parado — as outras fontes avançam normalmente. Antes, uma fonte com erro podia forçar toda a próxima run a re-processar janelas antigas.

Junto com isso, a Regra Crítica 4 foi reescrita com fail-closed: se claude.ai não tem dados e a janela é maior ou igual a 12h, o draft recebe incomplete: true e o agente-jornalista pula sem avançar o cursor.


Pendências

  • Gerador de títulos: plano v1.1 documentado, implementação não iniciada
  • Thinking skills: instaladas, nenhum plano foi avaliado com elas ainda
  • kmaroteApp: monitoramento FTP e de vídeo precisam de validação em produção com dados reais

Estatísticas do dia (geradas automaticamente):

Atividade no PC:

  • Tempo ativo: 4h20min

Por categoria (do que ficou ativo):

  • Não categorizado: 2h8min
  • Larissa Project: 1h1min
  • Coding: 47min
  • Comunicação: 16min
  • Navegação: 4min
  • AI Chat: 1min

Top apps: Chrome (1h53min) · Codex (1h9min) · Antigravity (45min)

Top sites navegados: Hotmart · grok.com · ElevenLabs

Trabalho com IA:

  • Conversas claude.ai: 0 (0 mensagens)
  • Sessões Claude Code: 4 sessões (elquercarlos, kmaroteApp, subagents)

Código produzido:

  • Commits: 10 (kmaroteApp) · 0 (Larissa)
Fim do ato