From 3fac97d12e4540a811fa93dadc1541e69f4af73c Mon Sep 17 00:00:00 2001
From: Piotr Zajac
Date: Fri, 10 Apr 2026 14:37:46 +0200
Subject: [PATCH 1/2] chore(ai): CodeRabbit config
---
.../task-4 - Add-AI-powered-PR-review.md | 7 ++-
.coderabbit.yaml | 63 +++++++++++++++++++
.github/pull_request_template.md | 3 +
3 files changed, 71 insertions(+), 2 deletions(-)
create mode 100644 .coderabbit.yaml
diff --git a/.backlog/tasks/task-4 - Add-AI-powered-PR-review.md b/.backlog/tasks/task-4 - Add-AI-powered-PR-review.md
index 6bad4203..2d7a36f6 100644
--- a/.backlog/tasks/task-4 - Add-AI-powered-PR-review.md
+++ b/.backlog/tasks/task-4 - Add-AI-powered-PR-review.md
@@ -1,9 +1,12 @@
---
id: TASK-4
title: Add AI-powered PR review
-status: To Do
-assignee: []
+status: In Progress
+assignee:
+ - claude
+ - piotrzajac
created_date: '2026-04-07 20:56'
+updated_date: '2026-04-10 14:24'
labels:
- ci-cd
- dx
diff --git a/.coderabbit.yaml b/.coderabbit.yaml
new file mode 100644
index 00000000..e18967e1
--- /dev/null
+++ b/.coderabbit.yaml
@@ -0,0 +1,63 @@
+# CodeRabbit configuration for AutoFixture.XUnit2.AutoMock
+# https://docs.coderabbit.ai/getting-started/configure-coderabbit
+#
+# One-time prerequisite: install the CodeRabbit GitHub App at the org/repo level.
+# https://github.com/apps/coderabbit-ai
+
+language: "en-US"
+
+reviews:
+ profile: "chill"
+ request_changes_workflow: false
+ high_level_summary: true
+ poem: false
+ review_status: true
+ auto_apply_labels: true
+ auto_review:
+ enabled: true
+ drafts: false
+ path_instructions:
+ - path: "**/*.cs"
+ instructions: |
+ Review against the conventions in AGENTS.md:
+
+ Style (enforced by analyzers — build fails on violations):
+ - `using` directives must go inside the namespace block (StyleCop SA1210).
+ - Use `global::` prefix on external packages (AutoFixture, Moq, FakeItEasy, NSubstitute, xunit, etc.).
+ - No XML documentation comments — code should be self-explanatory.
+ - Prefer sealed classes unless explicitly designed for inheritance.
+ - Use the NotNull() guard extension (Core/Common/) instead of throwing ArgumentNullException directly.
+ - [SuppressMessage] requires an explicit justification comment.
+ - No `// TODO:` comments — open a GitHub issue instead.
+
+ Architecture:
+ - New xUnit2 attributes must derive from the correct Core base class:
+ AutoDataBaseAttribute, InlineAutoDataBaseAttribute, or MemberAutoDataBaseAttribute.
+ - Do not add public API to Core that is specific to one mocking library.
+
+ - path: "**/*Tests*/**/*.cs"
+ instructions: |
+ In addition to the general C# rules, apply these test-specific conventions:
+
+ Naming (BDD-style — mandatory):
+ - Every [Fact] and [Theory] must set DisplayName.
+ - DisplayName must use UPPER CASE GIVEN/WHEN/THEN form, e.g.:
+ "WHEN constructor is invoked THEN fixture is created"
+ "GIVEN parameters include IFixture WHEN data is generated THEN fixture is injected"
+ - The method name must mirror DisplayName in PascalCase_WithUnderscores.
+ - Never use "Test" as a suffix or prefix in method names.
+
+ Structure (AAA — mandatory):
+ - All tests must contain explicit // Arrange, // Act, // Assert comment blocks.
+ - All three blocks are required even when empty.
+
+ Mocking:
+ - Only use Mock and Mock to verify attribute wiring.
+ - Do not instantiate `new Fixture()` — inject IFixture via the test method parameter or use [AutoMockData].
+
+ Organization:
+ - Test classes must carry [Collection("ClassName")] for isolation.
+ - Test classes must carry [Trait("Category", "CategoryName")] for categorization.
+
+chat:
+ auto_reply: true
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index 68834920..b412d5cb 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -1,5 +1,8 @@
# Summary
+
+@coderabbitai summary
+
Closes #
- Please add a description of the issue this PR is addressing. Link the relevant issue if applicable.
From 42c51e8a1e3e673467e01ac7add39c1796ce2685 Mon Sep 17 00:00:00 2001
From: Piotr Zajac
Date: Fri, 10 Apr 2026 14:45:19 +0200
Subject: [PATCH 2/2] chore(ai): No need for path_instructions
---
.coderabbit.yaml | 42 ------------------------------------------
1 file changed, 42 deletions(-)
diff --git a/.coderabbit.yaml b/.coderabbit.yaml
index e18967e1..bd6c9d5e 100644
--- a/.coderabbit.yaml
+++ b/.coderabbit.yaml
@@ -16,48 +16,6 @@ reviews:
auto_review:
enabled: true
drafts: false
- path_instructions:
- - path: "**/*.cs"
- instructions: |
- Review against the conventions in AGENTS.md:
-
- Style (enforced by analyzers — build fails on violations):
- - `using` directives must go inside the namespace block (StyleCop SA1210).
- - Use `global::` prefix on external packages (AutoFixture, Moq, FakeItEasy, NSubstitute, xunit, etc.).
- - No XML documentation comments — code should be self-explanatory.
- - Prefer sealed classes unless explicitly designed for inheritance.
- - Use the NotNull() guard extension (Core/Common/) instead of throwing ArgumentNullException directly.
- - [SuppressMessage] requires an explicit justification comment.
- - No `// TODO:` comments — open a GitHub issue instead.
-
- Architecture:
- - New xUnit2 attributes must derive from the correct Core base class:
- AutoDataBaseAttribute, InlineAutoDataBaseAttribute, or MemberAutoDataBaseAttribute.
- - Do not add public API to Core that is specific to one mocking library.
-
- - path: "**/*Tests*/**/*.cs"
- instructions: |
- In addition to the general C# rules, apply these test-specific conventions:
-
- Naming (BDD-style — mandatory):
- - Every [Fact] and [Theory] must set DisplayName.
- - DisplayName must use UPPER CASE GIVEN/WHEN/THEN form, e.g.:
- "WHEN constructor is invoked THEN fixture is created"
- "GIVEN parameters include IFixture WHEN data is generated THEN fixture is injected"
- - The method name must mirror DisplayName in PascalCase_WithUnderscores.
- - Never use "Test" as a suffix or prefix in method names.
-
- Structure (AAA — mandatory):
- - All tests must contain explicit // Arrange, // Act, // Assert comment blocks.
- - All three blocks are required even when empty.
-
- Mocking:
- - Only use Mock and Mock to verify attribute wiring.
- - Do not instantiate `new Fixture()` — inject IFixture via the test method parameter or use [AutoMockData].
-
- Organization:
- - Test classes must carry [Collection("ClassName")] for isolation.
- - Test classes must carry [Trait("Category", "CategoryName")] for categorization.
chat:
auto_reply: true