Copilot Chat non è una semplice casella di testo: è un’interfaccia strutturata in cui puoi comporre l’intento con tre building block distinti. Capire quando usarli e come combinarli è la differenza tra un prompt vago e uno che produce codice preciso, ed è esattamente ciò che l’esame verifica.

Slash command: scorciatoie di intent

Uno slash command (/) mappa un’intenzione ricorrente su un prompt di sistema ottimizzato, così non devi riformulare a mano operazioni comuni. I più rilevanti in Copilot Chat dentro VS Code e Visual Studio:

  • /explain — spiega il codice selezionato o il file attivo.
  • /fix — propone una correzione a errori o warning.
  • /tests — genera unit test per la selezione.
  • /doc — aggiunge commenti/documentazione.
  • /optimize — rifattorizza per performance o leggibilità.
  • /new e /newNotebook — scaffolding di un nuovo progetto o notebook.
  • /help e /clear — utility della chat stessa.

Il valore è la coerenza: /tests inietta implicitamente istruzioni sul framework e sulle convenzioni, riducendo il rischio di output fuori target rispetto a un prompt libero.

Chat participant: orientare il dominio

Un chat participant (@) è un agente specializzato che estende la chat con conoscenza e “skill” di un dominio specifico. Non riformula soltanto il prompt: cambia le fonti a cui Copilot attinge.

  • @workspace — ragiona sull’intero progetto aperto, non solo sul file corrente. Serve per domande tipo “dove viene inizializzata l’autenticazione?” o “aggiungi un endpoint seguendo i pattern esistenti”. Si appoggia all’indicizzazione del workspace: Copilot costruisce un indice del codebase e recupera i frammenti pertinenti.
  • @vscode — risponde su comandi, impostazioni e API dell’editor.
  • @terminal — genera e spiega comandi di shell, con contesto sul terminale integrato.
  • @github — porta le GitHub skills nella chat: ricerca web, ricerca codice su repository remoti, informazioni su issue e PR. È il ponte verso conoscenza che vive fuori dal workspace locale.

La scelta architetturale chiave: @workspace per capire il tuo codice, @github per capire l’ecosistema attorno ad esso.

Context variables: iniettare contesto puntuale

Una context variable (#) inietta un riferimento esplicito e mirato nel prompt, invece di lasciare che Copilot indovini cosa intendi. Le più usate:

  • #file / #<nome-file> — allega un file specifico.
  • #selection — la selezione corrente nell’editor.
  • #editor — il contenuto visibile del file attivo.
  • #codebase — forza un recupero esteso dal progetto indicizzato (concettualmente ciò che @workspace fa in automatico, ma richiamabile a mano).
  • #terminalSelection / #terminalLastCommand — output o ultimo comando del terminale.
  • #usages / #changes — riferimenti simbolici e modifiche pendenti.

La differenza con i participant è di granularità: il participant sceglie la strategia di recupero, la variabile ancora un contesto concreto.

Combinare i building block

Il pattern potente li usa insieme nello stesso messaggio:

@workspace /tests #selection usa lo stesso mocking pattern di #file:UserService.test.ts

Qui il participant orienta il ragionamento sull’intero progetto, lo slash command fissa l’intento (generare test), e le variabili ancorano la selezione e un file di riferimento. L’ordine tipico è participant → slash command → context variables → istruzione in linguaggio naturale. Non è obbligatorio usarli tutti: aggiungi un blocco solo quando riduce l’ambiguità.

Trappole tipiche d’esame

  • Scenario: vuoi rifattorizzare seguendo pattern presenti in altri file del progetto, ma il prompt guarda solo al file aperto. → Risposta giusta: usa @workspace (o #codebase), non /fix da solo: serve il recupero sull’intero progetto indicizzato.
  • Scenario: l’esame chiede un participant/variabile ma questo non compare nell’IDE dell’utente. → Risposta giusta: ricorda che participant e context variables disponibili variano per IDE (VS Code, Visual Studio, JetBrains). Non tutti espongono lo stesso set; verifica nel client in uso.
  • Scenario: @workspace dà risposte incomplete su un monorepo enorme appena clonato. → Risposta giusta: dipende dall’indicizzazione del workspace; se l’indice non è ancora pronto o il codebase è troppo grande, il recupero è parziale. Non è un bug del prompt.
  • Scenario: serve informazione da una repo remota o una issue GitHub, non dal codice locale. → Risposta giusta: usa @github, non @workspace: quest’ultimo conosce solo il progetto aperto localmente.
  • Scenario: vuoi allegare un file preciso come riferimento. → Risposta giusta: una context variable #file è più affidabile che descriverlo a parole nel prompt.