CLI AI

Do one-liner ao script comitado: quando se formar

2026-04-15

O CliAI brilha na categoria eu preciso disso uma vez. 80% dos casos. Mas há uma categoria mais silenciosa: o comando da mesma forma que você fica regerando. Em algum ponto, esse comando merece nome, revisão e um lugar em scripts/.

Três sinais de maturidade

Você rodou a mesma forma três vezes numa semana. Não o mesmo comando exato — a mesma forma. Segunda "tail dos logs de staging e grep FAILED", quarta "…e grep ERROR", sexta "…e grep timeout". A forma é o que pede script.

Um colega pediu o comando. Se ele vai copiar seu one-liner pro Slack, poupe a viagem e comite.

O comando roda em CI. Shell sem revisão em pipeline de CI é incidente em câmera lenta. Assim que um one-liner do CliAI entra na CI, escreva direito.

O padrão de formatura

Comece com o prompt. Execute. Copie o resultado.

clai
$ clai para cada pod em staging que não está Ready, imprime nome e últimas 20 linhas 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'

Aí transforme em algo revisável:

#!/usr/bin/env bash
# scripts/staging-unready-pods.sh
# Nome + últimas 20 linhas de log para cada pod em staging que não 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

O delta é pequeno mas real: set -euo pipefail, parâmetro de namespace, comentário de uma linha, separador por pod. Nada disso precisa de LLM, e uma vez comitado, toda execução futura é reproduzível sem gastar requisição.

O que continua sendo área do CliAI

Não forme tudo. As tarefas únicas — onboarding em repo novo, debug de incidente, ler config de estranho — são exatamente o trabalho ad-hoc pra que o CliAI foi feito. Scriptar prematuramente é só lixo no repo, sem alavancagem.

Veja também