Saltar al contenido principal

Skills

Las Skills son módulos de prompt reutilizables. Al cargar un SKILL.md, puedes añadir a la sesión instrucciones para un dominio concreto.

Resumen

  • Reutiliza conocimiento de dominio como una skill
  • Comparte el mismo comportamiento entre proyectos
  • Activa/desactiva por sesión
En la versión Laravel se configura con skillDirectories y disabledSkills de SessionConfig.

Uso básico

Al indicar el directorio padre en skillDirectories, se cargan los SKILL.md de cada subdirectorio.
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\SessionConfig;

Copilot::start(function (CopilotSession $session) {
    $response = $session->sendAndWait(prompt: 'この差分をセキュリティ観点でレビューして');

    dump($response->content());
}, config: new SessionConfig(
    skillDirectories: [
        base_path('skills'),
    ],
));
También puedes indicarlo como array:
Copilot::run(
    prompt: 'READMEの改善案を出して',
    config: [
        'skillDirectories' => [base_path('skills')],
    ],
);

Deshabilitar skills

Con disabledSkills puedes deshabilitar solo algunas skills ya cargadas.
$config = new SessionConfig(
    skillDirectories: [base_path('skills')],
    disabledSkills: ['experimental-feature', 'deprecated-tool'],
);

Estructura de directorios

skills/
├── code-review/
│   └── SKILL.md
└── documentation/
    └── SKILL.md
En skillDirectories indica un directorio padre como skills/.

Formato de SKILL.md

SKILL.md es Markdown y puede incluir opcionalmente frontmatter YAML.
---
name: code-review
description: Specialized code review capabilities
---

# Code Review Guidelines

When reviewing code, always check for:

1. Security vulnerabilities
2. Performance issues
3. Code style
4. Test coverage
Campos principales del frontmatter:
  • name: identificador de la skill (nombre que se indica en disabledSkills)
  • description: descripción breve de la skill
Si omites name, se usa el nombre del directorio.

Combinarlas con Custom Agents

Si indicas nombres de skill en customAgents[].skills, el contenido de esas skills se carga previamente al arrancar el agente correspondiente.
use Revolution\Copilot\Types\SessionConfig;

$config = new SessionConfig(
    skillDirectories: [base_path('skills/security')],
    customAgents: [
        [
            'name' => 'security-auditor',
            'description' => 'Security-focused code reviewer',
            'prompt' => 'Focus on OWASP Top 10 vulnerabilities',
            'skills' => ['security-scan', 'dependency-check'],
        ],
    ],
);
Si omites skills, no se inyecta contenido de skills en el agente.

Consulta y control mediante RPC

También puedes descubrir y habilitar/deshabilitar skills vía RPC.
// Descubre skills a nivel de servidor
$result = Copilot::client()->rpc()->skills()->discover();

// Lista de skills dentro de la sesión
$session->rpc()->skills()->list();

// Habilita/deshabilita individualmente dentro de la sesión
$session->rpc()->skills()->enable(['name' => 'security-scan']);
$session->rpc()->skills()->disable(['name' => 'security-scan']);

Buenas prácticas

  • Divide las skills por dominio (skills/security, skills/testing, etc.)
  • Añade name y description en el frontmatter
  • Si hay instrucciones conflictivas, exclúyelas explícitamente con disabledSkills
  • Prueba primero de forma aislada y luego combina varias skills

Referencias

Última modificación el 13 de julio de 2026