Repolode
dif-sh

dif-sh/dif

Flags de funcionalidad y pruebas A/B guardadas como archivos Markdown en tu repo y compiladas por una CLI en un cliente tipado de TypeScript.

Alternativa open source a:LaunchDarklyOptimizely

Estrellas
129
Forks
0
Issues abiertos
1
Último commit
hace 5 días

¿Qué es?

dif guarda cada flag de funcionalidad y experimento en un único archivo Markdown con YAML frontmatter, versionado en git junto al código al que afecta. La CLI `dif` valida estos archivos (pesos, referencias a superficies, atributos de audiencia y conflictos entre experimentos) y compila los activos en un cliente tipado de TypeScript y un archivo context.json. El SDK de runtime no tiene dependencias y usa asignación determinista, de modo que cada usuario recibe la misma variante en distintas cargas de página y dispositivos, sin una base de datos de asignaciones ni llamadas de red.

El proyecto está dirigido a Next.js, React y SvelteKit, con paquetes npm separados para cada uno. Los flags y los experimentos comparten un formato de archivo: un flag es un experimento cuyo porcentaje de exposición se aumenta hasta el 100 %. La CLI incluye comandos para crear la estructura inicial de un proyecto, preparar experimentos, rastrear la asignación de un usuario con `dif qa` y registrar conclusiones que alimentan experimentos posteriores en la misma superficie.

La analítica es opcional. Sin una clave publicable, los flags se evalúan localmente y no se envía nada a ningún sitio. Al conectarse a dif.sh Cloud, se habilitan la recepción de eventos y el análisis estadístico; los controladores de eventos personalizados pueden enviar datos a cualquier pipeline. El repo también incluye skills de Claude Code y archivos de instrucciones para agentes, para crear y cerrar experimentos.

Funciones clave

  • 01Los flags y los experimentos son archivos Markdown con frontmatter, que se revisan en pull requests.
  • 02`dif validate` comprueba los pesos, las referencias a superficies, las audiencias y los conflictos entre experimentos.
  • 03`dif build` genera un cliente tipado de TypeScript y context.json.
  • 04La asignación determinista ejecuta la misma lógica en la CLI de Rust y en el SDK de TypeScript.
  • 05`dif qa` muestra qué variante recibe un usuario determinado y por qué.
  • 06Conexión opcional a dif.sh Cloud para la recepción y el análisis de eventos.

Casos de uso

  • Ejecutar pruebas A/B en un sitio de Next.js o SvelteKit sin un panel alojado para gestionar flags.
  • Mantener el historial de flags y las conclusiones de los experimentos en git, junto al código.
  • Permitir que agentes de programación con IA creen y retiren flags editando archivos en el repo.

Inicio rápido

  1. 1

    Instala la CLI de dif con npm (requiere Node 20 o posterior).

    npm install -g @dif.sh/cli
  2. 2

    Genera el directorio dif/, la configuración y los archivos de agente en tu repositorio.

    dif init
  3. 3

    Crea un nuevo archivo de experiment, ábrelo, establece status: active y ejecuta dif build.

    dif new home-hero-cta --surface home
  4. 4

    Compila los experiment activos en el cliente de TypeScript tipado.

    dif build

Antes de usarlo

  • La instalación con npm requiere Node 20 o posterior; también se ofrece un binario independiente.
  • El cliente generado está excluido por gitignore, así que CI y el despliegue deben ejecutar dif build antes de compilar la app.
  • Los paquetes npm SDK son solo ESM y no tienen un punto de entrada require().
  • Cloud analytics es opcional y requiere una publishable key de dif.sh Cloud.

Temas

Preguntas frecuentes

¿Qué es dif?
Flags de funcionalidad y pruebas A/B guardadas como archivos Markdown en tu repo y compiladas por una CLI en un cliente tipado de TypeScript. dif guarda cada flag de funcionalidad y experimento en un único archivo Markdown con YAML frontmatter, versionado en git junto al código al que afecta. La CLI `dif` valida estos archivos (pesos, referencias a superficies, atributos de audiencia y conflictos entre experimentos) y compila los activos en un cliente tipado de TypeScript y un archivo context.json. El SDK de runtime no tiene dependencias y usa asignación determinista, de modo que cada usuario recibe la misma variante en distintas cargas de página y dispositivos, sin una base de datos de asignaciones ni llamadas de red.
¿dif es gratuito? ¿Qué licencia tiene?
dif es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿dif sigue mantenido?
Mantenimiento activo. El último commit de dif fue el 16 oct 2026.
¿Para qué puedo usar dif?
Ejecutar pruebas A/B en un sitio de Next.js o SvelteKit sin un panel alojado para gestionar flags. Mantener el historial de flags y las conclusiones de los experimentos en git, junto al código. Permitir que agentes de programación con IA creen y retiren flags editando archivos en el repo.
¿Cómo se instala dif?
Instala la CLI de dif con npm (requiere Node 20 o posterior).: npm install -g @dif.sh/cli Genera el directorio dif/, la configuración y los archivos de agente en tu repositorio.: dif init Crea un nuevo archivo de experiment, ábrelo, establece status: active y ejecuta dif build.: dif new home-hero-cta --surface home Compila los experiment activos en el cliente de TypeScript tipado.: dif build
¿Dónde consigo dif?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/dif-sh/dif

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados