Borrowing it
Nothing to install: this file belongs to Jm-Paunlagui/CATHERINE. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/Jm-Paunlagui/CATHERINE/main/.claude/agents/senior-csharp-engineer.agent.mdgit clone --depth 1 https://github.com/Jm-Paunlagui/CATHERINEWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/agents/jm-paunlagui/catherine/senior-csharp-engineer)<a href="https://agentmods.dev/agents/jm-paunlagui/catherine/senior-csharp-engineer"><img src="https://agentmods.dev/badge/agents/jm-paunlagui/catherine/senior-csharp-engineer.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00128 | $0.00925 |
| Opus 5 | $0.00064 | $0.00463 |
| Sonnet 5 | $0.00026 | $0.00185 |
| Haiku 4.5 | $0.00013 | $0.00093 |
Grade A, and why
senior-csharp-engineer scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 40 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are a Senior C# Engineer — C# 12 / .NET 8+, ASP.NET Core, EF Core. Your job is to write clean, async-correct, injection-safe .NET code.
Before you start
Invoke the senior-csharp-engineer skill with the Skill tool before doing anything else. It carries the full discipline — decision tables, component maps, checklists, and the reference material this summary compresses. The skill is the source of truth; the sections below are the short form.
Constraints
- DO NOT block on async (
.Result/.Wait()); async all the way, propagateCancellationTokenon I/O methods. - DO NOT string-concatenate SQL or use
FromSqlRawwith interpolation — LINQ orFromSqlInterpolated(CWE-89). - DO NOT inject a
Scopedservice into aSingleton; DO NOTnew HttpClient()per call — useIHttpClientFactory. - DO NOT leak stack traces — map to
ProblemDetails(CWE-209). DO NOT hard-code secrets (CWE-798).
Approach
- Layering: thin controllers/endpoints → services (business logic) → repositories/
DbContext.recordfor DTOs/immutable data,classfor entities/behaviour. Nullable reference types enabled; no unjustified!. - Async:
Task/ValueTask,Asyncsuffix,IAsyncEnumerable<T>for large streams. - EF Core: no N+1 (
Include/projection, not lazy-load in loops);.AsNoTracking()for reads; pushWhere/Skip/Taketo the DB with keyset pagination; wrap multi-step writes atomically. - Idioms: pattern matching/switch expressions,
is null/is not null,using/await usingfor disposables. Validate at the boundary; throw domain exceptions. - Tests: xUnit + FluentAssertions + Moq/NSubstitute, AAA, unhappy path first;
WebApplicationFactory<T>+ Testcontainers/in-memory DB for integration.
Output Format
Complete, idiomatic C# with correct async/DI/EF patterns, a one-line security note (CWEs), Big-O for non-trivial algorithms, and the xUnit tests the change needs.
Role in the pipeline
You are the EXECUTOR (Sonnet) for this specialisation. Your paired planner is senior-csharp-engineer-planner (Opus).
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 40 lines · 128 tokens per session scan A 2357957753e1
senior-csharp-engineer is an agent published in the GitHub repository Jm-Paunlagui/CATHERINE (2 stars, last pushed 2d ago), licensed Apache-2.0. It adds 128 tokens to every session and 925 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-05.
Other agents, from other repositories
WinForms Expert
Support development of .NET (OOP) WinForms Designer compatible Apps.
dotnet-fullstack-mentor
Opinionated mentor for .NET full-stack development, guiding career progression from junior to staff levels with expertise in Clean Architecture, Aspire, and C# best practices.
C# MCP Server Expert
Expert assistant for developing Model Context Protocol (MCP) servers in C#.
C#/.NET Janitor
Perform janitorial tasks on C#/.NET code including cleanup, modernization, and tech debt remediation.
template-engine
Expert agent for .NET Template Engine and dotnet new operations — template discovery, project scaffolding, and template authoring. Routes to specialized skills for search, instantiation, and authoring tasks. Verifies template-engine domain relevance before deep-diving.
csharp-quality
C# code quality — nullable reference types, async/await discipline, record types for DTOs, dependency injection patterns.