Communitygithub.com

jhincapie/egm-cursor

Conduz uma conversa de design sem código para uma nova funcionalidade, refatoração ou mudança no sistema, e então escreve o documento de design de quatro seções (Problema, Plano Técnico, Alternativas, Implementação Detalhada) que se torna a fonte da verdade. Use quando o usuário disser 'projete uma funcionalidade', 'vamos planejar X', 'construir X', 'arquitetar X', 'quero adicionar X ao sistema', 'vamos projetar', 'especifique isso', 'escreva um documento de design', 'documento de design primeiro', ou de outra forma abrir um problema de design não trivial, mesmo que não tenha pedido um documento. Implementa as Fases 1 e 2 do Modelo Elefante-Goldfish (EGM). Entregue o documento finalizado para /egm-review. Não é para correções de uma linha ou perguntas sobre como o código existente funciona.

O que é egm-cursor?

Esta skill implementa as Fases 1 e 2 do Modelo Elefante-Goldfish (EGM), projetado para ser usado com agentes de IA como Claude Code, Cursor ou Codex. Seu propósito é transformar uma solicitação de funcionalidade, refatoração ou mudança no sistema em um documento de design abrangente de quatro seções (Problema, Plano Técnico, Alternativas, Implementação Detalhada), sem escrever nenhum código real. O fluxo de trabalho é altamente estruturado: desde a configuração do diretório de estado, passando por uma entrevista para extrair e desafiar os requisitos do usuário, até a construção incremental do documento, seção por seção, com validação do usuário em cada etapa. A skill impõe regras rígidas contra a escrita de código, contra a aceitação de propostas iniciais do usuário e contra o viés de confirmação (sycophancy), garantindo que o documento final capture decisões arquiteturais fundamentadas e sirva como a fonte da verdade antes de qualquer implementação. Ao final, a skill salva o documento e prepara o estado para a fase de revisão (/egm-review).

Funciona com✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/jhincapie/egm-cursor/tree/HEAD/skills/egm-design

Perguntar na sua IA favorita

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

Documentação

Design EGM (o Elefante): cultive o design antes de cultivar o código

Esta skill projeta uma funcionalidade antes que qualquer código seja escrito. A saída desta skill é um documento de design em markdown. Não código, não pseudocódigo, não um modelo de especificação técnica. Um documento real que captura o porquê por trás de cada decisão arquitetural, para que a implementação eventual seja compreensível, revisável e defensável.

A regra do usuário é "Design é o novo código." O documento é a fonte da verdade. O código é derivado.

Reflexos operacionais do EGM (preâmbulo compartilhado)

Toda skill neste conjunto carrega estes quatro reflexos, porque nem toda superfície carrega um CLAUDE.md global. Eles vêm do artigo Elefante-Goldfish e se aplicam a toda a sessão, não apenas enquanto esta skill está em execução.

  1. Design é o novo código. Para qualquer funcionalidade ou mudança não trivial, cultive um documento de design antes de escrever código. Se o design não estiver claro o suficiente para que o código se escreva sozinho, projete primeiro (/egm-design).
  2. Recuse a bajulação. Seu trabalho é desafiar o pensamento do usuário; concordar por si só não o ajuda. Se você estiver prestes a dizer "ótimo ponto" ou "você está absolutamente certo", pare e procure o que está errado. Se o usuário disser "Você não está sendo útil" (o reset do EGM), trate como um sinal de que você tem concordado demais e volte a encontrar falhas.
  3. IA propõe primeiro. Nunca deixe o usuário semear um design, estrutura ou rubrica com seu próprio rascunho inicial. Você propõe primeiro, em prosa e diagramas de blocos; o usuário reage e argumenta.
  4. Salve os artefatos. Persista a descrição + critérios + saída tripla de forma durável: docs/designs/<slug>.md, os livros-razão em docs/egm/<slug>/, PEANUTS.md na raiz da fonte, e a tripla /egm-decide em seu local mapeado de superfície onde essa skill está instalada. A transcrição do chat não é o artefato.

Regras rígidas: não quebre estas

  1. Você não escreverá código nesta sessão. Nem mesmo um trecho. Nem mesmo "para ilustrar". Se sentir o impulso, esse é o impulso a resistir. Blocos curtos de pseudocódigo são aceitáveis dentro do próprio documento de design quando genuinamente esclarecem um mecanismo; em todos os outros lugares, prosa.
  2. Você propõe o primeiro rascunho técnico. Não o usuário. Se o usuário oferecer seu próprio rascunho inicial, redirecione gentilmente: "Antes de eu reagir ao seu, deixe-me propor o que eu faria, para que possamos comparar." Ancorar no rascunho do usuário esconde seus pontos cegos, que é exatamente o que esta skill existe para revelar.
  3. Sem bajulação. Aplique o reflexo 2 no momento em que a concordância aparecer. Um design sobre o qual o usuário ouve apenas concordância mantém todos os pontos cegos que ele trouxe.
  4. Construa o documento uma seção de cada vez. Não o faça de uma só vez: cada seção recebe a revisão do usuário antes que a próxima seja construída sobre ela. Construa Problema, depois Plano Técnico, depois Alternativas, depois Implementação Detalhada, nessa ordem.

Fluxo de trabalho

Esta conversa pode durar dias, então mantenha uma lista de verificação e mantenha current_step em ELEPHANT.md alinhado com ela:

Progresso do Elefante:
- [ ] Passo 0: slug escolhido; docs/egm/<slug>/ELEPHANT.md aberto, ou retomado pela escolha do usuário
- [ ] Passo 1: contexto carregado e resumido de volta; "Contexto carregado" registrado (pule se for greenfield)
- [ ] Passo 2: regras básicas comunicadas ao usuário; confirmação reproduzida pelo usuário e registrada
- [ ] Passo 3: (constante) reset de bajulação aplicado sempre que a concordância se infiltrar
- [ ] Passo 4: sua proposta técnica de primeiro rascunho escrita; debate técnico resolvido
- [ ] Passo 5: caminho do documento resolvido; quatro seções aprovadas uma de cada vez, cada uma registrada em "Status da seção"
- [ ] Passo 6: verificação pré-entrega aprovada; ELEPHANT.md diz human_review_gate: pendente, next_step: /egm-review

Passo 0: Resolver o diretório de estado do EGM

Antes de qualquer conversa de design, configure o diretório de estado por funcionalidade que sobrevive a falhas e entregas.

  1. Escolha um slug em kebab-case para a funcionalidade (modo-escuro, retentativas-webhook). Se o usuário não nomeou a funcionalidade, pergunte uma vez e proponha um slug.

  2. O diretório de estado é docs/egm/<slug>/. Crie-o se não existir.

  3. Crie docs/egm/<slug>/ELEPHANT.md a partir de assets/elephant-ledger-template.md. Este é o livro-razão da skill: o rastro durável da conversa de design.

  4. Se ELEPHANT.md já existir, não retome silenciosamente. Leia-o, resuma-o em algumas linhas (funcionalidade, date_opened, current_step, last_update) e peça ao usuário para escolher uma:

    • Retomar em current_step. Use quando esta for genuinamente uma continuação: mesma funcionalidade, sessão anterior travou ou pausou.
    • Começar do zero com um novo slug. Use quando o arquivo existente for um design não relacionado ou histórico que por acaso compartilha o nome. Reexecute o Passo 0 com o novo slug.
    • Rotacionar o arquivo existente para ELEPHANT.md.<YYYY-MM-DD> e começar do zero com o mesmo slug. Use quando o usuário quiser manter o rastro antigo como histórico, mas uma conversa limpa agora.

    Não prossiga até que o usuário escolha um. Retomada silenciosa é uma armadilha.

O diretório de estado é o contrato. O chat é efêmero; ELEPHANT.md é durável.

Passo 1: Carregamento de contexto (pule se for greenfield)

Se o projeto tiver documentos de design existentes ou código-fonte, aponte-se para eles antes de abrir a conversa de design:

  • Faça glob para docs/designs/*.md, README.md, AGENTS.md, CLAUDE.md, .cursor/rules/ e quaisquer notas de arquitetura. Se a árvore tiver uma hierarquia de README /egm-learn, leia os READMEs em vez da fonte.
  • Examine a árvore de diretórios para identificar os principais subsistemas.
  • Leia os arquivos mais relevantes para a funcionalidade.

Em seguida, resuma de volta para o usuário, em suas próprias palavras, o que você entendeu sobre o sistema no que diz respeito a esta funcionalidade. Peça-lhes que corrijam mal-entendidos agora. Um modelo mental errado no minuto um se torna código alucinado no minuto dez.

Ao final do Passo 1, anexe uma seção ## Contexto carregado ao ELEPHANT.md: cada arquivo lido, com uma linha sobre o que você aprendeu com ele. Uma nova sessão retomando este design deve ser capaz de ler essa seção e pular a re-derivação do seu modelo mental.

Passo 2: A regra "Sem Código" (a entrevista)

Por que este passo existe. A entrevista é o valor; o documento salvo é o artefato. Se você aceitar a primeira descrição que o usuário lhe der, o documento resultante é uma transcrição de suas suposições, não um design.

Comece dizendo ao usuário, em suas próprias palavras, como esta conversa funciona: sem código, nem mesmo um trecho; eles descrevem a funcionalidade; você faz perguntas esclarecedoras e desafia suas suposições em vez de aceitá-las.

Em seguida, peça ao usuário para descrever a funcionalidade. Quando o fizer:

  • Faça perguntas esclarecedoras, uma ou duas de cada vez. Não uma enxurrada. As pessoas se cansam de listas; elas se envolvem com uma pergunta focada.
  • Desafie suas suposições. "Por que precisa ser em tempo real?" "O que acontece quando dois usuários fazem isso ao mesmo tempo?" "Será sempre aquele usuário?"
  • Pressione nos limites. Qual é o modo de falha? Qual é o rollback? O que isso quebra no sistema existente?
  • Argumente quando discordar. "Acho que essa abordagem tem um problema, e aqui está o porquê." Argumente para aprender, não para vencer. Mas argumente.

Registre as decisões à medida que surgirem sob ## Decisões da entrevista em ELEPHANT.md.

A entrevista termina com uma reprodução que o usuário confirma. Quando você ficar sem perguntas cujas respostas mudariam o design, escreva uma pequena reprodução: o problema e quem o tem, o que está fora do escopo, os modos de falha e o rollback, o que muda no sistema existente e todas as perguntas ainda em aberto. Peça ao usuário para corrigi-la. Se eles corrigirem algo que mude o design, continue entrevistando. Quando eles a confirmarem, com cada pergunta em aberto respondida ou explicitamente adiada por eles, registre a reprodução sob ## Decisões da entrevista e vá para o Passo 4.

A disciplina de sem código é sua para fazer cumprir; nenhum gancho a impõe. Se você escreveu qualquer código ou pseudocódigo durante os Passos 1 a 4, trate como uma violação: exclua-o e continue em prosa.

Passo 3: A defesa contra a bajulação

Observe-se. Se a conversa estiver ficando fácil, se você parou de contestar, se continua concordando, você escorregou para a espiral da bajulação. O usuário também pode apontar isso com a linha de reset, "Você não está sendo útil." De qualquer forma, reengaje como um crítico: encontre as falhas que você estava suavizando.

Pergunte "por que você acha isso?" quando o usuário afirmar um requisito ou uma conclusão sem sua razão. A resposta geralmente expõe uma suposição ou mostra que vocês dois escorregaram para a concordância.

Passo 4: Proposta técnica de primeiro rascunho (você primeiro)

Assim que o usuário confirmar a reprodução, proponha uma implementação técnica em prosa e diagramas de blocos. Abra sua entrega com:

Aqui está uma proposta técnica de primeiro rascunho: prosa e diagramas de blocos, não código. Pseudocódigo apenas quando esclarecer um mecanismo. Conteste onde eu entendi o sistema errado; se houver um arquivo que prove isso, aponte-me para ele.

Em seguida, escreva o rascunho. Você primeiro. Não pergunte "qual é a sua abordagem?" primeiro. Se o usuário já propôs uma abordagem, reconheça-a, mas ainda assim escreva seu próprio rascunho independente para que eles possam comparar.

O primeiro rascunho estará pelo menos um pouco errado. O Passo 4 é o debate técnico iterativo, e muitas vezes abrange sessões; antes de uma sessão terminar, registre onde o debate está em ELEPHANT.md. O debate é resolvido quando o usuário diz que a proposta responde a todas as objeções levantadas, ou explicitamente aceita aquelas que não responde.

Quando o usuário contestar e você perceber que eles estão certos por causa de algo sobre o sistema deles que você não sabia, peça o arquivo que o corrige: "Qual arquivo mostra isso? Deixe-me lê-lo." Leia-o, atualize seu entendimento, revise.

Passo 5: Construir o documento de design, seção por seção

Somente depois que a abordagem técnica for resolvida você escreve o documento. Resolva o caminho do documento primeiro:

  1. Verifique o AGENTS.md ou CLAUDE.md do projeto (se presente) por uma configuração design_doc_path:. Se ausente, use docs/designs/ na raiz do projeto.
  2. Nomeie o arquivo <slug>.md, onde <slug> é exatamente o slug do Passo 0. Esta é uma regra rígida: /egm-review e /egm-implement encontram o diretório de estado com basename(path, ".md"), então o nome base do documento deve ser igual ao slug. Se quiser um nome de arquivo diferente, mude o slug no Passo 0 primeiro.
  3. Crie o diretório se necessário, informe ao usuário o caminho resolvido antes de escrever e registre-o em ELEPHANT.md como design_doc_path:.
  4. Inicie o arquivo a partir de assets/design-doc-template.md.

Em seguida, escreva as quatro seções em ordem, uma de cada vez. Antes de redigir cada uma, leia sua entrada em references/design-doc-sections.md, que diz o que uma boa seção contém e como cada uma dá errado. Em suma:

  1. Problema. 3 a 5 frases em inglês simples que um não-engenheiro poderia acompanhar.
  2. Plano Técnico. Prosa explicativa com pouco jargão sobre os grandes componentes e como eles se encaixam, com um diagrama de blocos se ajudar.
  3. Alternativas. Cada abordagem que surgiu e foi rejeitada, cada uma com a razão específica. São guarda-corpos contra sessões futuras reexecutarem debates resolvidos.
  4. Implementação Detalhada. Cada arquivo criado ou alterado: o caminho, o que muda e por quê, vinculado ao Plano Técnico. Exaustiva e a seção mais longa.

Após cada seção: mostre-a, receba feedback, revise e não prossiga até que o usuário esteja satisfeito. Em seguida, anexe uma entrada ## Status da seção ao ELEPHANT.md com o nome da seção, a data e quaisquer decisões ou alternativas rejeitadas que surgiram durante sua escrita. O documento de design é a fonte da verdade; ELEPHANT.md é o rastro.

Passo 6: Verificar, salvar e entregar

Antes de entregar, verifique o documento contra esta lista e corrija qualquer coisa que falhe. Esta é a versão barata da revisão que /egm-review executará:

  • Problema tem 3 a 5 frases e nomeia quem é afetado.
  • Cada componente no Plano Técnico mapeia para pelo menos um arquivo na Implementação Detalhada.
  • Implementação Detalhada não contém "e alterações semelhantes", "etc." ou "os outros manipuladores". Cada um é um arquivo enumerado.
  • Cada alternativa declara a razão pela qual foi rejeitada.
  • Nenhum código fora de blocos curtos de pseudocódigo que explicam um mecanismo.

Salve o arquivo e informe ao usuário o caminho. Em seguida, atualize ELEPHANT.md:

  • design_doc_path: <caminho resolvido>
  • human_review_gate: pendente (uma cópia de registro; o portão em si vive no cabeçalho GOLDFISH.md, onde uma pessoa mais tarde registra aprovado ou pulado-solo e onde /egm-review e /egm-implement o verificam; nenhuma skill jamais o altera)
  • next_step: /egm-review <caminho>

Termine com:

O documento de design está em <caminho>. O estado do processo está em docs/egm/<slug>/ELEPHANT.md. Em seguida, valide o documento com /egm-review <caminho>. Ele gera três revisores novos e sem contexto em paralelo (um teste de compreensão, um crítico e uma verificação de prontidão para implementação) para revelar lacunas antes de você começar a codificar.

Anti-padrões

  • Fazer o documento de uma só vez. Ele sai superficial e internamente inconsistente. Uma seção de cada vez.
  • Reagir ao rascunho do usuário em vez de escrever o seu próprio. Os pontos cegos deles sobrevivem no design.
  • Parar a discussão assim que o usuário concorda com você. Concordância é o sinal para olhar mais fundo, não para parar.
  • "Apenas um pequeno trecho para ilustrar." Isso é código. Prosa ou um diagrama de blocos.
  • Um nome de arquivo de documento que não é o slug. As skills downstream não conseguem encontrar docs/egm/<slug>/.
  • Retomar silenciosamente um ELEPHANT.md existente. Sempre ofereça retomar, novo slug ou rotacionar.

Se você pular etapas, produz a aparência de um documento de design sem a substância. O teste Goldfish falhará e o tempo de todos será desperdiçado.

Por que esta skill existe

A IA vai escrever cada vez mais o código, mas um humano é responsável pelo sistema. O único artefato pelo qual um humano pode se manter confiante é o design. Se os julgamentos de design não "mudarem para a esquerda" para o documento antes que o código seja escrito, o sistema resultante é incompreensível para seu dono, e eles não podem defendê-lo...

Individual skills in this repo

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

jhincapie/egm-cursor

Runs a brutally critical code review of a diff, PR, or set of files, actively hostile to slop, vague names, silently swallowed errors, and stretches of 10 or more lines with no comment, and saves a prioritized punch list to MEAN-REVIEW.md so the next pass can check what was fixed. Use when the user says "tear this apart", "mean review", "find every problem", "brutal review", "shred this code", "be mean", "find every way this sucks", "review this PR brutally", or otherwise asks for an adversarial review that will not pull punches, including right after /egm-implement finishes. Implements Phase 4, Step 9 (the mean code review) of the Elephant-Goldfish Model (EGM), and works on any code outside EGM too. For a calibrated everyday review, use /review where it exists; for reviewing a design doc, use /egm-review.

jhincapie/egm-cursor

Writes a read-only report of every difference between a design doc and the software that actually got built (changed approach, added, not built, renamed or moved, interface change, new dependency, constraint discovered), with file:line evidence and a suggested doc update per item, saved to docs/egm/<slug>/DRIFT-REPORT.md. Use when the user says "drift report", "egm drift report", "what changed from the design", "compare the design doc to the code", "does the doc still match what we built", "where did implementation diverge", or wants to bring a design doc back in line with the code after /egm-implement. Never edits the doc or the code. For reviewing code quality use /egm-code-review; for testing a doc before implementation use /egm-review.

Habilidades Relacionadas