Guia practica para conectar OpenCode con el servidor remoto de GitHub MCP usando PAT, desactivar OAuth automatico y evitar los errores de autenticacion mas comunes.
Cerramos la serie explorando qué implica migrar de CLI a TUI con ratatui: cómo cambia el modelo de interacción, qué fricciones introduce Rust con ownership y &mut en un event loop persistente, y por qué la arquitectura hexagonal absorbe el cambio sin cirugía.
Diseñamos la capa CLI con clap derive, parsing tipado de argumentos con ValueEnum y FromStr para UUIDs, subcomandos como enums, flag global –output para salida dual table/json, y errores propagados por capas hasta stderr.
Analizamos la estrategia de testing del repositorio: pruebas por comportamiento para cada adapter, aislamiento con tempdir, por qué no hay tests compartidos, y la deuda técnica que decidimos documentar en vez de esconder.
Tercera parte de la serie: definimos el contrato de persistencia con un trait genérico, implementamos dos adaptadores (in-memory y JSON a disco) y profundizamos en la diferencia entre interfaz e implementación como eje de la arquitectura hexagonal.
En esta parte modelamos el corazón del proyecto: la entidad Task, sus transiciones inmutables y una taxonomía de errores por capas. Menos magia, más reglas explícitas y menos bugs sorpresa.
Arrancamos la serie construyendo un To-Do CLI en Rust desde el Project #1 de CodeCrafters, pero sin convertirlo en un script gigante. Vemos decisiones de arquitectura, límites de capas y por qué un proyecto pequeño también puede enseñarte diseño serio.
Guía de lectura de la serie Todo CLI en Rust, con el mapa técnico del repositorio, orden recomendado de capítulos y enlaces directos a archivos y commits para seguir cada decisión paso a paso.