diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md
new file mode 100644
index 0000000..7e64f9d
--- /dev/null
+++ b/.github/copilot-instructions.md
@@ -0,0 +1,92 @@
+# Copilot Instructions for Papst.EventStore
+
+## Project Overview
+
+Papst.EventStore is a .NET Event Sourcing library that provides an abstraction layer for storing and replaying events in a database. It ships with multiple backend implementations (Azure Cosmos DB, Entity Framework Core, MongoDB, FileSystem, InMemory) and a code-generation package that auto-registers events and aggregators via source generators.
+
+## Repository Layout
+
+```
+src/
+ Papst.EventStore/ # Core abstractions (interfaces, base classes)
+ Papst.EventStore.Aggregation.EventRegistration/ # Code-generated event registration helpers
+ Papst.EventStore.AzureCosmos/ # Azure Cosmos DB backend
+ Papst.EventStore.CodeGeneration/ # Roslyn source generator
+ Papst.EventStore.EntityFrameworkCore/ # EF Core backend
+ Papst.EventStore.FileSystem/ # FileSystem backend (testing only)
+ Papst.EventStore.InMemory/ # In-memory backend (testing only)
+ Papst.EventStore.MongoDB/ # MongoDB backend
+tests/
+ Papst.EventStore.Tests/ # Unit tests for core library
+ Papst.EventStore.AzureCosmos.Tests/
+ Papst.EventStore.CodeGeneration.Tests/
+ Papst.EventStore.MongoDB.Tests/
+ Papst.EventsStore.InMemory.Tests/
+samples/ # Sample applications
+```
+
+## Technology Stack
+
+- **Language**: C# on .NET 10
+- **Test framework**: xUnit with AutoFixture, FluentAssertions, and Moq
+- **Serialization**: Newtonsoft.Json
+- **Versioning**: Nerdbank.GitVersioning (`version.json`)
+- **Package management**: Central package management via `Directory.Packages.props`
+
+## Build, Test & Lint
+
+```bash
+# Build everything
+dotnet build Papst.EventStore.slnx
+
+# Run all tests
+dotnet test --configuration Debug Papst.EventStore.slnx
+
+# Build or test a specific project
+dotnet build src/Papst.EventStore/Papst.EventStore.csproj
+dotnet test tests/Papst.EventStore.Tests/Papst.EventStore.Tests.csproj
+```
+
+The CI pipeline (`.github/workflows/test.yml`) runs build + test on every pull request targeting `main`.
+
+## Coding Conventions
+
+- **Nullable reference types** are enabled in all projects (`enable`).
+- **Implicit usings** are disabled; every `using` must be declared explicitly (see `Usings.cs` in each project for common usings).
+- Interfaces live in `src/Papst.EventStore/` and are prefixed with `I` (e.g., `IEventStore`, `IEventStream`).
+- Implementations go in the appropriate backend project and are registered through extension methods on `IServiceCollection`.
+- Exceptions are placed in an `Exceptions/` subfolder and inherit from a common base where one exists.
+- Internal types that need to be visible to the test project are exposed via `[InternalsVisibleTo("...Tests")]` in the `.csproj`.
+
+## Key Abstractions
+
+| Type | Purpose |
+|------|---------|
+| `IEventStore` | Create or retrieve an `IEventStream` |
+| `IEventStream` | Append events, read events (with paging), update metadata |
+| `IEventStreamAggregator` | Apply events to an entity aggregate using `IEventAggregator` handlers |
+| `IEventAggregator` | Single-event handler; implement or extend `EventAggregatorBase` |
+| `IEventTypeProvider` | Maps event name strings to CLR types |
+| `[EventName]` attribute | Decorates event classes; used by the source generator to auto-register types |
+
+## Event Registration via Code Generation
+
+Decorate event classes with `[EventName("MyEventV2")]`. The source generator in `Papst.EventStore.CodeGeneration` picks these up at compile time and emits an `AddCodeGeneratedEvents()` extension method for `IServiceCollection`.
+
+Multiple `[EventName]` attributes are supported (for versioning/migration). Set `IsWriteName = false` on legacy names to keep them as read aliases only.
+
+## Adding a New Backend Implementation
+
+1. Create a new project under `src/` targeting `net10.0`.
+2. Reference `Papst.EventStore` (core abstractions).
+3. Implement `IEventStore` and `IEventStream`.
+4. Provide an `AddXxx(this IServiceCollection)` extension method for DI registration.
+5. Add a matching test project under `tests/`.
+6. Add both projects to `Papst.EventStore.slnx` (and the appropriate sub-solution if one exists).
+
+## Pull Request Guidelines
+
+- All changes must build and pass tests (`dotnet build` + `dotnet test` on `Papst.EventStore.slnx`).
+- Keep PRs focused; one concern per PR.
+- Follow the existing XML doc-comment style on public APIs.
+- Do not introduce new NuGet dependencies without updating `Directory.Packages.props`.