Communitygithub.com

CLI-First Decision

Guía para evitar errores con CMD+PowerShell · Matriz de decisión CLI primero · Más habilidades añadidas continuamente

¿Qué es CLI-First Decision?

El skill 'CLI-First Decision' es una habilidad fundamental para AI Agents que operan en entornos de desarrollo. Su propósito es optimizar la cadena de decisiones antes de ejecutar cualquier tarea, priorizando el uso de herramientas CLI rápidas y de bajo costo sobre alternativas más pesadas como sub-agentes o MCP servers. Está diseñado para plataformas como Claude Code, Cursor o Codex y se activa automáticamente ante cualquier solicitud que implique operaciones con archivos, cambios de código o comandos del sistema. La habilidad define una jerarquía clara: primero se debe razonar y descomponer el problema, luego elegir la herramienta más adecuada según el tipo de operación (lectura/escritura simple → herramientas integradas; operaciones mecánicas por lotes → CLI; tareas que requieren conocimiento de dominio → skills; consultas complejas → MCP; razonamiento multi-paso → sub-agentes). Incluye una matriz detallada de herramientas CLI como `git-sed`, `fd-find`, `rg-search` y `ast-grep` con sus costos asociados, y proporciona guías sobre cuándo usar sub-agentes frente a CLI. También documenta errores comunes como el uso excesivo de sub-agentes para tareas simples o la falta de precaución con herramientas como `sd` que modifican archivos directamente. En resumen, esta habilidad reduce drásticamente el consumo de tokens y tiempo al fomentar un enfoque 'CLI-First' que maximiza la eficiencia operativa del agente.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add High-cla/multi-skilled-repository

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación


name: cli-first-decision description: USA SIEMPRE antes de pensar, antes de cualquier llamada a herramienta, y antes de enviar sub-agentes. Esta es la PRIMERA habilidad a activar para CUALQUIER tarea que involucre operaciones con archivos, cambios de código, comandos del sistema, o al decidir entre enfoques (herramientas integradas, utilidades CLI, skills, servidores MCP, o sub-agentes). Activar en: cualquier solicitud que pueda necesitar herramientas, cualquier operación de comandos Windows/Linux, cualquier scripting batch/PowerShell/shell, cualquier operación de búsqueda/reemplazo/edición de archivos, o cada vez que estés a punto de pensar en cómo lograr algo.

Decisión CLI-First

Regla Principal

Antes de comenzar cualquier tarea, decide por prioridad: primero activa → luego piensa → elige herramienta → ejecuta

  1. Activación forzosa: Al recibir CUALQUIER solicitud, antes de empezar a pensar, antes de llamar a cualquier herramienta, antes de enviar sub-agentes, DEBES activar este skill para decidir
  2. Pensar primero: Primero comprende la esencia del problema: aclara requisitos, desglosa pasos, determina el alcance. No te apresures a buscar herramientas.
  3. Herramientas integradas después: Lectura/escritura/búsqueda simple en un solo paso → usa directamente Read/Edit/Grep/Glob (coste cero adicional)
  4. Herramientas CLI a continuación: Operaciones por lotes/mecánicas → usa la herramienta CLI correspondiente (<1s, consulta la matriz más abajo)
  5. Skills como apoyo: Operaciones que requieren conocimiento de dominio → primero carga el skill correspondiente para obtener orientación (consulta la lista de skills disponibles)
  6. Herramientas MCP: Consultas a grafos de conocimiento, razonamiento secuencial, scraping web → usa las herramientas proporcionadas por el servidor MCP
  7. Sub-agentes: Tareas que requieren razonamiento multi-paso, comprensión semántica, análisis entre módulos → envía un sub-agente
  8. Razonamiento propio como último recurso: Decisiones de arquitectura, compensaciones de diseño, revisión/validación → razona tú mismo o consulta a Oracle

Árbol de Decisión

Recibir solicitud (activación)
  └─ Identificar tipo: ¿reparación/implementación/investigación/evaluación/abierta?
       └─ Razonar: primero aclarar requisitos, desglosar pasos, determinar alcance
       ├─ ¿Leer/escribir/modificar un archivo con contenido conocido? ──→ Herramientas integradas (Read/Edit/Write)
       ├─ ¿Operación por lotes mecánica?
       │   ├─ ¿Reemplazo de texto por lotes? ───────────→ git-sed / sd
       │   ├─ ¿Búsqueda de archivos? ─────────────────→ fd-find / glob
       │   ├─ ¿Búsqueda de contenido? ────────────────→ rg-search / grep
       │   ├─ ¿Operaciones estructuradas con AST? ──────→ ast-grep
       │   ├─ ¿Consultas JSON/YAML/XML? ──────────────→ jq-query / yq
       │   └─ ¿Otras operaciones mecánicas? ──────────→ consulta la matriz inferior
       ├─ ¿Hay un skill de dominio disponible? ────────→ primero carga el skill para obtener orientación
       ├─ ¿Hay una herramienta MCP disponible?
       │   ├─ ¿Consulta a grafo de conocimiento/relaciones de código? ──→ codebase-memory-mcp
       │   ├─ ¿Razonamiento secuencial/análisis complejo? ────────────→ sequential-thinking
       │   └─ ¿Obtener contenido web? ──────────────────────────────→ fetch
       ├─ ¿Requiere comprensión semántica/razonamiento multi-paso/entre módulos? ──→ Sub-agente (task/sub-agent)
       └─ ¿Decisiones de arquitectura/compensaciones de diseño/revisión? ──→ Razonamiento propio o consultar a Oracle

Matriz de Decisión de Herramientas

NivelEscenarioHerramienta PreferidaCoste de Tiempo
ActivaciónRecibir solicitud, identificar tipo, aclarar intenciónClasificación por Intent GateInstantáneo
RazonamientoAnálisis de tarea, desglose de requisitos, planificación de pasosPrimero pensar, luego elegir herramientaInstantáneo
IntegradasLectura/escritura/edición simple de archivosRead / Edit / WriteInstantáneo
IntegradasBúsqueda básica de contenidogrep<1s
IntegradasCoincidencia de patrones de archivosglob<1s
CLIReemplazo de texto por lotes (regex)git-sed<1s
CLIBúsqueda de archivos (por nombre/tipo/fecha)fd-find<1s
CLIBúsqueda de contenido + estadísticasrg-search (ripgrep)<1s
CLIBúsqueda/reemplazo de código AST (25 lenguajes)ast-grep<1s
CLIConsulta/transformación JSONjq-query<1s
CLIPruebas de API HTTPgit-curl<1s
CLIFiltrado difuso/reducción de listasfzf-filter<1s
CLIEmpaquetar/descomprimirgit-tar<1s
CLIConversión de saltos de línea (CRLF/LF)git-dos2unix<1s
CLIBúsqueda y reemplazo de texto (sintaxis más simple)sd<1s
CLIEstadísticas de código (distribución de lenguajes)tokei<1s
CLIConsultas XML/YAML/JSONyq / xq<1s
SkillOperaciones de conocimiento de dominio (cuántico/frontend/nube, etc.)Cargar el skill correspondiente para obtener orientaciónVer documentación del skill
MCPConsulta a grafo de conocimiento/relaciones de códigocodebase-memory-mcp<5s
MCPRazonamiento secuencial/análisis multi-pasosequential-thinkingSegún pasos
MCPObtener contenido webfetch<10s
Sub-agenteRazonamiento multi-paso, comprensión semántica, análisis entre módulostask() enviar sub-agenteDecenas de segundos+
Razonamiento propioDecisiones de arquitectura, compensaciones de diseño, revisión/validaciónProcesar tú mismo u OracleSegún complejidad

Referencia Rápida de Herramientas

HerramientaComando TípicoUso
git-sedgit-sed expression:"s/old/new/g" files:["src/**/*.ts"] inPlace:""Reemplazo masivo con regex, edición entre archivos
fd-findfd-find pattern:"*.xml" extension:"xml" path:"./Characters"Buscar archivos por nombre/tipo/tamaño/fecha
rg-searchrg-search pattern:"somePattern" glob:"*.xml" context:2Búsqueda de contenido en archivos, regex PCRE2, líneas de contexto
ast-grepast_grep_search pattern:"if($$$) { $$$ }" lang:"ts" / ast_grep_replace pattern:"console.log($MSG)" rewrite:"logger.info($MSG)" lang:"ts"Búsqueda/reemplazo estructurado por AST, entiende el árbol sintáctico del código
jq-queryjq-query filter:".name" file:"data.json"Consulta, filtrado y transformación de datos JSON
git-curlgit-curl url:"https://api.example.com" method:"POST" data:'{"key":"val"}'Peticiones a API HTTP, soporta varios métodos y cabeceras personalizadas
fzf-filterfzf-filter pattern:"keyword" input:$linesFiltrado difuso de líneas de texto, reducción de listas
git-targit-tar action:"create" archive:"out.tar.gz" files:["src/"] compression:"gzip"Crear/descomprimir archivos tar/zip
git-dos2unixgit-dos2unix file:"script.sh" mode:"dos2unix"Convertir saltos de línea CRLF ↔ LF
grepgrep pattern:"somePattern" include:"*.xml" output_mode:"files_with_matches"Búsqueda básica de contenido (integrada)
globglob pattern:"**/*.xml"Coincidencia de patrones de archivos (integrada)
sdsd find:"old" replace:"new" files:["file.txt"]Búsqueda y reemplazo más simple, edición in situ por defecto, soporta regex y patrones literales
tokeitokei path:"./"Contar líneas de código, comentarios y líneas en blanco por lenguaje. Resultados en segundos
yqyq expression:".Missions.NestMission[]" file:"Missions.xml" xml:trueConsulta de datos estructurados YAML/XML/JSON. El modo XML permite consultar directamente archivos XML (por ejemplo, listar todos los IDs de misiones)

Cuándo Usar Sub-Agentes (Guía de Activación de Sub-Agentes)

Los sub-agentes destacan donde las herramientas CLI y las integradas se quedan cortas:

EscenarioDescripciónForma Recomendada
Comprensión semánticaDeterminar si la lógica del código es correcta, si la funcionalidad está completatask() enviar sub-agente
Integración entre módulosCambios coordinados en varios módulos, alineación de interfacestask() enviar sub-agente
Operaciones multi-pasoOperaciones encadenadas que requieren primero buscar → analizar → luego modificartask() enviar sub-agente
Generación/refactorización de códigoNecesita entender la estructura de código existente para generar nuevo códigoSub-agente o razonamiento propio
Decisiones de arquitecturaSelección de diseño, análisis de compensacionesRazonamiento propio u Oracle
Validación y revisiónComprender la intención del código, hacer juicios de calidadRazonamiento propio o review-work

Nota: Incluso si finalmente decides usar un sub-agente, en el prompt de task() puedes hacer referencia a herramientas CLI — el sub-agente internamente también puede llamar a estas herramientas para completar la tarea.

Errores Comunes

  1. Saltar la comprobación CLI e ir directamente a task() : Enviar un sub-agente por costumbre para reemplazos por lotes, desperdiciando decenas de miles de tokens. Un trabajo de agente de 30s podría completarse con un comando CLI de <1s.

  2. Usar ripgrep para encontrar archivos y luego modificarlos manualmente : Primero buscar con rg, luego editar por lotes con CLI requiere dos pasos en uno. Usa git-sed para completar búsqueda+reemplazo en un solo comando.

  3. Llamar a un agente para un solo archivo : Modificar contenido conocido en un archivo se puede editar directamente, sin necesidad de iniciar una sesión completa de sub-agente.

  4. Usar herramientas CLI a la fuerza cuando se necesita un sub-agente : Las herramientas CLI no entienden semántica. En escenarios que implican análisis entre módulos, razonamiento multi-paso o comprensión de la intención del código, usar una combinación de CLI es menos eficiente que un sub-agente. Ejemplo: "Encontrar todos los archivos que llaman a la función X, analizar sus patrones de parámetros y luego refactorizar de manera unificada" — esto es dominio del sub-agente, no algo que sed pueda manejar.

  5. sd edita in situ por defecto, usa --preview primero antes de ejecutar : sd y sed se comportan diferente — sd modifica el archivo directamente por defecto. En una prueba, sd '<?xml' '<?XML' filelist.xml reescribió todas las etiquetas <?xml (63 lugares), solo se pudo recuperar con git checkout. Paso seguro: Usa primero sd --preview 'find' 'replace' file para ver el alcance del impacto, y solo ejecuta (sin --preview) después de confirmar que es correcto.

  6. Modo XML de yq: yq v3 usa --xml, v4 cambia a -p xml : yq v4 eliminó el parámetro corto --xml y usa -p xml en su lugar. La advertencia de formato de salida predeterminado se puede suprimir con -o yaml.

Skills relacionados