Communitygithub.com

loop-design-check

Projete um loop de agente orientado a objetivos e revise-o para evitar os problemas comuns de loops: rotação infinita e queima de tokens, manipulação do verificador (Goodhart) ou execução de uma resposta errada até o fim.

O que é loop-design-check?

Essa skill é um guia completo para projetar e revisar loops de agentes autônomos, focando na camada de julgamento — o que diferencia um loop que converge de um que 'foge'. Ela ensina a definir metas decidíveis por máquina, escolher o tipo de loop (servo, regulador, etc.) e a estrutura adequada (manutenção vs. greenfield). A parte de revisão expõe cinco modos de falha clássicos (rotação, verificação subjetiva, ausência de limites, falta de clarificação prévia e documentação obsoleta) mais três linhas vermelhas intransponíveis. A skill complementa habilidades de mecanismo de loop (como `autonomous-loops` e `continuous-agent-loop`) ao abordar a camada de julgamento que elas não cobrem, garantindo que o loop não apenas funcione, mas faça a coisa certa.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/affaan-m/ECC/tree/main/skills/loop-design-check

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Projeto + Revisão de Loop

Premissa. Um LLM é um sistema feed-forward: prompt entra → tokens saem, sem um "direcionamento intrínseco para o objetivo" entre as iterações. Para fazê-lo comportar-se como um sistema orientado a objetivos, você envolve um loop de feedback. Esta skill ajuda você a escrever esse loop corretamente e revisá-lo para que ele não fuja do controle.

Quando usar / não usar

Use quando:

  • Você quer entregar uma tarefa repetitiva a um agente que executa repetidamente (escreve→testa, testa→corrige, corrige→verifica…).
  • Você já tem um loop e teme que ele gire, trapaceie ou execute uma resposta errada até o fim.

Não use para:

  • Uma tarefa única → apenas execute-a; não envolva em um loop.
  • Um timer / polling simples → use /loop; nenhum projeto é necessário.
  • Como conectar a arquitetura do loop (pipelines → DAGs, recuperação de longa execução) → essa é a camada de mecanismo; veja autonomous-loops / continuous-agent-loop. Esta skill cobre apenas "o objetivo está certo? e ele vai fugir?" — ela não reexplica o mecanismo.

Premissa da linha vermelha: dois níveis de feedback

NívelQuem controlaO que faz
Execução (baixo)máquina / agenteMede "quão longe do objetivo literal" e reduz a zero. A máquina é forte aqui.
Julgamento (alto)humanoDecide "esse objetivo em si está certo? deve mudar? deve parar?" A máquina não pode sair do próprio loop para questionar o objetivo.

Um termostato pode realimentar "quão longe de 26°C", mas quando você está com febre e quer 28°C, ele não consegue julgar se 26 é a meta certa — ele apenas reduz para 26. "O que ajustar hoje" é sempre a decisão do humano. Entregar o julgamento / aprovação / última chave para a máquina = remover o feedback de alto nível = ela corre, rápida e forte, em direção a um objetivo que ninguém questionou → saída errada.


Ação 1 — Escrever um loop (5 passos)

Passo 0 · Subtraia primeiro: você deveria mesmo construí-lo? (portão de 4 condições, qualquer falha = veto)

① a tarefa se repete semanalmente ou mais ② a verificação pode ser automatizada ③ o orçamento de tokens suporta ④ o agente tem ferramentas que realmente executam e veem o resultado

Qualquer falha → não construa um loop; faça manualmente ou de outra forma.

O que impede a maioria das pessoas não é "consigo escrever um loop", é "meu repositório merece um?" Um repositório que merece um loop tem uma linha de base de conciliação (amostra dourada / total upstream) + testes + um guardião de lint. Um repositório que não merece um loop só terá seus erros amplificados por ele.

Passo 1 · Defina uma meta decidível por máquina (a parte difícil — o loop vive ou morre aqui)

O loop inteiro depende do comparador "já terminou?" O comparador só funciona se sua condição de saída puder ser julgada sim/não por uma máquina.

  • Ruim: Vaga ("tornar bom", "escrever mais afiado") → o comparador não consegue julgar → ou nunca passa (fica tentando) ou chuta (passa/bloqueia aleatoriamente).
  • Bom: Decidível ("todos os 96 testes unitários verdes E uma lista de alterações é produzida", "campos do módulo-02 preenchidos, pytest passa, lógica de negócio intacta") → uma verificação resolve; o loop converge limpo.

Estrutura de objetivo em cinco pontos:

  1. Critério de conclusão é verificável por máquina.
  2. Condições de contorno definidas junto com o critério de conclusão ("o que NÃO deve fazer") — antídoto para Goodhart; limites ausentes = licença para trapacear.
  3. Possui um plano de fallback para falha — limite de tentativas N + escalar para humano quando excedido.
  4. O objetivo é em camadas.
  5. Prefira conciliação em vez de asserção para o critério de conclusão — ancore a um fato externo (amostra dourada / total upstream / conciliação financeira / números do back-office da plataforma) antes de suas próprias asserções. "Todos os testes passam" pode ser manipulado (afrouxar asserts, falsificar mocks, engolir exceções); "diferença vs. a referência < 0,01" não pode.

Auto-verificação: leia o objetivo para alguém que não conhece o domínio — essa pessoa consegue executar um comando e dizer se está pronto? Se não, não é decidível o suficiente. Volte.

Passo 2 · Escolha o tipo de loop

Sua tarefaTipo de loop (cibernético)Como para
Tem um teste "pronto" claro (escrever até concluir / processar um lote de imagens)servo (loop fechado estilo /goal)para ao atingir o objetivo
Sem ponto final, precisa manter um estado (alerta de inventário / verificação de saúde programada)regulador (termostato estilo /loop)nunca para; atua apenas na mudança (banda morta suprime ruído)
Amostragem periódica, para em uma condição (observar um PR até o CI ficar verde)regulador com saídapara quando a condição de saída é verdadeira
Deve "garantir que algo aconteça no prazo"envolva o acima com /schedulecron o dispara

Regra prática: teste "pronto" claro → servo; precisa manter, sem ponto final → regulador; precisa "acontecer no prazo" → envolva um regulador em schedule.

Passo 3 · Escolha um esqueleto

Tipo manutenção (cuidar de algo que existe) → despacho orientado por documento. O loop não é "executar uma verificação fixa em um timer", é "ler um documento em um timer, e despachar apenas quando o documento mudou". O documento é a fila de tarefas + máquina de estados + interface humana. Três disciplinas: ① a coluna de problema é apenas escrita por humano, a coluna de resultado é apenas escrita pelo loop, o estado avança em uma direção e nunca retrocede; ② o código de saída é final (se o script disser exit 1, o script vence); ③ o estado avança apenas até "aguardando verificação" — a célula "concluído" é virada apenas por um humano. O loop é o trabalhador, não o oficial de aceitação.

Tipo greenfield (construir do zero) → planejar / construir / julgar, três papéis.

PapelFazChave
Planejardecompor o objetivo em uma especificação + condições de aceitação decidíveisaceitação deve ser julgável por script
Construirescrever de acordo com a especificaçãonão deve alterar as condições de aceitação
Julgarexecutar a aceitação de forma independente; passar → para, falhar → retornar com o motivo da falha para Construirindependente + determinístico

Três regras de ferro (todas apostam no juiz): ① o juiz deve ser independente — não o mesmo agente que Construir (corrigir a própria lição de casa sempre infla); ② regras determinísticas — pytest / diff de conciliação / verificação de tipo / diff, nunca "parece certo"; ③ Construir não pode editar as condições de aceitação para passar. Três tentativas falhas → escalar para um humano.

Passo 4 · Adicione amortecimento (contra oscilação / fuga)

Limite de tentativas, parada brusca, humano vira a última chave = amortecimento. Feedback negativo sem amortecimento oscila (o loop Ralph-Wiggum: girando no lugar, queimando tokens).

Passo 5 · Implemente em três estágios (não vá totalmente automático no primeiro dia)

① Execute uma vez manualmente (força você a declarar exatamente "como o juiz decide") → ② endureça em uma skill / subagentes do Claude Code (um Claude principal faz o loop, despachando planejar/construir/julgar) → ③ coloque no cron para automação total.


Ação 2 — Revisar um loop (checklist = cinco modos de falha)

Execute o loop em cada linha. Acertar qualquer um = este loop vai falhar; mande de volta. Esses cinco são experiência negativa (armadilhas) — valem mais do que regras positivas.

#Modo de falha (como quebra)Pergunta de revisão (acerto = vermelho)Anticorpo
1Objetivo é um lugar-comum correto → gira, queima dinheiroA condição de saída pode ser julgada sim/não por máquina? Ou é "gerencie bem / torne bom"?Substitua por uma condição de resultado decidível (Ação 1·Passo 1)
2"Verificação" escrita como "verificar se parece certo" → agente diz confiantemente que está bom e paraO juiz é o próprio réu? A verificação depende de "parece certo" ou de regras determinísticas?Reconcilie + regras de código de saída + juiz independente
3(pior) Apenas verifica "todos os testes passam" → agente deleta os testesExiste um limite ("o que NÃO deve fazer")? Ou apenas um critério de conclusão?Critério de conclusão + limite juntos (o anticorpo Goodhart)
4Conta com o agente perguntando no meio da execução → ele não pergunta; executa a resposta errada até o fimExiste algum ponto "esclarecer apenas em tempo de execução"?Esclareça tudo antes; resolva uma vez antes do lançamento
5CLAUDE.md inchado + memória desatualizada → quanto mais rápido o loop, mais ele erraOs documentos/memória dos quais depende estão atualizados? Quem os mantém?Memória em camadas + lint periódico

Mais três linhas vermelhas (violar qualquer uma = não permitido ir para automático):

  • Mantenha o julgamento com o humano. A aceitação / célula "concluído" é virada por um humano; o loop não é o oficial de aceitação.
  • A responsabilidade não se transfere. Qualquer coisa cuja falha você não pode arcar (fundir o PR errado / publicar a coisa errada / alocar dinheiro errado) → não entregue a autoridade automaticamente.
  • Aviso contra-intuitivo. Quanto mais "auto-melhorável / reescreve suas próprias regras" for um loop, mais rigorosa precisa ser a revisão humana (para ver no que ele transformou as regras) — não menos. A máquina é rápida demais para interceptar depois do fato, então o julgamento humano deve estar antes da ação (um portão rígido), não como um patch posterior.

Exemplo prático — revisando um loop "guardião noturno"

Você quer um loop que execute todas as noites e corrija quaisquer testes que estejam falhando.

  • Objetivo ingênuo: "fazer todos os testes passarem." → A auto-verificação do Passo 1 falha: esta é a isca para o modo de falha #3.
  • Objetivo decidível (corrigido): "todos os testes verdes E nenhum arquivo de teste deletado ou enfraquecido E cobertura não reduzida E uma lista de alterações produzida." Limite agora definido junto com o critério de conclusão.
  • Tipo: servo com limite de tentativas de 3 (Passo 2 + Passo 4).
  • Esqueleto: planejar/construir/julgar — o juiz é a execução do CI de forma independente, nunca o agente corretor (Passo 3).

Agora execute a checklist de revisão, e ela pega o que a versão ingênua teria perdido:

  • #3 acertado → o ingênuo "todos os testes passam" permite que o agente delete um teste falho para "vencer." Corrigido pelo limite "nenhum arquivo de teste deletado/enfraquecido."
  • #2 acertado → se o agente corretor também julgasse sua própria correção, ele se aprovaria. Corrigido por "juiz = CI independente, determinístico."
  • #4 acertado → se uma correção é ambígua, o agente não vai parar para perguntar às 2 da manhã; ele vai commit um palpite. Corrigido por esclarecimento prévio: correções ambíguas são deixadas para o humano, não adivinhadas.
  • Linha vermelha → o loop abre um PR, mas não faz auto-merge; o humano vira a última chave (a responsabilidade não se transfere).

O loop ingênuo e o loop revisado diferem por quatro linhas de restrição — e essa é a diferença entre "acordar com uma suíte de testes deletada" e "acordar com um PR limpo."


Linha de fechamento

A parte difícil de escrever um loop não é "consigo escrever um loop", é definir um objetivo que uma máquina possa reconciliar — decidível, delimitado, baseado em conciliação. O controlador deve ser determinístico e externo; mantenha o julgamento e o padrão com o humano; o sistema tende à entropia, portanto mantenha-o. Um loop só recompensa alguém que já pensou sobre ele. Conte com ele para pensar por você, e ele pensará errado, com você, em escala.


Linhagem: feedback de dois níveis de Wiener (The Human Use of Human Beings, 1950) para a divisão julgamento/execução e linhas vermelhas; o padrão planejar/construir/julgar de Anatoli (Loops explained) e Addy (Loop Engineering). Camada de mecanismo (como conectar a arquitetura do loop): veja autonomous-loops / continuous-agent-loop. Esta skill não reimplementa mecanismo; ela cobre apenas definição de objetivo e prevenção de fuga.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

accessibility

Design, implement, and audit inclusive digital products using WCAG 2.2 Level AA. Use when building or auditing UI that must meet WCAG 2.2 Level AA, or when reviewing a change for keyboard, contrast, or screen-reader support.

affaan-m/content-engine

Create platform-native content systems for X, LinkedIn, TikTok, YouTube, newsletters, and repurposed multi-platform campaigns. Use when the user wants social posts, threads, scripts, content calendars, or one source asset adapted cleanly across platforms.

affaan-m/ECC

Multi-platform content distribution across X, LinkedIn, Threads, and Bluesky. Adapts content per platform using content-engine patterns. Never posts identical content cross-platform. Use when the user wants to distribute content across social platforms.

affaan-m/fal-ai-media

Unified media generation via fal.ai MCP — image, video, and audio. Covers text-to-image (Nano Banana), text/image-to-video (Seedance, Kling, Veo 3), text-to-speech (CSM-1B), and video-to-audio (ThinkSound). Use when the user wants to generate images, videos, or audio with AI.

affaan-m/manim-video

日本語翻訳:このファイルは manim-video 用の日本語翻訳が必要です

affaan-m/remotion-video-creation

Remotion のベストプラクティス - React で動画を作成する。3D、アニメーション、音声、字幕、チャート、トランジションなどをカバーするドメイン固有の29のルール。

affaan-m/video-editing

AI-assisted video editing workflows for cutting, structuring, and augmenting real footage. Covers the full pipeline from raw capture through FFmpeg, Remotion, ElevenLabs, fal.ai, and final polish in Descript or CapCut. Use when the user wants to edit video, cut footage, create vlogs, or build video content.

agent-architecture-audit

Full-stack diagnostic for agent and LLM applications. Audits the 12-layer agent stack for wrapper regression, memory pollution, tool discipline failures, hidden repair loops, and rendering corruption. Produces severity-ranked findings with code-first fixes. Essential for developers building agent applications, autonomous loops, or any LLM-powered feature. Use when an agent or LLM feature misbehaves and the failing layer is unknown, or before shipping an agent stack.

agent-eval

Head-to-head comparison of coding agents (Claude Code, Aider, Codex, etc.) on custom tasks with pass rate, cost, time, and consistency metrics. Use when choosing between coding agents, or when a change to an agent setup needs measured pass rate, cost, and time rather than an impression.

agent-harness-construction

Design and optimize AI agent action spaces, tool definitions, and observation formatting for higher completion rates. Use when defining or revising an agent

agentic-engineering

Operate as an agentic engineer using eval-first execution, decomposition, and cost-aware model routing. Use when planning or executing engineering work that agents will carry out end to end.

agentic-os

Build persistent multi-agent operating systems on Claude Code. Covers kernel architecture, specialist agents, slash commands, file-based memory, scheduled automation, and state management without external databases. Use when building a persistent multi-agent system on Claude Code with its own memory, commands, and scheduling.

agent-introspection-debugging

Structured self-debugging workflow for AI agent failures using capture, diagnosis, contained recovery, and introspection reports. Use when an agent run fails and you need a reproducible diagnosis instead of a retry.

agent-payment-x402

Add x402 payment execution to AI agents with per-task budgets, spending controls, and non-custodial wallets. Supports Base through agentwallet-sdk and X Layer through OKX Payments / OKX Agent Payments Protocol. Use when an agent must pay for something itself and needs per-task budgets, spending controls, and a non-custodial wallet.

agent-self-evaluation

Use after completing any non-trivial task. The agent self-rates its output on 5 axes — accuracy, completeness, clarity, actionability, conciseness — with concrete evidence per criterion. Produces a structured 1-5 scorecard with specific improvement suggestions.

agent-sort

Build an evidence-backed ECC install plan for a specific repo by sorting skills, commands, rules, hooks, and extras into DAILY vs LIBRARY buckets using parallel repo-aware review passes. Use when ECC should be trimmed to what a project actually needs instead of loading the full bundle.

ai-first-engineering

Engineering operating model for teams where AI agents generate a large share of implementation output. Use when setting team process, review gates, or ownership rules for a codebase largely written by agents.

ai-regression-testing

Regression testing strategies for AI-assisted development. Sandbox-mode API testing without database dependencies, automated bug-check workflows, and patterns to catch AI blind spots where the same model writes and reviews code. Use when adding regression coverage to AI-assisted code, or when the same model both wrote and reviewed a change.

android-clean-architecture

Clean Architecture patterns for Android and Kotlin Multiplatform projects — module structure, dependency rules, UseCases, Repositories, and data layer patterns. Use when structuring modules, layers, or data flow in an Android or KMP project.

angular-developer

Generates Angular code and provides architectural guidance. Trigger when creating projects, components, or services, or for best practices on reactivity (signals, linkedSignal, resource), forms, dependency injection, routing, SSR, accessibility (ARIA), animations, styling (component styles, Tailwind CSS), testing, or CLI tooling.

Habilidades Relacionadas