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à./newe/newNotebook— scaffolding di un nuovo progetto o notebook./helpe/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@workspacefa 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/fixda 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:
@workspacedà 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.