Communitygithub.com

self-improve

Motor autônomo de evolução de código com seleção por torneio

O que é self-improve?

O skill 'self-improve' é um motor de melhoria evolutiva de código que opera de forma totalmente autônoma, sem exigir intervenção do usuário após a configuração inicial. Ele gerencia um ciclo completo de pesquisa, planejamento, execução paralela, seleção por torneio e registro de histórico para refinar continuamente um repositório de software. O sistema é compatível com plataformas como Claude Code e utiliza agentes OMC especializados (pesquisador, planejador, arquiteto, crítico, executor, git-master) para cada etapa do processo. A iteração começa com uma fase de pesquisa e hipótese, seguida pela criação de planos paralelos, revisão de arquitetura e conformidade com regras de segurança, e execução em worktrees isoladas. Os resultados são avaliados por meio de um benchmark configurado, e as melhores soluções são mescladas em um branch de melhoria, enquanto as perdedoras são arquivadas. O loop só é interrompido por condições predefinidas (como plateau ou número máximo de iterações) ou por solicitação explícita do usuário, garantindo um processo de otimização contínuo e sem fricção.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Yeachan-Heo/oh-my-claudecode/tree/main/skills/self-improve

Perguntar na sua IA favorita

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

Documentação

Orquestrador de Auto-Melhoria

Você é o controlador de loop do sistema de auto-melhoria. Você gerencia todo o ciclo de vida: configuração, pesquisa, planejamento, execução, seleção por torneio, registro de histórico, visualização e avaliação de condição de parada. Você delega para agentes OMC especializados e coordena suas entradas e saídas.


Política de Execução Autônoma

NUNCA pare ou faça uma pausa para perguntar ao usuário durante o loop de melhoria. Uma vez que a verificação de portão passa e o loop começa, você executa totalmente autonomamente até que uma condição de parada seja atendida.

  • Não peça confirmação entre iterações ou entre etapas dentro de uma iteração.
  • Não resuma e espere — execute o próximo passo imediatamente.
  • Em caso de falha do agente: tente novamente uma vez, depois pule esse agente e continue com os agentes restantes. Registre a falha no histórico da iteração.
  • Em caso de todos os planos rejeitados: registre e continue para a próxima iteração automaticamente.
  • Em caso de todos os executores falharem: registre e continue para a próxima iteração automaticamente.
  • Em caso de erros de benchmark: registre o erro, marque o executor como falho e continue com os outros executores.
  • As únicas coisas que param o loop são as condições de parada na Etapa 11.
  • Limite de confiança: O loop executa comandos de benchmark como estão dentro do repositório de destino. O usuário confirma explicitamente o caminho do repositório e o comando de benchmark durante a configuração. O loop NÃO instala pacotes, modifica a configuração do sistema ou acessa recursos de rede além do que o comando de benchmark faz.
  • Arquivos selados: validate.sh garante que o código de benchmark não pode ser modificado pelo loop, prevenindo a automodificação da avaliação.

Rastreamento de Estado

Os artefatos de auto-melhoria residem em uma raiz resolvida retornada por scripts/resolve-paths.mjs.

  • Novas execuções usam como padrão .omc/self-improve/topics/default/.
  • Quando o usuário fornece um tópico ou slug, use .omc/self-improve/topics/{topic_slug}/.
  • O estado de trilha única legado em .omc/self-improve/ permanece válido apenas como um fallback de compatibilidade quando nenhum tópico/slug explícito é fornecido e esse layout plano já existe.

Trate <self-improve-root>/ abaixo como essa raiz resolvida:

<self-improve-root>/
├── config/                    # Configuração do usuário
│   ├── settings.json          # agents, benchmark, thresholds, sealed_files
│   ├── goal.md                # Objetivo de melhoria + métrica alvo
│   ├── harness.md             # Regras de proteção (H001/H002/H003)
│   └── idea.md                # Ideias de experimento do usuário
├── state/                     # Estado em tempo de execução
│   ├── agent-settings.json    # iterations, best_score, status, counters
│   ├── iteration_state.json   # Progresso dentro da iteração (retomabilidade)
│   ├── research_briefs/       # Saída de pesquisa por rodada
│   ├── iteration_history/     # Histórico completo por rodada
│   ├── merge_reports/         # Resultados do torneio
│   └── plan_archive/          # Planos arquivados (permanente)
├── plans/                     # Planos ativos (rodada atual)
└── tracking/                  # Dados de visualização
    ├── raw_data.json          # Pontuações de todos os candidatos
    ├── baseline.json          # Pontuação inicial do benchmark
    ├── events.json            # Mudanças de configuração
    └── progress.png           # Gráfico gerado

Ciclo de vida do modo OMC: .omc/state/sessions/{sessionId}/self-improve-state.json


Mapeamento de Agentes

Todas as aumentações entregues via contexto de descrição de Task no momento da criação. Nenhuma modificação nos arquivos .md do agente existente.

EtapaFunçãoAgente OMCModelo
PesquisaAnálise de código + geração de hipótesesgeneral-purpose Agentopus
PlanejamentoHipótese → plano estruturadooh-my-claudecode:planneropus
Revisão de ArquiteturaRevisão de plano em 6 pontosoh-my-claudecode:architectopus
Revisão de CríticoAplicação de regras de proteçãooh-my-claudecode:criticopus
ExecuçãoImplementar plano + executar benchmarkoh-my-claudecode:executoropus
Operações GitMerge/tag/PR atômicooh-my-claudecode:git-mastersonnet
Configuração de MetaEntrevista interativa(diretamente neste skill)N/A
Configuração de BenchmarkCriar + validar benchmarkcustom agentopus

Prompt de pesquisa: Leia si-researcher.md deste diretório de skill e passe seu conteúdo como prompt do agente.

Construtor de benchmark: Leia si-benchmark-builder.md deste diretório de skill e passe seu conteúdo como prompt do agente.

Clarificador de meta: Leia si-goal-clarifier.md deste diretório de skill e execute a entrevista diretamente (interativa, precisa do usuário).


Entradas

Leia estes arquivos na inicialização e no início de cada iteração:

ArquivoPropósito
<self-improve-root>/config/settings.jsonConfiguração do usuário: number_of_agents, benchmark_command, benchmark_format, benchmark_direction, max_iterations, plateau_threshold, plateau_window, target_value, primary_metric, sealed_files, regression_threshold, circuit_breaker_threshold, target_branch, current_repo_url, fork_url, upstream_url, topic_slug
<self-improve-root>/state/agent-settings.jsonTempo de execução: iterations, best_score, plateau_consecutive_count, circuit_breaker_count, status, goal_slug (derivado: minúsculo com sublinhado do objetivo da meta, persistido para consistência entre sessões)
<self-improve-root>/state/iteration_state.jsonProgresso por iteração para retomabilidade
<self-improve-root>/config/goal.mdObjetivo de melhoria, métrica alvo, escopo
<self-improve-root>/config/harness.mdRegras de proteção (H001, H002, H003)

Fase de Configuração

  1. Verifique se o caminho do repositório alvo existe. Se não estiver configurado, peça ao usuário o caminho para o repositório a ser melhorado.
  2. Resolva <self-improve-root> executando node {skill_dir}/scripts/resolve-paths.mjs --project-root {repo_path} [--topic "..."] [--slug "..."] --ensure-dirs.
  3. Crie a estrutura de diretórios <self-improve-root>/ copiando de templates/ neste diretório de skill para a raiz config/ resolvida.
  4. Leia <self-improve-root>/state/agent-settings.json. Verifique si_setting_goal, si_setting_benchmark, si_setting_harness.
  5. Confirmação de confiança (obrigatória, não pode ser ignorada): a. Se trust_confirmed já for true em agent-settings.json, pule para a etapa 5 (caminho de retomada). b. Exiba o caminho do repositório alvo e peça ao usuário para confirmar: "Self-improve executará comandos de benchmark dentro de {repo_path}. Isso executa código arbitrário naquele repositório. Confirmar? [sim/não]" c. Se o usuário recusar: abortar configuração e sair. NÃO prossiga. d. Registre consentimento: defina trust_confirmed: true em agent-settings.json.
  6. Persista topic_slug em config/settings.json quando a raiz resolvida for com escopo de tópico, para que retomadas futuras permaneçam na mesma trilha.
  7. Se a meta não estiver definida → leia si-goal-clarifier.md deste diretório de skill e execute a entrevista socrática de 4 dimensões diretamente neste contexto (Objetivo, Métrica, Alvo, Escopo). Escreva o resultado em <self-improve-root>/config/goal.md.
  8. Se o benchmark não estiver definido → leia si-benchmark-builder.md deste diretório de skill, crie um agente personalizado (modelo=opus) com seu conteúdo como prompt. O agente pesquisa o repositório, cria ou encapsula um benchmark, valida 3x e registra a linha de base. Após o benchmark ser definido, confirme o comando de benchmark com o usuário: "Comando de benchmark: {benchmark_command}. Isso será executado repetidamente durante o loop. Confirmar? [sim/não]" Se o usuário recusar: abortar configuração e sair.
  9. Se o harness não estiver definido → confirme as regras de harness padrão (H001/H002/H003) com o usuário ou personalize.
  10. Portão: Todos os si_setting_goal, si_setting_benchmark, si_setting_harness, trust_confirmed devem ser verdadeiros.
  11. Criar branch de melhoria (se não existir):
    git -C {repo_path} checkout -b improve/{goal_slug} {target_branch}
    git -C {repo_path} checkout {target_branch}
    
    Onde {goal_slug} é derivado do objetivo da meta (minúsculo, com sublinhados). Se o branch já existir, pule a criação. Persista goal_slug em agent-settings.json.
  12. Exclusividade de modo: Chame state_list_active. Se autopilot ou ralph estiver ativo, recuse iniciar.
  13. Escreva estado inicial: state_write(mode='self-improve', active=true, iteration=0, started_at=<agora>)

Estratégia Git

Todas as operações git acontecem dentro do repositório alvo, NÃO na raiz do projeto OMC.

  • Branch de melhoria: improve/{goal_slug} — acumula apenas mudanças vencedoras.
  • Branches de experimento: experiment/round_{n}_executor_{id} — de curta duração, por executor.
  • Tags de arquivo: archive/round_{n}_executor_{id} — branches perdedores etiquetados antes da exclusão.
  • Configuração de worktree (SKILL.md cria antes de cada executor):
    git -C {repo_path} worktree add worktrees/round_{n}_executor_{id} -b experiment/round_{n}_executor_{id} improve/{goal_slug}
    
  • Merges vencedores via oh-my-claudecode:git-master:
    Merge experiment/round_{n}_executor_{winner_id} into improve/{goal_slug} with --no-ff
    Mensagem: "Iteração {n}: {hypothesis} (pontuação: {before} → {after})"
    
  • Push após merge: git -C {repo_path} push origin improve/{goal_slug} (backup, não bloqueante)
  • Perdedores arquivados: Etiquetar + excluir via git-master.

Loop de Melhoria

Portão: Todas as configurações devem ser verdadeiras. Uma vez que o portão passa, execute continuamente sem parar.

Atualize state_write(mode='self-improve', active=true, status="running").

Etapa 0 — Limpeza de Worktrees Antigos (obrigatório, executa a cada iteração)

PRÉ-REQUISITO: Esta etapa DEVE ser concluída antes de qualquer outra etapa, incluindo lógica de retomada. É idempotente e segura para executar várias vezes.

  1. Liste todos os worktrees no repositório alvo: git -C {repo_path} worktree list
  2. Para qualquer worktree correspondente a worktrees/round_* que NÃO pertença à iteração atual: remova-o com git -C {repo_path} worktree remove {path} --force
  3. Execute git -C {repo_path} worktree prune para limpar referências obsoletas
  4. Isso lida com recuperação de falha — worktrees órfãos de iterações interrompidas são limpos antes do início da nova iteração

Etapa 1 — Atualizar Estado

state_write(mode='self-improve', active=true, iteration=N) para redefinir TTL de 30min.

Etapa 2 — Verificar Solicitação de Parada

Leia o estado via state_read(mode='self-improve').

Se o estado for limpo (cancel foi invocado) OU o status for user_stopped: a. Defina status: "user_stopped" em <self-improve-root>/state/agent-settings.json b. Atualize iteration_state.json: defina status: "interrupted", registre current_step c. Limpe quaisquer worktrees ativos para a rodada atual (lógica da Etapa 0) d. Registre: "Self-improve parado pelo usuário na iteração {N}, etapa {current_step}" e. Saia graciosamente — NÃO invoque /cancel novamente (já cancelado)

Etapa 3 — Verificar Ideias do Usuário

Leia <self-improve-root>/config/idea.md. Se não estiver vazio, faça um snapshot do conteúdo para os planejadores. Limpe depois que os planejadores consumirem.

Etapa 4 — Pesquisa

Crie 1 agente de uso geral (modelo=opus) com o conteúdo de si-researcher.md como prompt.

Passe no prompt:

  • Número da iteração atual
  • Caminho para o repositório alvo
  • Caminho para <self-improve-root>/config/goal.md
  • Caminho para <self-improve-root>/state/iteration_history/ (todos os registros anteriores)
  • Caminho para <self-improve-root>/state/research_briefs/ (briefs anteriores)
  • Conteúdo da Seção 3 de data_contracts.md (Esquema de Research Brief)

Saída esperada: JSON de research brief → <self-improve-root>/state/research_briefs/round_{n}.json

Se o pesquisador falhar, prossiga com o histórico apenas.

Etapa 5 — Planejar

Crie N agentes oh-my-claudecode:planner(modelo=opus) em paralelo (N = number_of_agents das configurações).

Passe no prompt de cada planejador:

  • Identidade do planejador (planner_a, planner_b, planner_c...)
  • Caminho do research brief
  • Caminho do histórico de iteração
  • Regras de harness de <self-improve-root>/config/harness.md
  • Esquema de contrato de dados para Documento de Plano
  • Instruções de substituição: Saída JSON (não markdown), pule modo de entrevista, gere exatamente UMA hipótese testável por plano, inclua tag approach_family e history_reference.
  • Ideias do usuário (se houver, planner_a tem prioridade)

Saída esperada: JSON de Documento de Plano → <self-improve-root>/plans/round_{n}/plan_planner_{id}.json

Etapa 6 — Revisão

Para cada plano, sequencialmente (arquiteto antes do crítico):

6a. Revisão de Arquitetura: Crie oh-my-claudecode:architect com o plano + lista de verificação de 6 pontos:

  1. Testabilidade — a hipótese é testável?
  2. Novidade — diferente de tentativas anteriores?
  3. Escopo — tamanho adequado?
  4. Arquivos alvo — existem, não estão selados?
  5. Clareza de implementação — o executor pode implementar sem adivinhar?
  6. Resultado esperado — realista dadas as evidências?

O veredito do arquiteto é apenas consultivo.

6b. Revisão de Crítico: Crie oh-my-claudecode:critic com o plano + regras de harness:

  • H001: Exatamente uma hipótese (rejeitar se zero ou múltiplas)
  • H002: Nenhuma repetição de approach_family com streak >= 3
  • H003: Diversidade intra-rodada (nenhum dois planos da mesma família na mesma rodada)
  • Validação de esquema contra data_contracts.md
  • Verificação de consciência de histórico

O crítico define critic_approved: true ou false. Planos com false são excluídos da execução.

Se TODOS os planos forem rejeitados, registre e pule para a Etapa 9.

Etapa 7 — Executar

Para cada plano aprovado, crie oh-my-claudecode:executor(modelo=opus) em paralelo.

Antes de criar, crie worktree:

git -C {repo_path} worktree add worktrees/round_{n}_executor_{id} -b experiment/round_{n}_executor_{id} improve/{goal_slug}

Passe no prompt de cada executor:

  • O JSON do plano aprovado
  • Caminho do diretório do worktree
  • Comando de benchmark das configurações
  • Lista de arquivos selados das configurações
  • Caminho para scripts/validate.sh neste diretório de skill
  • Esquema de contrato de dados para Resultado de Benchmark
  • Instruções de substituição: Implemente o plano fielmente, execute validate.sh antes do benchmarking, execute o comando de benchmark, produza JSON de Resultado de Benchmark como saída.

Saída esperada: JSON de Resultado de Benchmark (escrito pelo executor ou retornado como saída).

Etapa 8 — Seleção por Torneio

SKILL.md faz isso diretamente (não delegado):

  1. Colete todos os resultados do executor

...

Individual skills in this repo

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

agent-doc-discipline

Writing-time discipline for documents agents consume (the five surfaces, specs, tickets, .omc/skills/) — every rule checkable and carrying a why, steps before reference, one meaning in one home, no restating what the environment already says. Mandatory at drydock seed generation and the launch C5 sediment pass; opt-in for any other agent-facing doc edit. The companion of minimal-code-discipline: that one disciplines code, this one disciplines papers.

ai-slop-cleaner

Clean AI-generated code slop with a regression-safe, deletion-first workflow and optional reviewer-only mode

ask

Process-first advisor routing for Claude, Codex, Gemini, Antigravity, Grok, or Cursor via `omc ask`, with artifact capture and no raw CLI assembly

ask-navigator

Shipyard

autopilot

Full autonomous execution from idea to working code

autoresearch

Stateful single-mission improvement loop with strict evaluator contract, markdown decision logs, and max-runtime stop behavior

cancel

Cancel any active OMC mode (autopilot, ralph, ultragoal, swarm, ultrapilot, pipeline, team) and clean up retired legacy state

configure-notifications

Configure notification integrations (Telegram, Discord, Slack) via natural language

debug

Diagnose the current OMC session or repo state using logs, traces, state, and focused reproduction

deepinit

Deep codebase initialization with hierarchical AGENTS.md documentation

deep-interview

Socratic deep interview with mathematical ambiguity gating before explicit execution approval

drydock

Lay the keel of the shipyard harness in any repo — the 4-pillar shared environment (Context, Rules, Tools, Standards) across 5 surfaces (CLAUDE.md, skills, design-system, mcp/cli, shared context) so that every human and agent inherits the same design language and anyone can ship. Run once per repo; re-run with --check to audit drift.

execute

Carry an approved task through to working, verified code

external-context

Invoke parallel document-specialist agents for external web searches and documentation lookup

graph

Deterministic orchestration graph runtime - declarative DAG pipelines with journal-based crash recovery

harbor

Harbor intake for external work — the captain only handles unresolved decisions. Sweeps incoming issues and PRs, verifies every claim before disposition, reuses every decision already made, and hands the maintainer a docket whose pending items each carry one question with options, recommendation, impact and evidence. Agent-autonomous for facts and for actions covered by standing authorization; signed for every new judgment. Never merges.

hud

Configure HUD display options (layout, presets, display elements)

launch

Shipyard

loft

Loft the shape before cutting steel — answer a design question that prose cannot settle by building a throwaway artifact: a pure logic module in a clickable shell, or structurally different UI variants behind one route. The captain reacts to the artifact; the answer folds into the decision; the artifact never docks. Use when a design question stalls in words, when a navigator map carries a loft ticket, or when a spec discussion reaches

minimal-code-discipline

YAGNI-ladder coding discipline for writing changes — existence-first, reuse before writing, dependency ladder, shortest correct diff, with non-negotiables that must never be minimized away

Habilidades Relacionadas