Implementando SDD en Kilocode CLI
🎓 SDD en Kilocode CLI: Configuración Práctica
👨🏫 Del Instructor: Kilocode es un agente de IA para terminal que se integra perfectamente con Neovim. Aquí configuraremos el sistema SDD completo desde CLI.
💭 Mentalidad de CLI Power User: “El terminal es tu hogar. Kilocode te da IA sin salir de tu flujo. Nvim para editar, Kilocode para generar.”
🏗️ Arquitectura de Kilocode CLI
¿Qué es Kilocode?
Kilocode es un agente de IA para terminal, no una extensión de editor. Funciona como:
# Uso básico
kilocode "tu prompt aquí"
# Modo interactivo
kilocode --interactive
# Con contexto de proyecto
kilocode --context .Estructura de Directorios
~/.kilocode/
├── kilocode.json # Configuración principal
├── mcp.json # MCP servers
├── skills/ # Skills globales
│ ├── sdd-init/
│ ├── sdd-propose/
│ ├── gentleman-sdd/
│ └── ...
└── commands/ # Comandos slash
├── sdd-init.md
├── sdd-new.md
└── ...
# Por proyecto
./.kilocode/
├── skills/ # Skills del proyecto
└── context.md # Contexto específico
🛠️ Instalación y Configuración
Paso 1: Instalar Kilocode
# Via npm
npm install -g kilocode
# Verificar instalación
kilocode --versionPaso 2: Configuración Principal
Archivo: ~/.kilocode/kilocode.json
{
"model": "claude-sonnet-4-20250514",
"provider": "anthropic",
"apiKey": "${ANTHROPIC_API_KEY}",
"skillsDir": "~/.kilocode/skills",
"commandsDir": "~/.kilocode/commands",
"mcpConfig": "~/.kilocode/mcp.json",
"editor": "nvim",
"editorArgs": ["+{{line}}", "{{file}}"]
}Paso 3: Crear Estructura de Skills
# Crear directorios
mkdir -p ~/.kilocode/skills
mkdir -p ~/.kilocode/commands
# Crear symlinks a skills existentes
for skill in sdd-init sdd-propose sdd-spec sdd-design sdd-tasks sdd-apply sdd-verify sdd-archive sdd-explore; do
ln -sf ~/.agents/skills/$skill ~/.kilocode/skills/$skill
done
# Crear skill maestro
mkdir -p ~/.kilocode/skills/gentleman-sdd📋 Skill Maestro para Kilocode CLI
Archivo: ~/.kilocode/skills/gentleman-sdd/SKILL.md
---
name: gentleman-sdd
description: >
Spec-Driven Development workflow for Kilocode CLI.
Use: kilocode --skill gentleman-sdd "tu instrucción"
license: MIT
metadata:
author: gentleman-programming
version: "2.0"
platform: kilocode-cli
---
## Purpose
Complete SDD workflow for terminal-based development with Neovim.
## Quick Commands
### Initialize Project
\`\`\`bash
kilocode "Initialize SDD in this project"
# o con skill explícito
kilocode --skill sdd-init
\`\`\`
### Create New Change
\`\`\`bash
kilocode "Start SDD change for adding user authentication"
\`\`\`
### Continue Workflow
\`\`\`bash
kilocode "Continue SDD workflow - write specs"
kilocode "Continue SDD workflow - create design"
kilocode "Continue SDD workflow - implement next task"
\`\`\`
## Integration with Neovim
### Opening Files
Kilocode can open files in Neovim for review:
\`\`\`bash
kilocode "Open the spec file in nvim"
\`\`\`
### Workflow
1. Kilocode genera artefactos SDD
2. Abre en Neovim para revisión
3. Continúa con siguiente fase
## Persistence Modes
Set in \`openspec/config.yaml\`:
- \`openspec\` → Use openspec/ directory
- \`engram\` → Persist to memory only
\`\`\`
---
## 🛠️ Comandos Slash para Kilocode
**Archivo**: `~/.kilocode/commands/sdd-init.md`
```markdown
# Initialize SDD in Project
## Usage
\`\`\`bash
kilocode "/sdd-init"
kilocode "/sdd-init --mode openspec"
\`\`\`
## What it does
1. Detects project tech stack
2. Creates openspec/ structure
3. Generates config.yaml
4. Returns summary
## Load skill
Uses the \`sdd-init\` skill.Archivo: ~/.kilocode/commands/sdd-new.md
# Start New SDD Change
## Usage
\`\`\`bash
kilocode "/sdd-new add-health-endpoint"
\`\`\`
## What it does
1. Creates openspec/changes/NNN-name/
2. Creates proposal.md
3. Opens in nvim for reviewCrear todos los comandos
# Comandos SDD
for cmd in sdd-init sdd-new sdd-explore sdd-spec sdd-plan sdd-tasks sdd-implement sdd-verify sdd-archive; do
cat > ~/.kilocode/commands/${cmd}.md << EOF
# ${cmd^}
## Usage
\`\`\`bash
kilocode "/${cmd}"
\`\`\`
## Loads skill: ${cmd//-/_}
EOF
done🔧 Configurar MCP Servers
Archivo: ~/.kilocode/mcp.json
{
"mcpServers": {
"spec-coding": {
"command": "npx",
"args": ["-y", "@kevinlin/spec-coding-mcp"],
"env": {}
},
"engram": {
"command": "npx",
"args": ["-y", "engram-mcp"],
"env": {
"ENGRAM_DB_PATH": "~/.engram/memory.db"
}
},
"context7": {
"command": "npx",
"args": ["-y", "@context7/mcp-server"],
"env": {}
}
}
}💻 Integración con Neovim
Configurar Neovim para SDD
Archivo: ~/.config/nvim/lua/plugins/kilocode.lua
-- Integración Kilocode + SDD
vim.api.nvim_create_user_command('SddInit', function()
vim.fn.system('kilocode "/sdd-init"')
vim.cmd('edit openspec/config.yaml')
end, {})
vim.api.nvim_create_user_command('SddNew', function(opts)
local name = opts.args
vim.fn.system(string.format('kilocode "/sdd-new %s"', name))
vim.cmd('edit openspec/changes/')
end, { nargs = 1 })
vim.api.nvim_create_user_command('SddSpec', function()
vim.fn.system('kilocode "/sdd-spec"')
-- Buscar y abrir el spec delta más reciente
local spec_files = vim.fn.glob('openspec/changes/*/spec.delta.md', false, true)
if #spec_files > 0 then
vim.cmd('edit ' .. spec_files[#spec_files])
end
end, {})
vim.api.nvim_create_user_command('SddImplement', function()
vim.fn.system('kilocode "/sdd-implement"')
end, {})
vim.api.nvim_create_user_command('SddVerify', function()
vim.fn.system('kilocode "/sdd-verify"')
-- Abrir verification report
local verif_files = vim.fn.glob('openspec/changes/*/verification.md', false, true)
if #verif_files > 0 then
vim.cmd('edit ' .. verif_files[#verif_files])
end
end, {})
-- Atajos de teclado
vim.keymap.set('n', '<leader>si', ':SddInit<CR>', { desc = 'SDD Init' })
vim.keymap.set('n', '<leader>sn', ':SddNew ', { desc = 'SDD New Change' })
vim.keymap.set('n', '<leader>ss', ':SddSpec<CR>', { desc = 'SDD Spec' })
vim.keymap.set('n', '<leader>sp', ':SddPlan<CR>', { desc = 'SDD Plan' })
vim.keymap.set('n', '<leader>st', ':SddTasks<CR>', { desc = 'SDD Tasks' })
vim.keymap.set('n', '<leader>sm', ':SddImplement<CR>', { desc = 'SDD Implement' })
vim.keymap.set('n', '<leader>sv', ':SddVerify<CR>', { desc = 'SDD Verify' })
vim.keymap.set('n', '<leader>sa', ':SddArchive<CR>', { desc = 'SDD Archive' })Flujo de Trabajo Nvim + Kilocode
Nvim Terminal (Kilocode)
│ │
├─ :SddInit ────────────────┤
│ ← config.yaml │
│ │
├─ :SddNew add-auth ────────┤
│ ← proposal.md │
│ (edit & save) │
│ │
├─ :SddSpec ────────────────┤
│ ← spec.delta.md │
│ (review & save) │
│ │
├─ :SddImplement ───────────┤
│ ← código generado │
│ (review in Nvim) │
│ │
└─ :SddVerify ──────────────┤
← verification.md │
💻 Uso desde CLI
Flujo Completo SDD
# Navegar al proyecto
cd ~/projects/my-api
# 1. Inicializar SDD
kilocode "Initialize SDD in this project"
# Output: Creates openspec/
# 2. Crear nuevo cambio
kilocode "Start SDD change: add health endpoint"
# Output: Creates proposal.md
# 3. Revisar en Nvim
nvim openspec/changes/001-add-health/proposal.md
# 4. Especificar requisitos
kilocode "Write SDD specs for health endpoint"
# Output: Creates spec.delta.md
# 5. Revisar specs
nvim openspec/changes/001-add-health/spec.delta.md
# 6. Crear diseño
kilocode "Create SDD design for health endpoint"
# 7. Implementar
kilocode "Implement SDD tasks for health endpoint"
# 8. Verificar
kilocode "Verify SDD implementation"
# 9. Archivar
kilocode "Archive SDD change"📋 Checklist de Verificación
# Verificar estructura completa
echo "=== Skills ===" && ls -la ~/.kilocode/skills/
echo "=== Commands ===" && ls -la ~/.kilocode/commands/
echo "=== MCP Config ===" && cat ~/.kilocode/mcp.json
echo "=== Main Config ===" && cat ~/.kilocode/kilocode.jsonOutput Esperado
~/.kilocode/skills/
├── gentleman-sdd/
│ └── SKILL.md
├── sdd-init -> ~/.agents/skills/sdd-init
├── sdd-propose -> ~/.agents/skills/sdd-propose
└── ...
~/.kilocode/commands/
├── sdd-init.md
├── sdd-new.md
├── sdd-spec.md
└── ...
⚠️ Notas Importantes
Recarga de Skills
Los skills se cargan al iniciar Kilocode. Si modificas skills:
# Reiniciar sesión de Kilocode
# Si está en modo interactivo: Ctrl+C y reiniciar
kilocode --reload-skillsName Matching en Skills
❌ INCORRECTO:
# Directorio: sdd-init
---
name: sdd_initialize # No coincide
---
✅ CORRECTO:
# Directorio: sdd-init
---
name: sdd-init # Coincide exactamente
---Editor Configurado
// En kilocode.json
{
"editor": "nvim",
"editorArgs": ["+{{line}}", "{{file}}"]
}🎓 Lo Que Aprendiste
- Kilocode es un CLI, no extensión de editor
- Skills se definen en
~/.kilocode/skills/ - Comandos son archivos
.mdencommands/ - Integración Nvim via comandos personalizados
- MCP servers se configuran en
mcp.json
🚀 Siguiente Paso
Continúa con Módulo 4: SDD en Opencode para comparar con otro CLI alternativo.
Módulo 2.0 | Duración: 45 min | Dificultad: 🟡 Intermedio
Módulo 03 | © Diego Saavedra