Touch Grass: un design system brutalista open source
- Categoría:
- Diseño de producto
- Rol:
- Autor del proyecto (diseño e implementación)
- Período:
- 2026
En Touch Grass, partí de una dirección visual para construir componentes y tokens que pudiera implementar y verificar. El sistema conecta CSS, Tailwind, Figma y JavaScript/TypeScript, con pruebas y documentación pública.
Fuente: el repositorio, los paquetes publicados en npm y la auditoría automática del 14/04/2026. Repositorio (github.com) Abre en otra pestañaPaquete React (npmjs.com) Abre en otra pestañaPaquete de tokens (npmjs.com) Abre en otra pestaña

Desafío
Construir un design system con identidad visual propia, tokens compartidos entre CSS, Tailwind, Figma y JS/TS, pruebas y documentación pública. La dirección visual adoptó esquinas rectas, tipografía en dos familias (Geist Sans y Geist Mono) y restricciones explícitas para guiar la implementación.
Solución
Decisiones de diseño: esquinas rectas en todos los componentes, dos familias tipográficas, Geist Sans para texto y Geist Mono para números, etiquetas y datos, y carga con bloque de caracteres en lugar de spinner. Los tokens salen de una única fuente en JSON, y Style Dictionary genera variables CSS, tema de Tailwind, JSON para Figma y constantes JS/TS. La gobernanza vive en el código, con un test de contrato de contraste y un plugin de ESLint propio. En la ejecución usé Claude Code con un spec corto, un plan por etapas, tests antes del componente y revisión por un agente separado. Las decisiones de arriba quedaron conmigo.
Resultados
10 componentes básicos y 9 patrones compuestos, 23 archivos de test y dos flujos de CI. En la auditoría automática del 14/04/2026 con axe-core, las 27 páginas de documentación tuvieron 0 violaciones y 687 verificaciones aprobadas; el resultado vale para esa ejecución, hecha en un entorno local. Los paquetes @touch-grass-ds/react y @touch-grass-ds/tokens están publicados en npm con licencia MIT. Límite: es un proyecto personal, sin equipos que lo consuman ni métricas de adopción.
Galería
Recortes de la documentación pública, capturados en octubre de 2026.
Aprendizajes clave
Lo que estaba escrito en la especificación, el agente lo siguió, como la carga con bloque de caracteres. Lo que no escribí apareció en la revisión. El agente revisor notó que el Button no definía type="button" por defecto, y un clic dentro de un formulario lo enviaba.
¿Necesitas convertir un problema de producto en una experiencia que se pueda implementar?
Puedo ayudarte a conectar estrategia, interfaz e ingeniería en una entrega que sigue siendo clara después del handoff.


