Use when adding new error messages to React, or seeing "unknown error code" warnings.
npx skills add henriqueneves87/ai-coding-toolkit --skill "code-with-logs"
Install specific skill from multi-skill repository
# Description
Generates executable code with narrative logs including timestamp [HH:MM:SS]. Use for scripts, tests, jobs, ETLs, migrations requiring progress tracking.
# SKILL.md
name: code-with-logs
description: Generates executable code with narrative logs including timestamp [HH:MM:SS]. Use for scripts, tests, jobs, ETLs, migrations requiring progress tracking.
Code with Logs v3.0 (Generic)
APLICAÇÃO AUTOMÁTICA OBRIGATÓRIA
Esta skill DEVE ser aplicada automaticamente SEMPRE que detectar:
- Criação de novo script Python executável
- Criação de novo teste (
test_*.py) - Criação de subagente (classe com método
executar()ouexecute()) - Criação de job/ETL (função
main()ou similar) - Criação de migration SQL
- Qualquer código executável com função
main()ou chamável diretamente
NÃO é necessário comando explícito do usuário.
Regra de Ouro (INQUEBRÁVEL)
Log de progresso NÃO é log técnico.
- NÃO usar
[module][function] - NÃO usar colchetes
[]como prefixo - NÃO usar logger padrão de debug
- NÃO misturar progresso com dados detalhados
Instruções Obrigatórias
SEMPRE que gerar código executável, inclua logs narrativos com timestamp obrigatório [HH:MM:SS].
Timestamp Obrigatório
TODOS os logs importantes DEVEM incluir timestamp:
- Logs de início
- Logs de progresso
- Logs de conclusão
- Logs de finalização
- Logs de erro
Helper Python (Adaptável ao Projeto)
Se o projeto tiver um helper de logs, USE-O. Exemplos comuns:
# Se o projeto tem LoggerComTimestamp:
from app.utils.log_helpers import LoggerComTimestamp
logger = LoggerComTimestamp()
# Se o projeto não tem helper, use inline:
from datetime import datetime
def log_ts(msg: str, emoji: str = "🔄"):
ts = datetime.now().strftime('%H:%M:%S')
print(f"{emoji} [{ts}] {msg}")
Prioridade: helper do projeto > helper inline > print com timestamp manual.
Formato de Logs (Python)
Saída esperada:
▶️ [14:23:15] Iniciando processamento de dados (ET: 2m)
🔄 [14:23:18] Passo 1/5 — Carregando arquivos (ETA: 90s)
✅ [14:23:25] Passo 1 concluído (⏱️ 10.2s)
🎉 [14:25:13] Execução concluída (⏱️ 118.5s | Início: 14:23:15 | Fim: 14:25:13)
Formato de Logs (SQL)
SEMPRE inclua timestamp em RAISE NOTICE:
DECLARE
v_inicio TIMESTAMP := clock_timestamp();
v_agora TIMESTAMP;
BEGIN
RAISE NOTICE '[%] ▶️ Iniciando processamento', TO_CHAR(v_inicio, 'HH24:MI:SS');
v_agora := clock_timestamp();
RAISE NOTICE '[%] 🔄 Passo 1/5 — Processando (ETA: 40s)', TO_CHAR(v_agora, 'HH24:MI:SS');
v_agora := clock_timestamp();
RAISE NOTICE '[%] ✅ Passo 1 concluído (⏱️ %s)',
TO_CHAR(v_agora, 'HH24:MI:SS'),
EXTRACT(EPOCH FROM (v_agora - v_inicio))::INTEGER || 's';
END;
Subagentes com Timestamp
Quando criar subagentes, use prefixo no logger:
# Com helper do projeto:
logger = LoggerComTimestamp(prefixo="[SUBAGENTE 1]")
# Ou inline:
def log_sub(msg, emoji="🔄", prefix="[SUBAGENTE 1]"):
ts = datetime.now().strftime('%H:%M:%S')
print(f"{emoji} [{ts}] {prefix} {msg}")
Logs de Erro
SEMPRE inclua timestamp e contexto em logs de erro:
❌ [14:24:30] Erro: Falha ao processar lote 4/10
❌ [14:24:30] Motivo: timeout na persistência
❌ [14:24:30] Ação: execução interrompida
Exemplo Completo (Python Genérico)
from datetime import datetime
import time
def log_ts(msg: str, emoji: str = "🔄"):
ts = datetime.now().strftime('%H:%M:%S')
print(f"{emoji} [{ts}] {msg}")
def main():
inicio = time.time()
log_ts("Iniciando processamento de dados (ET: 2m)", "▶️")
# Passo 1
log_ts("Passo 1/3 — Carregando dados (ETA: 60s)", "🔄")
# ... código ...
log_ts(f"Passo 1 concluído (⏱️ {time.time()-inicio:.1f}s)", "✅")
# Passo 2
log_ts("Passo 2/3 — Processando (ETA: 45s)", "🔄")
# ... código ...
log_ts(f"Passo 2 concluído (⏱️ {time.time()-inicio:.1f}s)", "✅")
# Passo 3
log_ts("Passo 3/3 — Finalizando (ETA: 15s)", "🔄")
# ... código ...
total = time.time() - inicio
log_ts(f"Execução concluída (⏱️ {total:.1f}s)", "🎉")
if __name__ == "__main__":
main()
Proibições Explícitas
- Criar código executável sem logs
- Criar logs sem timestamp
- SQL sem timestamp em RAISE NOTICE
- Scripts longos sem indicação de progresso
Regra Final
Sistema sem narrativa é sistema cego.
Código que executa sem log não é confiável.
Logs sem timestamp não são rastreáveis.
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.