Communitygithub.com

gestión-de-habilidades

Gestiona habilidades locales - listar, añadir, eliminar, buscar, editar y asistente de configuración.

¿Qué es gestión-de-habilidades?

Este meta-skill para oh-my-claudecode proporciona una interfaz de línea de comandos para gestionar habilidades (skills) locales. Permite listar habilidades integradas, de usuario y de proyecto en una tabla organizada, y crear nuevas habilidades mediante un asistente interactivo que valida el nombre, la descripción, los disparadores y el alcance. También incluye comandos para eliminar, editar y buscar habilidades por contenido o metadatos, así como un asistente de configuración completa que verifica directorios, escanea inventarios y ofrece acciones rápidas como añadir, importar o extraer habilidades de la conversación actual. Es compatible con los ámbitos de usuario (global) y proyecto (local), almacenando los archivos en `${CLAUDE_CONFIG_DIR:-~/.claude}/skills/omc-learned/` y `.omc/skills/` respectivamente.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Yeachan-Heo/oh-my-claudecode/tree/main/skills/skill

Preguntar en tu IA favorita

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

Documentación

CLI de Gestión de Habilidades

Meta-skill para gestionar habilidades de oh-my-claudecode mediante comandos tipo CLI.

Subcomandos

/skill list

Muestra todas las habilidades disponibles organizadas por alcance.

Comportamiento:

  1. Escanea las habilidades integradas en el directorio skills/ del plugin (solo lectura)
  2. Escanea las habilidades de usuario en ${CLAUDE_CONFIG_DIR:-~/.claude}/skills/omc-learned/
  3. Escanea las habilidades de proyecto en .omc/skills/
  4. Analiza el frontmatter YAML para metadatos
  5. Muestra en formato de tabla organizada:
HABILIDADES INTEGRADAS (incluidas con oh-my-claudecode):
| Nombre           | Descripción                    | Ámbito    |
|------------------|--------------------------------|-----------|
| visual-verdict   | Veredictos estructurados de QA visual | integrado |
| ralph            | Bucle de persistencia          | integrado |

HABILIDADES DE USUARIO (~/.claude/skills/omc-learned/):
| Nombre           | Disparadores    | Calidad | Uso | Ámbito |
|------------------|-----------------|---------|-----|--------|
| error-handler    | fix, error      | 95%     | 42  | usuario|
| api-builder      | api, endpoint   | 88%     | 23  | usuario|

HABILIDADES DE PROYECTO (.omc/skills/):
| Nombre           | Disparadores    | Calidad | Uso | Ámbito   |
|------------------|-----------------|---------|-----|----------|
| test-runner      | test, run       | 92%     | 15  | proyecto |

Alternativa: Si no hay estadísticas de calidad/uso disponibles, mostrar "N/A"

Nota sobre habilidades integradas: Las habilidades integradas se incluyen con oh-my-claudecode y se pueden descubrir/leer, pero no se pueden eliminar ni editar mediante /skill remove o /skill edit.


/skill add [nombre]

Asistente interactivo para crear una nueva habilidad.

Comportamiento:

  1. Preguntar por el nombre de la habilidad (si no se proporciona en el comando)
    • Validar: minúsculas, solo guiones, sin espacios
  2. Preguntar por la descripción
    • Una línea clara y concisa
  3. Preguntar por los disparadores (palabras clave separadas por comas)
    • Ejemplo: "error, fix, debug"
  4. Preguntar por la sugerencia de argumento (opcional)
    • Ejemplo: " [opciones]"
  5. Preguntar por el ámbito:
    • usuario → ${CLAUDE_CONFIG_DIR:-~/.claude}/skills/omc-learned/<nombre>/SKILL.md
    • proyecto → .omc/skills/<nombre>/SKILL.md
  6. Crear archivo de habilidad con plantilla:
---
name: <nombre>
description: <descripción>
triggers:
  - <disparador1>
  - <disparador2>
argument-hint: "<argumentos>"
---

# Habilidad <Nombre>

## Propósito

[Describe qué hace esta habilidad]

## Cuándo Activar

[Describe los disparadores y condiciones]

## Flujo de Trabajo

1. [Paso 1]
2. [Paso 2]
3. [Paso 3]

## Ejemplos

/oh-my-claudecode: ejemplo-argumento


## Notas

[Contexto adicional, casos límite, detalles importantes]
  1. Informar éxito con la ruta del archivo
  2. Sugerir: "Editar con /skill edit <nombre> para personalizar el contenido"

Ejemplo:

Usuario: /skill add custom-logger
Asistente: Creando nueva habilidad 'custom-logger'...

Descripción: Logging mejorado con salida estructurada
Disparadores (separados por comas): log, logger, logging
Sugerencia de argumento (opcional): <nivel> [mensaje]
Ámbito (usuario/proyecto): usuario

✓ Habilidad creada en ~/.claude/skills/omc-learned/custom-logger/SKILL.md
→ Editar con: /skill edit custom-logger

/skill remove

Elimina una habilidad por nombre.

Comportamiento:

  1. Buscar la habilidad en ambos ámbitos:
    • ${CLAUDE_CONFIG_DIR:-~/.claude}/skills/omc-learned/<nombre>/SKILL.md
    • .omc/skills/<nombre>/SKILL.md
  2. Si se encuentra:
    • Mostrar información de la habilidad (nombre, descripción, ámbito)
    • Preguntar confirmación: "¿Eliminar la habilidad '' del ámbito <ámbito>? (sí/no)"
  3. Si se confirma:
    • Eliminar todo el directorio de la habilidad (ej., ${CLAUDE_CONFIG_DIR:-~/.claude}/skills/omc-learned/<nombre>/)
    • Informar: "✓ Habilidad '' eliminada del ámbito <ámbito>"
  4. Si no se encuentra:
    • Informar: "✗ Habilidad '' no encontrada en el ámbito de usuario o proyecto"

Seguridad: Nunca eliminar sin confirmación explícita del usuario.

Ejemplo:

Usuario: /skill remove old-logger
Asistente: Habilidad 'old-logger' encontrada en el ámbito de usuario:
  Descripción: Utilidad de logging heredada
  Ámbito: usuario (~/.claude/skills/omc-learned/)

¿Eliminar la habilidad 'old-logger'? (sí/no)

Usuario: sí
Asistente: ✓ Habilidad 'old-logger' eliminada del ámbito de usuario

/skill edit

Edita una habilidad existente de forma interactiva.

Comportamiento:

  1. Encontrar la habilidad por nombre (buscar en ambos ámbitos)
  2. Leer el contenido actual mediante la herramienta de lectura
  3. Mostrar valores actuales:
    Habilidad actual 'custom-logger':
    - Descripción: Logging mejorado con salida estructurada
    - Disparadores: log, logger, logging
    - Sugerencia de argumento: <nivel> [mensaje]
    - Ámbito: usuario
    
  4. Preguntar qué cambiar:
    • descripción - Actualizar la descripción
    • disparadores - Actualizar las palabras clave de disparo
    • sugerencia-argumento - Actualizar la sugerencia de argumento
    • contenido - Editar el contenido markdown completo
    • renombrar - Renombrar la habilidad (mover archivo)
    • cancelar - Salir sin cambios
  5. Para el campo seleccionado:
    • Mostrar el valor actual
    • Preguntar por el nuevo valor
    • Actualizar el frontmatter YAML o el contenido
    • Escribir de vuelta al archivo
  6. Informar éxito con un resumen de los cambios

Ejemplo:

Usuario: /skill edit custom-logger
Asistente: Habilidad actual 'custom-logger':
  - Descripción: Logging mejorado con salida estructurada
  - Disparadores: log, logger, logging
  - Sugerencia de argumento: <nivel> [mensaje]

¿Qué te gustaría editar? (descripción/disparadores/sugerencia-argumento/contenido/renombrar/cancelar)

Usuario: disparadores
Asistente: Disparadores actuales: log, logger, logging
Nuevos disparadores (separados por comas): log, logger, logging, trace

✓ Disparadores actualizados para 'custom-logger'

/skill search

Busca habilidades por contenido, disparadores, nombre o descripción.

Comportamiento:

  1. Escanea todas las habilidades en ambos ámbitos
  2. Coincidir con la consulta (sin distinción de mayúsculas/minúsculas) contra:
    • Nombre de la habilidad
    • Descripción
    • Disparadores
    • Contenido markdown completo
  3. Mostrar coincidencias con contexto:
Se encontraron 3 habilidades que coinciden con "error de TypeScript":

1. typescript-fixer (usuario)
   Descripción: Corrige errores comunes de TypeScript
   Coincidencia: "patrones de manejo de errores de TypeScript"

2. error-handler (usuario)
   Descripción: Utilidades genéricas de manejo de errores
   Coincidencia: "Soporta errores de TypeScript y JavaScript"

3. lint-fix (proyecto)
   Descripción: Corrige automáticamente errores de linting
   Coincidencia: "Resolución de errores de ESLint de TypeScript"

Clasificación: Priorizar coincidencias en nombre/disparadores sobre coincidencias de contenido

Ejemplo:

Usuario: /skill search api endpoint
Asistente: Se encontraron 2 habilidades que coinciden con "api endpoint":

1. api-builder (usuario)
   Descripción: Generar endpoints de API REST
   Disparadores: api, endpoint, rest

2. backend-scaffold (proyecto)
   Descripción: Scaffolding de servicios backend
   Coincidencia: "Crea boilerplate de endpoints de API"

/skill info

Muestra información detallada sobre una habilidad.

Comportamiento:

  1. Encontrar la habilidad por nombre (buscar en ambos ámbitos)
  2. Analizar el frontmatter YAML y el contenido
  3. Mostrar detalles completos:
Habilidad: custom-logger
Ámbito: usuario (~/.claude/skills/omc-learned/custom-logger/)
Descripción: Logging mejorado con salida estructurada
Disparadores: log, logger, logging
Sugerencia de Argumento: <nivel> [mensaje]
Calidad: 95% (si está disponible)
Conteo de Uso: 42 veces (si está disponible)
Ruta del Archivo: /home/usuario/.claude/skills/omc-learned/custom-logger/SKILL.md

--- CONTENIDO COMPLETO ---
[contenido markdown completo]

Si no se encuentra: Informar error con sugerencia de usar /skill search

Ejemplo:

Usuario: /skill info custom-logger
Asistente: Habilidad: custom-logger
Ámbito: usuario
Descripción: Logging mejorado con salida estructurada
Disparadores: log, logger, logging
Archivo: ~/.claude/skills/omc-learned/custom-logger/SKILL.md

--- CONTENIDO ---
# Habilidad Custom Logger

## Propósito
Logging mejorado con salida JSON estructurada...
[resto del contenido]

/skill sync

Sincroniza habilidades entre los ámbitos de usuario y proyecto.

Comportamiento:

  1. Escanea ambos ámbitos:
    • Habilidades de usuario: ${CLAUDE_CONFIG_DIR:-~/.claude}/skills/omc-learned/
    • Habilidades de proyecto: .omc/skills/
  2. Compara y categoriza:
    • Habilidades solo de usuario (no en proyecto)
    • Habilidades solo de proyecto (no en usuario)
    • Habilidades comunes (en ambos)
  3. Muestra oportunidades de sincronización:
INFORME DE SINCRONIZACIÓN:

Habilidades solo de usuario (5):
  - error-handler
  - api-builder
  - custom-logger
  - test-generator
  - deploy-helper

Habilidades solo de proyecto (2):
  - test-runner
  - backend-scaffold

Habilidades comunes (3):
  - frontend-ui-ux
  - git-master
  - planner

Opciones:
  [1] Copiar habilidad de usuario a proyecto
  [2] Copiar habilidad de proyecto a usuario
  [3] Ver diferencias
  [4] Cancelar
  1. Manejar la elección del usuario:
    • Opción 1: Seleccionar habilidad(es) para copiar al proyecto
    • Opción 2: Seleccionar habilidad(es) para copiar al usuario
    • Opción 3: Mostrar diferencias lado a lado para habilidades comunes
    • Opción 4: Salir

Seguridad: Nunca sobrescribir sin confirmación

Ejemplo:

Usuario: /skill sync
Asistente: Se encontraron 5 habilidades solo de usuario y 2 habilidades solo de proyecto.

¿Copiar 'error-handler' de usuario a proyecto? (sí/no/saltar)
Usuario: sí
Asistente: ✓ 'error-handler' copiada a .omc/skills/

¿Copiar 'api-builder' de usuario a proyecto? (sí/no/saltar)
Usuario: saltar
...

/skill setup

Asistente interactivo para configurar y gestionar habilidades locales (anteriormente local-skills-setup).

Comportamiento:

Paso 1: Verificación y Configuración de Directorios

Primero, verificar si existen los directorios de habilidades y crearlos si es necesario:

# Verificar y crear el directorio de habilidades de usuario
USER_SKILLS_DIR="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/skills/omc-learned"
if [ -d "$USER_SKILLS_DIR" ]; then
  echo "El directorio de habilidades de usuario existe: $USER_SKILLS_DIR"
else
  mkdir -p "$USER_SKILLS_DIR"
  echo "Directorio de habilidades de usuario creado: $USER_SKILLS_DIR"
fi

# Verificar y crear el directorio de habilidades de proyecto
PROJECT_SKILLS_DIR=".omc/skills"
if [ -d "$PROJECT_SKILLS_DIR" ]; then
  echo "El directorio de habilidades de proyecto existe: $PROJECT_SKILLS_DIR"
else
  mkdir -p "$PROJECT_SKILLS_DIR"
  echo "Directorio de habilidades de proyecto creado: $PROJECT_SKILLS_DIR"
fi

Paso 2: Escaneo e Inventario de Habilidades

Escanea ambos directorios y muestra un inventario completo:

# Escanear habilidades de usuario
echo "=== HABILIDADES DE USUARIO (~/.claude/skills/omc-learned/) ==="
if [ -d "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/skills/omc-learned" ]; then
  USER_COUNT=$(find "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/skills/omc-learned" -name "*.md" 2>/dev/null | wc -l)
  echo "Total de habilidades: $USER_COUNT"

  if [ $USER_COUNT -gt 0 ]; then
    echo ""
    echo "Habilidades encontradas:"
    find "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/skills/omc-learned" -name "*.md" -type f -exec sh -c '
      FILE="$1"
      NAME=$(grep -m1 "^name:" "$FILE" 2>/dev/null | sed "s/name: //")
      DESC=$(grep -m1 "^description:" "$FILE" 2>/dev/null | sed "s/description: //")
      MODIFIED=$(stat -c "%y" "$FILE" 2>/dev/null || stat -f "%Sm" "$FILE" 2>/dev/null)
      echo "  - $NAME"
      [ -n "$DESC" ] && echo "    Descripción: $DESC"
      echo "    Modificado: $MODIFIED"
      echo ""
    ' sh {} \;
  fi
else
  echo "Directorio no encontrado"
fi

echo ""
echo "=== HABILIDADES DE PROYECTO (.omc/skills/) ==="
if [ -d ".omc/skills" ]; then
  PROJECT_COUNT=$(find ".omc/skills" -name "*.md" 2>/dev/null | wc -l)
  echo "Total de habilidades: $PROJECT_COUNT"

  if [ $PROJECT_COUNT -gt 0 ]; then
    echo ""
    echo "Habilidades encontradas:"
    find ".omc/skills" -name "*.md" -type f -exec sh -c '
      FILE="$1"
      NAME=$(grep -m1 "^name:" "$FILE" 2>/dev/null | sed "s/name: //")
      DESC=$(grep -m1 "^description:" "$FILE" 2>/dev/null | sed "s/description: //")
      MODIFIED=$(stat -c "%y" "$FILE" 2>/dev/null || stat -f "%Sm" "$FILE" 2>/dev/null)
      echo "  - $NAME"
      [ -n "$DESC" ] && echo "    Descripción: $DESC"
      echo "    Modificado: $MODIFIED"
      echo ""
    ' sh {} \;
  fi
else
  echo "Directorio no encontrado"
fi

# Resumen
TOTAL=$((USER_COUNT + PROJECT_COUNT))
echo "=== RESUMEN ==="
echo "Total de habilidades en todos los directorios: $TOTAL"

Paso 3: Menú de Acciones Rápidas

Después del escaneo, usar la herramienta AskUserQuestion para ofrecer estas opciones:

Pregunta: "¿Qué te gustaría hacer con tus habilidades locales?"

Opciones:

  1. Añadir nueva habilidad - Iniciar el asistente de creación de habilidades (invocar /skill add)
  2. Listar todas las habilidades con detalles - Mostrar inventario completo de habilidades (invocar /skill list)
  3. Escanear conversación en busca de patrones - Analizar la conversación actual en busca de patrones que merezcan ser habilidad
  4. Importar habilidad - Importar una habilidad desde una URL o pegar contenido
  5. Hecho - Salir del asistente

Opción 3: Escanear Conversación en Busca de Patrones

Analizar el contexto de la conversación actual para identificar patrones que valga la pena convertir en habilidad. Buscar:

  • Sesiones de depuración recientes con soluciones no obvias
  • Errores complicados que requirieron investigación
  • Soluciones alternativas específicas del codebase descubiertas
  • Patrones de error que tomaron tiempo resolver

Informar los hallazgos y preguntar si el usuario quiere extraer alguno como habilidad (invocar /skillify; /learner está obsoleto por compatibilidad).

Opción 4: Importar Habilidad

Preguntar al usuario que proporcione:

  • URL: Descargar habilidad desde una URL (ej., GitHub gist)
  • Pegar contenido: Pegar directamente el contenido markdown de la habilidad

Luego preguntar por el ámbito:

  • Nivel de usuario (~/.claude/skills/omc-learned/) - Disponible en todos los proyectos
  • Nivel de proyecto (.omc/skills/) - Solo para este proyecto

Validar el formato de la habilidad y guardar en la ubicación elegida.


/skill scan

Comando rápido para escanear ambos directorios de habilidades (subconjunto de /skill setup).

Comportamiento: Ejecutar el escaneo del Paso 2 de /skill setup sin el asistente interactivo.


Plantillas de Habilidades

Al crear habilidades mediante /skill add o /skill setup, ofrecer plantillas rápidas para tipos de habilidades comunes:

Plantilla de Solución de Errores

---
id: error-[id-único]
name: [Nombre del Error]
description: Solución para [error específico en contexto específico]
source: conversation
triggers: ["fragmento del mensaje de error", "ruta del archivo", "síntoma"]
quality: high
---

# [Nombre del Error]

## La Comprensión
¿Cuál es la causa subyacente de este error? ¿Qué principio descubriste?

## Por Qué Importa
¿Qué sale mal si no sabes esto? ¿Qué síntoma te llevó aquí?

## Patrón de Reconocimiento
¿Cómo sabes cuándo se aplica esto? ¿Cuáles son las señales?
- Mensaje de error: "[error exacto]"
- Archivo: [ruta específica del archivo]
- Contexto: [¿cuándo ocurre esto?]

## La Solución
1. [Paso 1]
2. [Paso 2]
3. [Paso 3]

## Notas
[Consideraciones adicionales, casos límite, advertencias]

Plantilla de Flujo de Trabajo

---
name: [nombre de la habilidad]
description: [descripción breve]
triggers:
  - [disparador1]
  - [disparador2]
---

# [Nombre de la Habilidad]

## Cuándo Usar
[Describe cuándo se debe activar esta habilidad]

## Pasos

### Paso 1: [Nombre del Paso]
[Descripción de lo que hay que hacer]

### Paso 2: [Nombre del Paso]
[Descripción de lo que hay que hacer]

### Paso 3: [Nombre del Paso]
[Descripción de lo que hay que hacer]

## Resultado Esperado
[¿Qué debería suceder después de completar estos pasos?]

## Ejemplo

/oh-my-claudecode:


## Notas
[Cualquier advertencia, dependencia o contexto adicional]

Plantilla de Guía de Configuración

---
name: config-[framework/tecnología]
description: Configuración y puesta en marcha de [framework/tecnología]
triggers:
  - setup
  - config
  - [disparador específico]
---

# Configuración de [Framework/Tecnología]

## Requisitos Previos
- [Requisito 1]
- [Requisito 2]
- [Requisito 3]

## Pasos de Instalación

### 1. [Paso 1]
```bash
[comando o fragmento de código]

2. [Paso 2]

[comando o fragmento de código]

3. [Paso 3]

[comando o fragmento de código]

Verificación

[comando para verificar que la configuración funciona]

Solución de Problemas


---

## Notas de Implementación

- **Manejo de errores:** Todos los subcomandos deben manejar elegantemente archivos faltantes, permisos y directorios inexistentes
- **Confirmación:** El usuario siempre debe confirmar antes de eliminar o sobrescribir
- **Rutas:** Usar siempre `${CLAUDE_CONFIG_DIR:-~/.claude}` para la ruta base de usuario; expandir `~` según sea necesario
- **Formato:** Usar el frontmatter YAML para metadatos dentro de los archivos `SKILL.md`
- **Compatibilidad:** Todos los subcomandos deben seguir funcionando si se cambia la variable de entorno `CLAUDE_CONFIG_DIR`
- **Velocidad:** Mantener operaciones de archivo ligeras; evitar escaneos completos innecesarios en comandos como `/skill info`

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

agent-doc-discipline

Writing-time discipline for documents agents consume (the five surfaces, specs, tickets, .omc/skills/) — every rule checkable and carrying a why, steps before reference, one meaning in one home, no restating what the environment already says. Mandatory at drydock seed generation and the launch C5 sediment pass; opt-in for any other agent-facing doc edit. The companion of minimal-code-discipline: that one disciplines code, this one disciplines papers.

ai-slop-cleaner

Clean AI-generated code slop with a regression-safe, deletion-first workflow and optional reviewer-only mode

ask

Process-first advisor routing for Claude, Codex, Gemini, Antigravity, Grok, or Cursor via `omc ask`, with artifact capture and no raw CLI assembly

ask-navigator

Shipyard

autopilot

Full autonomous execution from idea to working code

autoresearch

Stateful single-mission improvement loop with strict evaluator contract, markdown decision logs, and max-runtime stop behavior

cancel

Cancel any active OMC mode (autopilot, ralph, ultragoal, swarm, ultrapilot, pipeline, team) and clean up retired legacy state

configure-notifications

Configure notification integrations (Telegram, Discord, Slack) via natural language

debug

Diagnose the current OMC session or repo state using logs, traces, state, and focused reproduction

deepinit

Deep codebase initialization with hierarchical AGENTS.md documentation

deep-interview

Socratic deep interview with mathematical ambiguity gating before explicit execution approval

drydock

Lay the keel of the shipyard harness in any repo — the 4-pillar shared environment (Context, Rules, Tools, Standards) across 5 surfaces (CLAUDE.md, skills, design-system, mcp/cli, shared context) so that every human and agent inherits the same design language and anyone can ship. Run once per repo; re-run with --check to audit drift.

execute

Carry an approved task through to working, verified code

external-context

Invoke parallel document-specialist agents for external web searches and documentation lookup

graph

Deterministic orchestration graph runtime - declarative DAG pipelines with journal-based crash recovery

harbor

Harbor intake for external work — the captain only handles unresolved decisions. Sweeps incoming issues and PRs, verifies every claim before disposition, reuses every decision already made, and hands the maintainer a docket whose pending items each carry one question with options, recommendation, impact and evidence. Agent-autonomous for facts and for actions covered by standing authorization; signed for every new judgment. Never merges.

hud

Configure HUD display options (layout, presets, display elements)

launch

Shipyard

loft

Loft the shape before cutting steel — answer a design question that prose cannot settle by building a throwaway artifact: a pure logic module in a clickable shell, or structurally different UI variants behind one route. The captain reacts to the artifact; the answer folds into the decision; the artifact never docks. Use when a design question stalls in words, when a navigator map carries a loft ticket, or when a spec discussion reaches

minimal-code-discipline

YAGNI-ladder coding discipline for writing changes — existence-first, reuse before writing, dependency ladder, shortest correct diff, with non-negotiables that must never be minimized away

Skills relacionados