Skip to content

feat(ai): add AI agent skills for repository workflows#348

Open
piotrzajac wants to merge 1 commit into
masterfrom
feat/ai-agent-skills
Open

feat(ai): add AI agent skills for repository workflows#348
piotrzajac wants to merge 1 commit into
masterfrom
feat/ai-agent-skills

Conversation

@piotrzajac

@piotrzajac piotrzajac commented May 11, 2026

Copy link
Copy Markdown
Collaborator

Summary

Summary by CodeRabbit

  • Documentation
    • Introduced an AI agent skills framework for repository workflows, including task start/finish, build/test validation, architectural decision auditing, parameter-attribute scaffolding, test-class generation, and branch/PR creation.
    • Added a skills library with step-by-step workflow guides, required conventions, and templates (including a PR description/checklist template).
    • Updated the agent command reference with instructions for invoking the new workflow skills, and added an entry describing the overall skills organization/layout and acceptance criteria.

Closes TASK-20.

Introduces 7 reusable AI agent skill prompts following the
agentskills.io open standard. Each skill
encodes a recurring workflow so any AI agent (Claude, Copilot, Codex,
Cursor) can follow it consistently across sessions without re-reading
AGENTS.md from scratch every time.

Skills added

Skill Argument Purpose
task-start TASK-N Load task from backlog, surface related decisions, suggest branch name
task-finish TASK-N Verify ACs, check decisions, suggest commit message, mark Done
validate none dotnet build + dotnet test + test convention scan
add-attribute AttributeName Scaffold sealed Core attribute + test following decisions 26-29
review-decisions none Compliance audit of diff against all 29 decisions
new-test SubjectClass BDD/AAA test class scaffold following decisions 24-25
create-branch-pr TASK-N (optional) Branch creation + PR opening with full checklist

Structure

.ai/skills/<name>/SKILL.md          ← canonical skill (universal, any agent)
.ai/skills/add-attribute/references/extension-model.md
.ai/skills/new-test/assets/test-template.md
.ai/skills/create-branch-pr/assets/pr-template.md
.claude/commands/<name>.md          ← thin wrapper for Claude Code /slash-commands

Checklist

  • Commit messages follow Conventional Commits (type(scope): description)
  • dotnet build src/Objectivity.AutoFixture.XUnit2.AutoMock.sln passes with no warnings (docs-only change, no C# code modified)
  • dotnet test src/Objectivity.AutoFixture.XUnit2.AutoMock.sln passes on all framework slices (docs-only change)
  • Code coverage remains at least at the level prior the change (no code change)
  • Mutation score remains at least at the level prior the change (no code change)
  • New tests follow the GIVEN/WHEN/THEN naming convention and AAA structure (no new tests — docs-only change)
  • No new [SuppressMessage] without a justification comment
  • No // TODO: comments added
  • No new dependencies introduced that are incompatible with the MIT license

@coderabbitai

coderabbitai Bot commented May 11, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This PR establishes a comprehensive AI agent skills framework for the repository, introducing seven skill definitions for task lifecycle management, development workflows, validation, and code scaffolding, along with command wrappers and integration documentation to enable Claude Code and other agents to guide developers through repository conventions.

Changes

AI Agent Skills Framework

Layer / File(s) Summary
Backlog Task & Scope Definition
.backlog/tasks/task-20 - Create-AI-agent-skills-for-repository-workflows.md
TASK-20 defines the project scope, specifying a .ai/skills/ directory with seven skill subdirectories, each containing a SKILL.md with agentskills.io-compliant frontmatter, paired command wrappers in .claude/commands/, and acceptance criteria for functional completeness and AGENTS.md integration.
Task Lifecycle Skills
.ai/skills/task-start/SKILL.md, .ai/skills/task-finish/SKILL.md
task-start guides users through backlog task orientation via npx backlog task show, decision mapping, branch naming suggestions, and marking tasks "In Progress". task-finish walks through acceptance-criteria verification, decision compliance checks, validation, conventional commit drafting, and status updates to "Done".
Branch & PR Creation Workflow
.ai/skills/create-branch-pr/SKILL.md, .ai/skills/create-branch-pr/assets/pr-template.md
Skill defines feature branch naming (Conventional Commits format), push workflow, pre-submission checklist (build/test/coverage/mutation), and PR creation via gh pr create. PR template includes CodeRabbit summary placeholder, issue linking, and checklists for commit format, testing, coverage, mutation thresholds, naming conventions, and dependency constraints.
Build & Convention Validation Skills
.ai/skills/validate/SKILL.md, .ai/skills/review-decisions/SKILL.md
validate runs dotnet build (zero warnings), dotnet test (fast or full), and scans test files for DisplayName/naming/attribute-order/fixture/AAA violations. review-decisions maps changed files to 29 architectural decisions, checks compliance via a decision table and common-violation patterns, and outputs a status table (OK/Review/Violation) with blocking rules.
Code Scaffolding Skills
.ai/skills/add-attribute/SKILL.md, .ai/skills/add-attribute/references/extension-model.md, .ai/skills/new-test/SKILL.md, .ai/skills/new-test/assets/test-template.md
add-attribute scaffolds sealed CustomizeAttribute-derived parameter attributes in Core, guiding through purpose analysis, class/test creation, naming conventions, collection/trait/DisplayName/AAA rules, and guardrails (Core-only, applies to all mocks, zero warnings). Extension model reference documents PickFromRangeAttribute pattern with annotated C# example and minimal skeleton. new-test scaffolds test classes with required [Collection]/[Trait] attributes, BDD DisplayName rules, AAA structure, and test templates for [Fact] and [Theory] methods including attribute wiring examples.
Command Wrapper Interface
.claude/commands/add-attribute.md, .claude/commands/create-branch-pr.md, .claude/commands/new-test.md, .claude/commands/review-decisions.md, .claude/commands/task-finish.md, .claude/commands/task-start.md, .claude/commands/validate.md
Thin wrapper stubs in .claude/commands/ direct users to canonical skill documentation and define argument placeholders ($ARGUMENTS, Task ID) for agent invocation, following /skill-name [argument] format expected by Claude Code.
AGENTS.md Integration
AGENTS.md
"Available Skills" section documents .ai/skills/ storage pattern, skill invocation format, argument structure, and a reference table listing all seven skills (task-start, task-finish, validate, add-attribute, review-decisions, new-test, create-branch-pr) with expected argument types.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

Poem

🐰 A rabbit paths through workflows bright,
Skills and tasks aligned just right,
With validation, tests, and attributes in place,
The agent-guided feature race!
Seven tools to build with grace,
And keep the codebase clean and fast. ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: introducing AI agent skills for repository workflows, directly matching the PR's core objective of adding seven reusable skill prompts.
Description check ✅ Passed The PR description covers the main objective (TASK-20 closure), provides a structured overview of skills with purpose/arguments, documents the repository structure, and includes a completed checklist addressing all template requirements.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/ai-agent-skills

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.ai/skills/create-branch-pr/assets/pr-template.md:
- Line 18: The PR template checklist uses a relative link "../AGENTS.md" which
can break when rendered; open the PR template entry that contains the checklist
line referencing AGENTS.md (the line reading "New tests follow the
GIVEN/WHEN/THEN naming convention and AAA structure (see
[AGENTS.md](../AGENTS.md))") and replace the link target with a repo-root link
"/AGENTS.md" (or a full GitHub URL) so the AGENTS.md link reliably resolves in
PR descriptions.

In @.ai/skills/new-test/assets/test-template.md:
- Around line 11-12: The template uses a plain external namespace import and a
mismatched test method name: replace the raw "using Moq;" import with the
repository convention "global::Moq" (or the appropriate global:: prefix for
FakeItEasy/NSubstitute) so external packages are referenced via global::, and
rename the test method that currently has a trailing "2" (the method at the
template's test declaration around line 49) to exactly mirror its DisplayName
per the BDD rule (remove the appended "2" or otherwise make the method name
identical to the DisplayName).

In @.ai/skills/review-decisions/SKILL.md:
- Around line 27-31: Update the decision-mapping path patterns in SKILL.md to
match the repository’s actual module names instead of the simplified ones;
replace occurrences like "src/Core/***" and "src/AutoMoq/**" with the real
package patterns such as "src/Objectivity.AutoFixture.XUnit2.*" (and other
Objectivity.AutoFixture.* module patterns used here), and adjust test patterns
so test project paths mirror their corresponding source projects 1:1 (e.g.,
ensure test globbing matches the exact Objectivity.* test folders). Ensure all
entries that previously used generic patterns (the lines around the
decision-mapping entries) are updated so the decision checks will not be
skipped.

In @.ai/skills/task-finish/SKILL.md:
- Around line 28-31: Change the changed-file globs in
.ai/skills/task-finish/SKILL.md so they match this repo’s project naming
(Objectivity.AutoFixture.*) instead of generic `src/...` patterns: replace the
entries that currently read `src/Core/Attributes/*.cs`, `src/Core/*.cs`,
`src/*Tests*/*.cs` and `src/AutoMoq/**`, `src/AutoFakeItEasy/**`,
`src/AutoNSubstitute/**` with globs that include the repo module prefix (e.g.
patterns that start with `Objectivity.AutoFixture.*/` and mirror source→test
folder structure 1:1), and ensure test project globs use the same
namespace/folder layout as their corresponding source projects so decision
checks match real files.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 3b905272-2d6f-4b62-bace-8f67a27d89ee

📥 Commits

Reviewing files that changed from the base of the PR and between 899e1e8 and c1dfcb0.

📒 Files selected for processing (19)
  • .ai/skills/add-attribute/SKILL.md
  • .ai/skills/add-attribute/references/extension-model.md
  • .ai/skills/create-branch-pr/SKILL.md
  • .ai/skills/create-branch-pr/assets/pr-template.md
  • .ai/skills/new-test/SKILL.md
  • .ai/skills/new-test/assets/test-template.md
  • .ai/skills/review-decisions/SKILL.md
  • .ai/skills/task-finish/SKILL.md
  • .ai/skills/task-start/SKILL.md
  • .ai/skills/validate/SKILL.md
  • .backlog/tasks/task-20 - Create-AI-agent-skills-for-repository-workflows.md
  • .claude/commands/add-attribute.md
  • .claude/commands/create-branch-pr.md
  • .claude/commands/new-test.md
  • .claude/commands/review-decisions.md
  • .claude/commands/task-finish.md
  • .claude/commands/task-start.md
  • .claude/commands/validate.md
  • AGENTS.md

- [ ] `dotnet test src/Objectivity.AutoFixture.XUnit2.AutoMock.sln` passes on all framework slices
- [ ] Code coverage remains at least at the level prior the change (verified by Codecov)
- [ ] Mutation score remains at least at the level prior the change (verified by Stryker)
- [ ] New tests follow the GIVEN/WHEN/THEN naming convention and AAA structure (see [AGENTS.md](../AGENTS.md))

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Use a repo-root link for AGENTS.md in the PR template.

Line 18 uses ../AGENTS.md, which is brittle when rendered in PR descriptions. Use /AGENTS.md (or full GitHub URL) to avoid broken links.

Suggested patch
-- [ ] New tests follow the GIVEN/WHEN/THEN naming convention and AAA structure (see [AGENTS.md](../AGENTS.md))
+- [ ] New tests follow the GIVEN/WHEN/THEN naming convention and AAA structure (see [AGENTS.md](/AGENTS.md))
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- [ ] New tests follow the GIVEN/WHEN/THEN naming convention and AAA structure (see [AGENTS.md](../AGENTS.md))
- [ ] New tests follow the GIVEN/WHEN/THEN naming convention and AAA structure (see [AGENTS.md](/AGENTS.md))
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.ai/skills/create-branch-pr/assets/pr-template.md at line 18, The PR
template checklist uses a relative link "../AGENTS.md" which can break when
rendered; open the PR template entry that contains the checklist line
referencing AGENTS.md (the line reading "New tests follow the GIVEN/WHEN/THEN
naming convention and AAA structure (see [AGENTS.md](../AGENTS.md))") and
replace the link target with a repo-root link "/AGENTS.md" (or a full GitHub
URL) so the AGENTS.md link reliably resolves in PR descriptions.

Comment on lines +11 to +12
using Moq; // or FakeItEasy / NSubstitute depending on the module
using Xunit;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Template examples conflict with repository test/style conventions.

Line 11 uses using Moq; while the template states external packages should use global::. Line 49 appends 2 to the method name, which breaks the “method mirrors DisplayName” BDD rule.

Suggested patch
-    using Moq;  // or FakeItEasy / NSubstitute depending on the module
+    using global::Moq;  // or corresponding module-specific mocking package

-        public void Given<Precondition>_When<Action>_Then<Outcome>2(
+        public void Given<Precondition>_When<ActionWithInlineValue>_Then<Outcome>(

Also applies to: 49-49

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.ai/skills/new-test/assets/test-template.md around lines 11 - 12, The
template uses a plain external namespace import and a mismatched test method
name: replace the raw "using Moq;" import with the repository convention
"global::Moq" (or the appropriate global:: prefix for FakeItEasy/NSubstitute) so
external packages are referenced via global::, and rename the test method that
currently has a trailing "2" (the method at the template's test declaration
around line 49) to exactly mirror its DisplayName per the BDD rule (remove the
appended "2" or otherwise make the method name identical to the DisplayName).

Comment on lines +27 to +31
| `src/Core/Attributes/*.cs` | 8, 9, 17, 26, 27, 28, 29 |
| `src/Core/**/*.cs` (non-attribute) | 3, 7, 26, 27, 28, 29 |
| `src/*Tests*/**/*.cs` | 24, 25, 26 |
| `src/AutoMoq/**`, `src/AutoFakeItEasy/**`, `src/AutoNSubstitute/**` | 4, 26, 27, 28 |
| `.github/workflows/*.yml` | 10, 14, 15, 18, 19, 20 |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Fix decision-mapping path patterns to match actual repository paths.

Line 27–31 use simplified paths (src/Core/..., src/AutoMoq/...) that don’t match this repo’s real module paths (src/Objectivity.AutoFixture.XUnit2.*). This can silently skip required decision checks.

Suggested patch
-| `src/Core/Attributes/*.cs` | 8, 9, 17, 26, 27, 28, 29 |
-| `src/Core/**/*.cs` (non-attribute) | 3, 7, 26, 27, 28, 29 |
-| `src/*Tests*/**/*.cs` | 24, 25, 26 |
-| `src/AutoMoq/**`, `src/AutoFakeItEasy/**`, `src/AutoNSubstitute/**` | 4, 26, 27, 28 |
+| `src/Objectivity.AutoFixture.XUnit2.Core/Attributes/*.cs` | 8, 9, 17, 26, 27, 28, 29 |
+| `src/Objectivity.AutoFixture.XUnit2.Core/**/*.cs` (non-attribute) | 3, 7, 26, 27, 28, 29 |
+| `src/Objectivity.AutoFixture.XUnit2.*.Tests/**/*.cs` | 24, 25, 26 |
+| `src/Objectivity.AutoFixture.XUnit2.AutoMoq/**`, `src/Objectivity.AutoFixture.XUnit2.AutoFakeItEasy/**`, `src/Objectivity.AutoFixture.XUnit2.AutoNSubstitute/**` | 4, 26, 27, 28 |

Based on learnings: “Test projects must mirror source projects 1:1 in namespace and folder structure.”

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
| `src/Core/Attributes/*.cs` | 8, 9, 17, 26, 27, 28, 29 |
| `src/Core/**/*.cs` (non-attribute) | 3, 7, 26, 27, 28, 29 |
| `src/*Tests*/**/*.cs` | 24, 25, 26 |
| `src/AutoMoq/**`, `src/AutoFakeItEasy/**`, `src/AutoNSubstitute/**` | 4, 26, 27, 28 |
| `.github/workflows/*.yml` | 10, 14, 15, 18, 19, 20 |
| `src/Objectivity.AutoFixture.XUnit2.Core/Attributes/*.cs` | 8, 9, 17, 26, 27, 28, 29 |
| `src/Objectivity.AutoFixture.XUnit2.Core/**/*.cs` (non-attribute) | 3, 7, 26, 27, 28, 29 |
| `src/Objectivity.AutoFixture.XUnit2.*.Tests/**/*.cs` | 24, 25, 26 |
| `src/Objectivity.AutoFixture.XUnit2.AutoMoq/**`, `src/Objectivity.AutoFixture.XUnit2.AutoFakeItEasy/**`, `src/Objectivity.AutoFixture.XUnit2.AutoNSubstitute/**` | 4, 26, 27, 28 |
| `.github/workflows/*.yml` | 10, 14, 15, 18, 19, 20 |
🧰 Tools
🪛 LanguageTool

[uncategorized] ~31-~31: The official name of this software platform is spelled with a capital “H”.
Context: ...AutoNSubstitute/**| 4, 26, 27, 28 | |.github/workflows/*.yml` | 10, 14, 15, 18, 19, ...

(GITHUB)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.ai/skills/review-decisions/SKILL.md around lines 27 - 31, Update the
decision-mapping path patterns in SKILL.md to match the repository’s actual
module names instead of the simplified ones; replace occurrences like
"src/Core/***" and "src/AutoMoq/**" with the real package patterns such as
"src/Objectivity.AutoFixture.XUnit2.*" (and other Objectivity.AutoFixture.*
module patterns used here), and adjust test patterns so test project paths
mirror their corresponding source projects 1:1 (e.g., ensure test globbing
matches the exact Objectivity.* test folders). Ensure all entries that
previously used generic patterns (the lines around the decision-mapping entries)
are updated so the decision checks will not be skipped.

Comment on lines +28 to +31
| `src/Core/Attributes/*.cs` | 8, 9, 17, 26, 27, 28, 29 |
| `src/Core/*.cs` | 3, 26, 27, 28, 29 |
| `src/*Tests*/*.cs` | 24, 25, 26 |
| `src/AutoMoq/**`, `src/AutoFakeItEasy/**`, `src/AutoNSubstitute/**` | 4, 26, 27, 28 |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Update changed-file patterns so decision checks actually hit real files.

Line 28–31 use path globs (src/Core/..., src/*Tests*/*.cs, src/AutoMoq/...) that don’t align with this repo’s Objectivity.AutoFixture.XUnit2.* directory naming. This can let violations slip through.

Suggested patch
-| `src/Core/Attributes/*.cs` | 8, 9, 17, 26, 27, 28, 29 |
-| `src/Core/*.cs` | 3, 26, 27, 28, 29 |
-| `src/*Tests*/*.cs` | 24, 25, 26 |
-| `src/AutoMoq/**`, `src/AutoFakeItEasy/**`, `src/AutoNSubstitute/**` | 4, 26, 27, 28 |
+| `src/Objectivity.AutoFixture.XUnit2.Core/Attributes/*.cs` | 8, 9, 17, 26, 27, 28, 29 |
+| `src/Objectivity.AutoFixture.XUnit2.Core/**/*.cs` | 3, 26, 27, 28, 29 |
+| `src/Objectivity.AutoFixture.XUnit2.*.Tests/**/*.cs` | 24, 25, 26 |
+| `src/Objectivity.AutoFixture.XUnit2.AutoMoq/**`, `src/Objectivity.AutoFixture.XUnit2.AutoFakeItEasy/**`, `src/Objectivity.AutoFixture.XUnit2.AutoNSubstitute/**` | 4, 26, 27, 28 |

Based on learnings: “Test projects must mirror source projects 1:1 in namespace and folder structure.”

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
| `src/Core/Attributes/*.cs` | 8, 9, 17, 26, 27, 28, 29 |
| `src/Core/*.cs` | 3, 26, 27, 28, 29 |
| `src/*Tests*/*.cs` | 24, 25, 26 |
| `src/AutoMoq/**`, `src/AutoFakeItEasy/**`, `src/AutoNSubstitute/**` | 4, 26, 27, 28 |
| `src/Objectivity.AutoFixture.XUnit2.Core/Attributes/*.cs` | 8, 9, 17, 26, 27, 28, 29 |
| `src/Objectivity.AutoFixture.XUnit2.Core/**/*.cs` | 3, 26, 27, 28, 29 |
| `src/Objectivity.AutoFixture.XUnit2.*.Tests/**/*.cs` | 24, 25, 26 |
| `src/Objectivity.AutoFixture.XUnit2.AutoMoq/**`, `src/Objectivity.AutoFixture.XUnit2.AutoFakeItEasy/**`, `src/Objectivity.AutoFixture.XUnit2.AutoNSubstitute/**` | 4, 26, 27, 28 |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.ai/skills/task-finish/SKILL.md around lines 28 - 31, Change the
changed-file globs in .ai/skills/task-finish/SKILL.md so they match this repo’s
project naming (Objectivity.AutoFixture.*) instead of generic `src/...`
patterns: replace the entries that currently read `src/Core/Attributes/*.cs`,
`src/Core/*.cs`, `src/*Tests*/*.cs` and `src/AutoMoq/**`,
`src/AutoFakeItEasy/**`, `src/AutoNSubstitute/**` with globs that include the
repo module prefix (e.g. patterns that start with `Objectivity.AutoFixture.*/`
and mirror source→test folder structure 1:1), and ensure test project globs use
the same namespace/folder layout as their corresponding source projects so
decision checks match real files.

Introduces 7 reusable skill prompts following the agentskills.io open
standard, stored in .ai/skills/. Each skill encodes a recurring workflow
(task orientation, validation, attribute scaffolding, etc.) so any AI
agent can follow it consistently across sessions.

Thin wrappers in .claude/commands/ expose the skills as Claude Code
/slash-commands. AGENTS.md gains an Available Skills section that
documents all 7 skills with invocation instructions for every agent type.

Closes TASK-20.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@piotrzajac piotrzajac force-pushed the feat/ai-agent-skills branch from c1dfcb0 to 0ba68a3 Compare June 22, 2026 08:53

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (2)
.ai/skills/task-finish/SKILL.md (1)

28-31: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

** Update changed-file patterns so decision checks match real repository paths.**

Lines 28–31 use path globs (src/Core/..., src/*Tests*/*.cs, src/AutoMoq/...) that do not align with this repo's actual directory structure (Objectivity.AutoFixture.XUnit2.*). This causes decision violations to slip through silently.

The previous review already flagged this with suggested fixes; those corrections still need to be applied. Align all patterns with the repository's package naming (e.g., src/Objectivity.AutoFixture.XUnit2.Core/**/*.cs) and ensure test project globs mirror source projects 1:1.

🔧 Suggested patch
-| `src/Core/Attributes/*.cs` | 8, 9, 17, 26, 27, 28, 29 |
-| `src/Core/*.cs` | 3, 26, 27, 28, 29 |
-| `src/*Tests*/*.cs` | 24, 25, 26 |
-| `src/AutoMoq/**`, `src/AutoFakeItEasy/**`, `src/AutoNSubstitute/**` | 4, 26, 27, 28 |
+| `src/Objectivity.AutoFixture.XUnit2.Core/Attributes/*.cs` | 8, 9, 17, 26, 27, 28, 29 |
+| `src/Objectivity.AutoFixture.XUnit2.Core/**/*.cs` | 3, 26, 27, 28, 29 |
+| `src/Objectivity.AutoFixture.XUnit2.*.Tests/**/*.cs` | 24, 25, 26 |
+| `src/Objectivity.AutoFixture.XUnit2.AutoMoq/**`, `src/Objectivity.AutoFixture.XUnit2.AutoFakeItEasy/**`, `src/Objectivity.AutoFixture.XUnit2.AutoNSubstitute/**` | 4, 26, 27, 28 |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.ai/skills/task-finish/SKILL.md around lines 28 - 31, The file path patterns
defined in lines 28–31 use generic directory names (src/Core/, src/*Tests*/,
src/AutoMoq/, etc.) that do not match the actual repository structure which uses
full package names starting with Objectivity.AutoFixture.XUnit2. Update each
path pattern to use the correct package-qualified paths (e.g.,
src/Objectivity.AutoFixture.XUnit2.Core/**/*.cs,
src/Objectivity.AutoFixture.XUnit2.Tests/**/*.cs,
src/Objectivity.AutoFixture.XUnit2.AutoMoq/**/*.cs) to ensure the decision
checks can properly match files in the repository.
.ai/skills/review-decisions/SKILL.md (1)

27-31: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

** Fix decision-mapping path patterns to match actual repository paths.**

The path globs (src/Core/..., src/AutoMoq/...) do not match this repo's actual module naming (Objectivity.AutoFixture.XUnit2.*). This causes the review-decisions skill to silently skip required decision checks.

The previous review flagged this with suggested patches; these corrections still need to be applied. Update all four rows to use the full package prefix (e.g., src/Objectivity.AutoFixture.XUnit2.Core/Attributes/*.cs) and ensure test project globs mirror their source projects 1:1.

🔧 Suggested patch
-| `src/Core/Attributes/*.cs` | 8, 9, 17, 26, 27, 28, 29 |
-| `src/Core/**/*.cs` (non-attribute) | 3, 7, 26, 27, 28, 29 |
-| `src/*Tests*/**/*.cs` | 24, 25, 26 |
-| `src/AutoMoq/**`, `src/AutoFakeItEasy/**`, `src/AutoNSubstitute/**` | 4, 26, 27, 28 |
+| `src/Objectivity.AutoFixture.XUnit2.Core/Attributes/*.cs` | 8, 9, 17, 26, 27, 28, 29 |
+| `src/Objectivity.AutoFixture.XUnit2.Core/**/*.cs` (non-attribute) | 3, 7, 26, 27, 28, 29 |
+| `src/Objectivity.AutoFixture.XUnit2.*.Tests/**/*.cs` | 24, 25, 26 |
+| `src/Objectivity.AutoFixture.XUnit2.AutoMoq/**`, `src/Objectivity.AutoFixture.XUnit2.AutoFakeItEasy/**`, `src/Objectivity.AutoFixture.XUnit2.AutoNSubstitute/**` | 4, 26, 27, 28 |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.ai/skills/review-decisions/SKILL.md around lines 27 - 31, Update all file
path patterns in the decision-mapping table to match the actual repository
module structure using the full package prefix format. Replace the four rows
containing paths like src/Core/Attributes/*.cs, src/Core/**/*.cs,
src/*Tests*/**/*.cs, and src/AutoMoq/**, src/AutoFakeItEasy/**,
src/AutoNSubstitute/** with their correct equivalents using the
Objectivity.AutoFixture.XUnit2 prefix (for example:
src/Objectivity.AutoFixture.XUnit2.Core/Attributes/*.cs). Ensure that each test
project glob pattern in src/*Tests* entries matches its corresponding source
project location exactly, maintaining the 1:1 mapping between source and test
paths.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Duplicate comments:
In @.ai/skills/review-decisions/SKILL.md:
- Around line 27-31: Update all file path patterns in the decision-mapping table
to match the actual repository module structure using the full package prefix
format. Replace the four rows containing paths like src/Core/Attributes/*.cs,
src/Core/**/*.cs, src/*Tests*/**/*.cs, and src/AutoMoq/**,
src/AutoFakeItEasy/**, src/AutoNSubstitute/** with their correct equivalents
using the Objectivity.AutoFixture.XUnit2 prefix (for example:
src/Objectivity.AutoFixture.XUnit2.Core/Attributes/*.cs). Ensure that each test
project glob pattern in src/*Tests* entries matches its corresponding source
project location exactly, maintaining the 1:1 mapping between source and test
paths.

In @.ai/skills/task-finish/SKILL.md:
- Around line 28-31: The file path patterns defined in lines 28–31 use generic
directory names (src/Core/, src/*Tests*/, src/AutoMoq/, etc.) that do not match
the actual repository structure which uses full package names starting with
Objectivity.AutoFixture.XUnit2. Update each path pattern to use the correct
package-qualified paths (e.g., src/Objectivity.AutoFixture.XUnit2.Core/**/*.cs,
src/Objectivity.AutoFixture.XUnit2.Tests/**/*.cs,
src/Objectivity.AutoFixture.XUnit2.AutoMoq/**/*.cs) to ensure the decision
checks can properly match files in the repository.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 7e023deb-41fd-4dc1-a716-8834e8a63ef5

📥 Commits

Reviewing files that changed from the base of the PR and between c1dfcb0 and 0ba68a3.

📒 Files selected for processing (19)
  • .ai/skills/add-attribute/SKILL.md
  • .ai/skills/add-attribute/references/extension-model.md
  • .ai/skills/create-branch-pr/SKILL.md
  • .ai/skills/create-branch-pr/assets/pr-template.md
  • .ai/skills/new-test/SKILL.md
  • .ai/skills/new-test/assets/test-template.md
  • .ai/skills/review-decisions/SKILL.md
  • .ai/skills/task-finish/SKILL.md
  • .ai/skills/task-start/SKILL.md
  • .ai/skills/validate/SKILL.md
  • .backlog/tasks/task-20 - Create-AI-agent-skills-for-repository-workflows.md
  • .claude/commands/add-attribute.md
  • .claude/commands/create-branch-pr.md
  • .claude/commands/new-test.md
  • .claude/commands/review-decisions.md
  • .claude/commands/task-finish.md
  • .claude/commands/task-start.md
  • .claude/commands/validate.md
  • AGENTS.md
✅ Files skipped from review due to trivial changes (15)
  • .claude/commands/validate.md
  • .claude/commands/review-decisions.md
  • .claude/commands/task-finish.md
  • .ai/skills/task-start/SKILL.md
  • .claude/commands/add-attribute.md
  • .ai/skills/validate/SKILL.md
  • .claude/commands/new-test.md
  • .claude/commands/task-start.md
  • .claude/commands/create-branch-pr.md
  • AGENTS.md
  • .ai/skills/new-test/SKILL.md
  • .ai/skills/create-branch-pr/assets/pr-template.md
  • .ai/skills/create-branch-pr/SKILL.md
  • .ai/skills/add-attribute/SKILL.md
  • .ai/skills/new-test/assets/test-template.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • .ai/skills/add-attribute/references/extension-model.md

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant