Modulo 1: Fondamenta e Governance (Instructions & Rules)
Per un architetto, la coerenza è tutto. Senza regole, l’AI genera codice “medio”. Noi vogliamo codice “eccellente”.
1.1 Instructions & Rules (.github/copilot-instructions.md)
Questa è la funzionalità più critica. Puoi creare un file nella root del progetto (o globalmente nelle impostazioni) che istruisce Copilot su come comportarsi esclusivamente per quel progetto.
- Strategia: Definisci qui i tuoi standard (C++20, no
malloc, obbligo di Type Hinting in Python). - Esempio di contenuto:
# Project Standards - Language: C++20. - Safety: Follow MISRA C++:2023 guidelines. - No Dynamic Allocation: Use static memory or stack only. - Documentation: Use Doxygen for all headers. - Testing: Every class must have a corresponding GoogleTest file. - Risultato: Copilot smetterà di suggerirti
std::vectorse scrivi firmware bare-metal dove non è permesso.
Modulo 2: Strutturare il Lavoro Ripetitivo (Prompt Files & Skills)
2.1 Prompt Files (.prompt)
I .prompt files sono “template” di istruzioni complesse che puoi richiamare. Invece di scrivere ogni volta “Rifattorizza questa funzione per la sicurezza”, crei un file.
- Use Case: Creazione di un nuovo driver periferica.
- Esempio (
/prompts/new-driver.prompt):Act as an Embedded Specialist. Analyze the attached datasheet snippet and generate a C++ hardware abstraction layer for [Device Name]. Requirements: - Register definitions using constexpr. - Error handling via std::expected or custom enum.
2.2 Skills
Le “Skills” sono capacità atomiche che l’agente può acquisire. Ad esempio, la capacità di leggere i log di una seriale o di interrogare un database di vulnerabilità. Configurarle permette a Copilot di “sapere cosa fare” quando incontra determinati file.
Modulo 3: L’Ecosistema Avanzato (Custom Agents & MCP)
Questa è la frontiera tecnologica attuale.
3.1 Custom Agents
Gli agenti sono “personalità” specializzate. Puoi creare (o connettere) agenti per Jira, Slack, o un agente interno che conosce l’architettura del tuo sistema legacy.
- Workflow: Invece di usare
@workspace, userai@firmware-experto@security-auditor.
3.2 MCP Server (Model Context Protocol)
Questo è il cambiamento di paradigma introdotto da Anthropic e ora supportato. L’MCP Server permette a Copilot di leggere dati che non sono nel tuo editor.
- Esempio Embedded: Puoi configurare un MCP Server che interroga la documentazione tecnica (PDF) dei microcontrollori o che si connette a un database SQL di telemetria.
- Azione: Se chiedi “Perché l’interrupt del timer 3 non scatta?”, Copilot può usare l’MCP per leggere il manuale del chip e darti la risposta esatta basata sull’offset dei registri.
Modulo 4: Automazione e Diagnostica (Hooks, Tool Set, Diagnostics)
4.1 Hooks
I Hooks permettono di innescare Copilot durante eventi del ciclo di vita del software.
- Pre-commit Hook: Puoi configurare Copilot per analizzare il codice appena scritto e bloccare il commit se non rispetta le
Rulesdel Modulo 1.
4.2 Tool Set
È l’insieme di strumenti che Copilot può invocare. Ad esempio, puoi dare a Copilot il “tool” per eseguire cmake o pytest.
- Power Move: “Copilot, esegui i test e, se falliscono, correggi il codice nel modulo
sensor_fusion.pyfinché non passano tutti”.
4.3 Diagnostics
Usa questa vista per capire perché Copilot non ha contesto. Se vedi che i file .h non vengono indicizzati, puoi correggere la configurazione del workspace per migliorare la qualità delle risposte.
Modulo 5: Ottimizzazione del Workflow (Chat Settings)
Configura la chat per essere “Concise” o “Verbose” in base alle tue necessità. Per un architetto, consiglio:
- Code Actions: Abilita sempre l’anteprima delle modifiche.
- Context Selection: Impara a usare
#file,#selection, e#terminalper circoscrivere l’analisi ed evitare allucinazioni su file non correlati.
Piano d’Azione Consigliato
- Step 1 (Governance): Crea il file
.github/copilot-instructions.mdnel tuo repository principale. Definisci i tuoi standard architettonici. - Step 2 (Automazione): Crea 3
Prompt Filesper i compiti più noiosi (es. creazione Unit Test, boilerplate di classi C++, generazione di docstrings). - Step 3 (Integrazione): Sperimenta con un MCP Server (es. connettilo alla tua documentazione interna o a un server di ricerca vettoriale).
Esercitazione Pratica (Python Architect)
Prova a creare questa regola nelle tue Instructions:
“Ogni volta che scrivo una funzione Python, aggiungi automaticamente i Type Hints e genera un test unitario con Pytest in un file separato nella cartella /tests.”