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
- 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
- Pensar primero: Primero comprende la esencia del problema: aclara requisitos, desglosa pasos, determina el alcance. No te apresures a buscar herramientas.
- Herramientas integradas después: Lectura/escritura/búsqueda simple en un solo paso → usa directamente Read/Edit/Grep/Glob (coste cero adicional)
- Herramientas CLI a continuación: Operaciones por lotes/mecánicas → usa la herramienta CLI correspondiente (<1s, consulta la matriz más abajo)
- Skills como apoyo: Operaciones que requieren conocimiento de dominio → primero carga el skill correspondiente para obtener orientación (consulta la lista de skills disponibles)
- Herramientas MCP: Consultas a grafos de conocimiento, razonamiento secuencial, scraping web → usa las herramientas proporcionadas por el servidor MCP
- Sub-agentes: Tareas que requieren razonamiento multi-paso, comprensión semántica, análisis entre módulos → envía un sub-agente
- 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
| Nivel | Escenario | Herramienta Preferida | Coste de Tiempo |
|---|---|---|---|
| Activación | Recibir solicitud, identificar tipo, aclarar intención | Clasificación por Intent Gate | Instantáneo |
| Razonamiento | Análisis de tarea, desglose de requisitos, planificación de pasos | Primero pensar, luego elegir herramienta | Instantáneo |
| Integradas | Lectura/escritura/edición simple de archivos | Read / Edit / Write | Instantáneo |
| Integradas | Búsqueda básica de contenido | grep | <1s |
| Integradas | Coincidencia de patrones de archivos | glob | <1s |
| CLI | Reemplazo de texto por lotes (regex) | git-sed | <1s |
| CLI | Búsqueda de archivos (por nombre/tipo/fecha) | fd-find | <1s |
| CLI | Búsqueda de contenido + estadísticas | rg-search (ripgrep) | <1s |
| CLI | Búsqueda/reemplazo de código AST (25 lenguajes) | ast-grep | <1s |
| CLI | Consulta/transformación JSON | jq-query | <1s |
| CLI | Pruebas de API HTTP | git-curl | <1s |
| CLI | Filtrado difuso/reducción de listas | fzf-filter | <1s |
| CLI | Empaquetar/descomprimir | git-tar | <1s |
| CLI | Conversión de saltos de línea (CRLF/LF) | git-dos2unix | <1s |
| CLI | Búsqueda y reemplazo de texto (sintaxis más simple) | sd | <1s |
| CLI | Estadísticas de código (distribución de lenguajes) | tokei | <1s |
| CLI | Consultas XML/YAML/JSON | yq / xq | <1s |
| Skill | Operaciones de conocimiento de dominio (cuántico/frontend/nube, etc.) | Cargar el skill correspondiente para obtener orientación | Ver documentación del skill |
| MCP | Consulta a grafo de conocimiento/relaciones de código | codebase-memory-mcp | <5s |
| MCP | Razonamiento secuencial/análisis multi-paso | sequential-thinking | Según pasos |
| MCP | Obtener contenido web | fetch | <10s |
| Sub-agente | Razonamiento multi-paso, comprensión semántica, análisis entre módulos | task() enviar sub-agente | Decenas de segundos+ |
| Razonamiento propio | Decisiones de arquitectura, compensaciones de diseño, revisión/validación | Procesar tú mismo u Oracle | Según complejidad |
Referencia Rápida de Herramientas
| Herramienta | Comando Típico | Uso |
|---|---|---|
git-sed | git-sed expression:"s/old/new/g" files:["src/**/*.ts"] inPlace:"" | Reemplazo masivo con regex, edición entre archivos |
fd-find | fd-find pattern:"*.xml" extension:"xml" path:"./Characters" | Buscar archivos por nombre/tipo/tamaño/fecha |
rg-search | rg-search pattern:"somePattern" glob:"*.xml" context:2 | Búsqueda de contenido en archivos, regex PCRE2, líneas de contexto |
ast-grep | ast_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-query | jq-query filter:".name" file:"data.json" | Consulta, filtrado y transformación de datos JSON |
git-curl | git-curl url:"https://api.example.com" method:"POST" data:'{"key":"val"}' | Peticiones a API HTTP, soporta varios métodos y cabeceras personalizadas |
fzf-filter | fzf-filter pattern:"keyword" input:$lines | Filtrado difuso de líneas de texto, reducción de listas |
git-tar | git-tar action:"create" archive:"out.tar.gz" files:["src/"] compression:"gzip" | Crear/descomprimir archivos tar/zip |
git-dos2unix | git-dos2unix file:"script.sh" mode:"dos2unix" | Convertir saltos de línea CRLF ↔ LF |
grep | grep pattern:"somePattern" include:"*.xml" output_mode:"files_with_matches" | Búsqueda básica de contenido (integrada) |
glob | glob pattern:"**/*.xml" | Coincidencia de patrones de archivos (integrada) |
sd | sd 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 |
tokei | tokei path:"./" | Contar líneas de código, comentarios y líneas en blanco por lenguaje. Resultados en segundos |
yq | yq expression:".Missions.NestMission[]" file:"Missions.xml" xml:true | Consulta 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:
| Escenario | Descripción | Forma Recomendada |
|---|---|---|
| Comprensión semántica | Determinar si la lógica del código es correcta, si la funcionalidad está completa | task() enviar sub-agente |
| Integración entre módulos | Cambios coordinados en varios módulos, alineación de interfaces | task() enviar sub-agente |
| Operaciones multi-paso | Operaciones encadenadas que requieren primero buscar → analizar → luego modificar | task() enviar sub-agente |
| Generación/refactorización de código | Necesita entender la estructura de código existente para generar nuevo código | Sub-agente o razonamiento propio |
| Decisiones de arquitectura | Selección de diseño, análisis de compensaciones | Razonamiento propio u Oracle |
| Validación y revisión | Comprender la intención del código, hacer juicios de calidad | Razonamiento 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
-
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.
-
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-sedpara completar búsqueda+reemplazo en un solo comando. -
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.
-
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.
-
sd edita in situ por defecto, usa
--previewprimero antes de ejecutar : sd y sed se comportan diferente — sd modifica el archivo directamente por defecto. En una prueba,sd '<?xml' '<?XML' filelist.xmlreescribió todas las etiquetas<?xml(63 lugares), solo se pudo recuperar congit checkout. Paso seguro: Usa primerosd --preview 'find' 'replace' filepara ver el alcance del impacto, y solo ejecuta (sin--preview) después de confirmar que es correcto. -
Modo XML de yq: yq v3 usa
--xml, v4 cambia a-p xml: yq v4 eliminó el parámetro corto--xmly usa-p xmlen su lugar. La advertencia de formato de salida predeterminado se puede suprimir con-o yaml.