📚 Conocimiento de Dominio
Incorpora documentación, guías, y estándares específicos de tu industria.
Crea tus propias skills especializadas para tu dominio de conocimiento
Aprende a crear skills personalizadas para incorporar tu propio conocimiento especializado en ClaudeKit.
Requisito: Debes tener experiencia usando skills existentes antes de crear las tuyas.
Una skill personalizada es un módulo de conocimiento especializado que puedes crear para:
📚 Conocimiento de Dominio
Incorpora documentación, guías, y estándares específicos de tu industria.
🔧 Automatización
Crea scripts que automatizan tareas repetitivas de tu workflow.
🔗 Integraciones
Conecta con APIs, databases, y herramientas específicas.
📋 Plantillas
Incluye templates de código, configuraciones, y estructuras.
.claude/skills/└── my-custom-skill/ ├── SKILL.md # Metadatos y documentación ├── prompt.md # System prompt (opcional) ├── scripts/ # Scripts ejecutables │ ├── analyze.py │ └── generate.sh ├── templates/ # Plantillas de código │ ├── component.tsx │ └── config.json └── assets/ # Recursos adicionales └── diagram.pngSKILL.md - Metadatos de la skill:
# Mi Skill Personalizada
Descripción de qué hace esta skill y cuándo usarla.
## Cuándo Usar- Situación 1- Situación 2
## Comandos Disponibles- `command1` - Descripción- `command2` - Descripciónprompt.md - System prompt personalizadoscripts/ - Scripts de automatizacióntemplates/ - Plantillas de códigoassets/ - Imágenes, diagramas, etc.Antes de crear la skill, define claramente:
Propósito: Generar componentes React siguiendo estándares de mi equipo
Cuándo usar:
Valor:
Propósito: Validar schemas de APIs REST según estándares internos
Cuándo usar:
Valor:
# Crear directorio de la skillmkdir -p .claude/skills/my-skill/{scripts,templates,assets}
# Crear archivo principaltouch .claude/skills/my-skill/SKILL.md# My Custom Skill
Skill personalizada para [propósito].
## Cuándo Usar
- [Situación 1]- [Situación 2]- [Situación 3]
## Comandos Disponibles
### `analyze`Analiza [algo] y genera [resultado].
**Uso:**```bashclaude ask "Analiza X usando my-skill"generateGenera [algo] basado en [entrada].
Uso:
claude cook "Genera Y usando my-skill"template1.tsx - Descripcióntemplate2.json - Descripciónscripts/analyze.py - Script de análisisscripts/generate.sh - Script de generaciónclaude cook "Crear componente Button usando my-skill"claude ask "Validar schema API usando my-skill"### Paso 4: Crear Scripts (Opcional)
Los scripts permiten automatizar tareas:
**`scripts/analyze.py`**```python#!/usr/bin/env python3"""Script de análisis para my-skill."""
import sysimport json
def analyze(input_data): """Analiza los datos de entrada.""" # Tu lógica aquí result = { "status": "success", "data": input_data } return result
if __name__ == "__main__": input_file = sys.argv[1] with open(input_file) as f: data = json.load(f)
result = analyze(data) print(json.dumps(result, indent=2))scripts/generate.sh
#!/bin/bash# Script de generación para my-skill
TEMPLATE_DIR="$(dirname "$0")/../templates"OUTPUT_FILE=${1:-"output.txt"}
# Copiar plantillacp "$TEMPLATE_DIR/template.txt" "$OUTPUT_FILE"
echo "Generated: $OUTPUT_FILE"templates/component.tsx
import React from 'react';
interface {{ComponentName}}Props { // Props aquí}
export const {{ComponentName}}: React.FC<{{ComponentName}}Props> = ({ // Destructuring}) => { return ( <div> {/* Component content */} </div> );};# Probar que la skill está disponibleclaude ask "¿Qué skills están disponibles?"
# Usar la skillclaude cook "Crear X usando my-skill".claude/skills/react-component-generator/├── SKILL.md├── templates/│ ├── functional-component.tsx│ ├── hooks-component.tsx│ └── test.spec.tsx└── scripts/ └── validate-component.sh# React Component Generator
Genera componentes React siguiendo los estándares del equipo.
## Cuándo Usar
- Crear nuevos componentes UI- Mantener consistencia en el código- Incluir tests automáticamente
## Comandos Disponibles
### `generate-component`Genera un componente React con hooks y tests.
**Uso:**```bashclaude cook "Crear componente Button usando react-component-generator"validate-componentValida que un componente cumpla los estándares.
Uso:
claude ask "Validar componente Button usando react-component-generator"functional-component.tsx - Componente funcional básicohooks-component.tsx - Componente con hooks personalizadostest.spec.tsx - Template de testvalidate-component.sh - Valida estructura del componenteclaude cook "Generar componente Button con variantes primary y secondary"Resultado:
Button.tsx - Componente con TypeScriptButton.test.tsx - Tests con VitestButton.stories.tsx - Stories de Storybook## Best Practices
### 1. Naming Convention
Usa kebab-case para nombres de skills:✅ my-custom-skill ✅ react-component-generator ✅ api-schema-validator
❌ MyCustomSkill ❌ react_component_generator ❌ apiSchemaValidator
### 2. Documentación Clara
Incluye en SKILL.md:- ✅ Descripción clara del propósito- ✅ Cuándo usar la skill- ✅ Ejemplos de uso concretos- ✅ Comandos disponibles con ejemplos- ❌ Jerga o términos ambiguos
### 3. Scripts Robustos
```python#!/usr/bin/env python3"""Script de análisis para my-skill.
Este script analiza archivos de entrada y genera reportes."""
import sysimport jsonimport loggingfrom pathlib import Path
# Configurar logginglogging.basicConfig(level=logging.INFO)logger = logging.getLogger(__name__)
def validate_input(file_path): """Valida que el archivo de entrada exista.""" path = Path(file_path) if not path.exists(): logger.error(f"Archivo no encontrado: {file_path}") sys.exit(1) return path
def analyze(file_path): """Analiza el archivo y genera reporte.""" try: with open(file_path) as f: data = json.load(f)
# Tu lógica de análisis result = { "status": "success", "data": data }
return result except Exception as e: logger.error(f"Error analizando archivo: {e}") return {"status": "error", "message": str(e)}
if __name__ == "__main__": if len(sys.argv) < 2: logger.error("Uso: python analyze.py <input_file>") sys.exit(1)
input_file = validate_input(sys.argv[1]) result = analyze(input_file)
print(json.dumps(result, indent=2))Usa placeholders para plantillas:
import React from 'react';
interface {{ComponentName}}Props { {{props}}}
export const {{ComponentName}}: React.FC<{{ComponentName}}Props> = ({ {{destructuredProps}}}) => { return ( <div> {{content}} </div> );};Crea tests para tus scripts:
tests/test_skill.py
import unittestimport jsonfrom scripts.analyze import analyze
class TestMySkill(unittest.TestCase): def test_analyze_success(self): result = analyze({"test": "data"}) self.assertEqual(result["status"], "success")
def test_analyze_error(self): result = analyze(None) self.assertEqual(result["status"], "error")
if __name__ == "__main__": unittest.main()# Agregar a gitgit add .claude/skills/my-skill/git commit -m "Add my-skill"
# Push a repo internogit push origin main# Crear repo públicogh repo create my-claudekit-skill --public
# Documentar instalación# En README.md:# "Clona este repo en .claude/skills/my-skill/"# Fork del repogh repo fork claudekit/aprende-claudekit
# Crear PR con tu skillgh pr create --title "Add my-skill"# Verificar estructurals -la .claude/skills/my-skill/SKILL.md
# Recargar ClaudeKitclaude reload# Dar permisos de ejecuciónchmod +x .claude/skills/my-skill/scripts/*.sh
# Verificar shebanghead -n1 .claude/skills/my-skill/scripts/*.sh# Verificar rutals -la .claude/skills/my-skill/templates/
# Usar ruta absoluta en scriptsTEMPLATE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../templates" && pwd)"Aprende a crear tus propios agentes especializados.
¿Preguntas? Usa claude ask "tu pregunta sobre skills" en cualquier momento.