Usare le competenze di Agent con GitHub Copilot in SQL Server Management Studio

Le competenze dell'agente sono set riutilizzabili di istruzioni che indicano GitHub Copilot come eseguire attività specifiche. Ogni competenza è un file markdown definito una volta, risparmiando tempo e garantendo un comportamento coerente nel flusso di lavoro. Considera le abilità come un runbook, non come un unico grande prompt. Quando usi la modalità Agent (anteprima), Copilot individua e applica automaticamente le competenze pertinenti in base a ciò che stai chiedendo.

Note

La modalità agente di GitHub Copilot in SQL Server Management Studio (SSMS) è attualmente in anteprima.

A differenza delle istruzioni personalizzate, che impostano le preferenze generali per ogni risposta, le competenze forniscono indicazioni specifiche per le attività incentrate che qualsiasi agente può individuare e usare. Definisci una competenza una sola volta e verrà applicata in modo uniforme in tutte le sessioni e in tutto il tuo team.

Prerequisiti

Funzionamento delle competenze di Agent

Quando usi la modalità Agent, Copilot analizza le posizioni note delle competenze per il tuo repository e il tuo profilo utente. Se la descrizione di una competenza corrisponde alla finalità della richiesta, Copilot attiva la competenza e applica le istruzioni come contesto aggiuntivo. Quando una competenza è attiva, il suo nome viene visualizzato nella chat così sai che è in uso.

Copilot decide quali competenze attivare in base al campo description nel frontmatter di ogni competenza. Una descrizione chiara e ricca di parole chiave consente di Copilot identificare quando una competenza è rilevante.

Località delle competenze

Copilot individua le competenze dalle seguenti posizioni:

Scope Paths dettagli
Area di lavoro (condivisa con il team) .github/skills/, .claude/skills/, .agents/skills/ Archiviato nella radice del repository. Aggiunto al controllo del codice sorgente affinché tutti i membri del team abbiano accesso alle stesse funzionalità.
Personale (solo il tuo profilo) ~/.copilot/skills/, ~/.claude/skills/, ~/.agents/skills/ Si applica a tutti i progetti. Non è stato eseguito il commit in alcun repository.

Le competenze dell'area di lavoro hanno la precedenza per le convenzioni specifiche del progetto. Le competenze personali sono utili per flussi di lavoro e preferenze che viaggiano con l'utente tra progetti.

Creare una competenza

È possibile creare una competenza dal pannello Skills in SSMS o manualmente nel file system.

Creare una competenza dal pannello Competenze

  1. Nella finestra Copilot Chat selezionare l'icona Tools.
  2. Selezionare il pannello Competenze .
  3. Nel pannello Competenze selezionare il + pulsante .
  4. Scegliere l'ambito: una competenza dell'area di lavoro (archiviata nel repository) o una competenza personale (archiviata nel profilo utente).
  5. Inserire un nome per l'abilità. Il nome diventa il nome della directory e deve usare solo lettere minuscole, numeri e trattini.
  6. SSMS genera un SKILL.md modello nella nuova directory delle competenze. Modificare il modello e aggiungere le istruzioni al file.

Creare manualmente un'abilità

  1. Crea una directory delle competenze nella posizione appropriata. Per una competenza dell'area di lavoro, creare .github/skills/ nella radice del repository.
  2. Creare una sottodirectory per l'abilità. Ogni abilità deve avere la propria directory. Ad esempio: .github/skills/tsql-style-guide/.
  3. Crea un file SKILL.md all'interno della directory della skill.
  4. Facoltativamente, aggiungere file di supporto, ad esempio script, documenti di riferimento o output di esempio.

Struttura della directory delle abilità

your-repo/
└── .github/
    └── skills/
        └── index-verification/
        │   ├── SKILL.md          # Required: metadata and instructions
        │   └── references/       # Optional: supplementary documentation
        └── agent-job-failure-triage/
            ├── SKILL.md
            └── examples/         # Optional: example scripts

formato SKILL.md

Ogni SKILL.md file deve contenere il frontmatter YAML seguito dalle istruzioni markdown. Il frontmatter fornisce i metadati Copilot usati per individuare e attivare la competenza.

Proprietà frontmatter

Proprietà Obbligatorio Description
name Yes Solo lettere minuscole, numeri e trattini. Deve corrispondere al nome della directory principale. Massimo 64 caratteri.
description Yes Descrive le operazioni che la competenza esegue e quando usarla. Massimo 1.024 caratteri. Includere parole chiave specifiche che segnalano quando la competenza è rilevante.
license No Nome della licenza o un riferimento a un file di licenza incluso nella skill.
compatibility No Requisiti di ambiente, ad esempio il prodotto previsto o le funzionalità di sistema necessarie.
metadata No Coppie chiave-valore arbitrarie per altri metadati.
allowed-tools No Elenco separato da spazi dei nomi degli strumenti che l'abilità è preautorizzata a usare.

Gestire le competenze dal pannello Competenze

Selezionare l'icona Tools nella finestra di Copilot Chat per aprire il pannello Skills. Il pannello mostra tutte le competenze che Copilot rileva nella sessione corrente.

Dal pannello è possibile:

  • Modifica: Apri direttamente nell'editor il file SKILL.md di qualsiasi skill dal menu ....
  • Apri percorso del file: vai alla directory delle abilità su disco.
  • Ricerca: filtra le competenze in base al nome o alla parola chiave.

Il pannello visualizza anche la diagnostica per eventuali errori di configurazione delle competenze, in modo da poter identificare e risolvere rapidamente i problemi.

Suggerimenti per redigere competenze efficaci

  • Mantieni SKILL.md conciso: punta a meno di 300 righe. Spostare materiale di riferimento dettagliato in file separati nelle sottodirectory pertinenti.
  • Crittura di una descrizione ricca di parole chiave: Copilot usa il description per decidere quando attivare la competenza. Includere le attività, gli oggetti e gli scenari specifici in cui si applica la competenza.
  • Usare i passaggi numerati per le procedure: le istruzioni dettagliate per il modello sono più semplici da seguire rispetto alla prosa.
  • Includi esempi di output previsto: mostra codice di esempio, formati di tabella o blocchi di commento in modo che il modello conosca l'aspetto "completato".
  • Impostare limiti espliciti: indicare alla competenza cosa non fare. Ad esempio, "Non consigliare di eliminare gli indici nelle tabelle con più di 10 milioni di righe senza prima creare report sul volume di scrittura".
  • Materiale di riferimento e supporto: archivia contenuti e script correlati in file all'interno di references\, scripts\ o examples\ e fai riferimento a contenuti specifici dall'abilità.

Competenze SQL di esempio

Gli esempi seguenti illustrano come scrivere competenze per attività di SQL Server comuni. Usarli come punti di partenza e adattarli alle convenzioni del team.

Verifica dell'indice

Esaminare gli indici esistenti prima di consigliare nuovi indici per evitare la duplicazione.

---
name: index-verification
description: Use when an index recommendation has been generated and must be validated before implementation. Verifies workload benefit, redundancy, write overhead, storage impact, and existing index coverage.
---

# Index Verification

## Use this skill when

- A missing index recommendation exists
- An agent generated an index recommendation
- Query tuning suggests adding an index
- A user asks whether an index should be created

## Never assume

- Missing index DMVs are recommendations, not requirements.
- Do not recommend index creation until validation is complete.

## Verification Checklist

### 1. Check Existing Indexes

Determine whether:

- An equivalent index already exists
- A wider index already covers the workload
- Included columns already satisfy the query
- The recommendation duplicates another recommendation

### 2. Estimate Read Benefit

Evaluate:

- Query execution frequency
- Current execution cost
- Expected seek/selectivity improvement
- Number of affected queries

### 3. Evaluate Write Cost

Determine:

- Insert impact
- Update impact
- Delete impact
- Additional maintenance cost

### 4. Evaluate Storage Impact

Estimate:

- Index size on disk
- Memory pressure
- Replication impact

### 5. Make Recommendation

Return one of:

- Create index
- Modify existing index
- Consolidate with existing recommendation
- Reject recommendation

## Avoid

- Blindly trusting missing-index DMVs
- Creating overlapping indexes
- Recommending indexes for one-off queries
- Ignoring write-heavy workloads

## Output Format

Format output as a table: index name, columns, type, and recommendation (create / modify / consolidate / reject).

Analisi preliminare degli errori dei processi dell'agente

Analizzare la cronologia dei processi di SQL Agent non riusciti e fornire raccomandazioni per risolvere il problema radice.

---
name: agent-job-failure-triage
description: Use when an automated job, workflow, maintenance task, or agent execution fails. Determines root cause and appropriate remediation while avoiding unsafe recovery actions.
---
# Agent Job Failure Triage

## Objective

Identify root cause before attempting remediation.

## First Rule

Never retry repeatedly without understanding why the job failed.

## Investigation Order

### 1. Collect Failure Details

Gather:

- Job name
- Error message
- Start time
- End time
- Retry history

### 2. Classify Failure

Determine whether failure is:

- Resource-related
- Permission-related
- Configuration-related
- Data-related
- Dependency-related
- Other or unknown

### 3. Check Recent Changes

Investigate:

- Deployments
- Configuration changes
- Schema changes
- Security changes
- Infrastructure changes

### 4. Determine Blast Radius

Identify:

- Data modified by job
- Schema modified by job
- Affected users or departments
- Downstream jobs
- SLA impact
- Data correctness risk

## Safe Actions

- Collect logs
- Validate dependencies
- Escalate when root cause is unknown

## Unsafe Actions

- Retry job
- Disable job
- Force-completing jobs
- Disabling validation checks
- Modifying production data to "make it pass"
- Restarting the SQL Agent service