Vai al contenuto principale

Skills

Le skill sono moduli di prompt riutilizzabili. Puoi caricare SKILL.md per aggiungere alla sessione istruzioni orientate a un dominio specifico.

Panoramica

  • Riutilizzabilità del sapere di dominio come skill
  • Condivisione dello stesso comportamento tra progetti
  • Attivazione/disattivazione a livello di singola sessione
Nella versione Laravel si configurano tramite skillDirectories e disabledSkills di SessionConfig.

Uso di base

Se in skillDirectories specifichi una directory padre, vengono caricati i SKILL.md presenti in ciascuna sottodirectory.
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\SessionConfig;

Copilot::start(function (CopilotSession $session) {
    $response = $session->sendAndWait(prompt: 'Rivedi questo diff dal punto di vista della sicurezza');

    dump($response->content());
}, config: new SessionConfig(
    skillDirectories: [
        base_path('skills'),
    ],
));
Puoi specificarlo anche come array.
Copilot::run(
    prompt: 'Proponi miglioramenti al README',
    config: [
        'skillDirectories' => [base_path('skills')],
    ],
);

Disabilitare skill

Con disabledSkills puoi disabilitare solo alcune delle skill caricate.
$config = new SessionConfig(
    skillDirectories: [base_path('skills')],
    disabledSkills: ['experimental-feature', 'deprecated-tool'],
);

Struttura della directory

skills/
├── code-review/
│   └── SKILL.md
└── documentation/
    └── SKILL.md
In skillDirectories specifica una directory padre come skills/.

Formato di SKILL.md

SKILL.md è Markdown, con YAML frontmatter opzionale.
---
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
Voci principali del frontmatter:
  • name: identificatore della skill (nome da usare in disabledSkills)
  • description: breve descrizione della skill
Se ometti name, viene usato il nome della directory.

Combinazione con Custom Agent

Se specifichi un nome di skill in customAgents[].skills, il contenuto della skill viene caricato in anticipo all’avvio dell’agente corrispondente.
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'],
        ],
    ],
);
Se ometti skills, il contenuto delle skill non viene iniettato nell’agente.

Verifica e operazioni via RPC

Puoi rilevare le skill e abilitarle/disabilitarle anche tramite RPC.
// Rileva le skill a livello di server
$result = Copilot::client()->rpc()->skills()->discover();

// Elenco delle skill nella sessione
$session->rpc()->skills()->list();

// Attiva/disattiva singolarmente all'interno della sessione
$session->rpc()->skills()->enable(['name' => 'security-scan']);
$session->rpc()->skills()->disable(['name' => 'security-scan']);

Best practice

  • Suddividi le skill per dominio (skills/security, skills/testing, ecc.)
  • Includi name e description nel frontmatter
  • Se ci sono istruzioni in conflitto, escludile esplicitamente con disabledSkills
  • Testa prima ciascuna skill singolarmente, poi combinane più insieme

Riferimenti

Ultima modifica il 13 luglio 2026