CLI AI

Del one-liner al script en el repo: cuándo graduar

2026-04-15

CliAI brilla en la categoría lo necesito una vez. El 80% de los casos. Pero hay otra categoría más silenciosa: el comando con la misma forma que sigues regenerando. En algún punto, ese comando merece un nombre, una revisión y un sitio bajo scripts/.

Tres señales de madurez

Has corrido la misma forma tres veces en una semana. No el mismo comando exacto — la misma forma. "Tail de los logs de staging y grep FAILED" el lunes, "…y grep ERROR" el miércoles, "…y grep timeout" el viernes. La forma es lo que pide script.

Un compañero te pide el comando. Si va a copiar tu one-liner a Slack, ahórrale el viaje y métele en el repo.

El comando corre en CI. Shell sin revisar en CI es un incidente en cámara lenta. En el momento en que un one-liner generado entra a CI, escríbelo bien.

El patrón de graduación

Empieza con el prompt. Ejecuta. Copia el resultado.

clai
$ clai para cada pod en staging que no esté Ready, imprime nombre y últimas 20 líneas de log→ kubectl -n staging get pods -o json \    | jq -r '.items[] | select(.status.containerStatuses[0].ready==false) | .metadata.name' \    | xargs -I{} sh -c 'echo "── {} ──"; kubectl -n staging logs {} --tail=20'

Luego conviértelo en algo revisable:

#!/usr/bin/env bash
# scripts/staging-unready-pods.sh
# Imprime nombre y últimas 20 líneas de cada pod en staging que no está Ready.
set -euo pipefail

NAMESPACE="${1:-staging}"

kubectl -n "$NAMESPACE" get pods -o json \
  | jq -r '.items[] | select(.status.containerStatuses[0].ready==false) | .metadata.name' \
  | while read -r pod; do
      echo "── $pod ──"
      kubectl -n "$NAMESPACE" logs "$pod" --tail=20
    done

El delta es pequeño pero real: set -euo pipefail, parámetro de namespace, comentario de una línea, encabezado por pod. Nada de eso necesita LLM, y una vez en el repo, cada ejecución futura es reproducible sin gastar solicitud.

Lo que sigue siendo terreno de CliAI

No gradúes todo. Las tareas de una vez — onboarding en un repo nuevo, debugar un incidente, leer la config de un extraño — son exactamente el trabajo ad-hoc para el que se construyó CliAI. Si las pasas a script demasiado pronto, has añadido ruido al repo sin añadir palanca.

Ver también