Galeria pública e CLI para explorar, instalar e enviar pets animados em pixel art que flutuam na tela e reagem ao Codex e a outros agentes de programação.
dif-sh/dif
Armazene feature flags e testes A/B em arquivos Markdown no repositório e compile-os com uma CLI em um client TypeScript tipado.
Alternativa open source a:LaunchDarkly
Optimizely
- Estrelas
- 129
- Forks
- 0
- Issues abertas
- 1
- Último commit
- há 5 dias
O que é?
O dif armazena cada feature flag e experimento em um único arquivo Markdown com YAML frontmatter, versionado no Git junto ao código que afeta. A CLI `dif` valida esses arquivos (pesos, referências a superfícies, atributos de público e conflitos entre experimentos) e compila os ativos em um client TypeScript tipado e em um arquivo context.json. O SDK de runtime não tem dependências e usa divisão determinística em grupos, para que cada usuário receba a mesma variante em diferentes carregamentos de página e dispositivos, sem banco de dados de atribuições nem chamadas de rede.
O projeto oferece suporte a Next.js, React e SvelteKit, com pacotes npm separados para cada um. Flags e experimentos compartilham o mesmo formato de arquivo: uma flag é um experimento cuja ativação é gradual até chegar a 100%. A CLI inclui comandos para configurar um projeto, criar rascunhos de experimentos, rastrear a atribuição de um usuário com `dif qa` e registrar conclusões que orientam experimentos futuros na mesma superfície.
O uso de analytics é opcional. Sem uma chave publicável, as flags são avaliadas localmente e nenhum dado é enviado. A conexão ao dif.sh Cloud habilita a ingestão de eventos e a análise estatística, enquanto handlers de eventos personalizados podem encaminhar dados para qualquer pipeline. O repositório também inclui skills do Claude Code e arquivos de instruções para agentes, voltados à criação e conclusão de experimentos.
Recursos principais
- 01Flags e experimentos são arquivos Markdown com frontmatter, revisados em pull requests.
- 02`dif validate` verifica pesos, referências a superfícies, públicos e conflitos entre experimentos.
- 03`dif build` gera um client TypeScript tipado e o arquivo context.json.
- 04A divisão determinística em grupos executa a mesma lógica na CLI em Rust e no SDK TypeScript.
- 05`dif qa` mostra qual variante um determinado usuário recebe e por quê.
- 06Conexão opcional ao dif.sh Cloud para ingestão e análise de eventos.
Casos de uso
- Executar testes A/B em um site Next.js ou SvelteKit sem um dashboard de flags hospedado.
- Manter o histórico das flags e as conclusões dos experimentos no Git, junto ao código.
- Permitir que agentes de programação com IA criem e desativem flags editando arquivos no repositório.
Início rápido
- 1
Instale a CLI do dif com npm (requer Node 20 ou posterior).
npm install -g @dif.sh/cli - 2
Gere o diretório dif/, a configuração e os arquivos de agente no seu repositório.
dif init - 3
Crie um novo arquivo de experiment, abra-o, defina status: active e execute dif build.
dif new home-hero-cta --surface home - 4
Compile os experiment ativos no cliente TypeScript tipado.
dif build
Antes de usar
- A instalação via npm requer Node 20 ou posterior; também é oferecido um binário independente.
- O cliente gerado é ignorado pelo gitignore, então o CI e a implantação devem executar dif build antes de compilar o app.
- Os pacotes npm SDK são apenas ESM e não têm um ponto de entrada require().
- Cloud analytics é opcional e requer uma publishable key do dif.sh Cloud.
Tópicos
Perguntas frequentes
- O que é dif?
- Armazene feature flags e testes A/B em arquivos Markdown no repositório e compile-os com uma CLI em um client TypeScript tipado. O dif armazena cada feature flag e experimento em um único arquivo Markdown com YAML frontmatter, versionado no Git junto ao código que afeta. A CLI `dif` valida esses arquivos (pesos, referências a superfícies, atributos de público e conflitos entre experimentos) e compila os ativos em um client TypeScript tipado e em um arquivo context.json. O SDK de runtime não tem dependências e usa divisão determinística em grupos, para que cada usuário receba a mesma variante em diferentes carregamentos de página e dispositivos, sem banco de dados de atribuições nem chamadas de rede.
- dif é gratuito? Qual é a licença?
- dif é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
- dif ainda é mantido?
- Manutenção ativa. O último commit de dif foi em 16 de out. de 2026.
- Para que posso usar dif?
- Executar testes A/B em um site Next.js ou SvelteKit sem um dashboard de flags hospedado. Manter o histórico das flags e as conclusões dos experimentos no Git, junto ao código. Permitir que agentes de programação com IA criem e desativem flags editando arquivos no repositório.
- Como instalar dif?
- Instale a CLI do dif com npm (requer Node 20 ou posterior).: npm install -g @dif.sh/cli Gere o diretório dif/, a configuração e os arquivos de agente no seu repositório.: dif init Crie um novo arquivo de experiment, abra-o, defina status: active e execute dif build.: dif new home-hero-cta --surface home Compile os experiment ativos no cliente TypeScript tipado.: dif build
- Onde consigo dif?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/dif-sh/dif
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Skill de agente para Claude, licenciada pelo MIT, que ensina Claude a criar e editar vídeos de motion graphics em código com Remotion.
CMS headless open source nativo do Next.js e framework de aplicações, com backend em TypeScript e painel administrativo React personalizável.
Coleção de pacotes de instruções instaláveis que dão a agentes de programação com IA conhecimentos de boas práticas específicos da Vercel, do React e do Next.js.
Dashboard open source e auto-hospedável para acompanhar o mercado de ações, com gráficos em tempo real, alertas de preço, listas de acompanhamento e informações sobre empresas, feito com Next.js e TradingView.
Framework para criar sites de documentação com React.js, compatível com Next.js, Astro e frameworks React baseados em Vite.