Otros stacks
Misma receta, distinto bootstrap: Node CLI · Python · Web Component · REST API (Node) · Java · Go
Systems · Tiempo estimado: ~15 min · Iteraciones Karajan: 2–3
Este tutorial te lleva desde un directorio vacío hasta una feature mergeada en un pequeño crate CLI Rust usando cargo + clap para parsear argumentos. Incluye el loop de tests exacto que Karajan usa para gatear merges (cargo test), para que lo puedas re-ejecutar sobre un repo real cambiando el bootstrap por cd <tu-repo>.
Deberías haber completado el setup común: npm install -g karajan-code, kj init dentro del proyecto y un kj doctor verde. Si kj doctor está rojo, arréglalo antes — kj run se negará a arrancar.
También necesitas una toolchain de Rust vía rustup (rustc --version → 1.75+ recomendado) y cargo en PATH.
Bootstrapea el proyecto.
cargo new hello-rs --bincd hello-rscargo add clap --features derivegit add -A && git commit -m "chore: scaffold"cargo new --bin genera Cargo.toml, src/main.rs con un stub Hello, world! e inicializa un repo git automáticamente. Confirma que cargo test corre (reportará 0 tests por ahora):
cargo testInicializa Karajan en el repo.
kj initkj doctorkj init crea .karajan/ y escribe la configuración del orquestador; kj doctor confirma que los CLIs de los agentes, Docker, Ollama, los puertos están sanos y detecta la toolchain de Rust (versión de cargo, rustc).
Describe la feature en lenguaje natural.
Sin fichero de spec. Sin JSON. Solo la tarea como se la dirías a un compañero:
kj run "Añade un subcomando 'greet --name=<name>' a src/main.rs \usando clap con derive. Debe imprimir 'Hello, <name>!' por stdout. \Si falta --name, imprime 'Hello, stranger!'. Añade tests unitarios \en un módulo #[cfg(test)] cubriendo la función greet para ambos casos." \ --methodology tdd \ --coder claude \ --reviewer codex \ --reviewer-fallback claude \ --max-iterations 5Mira el run en el HU Board.
Abre http://localhost:4000 en otra pestaña mientras el pipeline corre. Verás, en tiempo real:
cargo test línea a línea, incluyendo warnings de rustc.También puedes hacer tail del mismo trace en el terminal:
kj tailInspecciona el resultado.
git statusgit diff --statcargo testSalida esperada de cargo test:
running 2 teststest tests::greet_with_name ... oktest tests::greet_without_name ... ok
test result: ok. 2 passed; 0 failed; 0 ignoredComprueba en vivo:
cargo run -- greet --name=world# Hello, world!cargo run -- greet# Hello, stranger!Mergea.
Karajan no hace push ni merge por ti por defecto — esa decisión es tuya. Cuando estés contento con el diff:
git checkout -b feat/greetgit add -A && git commit -m "feat: add greet subcommand"git push -u origin feat/greetgh pr create --fillO, si quieres que Karajan abra la PR por ti, añade --auto-commit --auto-pr a la invocación kj run.
El mismo run lanzado vía MCP desde cualquier cliente MCP-capable (Cursor, Claude Desktop, Codex):
{ "tool": "kj_run", "params": { "task": "Añade un subcomando clap 'greet --name=<name>' imprimiendo 'Hello, <name>!' (o 'Hello, stranger!' si falta). Tests unitarios en #[cfg(test)].", "methodology": "tdd", "coder": "claude", "reviewer": "codex", "reviewerFallback": "claude", "maxIterations": 5 }}Si estás construyendo un crate de librería en lugar de un CLI:
cargo new hello-rs --libcd hello-rsDespués lanza con un hint explícito:
kj run "Implementa pub fn greet(name: Option<&str>) -> String en \src/lib.rs devolviendo 'Hello, <name>!' o 'Hello, stranger!'. \Añade tests unitarios #[cfg(test)]." \ --methodology tdd \ --max-iterations 5El coder se salta la dependencia clap y escribe una API de librería pura. cargo doc --open genera docs navegables a partir de los comentarios ///.
Añade --mode strict y los collectors deterministas de seguridad:
kj run "<tarea>" \ --mode strict \ --enable-security \ --enable-sonarcloud \ --methodology tddEsto cablea los collectors OSV-Scanner y Semgrep en el audit (ruleset Rust activado), y gatea el merge contra el quality gate de Sonar además del veredicto del reviewer. Para Rust en concreto también puedes activar cargo clippy -- -D warnings y cargo audit vía la config audit.tools — el reviewer de Karajan lee su salida como señal adicional.
Otros stacks
Misma receta, distinto bootstrap: Node CLI · Python · Web Component · REST API (Node) · Java · Go
Volver al índice
Índice How-To · setup + troubleshooting