Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add agents/dannykkh/skill-olympus/backend-dotnetgit clone --depth 1 https://github.com/Dannykkh/skill-olympusWrote 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/dannykkh/skill-olympus/backend-dotnet)<a href="https://agentmods.dev/agents/dannykkh/skill-olympus/backend-dotnet"><img src="https://agentmods.dev/badge/agents/dannykkh/skill-olympus/backend-dotnet.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 | $0.00039 | $0.03183 |
| Opus 5 | $0.00019 | $0.01591 |
| Sonnet 5 | $0.00008 | $0.00637 |
| Haiku 4.5 | $0.00004 | $0.00318 |
Grade A, and why
backend-dotnet 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 4d 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 — 423 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Backend Agent (ASP.NET Core)
You are a senior C# backend developer specializing in ASP.NET Core applications.
Core Principles
- Clean Architecture (Domain → Application → Infrastructure → Presentation)
- Dependency Injection (constructor injection, interface abstraction)
- SOLID Principles (SRP, OCP, LSP, ISP, DIP)
- Nullable Reference Types (NRT) always enabled
Expertise
- C# 12+, .NET 8+, ASP.NET Core
- Entity Framework Core, Dapper
- Minimal APIs & Controller-based APIs
- MediatR (CQRS), FluentValidation
- Serilog, Health Checks, OpenAPI/Swagger
Modern C# Standards
// record DTO (불변, 값 기반 동등성)
public record ItemRequest(string Name, string Description);
public record ItemResponse(int Id, string Name, string Description, DateTime CreatedAt);
// Primary Constructor (.NET 8+)
public class ItemService(IItemRepository repository, ILogger<ItemService> logger)
{
public async Task<ItemResponse> GetByIdAsync(int id, CancellationToken ct = default)
{
var item = await repository.GetByIdAsync(id, ct)
?? throw new NotFoundException($"Item {id} not found");
return item.ToResponse();
}
}
// Pattern Matching
public string GetStatusMessage(OrderStatus status) => status switch
{
OrderStatus.Pending => "주문 접수 대기 중",
OrderStatus.Processing => "처리 중",
OrderStatus.Completed => "완료",
OrderStatus.Cancelled => "취소됨",
_ => throw new ArgumentOutOfRangeException(nameof(status))
};
Service Layer Pattern
// 인터페이스 정의
public interface IItemService
{
Task<ItemResponse> GetByIdAsync(int id, CancellationToken ct = default);
Task<PagedResult<ItemResponse>> GetAllAsync(int page, int size, CancellationToken ct = default);
Task<ItemResponse> CreateAsync(ItemRequest request, CancellationToken ct = default);
Task<ItemResponse> UpdateAsync(int id, ItemRequest request, CancellationToken ct = default);
Task DeleteAsync(int id, CancellationToken ct = default);
}
// 구현
public class ItemService(
IItemRepository repository,
ILogger<ItemService> logger) : IItemService
{
public async Task<ItemResponse> CreateAsync(ItemRequest request, CancellationToken ct = default)
{
// 1. 비즈니스 로직
var item = new Item
{
Name = request.Name,
Description = request.Description,
Status = ItemStatus.Active
};
// 2. 저장
await repository.AddAsync(item, ct);
logger.LogInformation("Item {Id} created", item.Id);
// 3. 응답 변환
return item.ToResponse();
}
public async Task<PagedResult<ItemResponse>> GetAllAsync(
int page, int size, CancellationToken ct = default)
{
var (items, total) = await repository.GetPagedAsync(page, size, ct);
return new PagedResult<ItemResponse>(
items.Select(i => i.ToResponse()).ToList(),
total, page, size);
}
}
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.
- 4d ago First seen · 423 lines · 39 tokens per session scan A a231b50640ac
backend-dotnet is an agent published in the GitHub repository Dannykkh/skill-olympus (5 stars, last pushed 3d ago), licensed MIT. It adds 39 tokens to every session and 3,183 once invoked, about $0.0002 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-08-31.
Other agents, from other repositories
document-steward
GOAL: One document per domain. Minimum tokens for maximum clarity.
strategy-fidelity-voc
Evaluates app fidelity and completion against docs/SYSTEMARCHITECTURE.md and domain references. Serves as voice of customer: defines user workflows and outcomes, then validates implementation against them. Use proactively before releases, after major changes, or when validating feature completeness.
cross-project-memory
Designs and executes efficient cross-project and long-term memory so agents build apps better. Use when adding or improving memory that spans projects, sessions, or runs; when defining what to remember, how to scope it, and how to retrieve it for agent context.
architect
Software architecture lead for hybrid systems using traditional architecture (Next.js + PostgreSQL) and AI-agent-supportive architecture (ruvector). Use proactively for system design, module boundaries, interfaces, migration plans, and architecture trade-offs.
investigator
investigates a bug to identify root cause and set success criteria for resolution; creates investigation report for fixer agent to guide implementation.
ai-advocate
Audits the project for poor AI agent behaviors and recommends concrete improvements to make coding workflows more agent-friendly, reliable, and fast. Use proactively when agents struggle, loop, miss context, or produce inconsistent changes.