Sparade prompt-filer gör dina bästa prompts återanvändbara. Instructions-filer gör att Copilot alltid känner till ditt projekts regler — utan att du behöver förklara dem igen.
copilot-instructions.md, .instructions.md och .prompt.md. Du lämnar lektionen med en fungerande instruktionsfil för ditt eget projekt.
.prompt.md) och filspecifika instructions-filer (.instructions.md med applyTo) är VS Code-funktioner. Visual Studio 2026 läser .github/copilot-instructions.md men stöder inte de mer avancerade filformaten ännu. Alla teammedlemmar drar nytta av copilot-instructions.md oavsett IDE.
| Filtyp | Var? | Syfte | VS Code | Visual Studio |
|---|---|---|---|---|
copilot-instructions.md |
.github/ |
Projektövergripande regler — alltid aktiva | Ja | Ja |
*.instructions.md |
.github/instructions/ eller projektmapp |
Filspecifika regler via applyTo-glob |
Ja | Nej |
*.prompt.md |
.github/prompts/ eller projektmapp |
Återanvändbara promptmallar, körs manuellt | Ja | Nej |
Filen .github/copilot-instructions.md laddas automatiskt av Copilot för varje interaktion i projektet. Här lägger du regler som alltid ska gälla oavsett vilken fil du arbetar i.
# Copilot Instructions — MyEcommerce
## Teknologistack
- C# 13 / .NET 9
- Arkitektur: Clean Architecture med DDD
- Testramverk: xUnit + NSubstitute + FluentAssertions
- ORM: Entity Framework Core 9
## Namnkonventioner
- Domänklasser: PascalCase, suffix efter roll (OrderService, OrderRepository)
- Interface: prefix I (IOrderRepository)
- Commands: suffix Command (PlaceOrderCommand)
- Events: suffix Event, past tense (OrderPlacedEvent)
## Arkitekturregler
- Domänklasser får INTE ha beroenden till infrastrukturbibliotek
- Repositories ska alltid returnera Result<T>, aldrig kasta exceptions
- Alla public metoder i domänlagret ska ha XML-dokumentation
- Använd records för Value Objects och Commands
## Kodstil
- Filscoped namespaces (namespace MyApp.Domain;)
- Implicit typing (var) när typen är uppenbar från höger sida
- Primary constructors för klasser med enkel initiering
## Vad du INTE ska göra
- Lägg aldrig affärslogik i Controllers eller Minimal API-endpoints
- Använd inte statiska hjälpklasser — injicera beroenden via DI
- Skapa inte "God classes" — håll SRP
Instructions-filer med applyTo-glob i frontmattern aktiveras automatiskt av Copilot när du öppnar filer som matchar mönstret. Du behöver inte tänka på att bifoga dem — de laddas alltid.
---
applyTo: "src/Domain/**/*.cs"
---
# DDD Domänlager — Instruktioner
## Aggregate Root-mönster
- Alla aggregat ärver från AggregateRoot<TId>
- Domänhändelser registreras via AddDomainEvent(), publiceras aldrig direkt
- Konstruktorer är private; skapa instanser via statisk factory-metod Create()
## Value Objects
- Implementeras som sealed record
- Validering i Create()-metoden, returnerar Result<T>
- Ingen direkt tillgång till primitiva fält utifrån — exponera bara den semantiska typen
## Invarianter
- Validera alltid i domänklassens egna metoder, inte i application-lagret
- Kasta DomainException (aldrig ArgumentException) vid invariantbrott
- DomainException innehåller en ErrorCode enum-flagga
---
applyTo: "**/*.Tests.csproj, tests/**/*.cs"
---
# Testregler — Instruktioner
## Namnkonvention
- Testmetod: MethodName_Scenario_ExpectedBehavior
- Testklassnamn: matchar klassen under test + "Tests" (OrderServiceTests)
## Struktur
- Arrange/Act/Assert-kommentarer i varje test
- En assertion per test (undantag: relaterade assertions med FluentAssertions)
- Inga sleep/Thread.Sleep — använd FakeTimeProvider
## NSubstitute
- Skapa substitut i constructor, tilldela i privata readonly-fält
- Verifiera anrop med Received() i Assert-fasen, inte i Arrange
## xUnit
- Theory + InlineData för parameteriserade tester
- Använd IClassFixture för dyr setup (databaskontext etc.)
Prompt-filer är sparade promptmallar du kan anropa direkt i Copilot Chat via kommandot / följt av filnamnet. De kan innehålla platshållare och referera till andra filer.
/ — en lista med tillgängliga prompt-filer visas---
description: "Generera ett DDD Value Object för angiven typ"
---
# Generera Value Object
Du är en senior C#-arkitekt. Generera ett DDD Value Object för typen **${input:Typnamn, t.ex. EmailAddress}**.
Krav:
- sealed record
- Privat konstruktor
- Statisk Create(string raw) som returnerar Result<${input:Typnamn}>
- Validering: ${input:Valideringsregler, t.ex. "inte null, max 254 tecken, måste innehålla @"}
- Inkludera XML-dokumentation på Create-metoden
- Följ projektet namnkonventioner i #file:.github/copilot-instructions.md
Generera BARA klassen — ingen testfil, inga using-statements utanför namespace.
---
description: "Utför en arkitekturorienterad code review av vald fil"
---
# Arkitektur Code Review
Du är senior C#-arkitekt med fokus på Clean Architecture och DDD.
Granska #file:${input:Filsökväg} mot reglerna i #file:.github/copilot-instructions.md.
Rapportera:
1. **Arkitekturbrott** — brott mot lagerregler, felaktiga beroenden
2. **SRP-brott** — klasser/metoder med mer än ett ansvar
3. **Saknad abstraktion** — konkreta beroenden som borde vara interface
4. **Namnproblem** — avvikelser från projektets namnkonventioner
5. **Potentiella buggar** — nullhantering, saknad felhantering
Format: Numrerad lista per kategori. Inkludera radnummer och konkret åtgärdsförslag.
Avsluta med en sammanfattning: Godkänd / Kräver ändringar / Ej godkänd.
.github/-filer i Git. Det gör att hela teamet delar samma AI-beteende, nya teammedlemmar får rätt kontext direkt, och du kan spåra hur instruktionerna utvecklas över tid. Behandla dem som levande dokumentation — uppdatera dem när arkitekturen förändras.
Lös övningarna självständigt. Det finns inget facit — lärandet sker i processen.
.github/copilot-instructions.md med minst sex kategorier: teknologistack, namnkonventioner, arkitekturregler, kodstil, testkonventioner och förbjudna mönster. Be sedan Copilot generera en ny klass — verifierar den att instruktionerna respekterades?
.instructions.md-fil med applyTo: "src/Domain/**/*.cs" som specificerar DDD-regler för ditt projekt. Öppna en domänklass och verifiera i Copilot Chat (med /explain) att Copilot känner till reglerna utan att du behövt nämna dem.
.github/prompts/write-unit-tests.prompt.md. Prompten ska ta en C#-klass som input och generera kompletta xUnit-tester med NSubstitute och FluentAssertions. Kör prompten på två olika klasser och bedöm resultatkvaliteten.
copilot-instructions.md med minst åtta regler, (2) minst två .instructions.md-filer med applyTo för olika delar av kodbasen, (3) minst tre .prompt.md-filer för vanliga uppgifter. Committa allt i Git med en tydlig commit-kommentar.
← Föregående: Prompt Engineering Nästa: Copilot Skills och Agenter →