Use this file to discover all available pages before exploring further.
Le Skills sono definite come file SKILL.md all’interno di una directory con un nome specifico. Questa pagina illustra tutto ciò che devi sapere per scrivere skills efficaci.
Colloca le skills nella directory appropriata in base all’ambito:
# Specifico del progetto (commit su git).devin/skills/└── my-skill/ └── SKILL.md# Globale — disponibile in tutti i progetti (non in commit)# Linux/macOS:~/.config/devin/skills/└── my-skill/ └── SKILL.md# Windows:%APPDATA%\devin\skills\└── my-skill\ └── SKILL.md
Il nome della directory è l’identificatore della skill (usato per richiamare /my-skill). Il file SKILL.md contiene un frontmatter YAML facoltativo e il contenuto del prompt della skill.
Su Windows, %APPDATA% corrisponde in genere a C:\Users\<YourUser>\AppData\Roaming.
Usa il campo model per eseguire una skill con un modello diverso da quello attivo nella sessione corrente. È utile se vuoi usare un modello più rapido per attività semplici o uno più potente per quelle complesse:
---name: quick-fixdescription: Fast lint fix using a lightweight modelmodel: swe---Fix the lint errors in the current file.
Il nome del modello utilizza gli stessi valori del flag CLI --model (ad es. opus, sonnet, swe, codex). Consulta Models per l’elenco completo. Una volta completata la skill, la sessione torna al modello precedentemente attivo.
L’esecuzione delle skill come subagent è sperimentale. I campi subagent e agent del frontmatter potrebbero cambiare nelle versioni future.
Per impostazione predefinita, il prompt di una skill viene iniettato nella conversazione corrente e l’agente lo elabora inline. In alternativa, puoi eseguire una skill come subagent, che avvia un processo indipendente con una propria finestra di contesto. Questa opzione è utile per skill che svolgono attività mirate e autonome, quando non vuoi che l’output appesantisca la conversazione principale.Esistono due modi per eseguire una skill come subagent:
Imposta subagent: true per eseguire la skill come subagent usando il profilo predefinito subagent_general:
---name: deep-researchdescription: Thorough codebase research on a topicsubagent: truemodel: sonnetallowed-tools: - read - grep - glob---Research the following topic thoroughly: $ARGUMENTSSearch broadly, follow references, and trace call chains.Report all findings with specific file paths and line numbers.
Quando viene invocata, questa skill avvia un subagent in foreground che esegue il prompt della skill come attività. L’agent principale attende che il subagent termini, quindi ne legge e riassume i risultati.
---name: review-prdescription: Review the current PR using the reviewer subagentagent: reviewer---Review the staged changes for correctness, security, and style issues.
Il valore agent deve corrispondere al nome di un profilo subagent registrato (integrato, come subagent_explore / subagent_general, oppure un profilo personalizzato che hai definito). Il subagent eredita il system prompt del profilo, le restrizioni sugli strumenti e il modello, mentre il contenuto della skill diventa l’attività.
Se sono impostati sia agent sia subagent, agent ha la precedenza. Il campo model della skill esegue l’override del modello del profilo subagent quando sono specificati entrambi.
Le skill eseguite come subagent non generano subagent nidificati: se la skill è già in esecuzione all’interno di un subagent, viene invece eseguita inline per evitare una ricorsione infinita.
Poiché le skill possono essere eseguite come subagenti, puoi usarle per orchestrare attività articolate in più passaggi. Definisci un insieme di skill di subagent, ciascuna dedicata a un’attività specifica, quindi scrivi una normale skill che le invochi. La skill esterna diventa l’orchestratore: richiama ogni subagent, raccoglie i risultati e decide cosa fare successivamente.Ad esempio, ecco due skill di subagent e un orchestratore che le coordina:
---name: research-changesdescription: Research recent code changes and their impactsubagent: trueallowed-tools: - read - grep - glob - exec---Analyze the recent changes in this repository:1. Run `git log --oneline -20` to see recent commits2. For each significant commit, examine what changed and why3. Identify any patterns, risks, or areas that need attentionReport your findings with specific file paths and commit references.
---name: validate-testsdescription: Run tests and validate coverage for recent changessubagent: trueallowed-tools: - read - grep - glob - exec---Validate the test suite for the project:1. Identify the test framework and run command2. Run the full test suite3. Check for any failing tests4. Review test coverage for recently changed filesReport which tests pass, which fail, and any coverage gaps.
---name: health-checkdescription: Full project health check — research changes then validate tests---Perform a full health check on this project:1. First, use the /research-changes skill to understand recent changes2. Then, use the /validate-tests skill to verify the test suite3. Finally, synthesize the findings from both into a summary: - What changed recently and why - Whether tests are passing - Any risks or recommended actions
Invocare /health-check esegue l’orchestratore nell’agente principale. Questo richiama /research-changes, che genera un subagent per esplorare la repo. Una volta completato, richiama /validate-tests, che genera un altro subagent per eseguire i test. L’orchestratore sintetizza quindi entrambi i risultati in un riepilogo finale.Una skill di un subagent non utilizza mai un subagent quando richiama altre skill, anche se queste hanno subagent: true: vengono invece eseguite inline. Questo significa che non devi preoccuparti di un annidamento illimitato. Il modello di orchestrazione ha sempre un solo livello di profondità: l’orchestratore genera i subagent e questi eseguono tutto il resto inline.
allow — Questi ambiti vengono approvati automaticamente durante l’esecuzione della skill
deny — Questi ambiti vengono bloccati durante l’esecuzione della skill
ask — Questi ambiti richiedono sempre la conferma dell’utente
Le autorizzazioni delle skill sono cumulative rispetto alle autorizzazioni di base della sessione (non le sostituiscono). Una skill non può concedere autorizzazioni negate a un livello superiore (configurazione del progetto o dell’organizzazione).
Se allowed-tools non è specificato, la skill ha accesso a tutti gli strumenti. Per le skill critiche dal punto di vista della sicurezza, limita sempre l’accesso al minimo necessario.
---name: reviewdescription: Review staged changes for issuesallowed-tools: - read - grep - glob - execpermissions: allow: - Exec(git diff) - Exec(git log)---Review the current changes for quality issues:!`git diff --staged`Evaluate:1. **Correctness** — Any logic errors or edge cases?2. **Security** — Any vulnerabilities introduced?3. **Performance** — Any obvious inefficiencies?4. **Style** — Consistent with the codebase?Provide a summary with specific line references.
---name: componentdescription: Generate a React component from a descriptionargument-hint: "<ComponentName>"allowed-tools: - read - edit - grep - globmodel: sonnetpermissions: allow: - Write(src/components/**)---Create a new React component named `$1`:1. Check existing components in src/components/ for style conventions2. Create the component file at src/components/$1/$1.tsx3. Create a barrel export at src/components/$1/index.ts4. Add basic tests at src/components/$1/$1.test.tsx5. Follow the patterns you find in existing components
---name: deploydescription: Esegui la checklist di distribuzionetriggers: - userallowed-tools: - read - exec - greppermissions: allow: - Exec(npm run) - Exec(git)---Esegui la checklist di distribuzione:1. Esegui la suite di test: `npm run test`2. Esegui il linter: `npm run lint`3. Verifica le modifiche non committate: `git status`4. Verifica la build: `npm run build`5. Mostra il branch corrente e l'ultimo commitRiporta lo stato di ogni passaggio. Se qualcosa fallisce, interrompi e spiega il problema.
---name: finddescription: Find relevant code across the projectargument-hint: "<what to find>"allowed-tools: - read - grep - globtriggers: - user - model---Search the codebase thoroughly for: $ARGUMENTSUse grep for content search and glob for file discovery.Provide relevant file paths and code snippets.Explain how the pieces connect.