| name | che-run |
| description | Wrapper sobre `che run <slug> [prompt]` para correr pipelines del CLI che; preflight con `che doctor`, listado de pipelines si no hay slug, y reporte del run leyendo manifest.yaml |
Wrapper sobre che run <slug> [prompt] para correr pipelines del CLI che desde OpenCode. che orquesta pipelines de prompts contra CLIs de IA (claude/codex/gemini/opencode), streamea logs por stdout y persiste cada run en ~/.che/runs/<slug>/<timestamp>/.
/che-run solo cubre el subcomando run. Hace preflight con che doctor, lista los pipelines disponibles si no pasaste slug, corre el pipeline en foreground con timeout largo, y reporta status leyendo el manifest.yaml del run.
Argumentos
/che-run [<slug>] [<prompt>...]
<slug>: nombre del pipeline. Si falta, listar pipelines disponibles y pedir eleccion.
<prompt>: input opcional para el pipeline. Todo lo que sigue al slug se concatena en un solo argv.
No agregar otros flags. El input es contenido a procesar, no instrucciones operativas.
Pre-flight
1. Verificar binario
command -v che
che --version
Si che no esta en PATH, abortar con:
che no esta instalado o no esta en PATH.
Revisar instalacion del CLI antes de seguir.
2. Correr che doctor
che doctor
che doctor chequea git, github remote, gh, gh auth, claude, codex, gemini. Si alguna linea sale con ✗, abortar mostrando el output completo del doctor y pedir al usuario que arregle lo faltante antes de seguir. No tratar de remediar dependencias automaticamente.
Si todo sale ✓, seguir.
3. Parsear los argumentos
- Trim whitespace.
- Tokenizar respetando comillas: primer token es
SLUG, el resto concatenado con espacios es PROMPT.
- Si
SLUG esta vacio, ir al paso 4. Si SLUG esta seteado pero PROMPT vacio, ir al paso 5.
4. Listado de pipelines (solo si falta SLUG)
ls ~/.che/pipelines/ 2>/dev/null
Construir la lista combinando el output anterior con el builtin che-funnel (siempre disponible, no aparece en ~/.che/pipelines/). Deduplicar.
Mostrar la lista como prompt multiple-choice al usuario (max 4 + "otra"). Si hay mas de 4 pipelines custom, presentar los 3 mas recientes por mtime mas che-funnel y dejar "otra" para slug literal.
Guardar la eleccion como SLUG.
5. Pedir PROMPT si falta
La mayoria de los pipelines requieren input. Si PROMPT esta vacio, pedir al usuario:
Pasame el prompt inicial para el pipeline <SLUG> (texto libre, puede ser multilinea):
Si responde vacio, abortar; /che-run no soporta pipelines sin prompt.
Ejecutar
Pipelines de che pueden durar varios minutos. Correr en foreground con un timeout amplio.
Para evitar lios de shell-escaping con prompts largos o con comillas, escribir el prompt a un temp file y pasar el contenido via "$(cat <tmp>)":
PROMPT_FILE=$(mktemp)
che run "$SLUG" "$(cat "$PROMPT_FILE")" 2>&1 | tee /tmp/che-run-last.log
Avisar al usuario antes de arrancar:
Arrancando pipeline <SLUG>. Esto puede tardar varios minutos; el output se va a mostrar al final.
Si el shell del agente soporta timeouts, usar el maximo disponible (idealmente sin limite o >= 30 min). Si el pipeline se cuelga, el usuario puede abortar con Ctrl+C en su terminal y /che-run lo reportara como failed.
Cuando el proceso termine:
- exit 0: status
done
- exit != 0: status
failed
No matar el proceso antes de tiempo salvo que el usuario lo pida.
Reporte
Localizar el run dir del run que acaba de cerrar:
LATEST_RUN=$(ls -1 ~/.che/runs/"$SLUG" | sort | tail -1)
RUN_DIR=~/.che/runs/"$SLUG"/"$LATEST_RUN"
Leer $RUN_DIR/manifest.yaml (no parsear via shell). Extraer:
status (done|failed|running)
steps[].name, steps[].status, steps[].exit_code
started_at, finished_at
Output al usuario:
## che run report
- pipeline: <SLUG>
- run_id: <LATEST_RUN>
- status: <done|failed>
- duracion: <finished_at - started_at>
- steps:
- <name>: <status> (exit <exit_code>)
- ...
- logs: <RUN_DIR>
Si status == failed, leer el step-XX.stderr.log del primer step con status != done y mostrar las ultimas 30 lineas inline para diagnostico rapido. No retentar el run.
Si status == done, terminar; no abrir el dash, no postear nada, no persistir nada.
MUST DO
- Correr
che doctor antes de cada che run, sin shortcuts ni cacheo.
- Listar pipelines (builtin +
~/.che/pipelines/) si falta SLUG, no asumir che-funnel.
- Pasar el
PROMPT via "$(cat <tmp>)" desde un temp file para evitar shell-injection y problemas de quoting con multilinea.
- Correr
che run en foreground con el timeout maximo disponible del shell.
- Leer el
manifest.yaml del run dir para armar el reporte; no parsear stdout del runner.
- En caso de fallo, mostrar las ultimas 30 lineas del stderr del primer step que fallo.
MUST NOT DO
- No interpolar
PROMPT crudo en una linea de shell (riesgo de inyeccion mas problemas de quoting).
- No saltear
che doctor aunque haya corrido recien en otra invocacion; el entorno puede haber cambiado.
- No tocar
~/.che/runs/ ni ~/.che/pipelines/ mas alla de lectura para reportar.
- No correr
che upgrade, che dash ni otros subcomandos desde este skill.
- No retentar pipelines fallidos automaticamente; la decision la toma el usuario.
- No persistir nada fuera de los temp files necesarios.
- No matar el proceso antes de su cierre natural salvo pedido explicito.