Recientemente, me embarqué en la tarea de optimizar la configuración de mi entorno de desarrollo con OpenCode CLI en DOSCLIC, buscando no solo eficiencia sino también una gestión de costos inteligente. Mi objetivo era explorar los modelos de IA disponibles y, posteriormente, diseñar flujos de trabajo automatizados que pudieran interactuar con nuestras bases de datos y herramientas de gestión de contenido (MCP).
1. Explorando el Universo de Modelos en OpenCode CLI
Mi primer paso fue entender el panorama de los modelos de IA accesibles a través de OpenCode CLI. Ejecuté el comando para listar todos los modelos disponibles, y la cantidad y variedad fue impresionante. Esto me dio una visión clara de las capacidades que podría integrar en mis proyectos.
PS C:\inetpub\wwwroot\RegUCM> opencode-cli models
opencode/big-pickle
opencode/deepseek-v4-flash-free
opencode/mimo-v2.5-free
opencode/nemotron-3-super-free
deepseek/deepseek-chat
deepseek/deepseek-reasoner
deepseek/deepseek-v4-flash
deepseek/deepseek-v4-pro
google/gemini-2.0-flash
google/gemini-2.0-flash-lite
google/gemini-2.5-flash
google/gemini-2.5-flash-image
google/gemini-2.5-flash-lite
google/gemini-2.5-flash-preview-tts
google/gemini-2.5-pro
google/gemini-2.5-pro-preview-tts
google/gemini-3-flash-preview
google/gemini-3-pro-preview
google/gemini-3.1-flash-image-preview
google/gemini-3.1-flash-lite
google/gemini-3.1-flash-lite-preview
google/gemini-3.1-pro-preview
google/gemini-3.1-pro-preview-customtools
google/gemini-3.5-flash
google/gemini-embedding-001
google/gemini-flash-latest
google/gemini-flash-lite-latest
google/gemma-4-26b-a4b-it
google/gemma-4-31b-it
openrouter/~anthropic/claude-haiku-latest
openrouter/~anthropic/claude-opus-latest
openrouter/~anthropic/claude-sonnet-latest
openrouter/~google/gemini-flash-latest
openrouter/~google/gemini-pro-latest
openrouter/~moonshotai/kimi-latest
openrouter/~openai/gpt-latest
openrouter/~openai/gpt-mini-latest
openrouter/ai21/jamba-large-1.7
openrouter/aion-labs/aion-1.0
openrouter/aion-labs/aion-1.0-mini
openrouter/aion-labs/aion-2.0
openrouter/aion-labs/aion-rp-llama-3.1-8b
openrouter/allenai/olmo-3-32b-think
openrouter/amazon/nova-2-lite-v1
openrouter/amazon/nova-lite-v1
openrouter/amazon/nova-micro-v1
openrouter/amazon/nova-premier-v1
openrouter/amazon/nova-pro-v1
openrouter/anthracite-org/magnum-v4-72b
openrouter/anthropic/claude-3-haiku
openrouter/anthropic/claude-3.5-haiku
openrouter/anthropic/claude-haiku-4.5
openrouter/anthropic/claude-opus-4
openrouter/anthropic/claude-opus-4.1
openrouter/anthropic/claude-opus-4.5
openrouter/anthropic/claude-opus-4.6
openrouter/anthropic/claude-opus-4.6-fast
openrouter/anthropic/claude-opus-4.7
openrouter/anthropic/claude-opus-4.7-fast
openrouter/anthropic/claude-opus-4.8
openrouter/anthropic/claude-opus-4.8-fast
openrouter/anthropic/claude-sonnet-4
openrouter/anthropic/claude-sonnet-4.5
openrouter/anthropic/claude-sonnet-4.6
openrouter/arcee-ai/coder-large
openrouter/arcee-ai/maestro-reasoning
openrouter/arcee-ai/spotlight
openrouter/arcee-ai/trinity-large-thinking
openrouter/arcee-ai/trinity-mini
openrouter/arcee-ai/virtuoso-large
openrouter/baidu/ernie-4.5-vl-28b-a3b
openrouter/baidu/ernie-4.5-vl-424b-a47b
openrouter/bytedance-seed/seed-1.6
openrouter/bytedance-seed/seed-1.6-flash
openrouter/bytedance-seed/seed-2.0-lite
openrouter/bytedance-seed/seed-2.0-mini
openrouter/bytedance/ui-tars-1.5-7b
openrouter/cognitivecomputations/dolphin-mistral-24b-venice-edition:free
openrouter/cohere/command-a
openrouter/cohere/command-r-08-2024
openrouter/cohere/command-r-plus-08-2024
openrouter/cohere/command-r7b-12-2024
openrouter/deepcogito/cogito-v2.1-671b
openrouter/deepseek/deepseek-chat
openrouter/deepseek/deepseek-chat-v3-0324
openrouter/deepseek/deepseek-chat-v3.1
openrouter/deepseek/deepseek-r1
openrouter/deepseek/deepseek-r1-0528
openrouter/deepseek/deepseek-r1-distill-llama-70b
openrouter/deepseek/deepseek-r1-distill-qwen-32b
openrouter/deepseek/deepseek-v3.1-terminus
openrouter/deepseek/deepseek-v3.2
openrouter/deepseek/deepseek-v3.2-exp
openrouter/deepseek/deepseek-v4-flash
openrouter/deepseek/deepseek-v4-pro
openrouter/essentialai/rnj-1-instruct
openrouter/google/gemini-2.5-flash
openrouter/google/gemini-2.5-flash-image
openrouter/google/gemini-2.5-flash-lite
openrouter/google/gemini-2.5-flash-lite-preview-09-2025
openrouter/google/gemini-2.5-pro
openrouter/google/gemini-2.5-pro-preview
openrouter/google/gemini-2.5-pro-preview-05-06
openrouter/google/gemini-3-flash-preview
openrouter/google/gemini-3-pro-image-preview
openrouter/google/gemini-3.1-flash-image-preview
openrouter/google/gemini-3.1-flash-lite
openrouter/google/gemini-3.1-flash-lite-preview
openrouter/google/gemini-3.1-pro-preview
openrouter/google/gemini-3.1-pro-preview-customtools
openrouter/google/gemini-3.5-flash
openrouter/google/gemma-2-27b-it
openrouter/google/gemma-3-12b-it
openrouter/google/gemma-3-27b-it
openrouter/google/gemma-3-4b-it
openrouter/google/gemma-3n-e4b-it
openrouter/google/gemma-4-26b-a4b-it
openrouter/google/gemma-4-26b-a4b-it:free
openrouter/google/gemma-4-31b-it
openrouter/google/gemma-4-31b-it:free
openrouter/google/lyria-3-clip-preview
openrouter/google/lyria-3-pro-preview
openrouter/gryphe/mythomax-l2-13b
openrouter/ibm-granite/granite-4.0-h-micro
openrouter/ibm-granite/granite-4.1-8b
openrouter/inception/mercury-2
openrouter/inclusionai/ling-2.6-1t
openrouter/inclusionai/ling-2.6-flash
openrouter/inclusionai/ring-2.6-1t
openrouter/inflection/inflection-3-pi
openrouter/inflection/inflection-3-productivity
openrouter/kwaipilot/kat-coder-pro-v2
openrouter/liquid/lfm-2-24b-a2b
openrouter/liquid/lfm-2.5-1.2b-instruct:free
openrouter/liquid/lfm-2.5-1.2b-thinking:free
openrouter/mancer/weaver
openrouter/meta-llama/llama-3-70b-instruct
openrouter/meta-llama/llama-3-8b-instruct
openrouter/meta-llama/llama-3.1-70b-instruct
openrouter/meta-llama/llama-3.1-8b-instruct
openrouter/meta-llama/llama-3.2-11b-vision-instruct
openrouter/meta-llama/llama-3.2-1b-instruct
openrouter/meta-llama/llama-3.2-3b-instruct
openrouter/meta-llama/llama-3.2-3b-instruct:free
openrouter/meta-llama/llama-3.3-70b-instruct
openrouter/meta-llama/llama-3.3-70b-instruct:free
openrouter/meta-llama/llama-4-maverick
openrouter/meta-llama/llama-4-scout
openrouter/meta-llama/llama-guard-3-8b
openrouter/meta-llama/llama-guard-4-12b
openrouter/microsoft/phi-4
openrouter/microsoft/phi-4-mini-instruct
openrouter/microsoft/wizardlm-2-8x22b
openrouter/minimax/minimax-01
openrouter/minimax/minimax-m1
openrouter/minimax/minimax-m2
openrouter/minimax/minimax-m2-her
openrouter/minimax/minimax-m2.1
openrouter/minimax/minimax-m2.5
openrouter/minimax/minimax-m2.7
openrouter/minimax/minimax-m3
openrouter/mistralai/codestral-2508
openrouter/mistralai/ministral-14b-2512
openrouter/mistralai/ministral-3b-2512
openrouter/mistralai/ministral-8b-2512
openrouter/mistralai/mistral-large
openrouter/mistralai/mistral-large-2407
openrouter/mistralai/mistral-large-2512
openrouter/mistralai/mistral-medium-3
openrouter/mistralai/mistral-medium-3-5
openrouter/mistralai/mistral-medium-3.1
openrouter/mistralai/mistral-nemo
openrouter/mistralai/mistral-saba
openrouter/mistralai/mistral-small-24b-instruct-2501
openrouter/mistralai/mistral-small-2603
openrouter/mistralai/mistral-small-3.1-24b-instruct
openrouter/mistralai/mistral-small-3.2-24b-instruct
openrouter/mistralai/mixtral-8x22b-instruct
openrouter/mistralai/voxtral-small-24b-2507
openrouter/moonshotai/kimi-k2
openrouter/moonshotai/kimi-k2-0905
openrouter/moonshotai/kimi-k2-thinking
openrouter/moonshotai/kimi-k2.5
openrouter/moonshotai/kimi-k2.6
openrouter/moonshotai/kimi-k2.6:free
openrouter/morph/morph-v3-fast
openrouter/morph/morph-v3-large
openrouter/nex-agi/deepseek-v3.1-nex-n1
openrouter/nousresearch/hermes-2-pro-llama-3-8b
openrouter/nousresearch/hermes-3-llama-3.1-405b
openrouter/nousresearch/hermes-3-llama-3.1-405b:free
openrouter/nousresearch/hermes-3-llama-3.1-70b
openrouter/nousresearch/hermes-4-405b
openrouter/nousresearch/hermes-4-70b
openrouter/nvidia/llama-3.3-nemotron-super-49b-v1.5
openrouter/nvidia/nemotron-3-nano-30b-a3b
openrouter/nvidia/nemotron-3-nano-30b-a3b:free
openrouter/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free
openrouter/nvidia/nemotron-3-super-120b-a12b
openrouter/nvidia/nemotron-3-super-120b-a12b:free
openrouter/nvidia/nemotron-nano-12b-v2-vl:free
openrouter/nvidia/nemotron-nano-9b-v2
openrouter/nvidia/nemotron-nano-9b-v2:free
openrouter/openai/gpt-3.5-turbo
openrouter/openai/gpt-3.5-turbo-0613
openrouter/openai/gpt-3.5-turbo-16k
openrouter/openai/gpt-3.5-turbo-instruct
openrouter/openai/gpt-4
openrouter/openai/gpt-4-0314
openrouter/openai/gpt-4-1106-preview
openrouter/openai/gpt-4-turbo
openrouter/openai/gpt-4-turbo-preview
openrouter/openai/gpt-4.1
openrouter/openai/gpt-4.1-mini
openrouter/openai/gpt-4.1-nano
openrouter/openai/gpt-4o
openrouter/openai/gpt-4o-2024-05-13
openrouter/openai/gpt-4o-2024-08-06
openrouter/openai/gpt-4o-2024-11-20
openrouter/openai/gpt-4o-mini
openrouter/openai/gpt-4o-mini-2024-07-18
openrouter/openai/gpt-4o-mini-search-preview
openrouter/openai/gpt-4o-search-preview
openrouter/openai/gpt-5
openrouter/openai/gpt-5-codex
openrouter/openai/gpt-5-image
openrouter/openai/gpt-5-image-mini
openrouter/openai/gpt-5-mini
openrouter/openai/gpt-5-nano
openrouter/openai/gpt-5-pro
openrouter/openai/gpt-5.1
openrouter/openai/gpt-5.1-chat
openrouter/openai/gpt-5.1-codex
openrouter/openai/gpt-5.1-codex-max
openrouter/openai/gpt-5.1-codex-mini
openrouter/openai/gpt-5.2
openrouter/openai/gpt-5.2-chat
openrouter/openai/gpt-5.2-codex
openrouter/openai/gpt-5.2-pro
openrouter/openai/gpt-5.3-chat
openrouter/openai/gpt-5.3-codex
openrouter/openai/gpt-5.4
openrouter/openai/gpt-5.4-image-2
openrouter/openai/gpt-5.4-mini
openrouter/openai/gpt-5.4-nano
openrouter/openai/gpt-5.4-pro
openrouter/openai/gpt-5.5
openrouter/openai/gpt-5.5-pro
openrouter/openai/gpt-audio
openrouter/openai/gpt-audio-mini
openrouter/openai/gpt-chat-latest
openrouter/openai/gpt-oss-120b
openrouter/openai/gpt-oss-120b:free
openrouter/openai/gpt-oss-20b
openrouter/openai/gpt-oss-20b:free
openrouter/openai/gpt-oss-safeguard-20b
openrouter/openai/o1
openrouter/openai/o1-pro
openrouter/openai/o3
openrouter/openai/o3-deep-research
openrouter/openai/o3-mini
openrouter/openai/o3-mini-high
openrouter/openai/o3-pro
openrouter/openai/o4-mini
openrouter/openai/o4-mini-deep-research
openrouter/openai/o4-mini-high
openrouter/openrouter/auto
openrouter/openrouter/bodybuilder
openrouter/openrouter/free
openrouter/openrouter/pareto-code
openrouter/perceptron/perceptron-mk1
openrouter/perplexity/sonar
openrouter/perplexity/sonar-deep-research
openrouter/perplexity/sonar-pro
openrouter/perplexity/sonar-pro-search
openrouter/perplexity/sonar-reasoning-pro
openrouter/poolside/laguna-m.1:free
openrouter/poolside/laguna-xs.2:free
openrouter/prime-intellect/intellect-3
openrouter/qwen/qwen-2.5-72b-instruct
openrouter/qwen/qwen-2.5-7b-instruct
openrouter/qwen/qwen-2.5-coder-32b-instruct
openrouter/qwen/qwen-plus
openrouter/qwen/qwen-plus-2025-07-28
openrouter/qwen/qwen-plus-2025-07-28:thinking
openrouter/qwen/qwen2.5-vl-72b-instruct
openrouter/qwen/qwen3-14b
openrouter/qwen/qwen3-235b-a22b
openrouter/qwen/qwen3-235b-a22b-2507
openrouter/qwen/qwen3-235b-a22b-thinking-2507
openrouter/qwen/qwen3-30b-a3b
openrouter/qwen/qwen3-30b-a3b-instruct-2507
openrouter/qwen/qwen3-30b-a3b-thinking-2507
openrouter/qwen/qwen3-32b
openrouter/qwen/qwen3-8b
openrouter/qwen/qwen3-coder
openrouter/qwen/qwen3-coder-30b-a3b-instruct
openrouter/qwen/qwen3-coder-flash
openrouter/qwen/qwen3-coder-next
openrouter/qwen/qwen3-coder-plus
openrouter/qwen/qwen3-coder:free
openrouter/qwen/qwen3-max
openrouter/qwen/qwen3-max-thinking
openrouter/qwen/qwen3-next-80b-a3b-instruct
openrouter/qwen/qwen3-next-80b-a3b-instruct:free
openrouter/qwen/qwen3-next-80b-a3b-thinking
openrouter/qwen/qwen3-vl-235b-a22b-instruct
openrouter/qwen/qwen3-vl-235b-a22b-thinking
openrouter/qwen/qwen3-vl-30b-a3b-instruct
openrouter/qwen/qwen3-vl-30b-a3b-thinking
openrouter/qwen/qwen3-vl-32b-instruct
openrouter/qwen/qwen3-vl-8b-instruct
openrouter/qwen/qwen3-vl-8b-thinking
openrouter/qwen/qwen3.5-122b-a10b
openrouter/qwen/qwen3.5-27b
openrouter/qwen/qwen3.5-35b-a3b
openrouter/qwen/qwen3.5-397b-a17b
openrouter/qwen/qwen3.5-9b
openrouter/qwen/qwen3.5-flash-02-23
openrouter/qwen/qwen3.5-plus-02-15
openrouter/qwen/qwen3.5-plus-20260420
openrouter/qwen/qwen3.6-27b
openrouter/qwen/qwen3.6-35b-a3b
openrouter/qwen/qwen3.6-flash
openrouter/qwen/qwen3.6-max-preview
openrouter/qwen/qwen3.6-plus
openrouter/qwen/qwen3.7-max
openrouter/rekaai/reka-edge
openrouter/rekaai/reka-flash-3
openrouter/relace/relace-apply-3
openrouter/relace/relace-search
openrouter/sao10k/l3-euryale-70b
openrouter/sao10k/l3-lunaris-8b
openrouter/sao10k/l3.1-70b-hanami-x1
openrouter/sao10k/l3.1-euryale-70b
openrouter/sao10k/l3.3-euryale-70b
openrouter/stepfun/step-3.5-flash
openrouter/stepfun/step-3.7-flash
openrouter/switchpoint/router
openrouter/tencent/hunyuan-a13b-instruct
openrouter/tencent/hy3-preview
openrouter/thedrummer/cydonia-24b-v4.1
openrouter/thedrummer/rocinante-12b
openrouter/thedrummer/skyfall-36b-v2
openrouter/thedrummer/unslopnemo-12b
openrouter/undi95/remm-slerp-l2-13b
openrouter/upstage/solar-pro-3
openrouter/writer/palmyra-x5
openrouter/x-ai/grok-4.20
openrouter/x-ai/grok-4.20-multi-agent
openrouter/x-ai/grok-4.3
openrouter/x-ai/grok-build-0.1
openrouter/xiaomi/mimo-v2-flash
openrouter/xiaomi/mimo-v2.5
openrouter/xiaomi/mimo-v2.5-pro
openrouter/z-ai/glm-4-32b
openrouter/z-ai/glm-4.5
openrouter/z-ai/glm-4.5-air
openrouter/z-ai/glm-4.5-air:free
openrouter/z-ai/glm-4.5v
openrouter/z-ai/glm-4.6
openrouter/z-ai/glm-4.6v
openrouter/z-ai/glm-4.7
openrouter/z-ai/glm-4.7-flash
openrouter/z-ai/glm-5
openrouter/z-ai/glm-5-turbo
openrouter/z-ai/glm-5.1
openrouter/z-ai/glm-5v-turbo
La lista reveló una vasta gama de opciones, desde modelos de OpenCode y DeepSeek hasta una extensa selección de Google Gemini y una multitud de modelos a través de OpenRouter, incluyendo variantes de Anthropic, OpenAI, Meta Llama, Mistral AI y muchos otros. Esta diversidad subraya la flexibilidad de OpenCode CLI para integrar diferentes capacidades de IA según las necesidades del proyecto.
A continuación, verifiqué los proveedores de credenciales configurados, lo cual es crucial para asegurar que el CLI pueda autenticarse y utilizar los servicios de los diferentes modelos.
PS C:\inetpub\wwwroot\RegUCM> opencode-cli providers list
T Credentials ~\.local\share\opencode\auth.json
|
• DeepSeek api
|
• Google api
|
• OpenRouter api
|
— 3 credentials
Con DeepSeek, Google y OpenRouter configurados, tenía acceso a una gran parte de los modelos listados, lo que me permitía experimentar y seleccionar los más adecuados para cada tarea.
2. Optimizando la Arquitectura del Agente: Un Enfoque Costo-Eficiente
Inicialmente, mi configuración no era la más eficiente. Estaba utilizando modelos generales para tareas de planificación y ejecución, lo que resultaba en llamadas a herramientas excesivas y un costo por token más elevado de lo necesario, sin una clara separación de roles.
El objetivo era lograr un setup "barato + eficiente". La solución que implementé fue la siguiente, separando claramente las responsabilidades del "planificador" y el "constructor" del agente:
"agent": {
"plan": {
"model": "deepseek/deepseek-reasoner"
},
"build": {
"model": "openrouter/qwen/qwen3-coder-flash"
}
}
Esta configuración me permitió asignar roles específicos a modelos especializados:
- Planificador (
plan): DeepSeek Reasoner. Este modelo actúa como el "cerebro" del agente. Es excelente en lógica y razonamiento, y su bajo costo lo hace ideal para la fase de planificación, donde se definen los pasos y la estrategia. Ayuda a reducir errores estructurales desde el inicio. - Constructor (
build): OpenRouter + Qwen3 Coder Flash. Este modelo es el "ejecutor". Está optimizado para la generación de código, es muy rápido y ofrece un coste por token extremadamente bajo, lo que lo hace perfecto para implementar las tareas definidas por el planificador.
Esta separación de roles es clave para la optimización. Antes, pagaba por planificación y ejecución con modelos generales más caros. Ahora, tengo:
Planificación Barata pero Inteligente
DeepSeek Reasoner destaca por su capacidad lógica y su eficiencia económica. Esto significa que la fase de diseño y estrategia es robusta y minimiza los errores desde la raíz, sin incurrir en altos costos.
Ejecución Ultra Barata y Rápida
La combinación de OpenRouter y Qwen3 Coder Flash proporciona una solución de ejecución ágil y optimizada para tareas de codificación. Su bajo coste por token es fundamental para mantener la eficiencia económica en proyectos de desarrollo intensivo.
3. Riesgos y Ajustes en la Configuración Optimizada
Aunque la configuración es altamente eficiente, identifiqué dos riesgos comunes que podrían surgir y cómo mitigarlos:
Overplanning con DeepSeek Reasoner
Solución: Para tareas más simples donde un plan detallado no es crucial, puedo cambiar el modelo de planificación a uno más ligero:
"plan": {
"model": "openrouter/qwen/qwen3-30b-a3b-thinking-2507"
}
Este modelo es suficiente para tareas menos complejas y ayuda a controlar el gasto de tokens.
Builder Demasiado "Optimista" con Qwen3 Coder Flash
Solución: Para sistemas que manejan lógica crítica (como pagos, autenticación o SQL complejo), es recomendable cambiar temporalmente el modelo de construcción a uno más robusto y fiable, como:
openrouter/google/gemini-2.5-flash
Esto asegura la precisión y seguridad en los componentes más sensibles.
La arquitectura actual de mi agente se puede visualizar de la siguiente manera, mostrando cómo el usuario interactúa con los modelos de planificación y construcción, que a su vez utilizan las herramientas MCP:
USER ↓PLAN (DeepSeek Reasoner) ↓BUILD (Qwen3 Coder Flash) ↓MCP tools (SQL / Excel / Files)
Este esquema representa un sistema tipo "mini DevOps agent", donde cada componente tiene un rol definido y optimizado.
Mejora Opcional (Nivel Pro): Añadiendo un Modelo de Exploración
Para llevar la arquitectura un paso más allá, consideré añadir un tercer rol: explore. Esto es útil para tareas de búsqueda o análisis de repositorios, delegando esta función a un modelo específico:
"agent": {
"plan": {
"model": "deepseek/deepseek-reasoner"
},
"build": {
"model": "openrouter/qwen/qwen3-coder-flash"
},
"explore": {
"model": "openrouter/google/gemini-2.5-flash"
}
}
Con esta adición, el agente tendría:
- Plan: Razonamiento (DeepSeek Reasoner)
- Build: Generación de código (Qwen3 Coder Flash)
- Explore: Búsqueda y análisis de repositorios (Google Gemini 2.5 Flash)
4. Llevando la Automatización al Siguiente Nivel: El Rol de los "Skills"
Una vez que mi arquitectura base estaba sólida, surgió la pregunta sobre los "skills" en OpenCode. Lejos de ser una capa innecesaria, los skills son pequeñas capacidades predefinidas que el agente puede activar para ejecutar tareas específicas de manera más eficiente y consistente.
Una Forma Simple de Entenderlo
Para clarificar, me gusta pensar en tres niveles:
- Modelo (LLM): El "cerebro general" (ej. GPT, DeepSeek, Qwen).
- MCP Tools: Las "manos y herramientas" (ej. MSSQL, Excel, Files, Bash). Esto es lo que ya tengo integrado.
- Skills: Las "recetas o técnicas repetibles". Combinan pasos, buenas prácticas y prompts internos para realizar una tarea concreta de manera óptima.
Ejemplo Real: Creación de una API en PHP
Sin skills, si pido "Crea una API en PHP", el modelo improvisaría todo el proceso. Con un "PHP API skill", el sistema ya sabría la estructura de carpetas, el patrón (MVC o simple), cómo manejar la validación, errores, formato JSON y seguridad básica. Esto ahorra tokens y asegura consistencia.
¿Qué Suele Contener un Skill?
Un skill normalmente incluye:
- Instrucciones estructuradas.
- Checklists de pasos.
- Patrones de código.
- Reglas (ej. "no uses SQL directo sin sanitizar").
- A veces, prompts pre-armados o triggers automáticos.
Diferencia Clave: MCP, Agente y Skill
Para entender mejor la distinción, consideré esta tabla:
| Concepto | Qué es |
|---|---|
| MCP | herramientas externas (SQL, Excel, filesystem) |
| Agent | comportamiento general |
| Skill | “cómo hacer bien una tarea concreta” |
Los skills son la capa que define "cómo hacer bien" una tarea específica, utilizando las herramientas (MCP) bajo la dirección del agente.
Ejemplos Típicos de Skills
Algunos ejemplos de skills que podrían ser útiles incluyen:
php-api-generatorsql-query-analyzerexcel-report-builderrefactor-codedebug-error-stacktracewrite-tests
¿Por qué mi opencode-cli debug skill[] muestra vacío?
opencode-cli debug skill[]
Este output simplemente indica que no tengo skills instalados o habilitados. No es un error; mi sistema funciona perfectamente sin ellos. Sin embargo, estoy perdiendo la "automatización de buenas prácticas" y la consistencia que los skills pueden ofrecer.
¿Son Necesarios los Skills?
No son obligatorios. Mi setup actual con DeepSeek Reasoner (planner), Qwen coder flash (executor) y MCP para MSSQL, Excel y Files ya es avanzado. Los skills serían un nivel de optimización adicional, no un requisito fundamental. Ayudan a:
- Reducir errores repetidos del modelo.
- Aumentar la consistencia en el código.
- Disminuir el consumo de tokens (menos "explicación innecesaria").
- Crear flujos de trabajo más predecibles.
5. Ejemplo Práctico de Skill: Automatización de Reportes SQL a Excel
Para ilustrar el poder de los skills en mi contexto, diseñé un ejemplo realista: el skill mssql-report-to-excel. Este skill aprovecha mi arquitectura existente para automatizar la generación de reportes.
Objetivo
Convertir consultas SQL en reportes Excel de forma automática, utilizando mi MCP de SQL y Excel.
Qué Hace Este Skill
Cuando el agente recibe una solicitud como "genera un reporte de ventas por mes", el skill activa un flujo predefinido:
- Detecta la intención de reporte.
- Genera una query SQL optimizada.
- Ejecuta la query en MSSQL (vía MCP).
- Limpia y estructura los datos obtenidos.
- Exporta los datos a un archivo Excel (vía MCP Excel).
- Guarda el archivo en una carpeta específica del proyecto (ej.
/reports/). - Devuelve un resumen final al usuario.
Definición Conceptual del Skill
La estructura conceptual de este skill se vería así:
mssql-report-to-excel
{
"name": "mssql-report-to-excel",
"trigger": [
"reporte",
"report",
"ventas",
"exportar a excel",
"tabla de resultados"
],
"steps": [
{
"role": "plan",
"model": "deepseek/deepseek-reasoner",
"task": "diseñar query SQL óptima para el reporte solicitado"
},
{
"role": "build",
"model": "openrouter/qwen/qwen3-coder-flash",
"task": "ejecutar query usando MCP MSSQL y obtener dataset"
},
{
"role": "build",
"task": "convertir dataset a estructura tabular limpia"
},
{
"role": "build",
"task": "crear archivo Excel usando MCP Excel"
},
{
"role": "build",
"task": "guardar archivo en /reports/"
}
]
}
Cómo se Vería en la Práctica
Imaginemos el siguiente escenario:
Input del usuario: "quiero un reporte de ventas del último mes por producto"
Flujo real activado por el skill:
-
Plan (DeepSeek Reasoner)
El planificador genera una query SQL optimizada para la solicitud:
SQL QuerySELECT product_name, SUM(amount) as total_sales, MONTH(date) as month FROM sales WHERE date >= DATEADD(MONTH, -1, GETDATE()) GROUP BY product_name, MONTH(date) -
Execute (Qwen3 Coder Flash)
El constructor utiliza el MCP de MSSQL para ejecutar la query y obtener el dataset:
Comando MCP (Conceptual)mssql.query(sql)Obteniendo un resultado similar a:
Dataset Resultante[ {"product": "Laptop", "sales": 12000}, {"product": "Mouse", "sales": 800} ] -
Excel MCP
Finalmente, el skill utiliza el MCP de Excel para crear y guardar el reporte:
Comandos MCP Excel (Conceptual)excel.create_sheet("reporte_ventas") excel.write_table(data) excel.save("reporte_ventas_mes.xlsx")
Resultado final:
- Archivo generado:
/reports/reporte_ventas_mes.xlsx - Respuesta al usuario: "Reporte generado con 2 productos. Archivo guardado en /reports."
Por Qué Este Skill es Potente en mi Caso
Este skill aprovecha mi arquitectura de manera óptima:
- MSSQL MCP: Acceso directo a datos reales de la base de datos.
- Excel MCP: Generación automática de un output en un formato ampliamente utilizado.
- DeepSeek Reasoner: Lógica de query eficiente y precisa.
- Qwen Coder Flash: Ejecución barata y rápida de los pasos.
Otro Skill Útil (Bonus): php-api-generator
Un skill similar podría ser php-api-generator. Cuando solicito "crea una API de usuarios", el flujo sería:
- Plan: Define la estructura y los endpoints.
- Build: Genera el código PHP.
- Files MCP: Crea los archivos automáticamente en el sistema de ficheros.
- Opcional: MSSQL MCP para la definición del esquema de la base de datos.
Los skills en OpenCode no son obligatorios, pero en mi caso, sirven para reducir el consumo de tokens (menos improvisación del modelo), evitar errores repetitivos, automatizar flujos de trabajo reales (SQL a Excel es un ejemplo claro) y hacer que mi agente sea más "determinista" y predecible.
La historia detrás de la nota
Esta experiencia me demostró que una configuración bien pensada de OpenCode CLI, combinando modelos especializados y la potencia de los skills, puede transformar un agente de IA en una herramienta de desarrollo y datos semi-automatizada, optimizando tanto el rendimiento como los costos. Un verdadero mini Copilot interno.