Communitygithub.com

Razor

Um princípio de design minimalista que orienta o desenvolvedor a encontrar a necessidade real do usuário e construir exatamente o suficiente para atendê-la, nem mais, nem menos.

O que é Razor?

O skill **Razor** implementa o princípio de design 'a navalha de Occam' aplicado ao desenvolvimento de software. Ele ajuda o desenvolvedor a evitar excessos de engenharia, abstrações prematuras e funcionalidades especulativas, focando sempre na necessidade real do usuário. O fluxo de trabalho consiste em dois cortes principais: primeiro, reconstruir a necessidade real a partir do que o usuário pede (que geralmente é uma solução imaginada, não o problema de fundo); segundo, projetar a solução mais simples que atenda a essa necessidade, usando o que já existe na base de código, na stdlib ou em dependências instaladas. O skill fornece um template de saída que documenta a necessidade verdadeira, o design mínimo, o que foi cortado por excesso e o que não deve ser cortado (como validação, tratamento de erros, segurança e acessibilidade). É útil para qualquer plataforma de agente de IA (Claude Code, Cursor, Codex, etc.) que precise gerar código ou arquiteturas sem superdimensionamento.

Funciona com~Claude Code~Codex CLI~Cursor✓Antigravity
npx skills add AmosChenZixuan/Agentic-working-contract

Perguntar na sua IA favorita

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

Documentação

O que Razor faz?

O design correto é o mínimo que atende plenamente à real necessidade do usuário — nada acrescentado para necessidades que ainda não existem. Dois cortes: encontre a necessidade e ajuste a solução a ela.

1. Encontre a necessidade real. O que as pessoas pedem é uma solução que elas já imaginaram, não a necessidade subjacente — e o que dizem muitas vezes não é o que pensam. O pedido declarado, a solução imaginada e a necessidade real são três coisas diferentes. Reconstrua a necessidade a partir dos primeiros princípios: para quem é isso e o que ela realmente está tentando fazer, agora mesmo. Você não pode cortar contra um alvo que não encontrou — se não estiver claro, pergunte.

2. Ajuste a solução para caber (Occam). O design correto é o menor número de partes móveis que atende a essa necessidade; cada camada extra, opção, abstração ou proteção é custo — para construir, ler, testar, quebrar e alterar — a menos que uma necessidade presente pague por ele. Para encontrar o mínimo, pare no primeiro degrau que segura:

  • Precisa existir? → não: descarte (YAGNI).
  • Algo já resolve isso — esta base de código, a stdlib, um recurso da plataforma, uma dependência instalada? → use, não construa.
  • Pode ser uma única coisa óbvia em vez de um sistema? → faça ser isso.

Preguiçoso quanto à solução, nunca quanto a entender o problema.

Processo

  1. Reconstrua a verdadeira necessidade (corte 1); declare-a em uma linha.
  2. Derive o design mínimo — comece pela coisa mais burra que funciona, adicione apenas o que a necessidade força (corte 2).
  3. Compare a proposta contra isso. Tudo extra é candidato a corte; nomeie a bandeira vermelha (YAGNI, abstração prematura, superdefesa, reinvenção, opção especulativa).
  4. Não corte demais. Releia a necessidade e coloque de volta qualquer coisa que ela realmente exija. Estreito ≠ frágil — nunca corte validação real, tratamento de erros, segurança ou acessibilidade.

Saída

Use este template e mantenha-o curto — um bisturi, não um ensaio:

## Necessidade verdadeira
<uma linha — o que o usuário realmente precisa, não o que ele pediu>

## Design mínimo
<a abordagem mais estreita que atende a necessidade>

## Corte como excesso de design
- <coisa> — <bandeira vermelha + por que nenhuma necessidade presente a justifica>

## Mantenha (não corte demais)
<qualquer coisa que pareça cortável mas é genuinamente necessária, para não ser
 removida depois. Omita esta seção se nada se qualificar.>

Se o design já é mínimo, diga isso e pare.

Habilidades Relacionadas