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 skills add Benknightdark/neo-skills --skill neo-dotnet-tag-helpergit clone --depth 1 https://github.com/Benknightdark/neo-skillsWrote 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/skills/benknightdark/neo-skills/neo-dotnet-tag-helper)<a href="https://agentmods.dev/skills/benknightdark/neo-skills/neo-dotnet-tag-helper"><img src="https://agentmods.dev/badge/skills/benknightdark/neo-skills/neo-dotnet-tag-helper/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/benknightdark/neo-skills/neo-dotnet-tag-helper"><img src="https://agentmods.dev/badge/skills/benknightdark/neo-skills/neo-dotnet-tag-helper.svg" alt="Reviewed on agentmods" width="80" 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.00053 | $0.00839 |
| Opus 5.5 | $0.00021 | $0.00336 |
| Sonnet 5.5 | $0.00011 | $0.00168 |
| Haiku 4.5 | $0.00005 | $0.00084 |
Grade A, and why
neo-dotnet-tag-helper 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 1mo 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 — 68 lines — stays where its author put it; the contents beside it link to each section on GitHub.
.NET Tag Helper Expert Skill
Trigger On
- The user requests to create, generate, or design a custom Razor Tag Helper in C#.
- The user wants to encapsulate complex HTML/UI logic into reusable custom tags without using Partial Views or CSHTML.
- The target framework is .NET 6.0 (LTS) and above.
Workflow (Generator Pattern)
Follow these steps exactly to create robust, high-performance C# Tag Helpers.
Step 1: Perceive & Gather Requirements (Inversion)
Before writing any code, ask the user to clarify the following if not already provided:
- Target HTML Tag: What is the name of the custom tag in HTML? (e.g.,
<my-button>,<user-card>) - Properties: What parameters/attributes should this tag accept? (e.g.,
theme,is-active,user-id) - Dependencies (DI): Does this tag need to query a database or call a service? (Needs Dependency Injection)
- Context: Does it need to access
ViewContext(e.g., to generate URLs or check model state)?
Step 2: Reason & Design (Planning)
Based on the answers:
- Class Naming: Ensure the class name ends with
TagHelper(e.g.,MyButtonTagHelper). - Target Element: Apply
[HtmlTargetElement("my-button")]. - Properties: Map HTML kebab-case attributes to C# PascalCase properties. Apply
[HtmlAttributeName("is-active")]if necessary. - Method Selection:
- If no IO/Async operations, override
Process. - If using DI for database/API calls, override
ProcessAsync.
- If no IO/Async operations, override
Step 3: Act (Code Generation)
Generate the complete C# class. Strictly adhere to the following rules:
- Inherit from
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper. - Do NOT generate
.cshtmlfiles. All HTML must be constructed usingTagBuilderinside the C# class. - If
ViewContextis needed, use[ViewContext]and[HtmlAttributeNotBound]. - Manage content properly using
output.TagName,output.Attributes.SetAttribute, andoutput.Content.SetHtmlContent. - Ensure Thread-Safety (do not store request-specific state in instance fields unless injected as scoped/transient).
What ships with it
3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- 1mo ago First seen · 68 lines · 53 tokens per session scan A 752a66f74689
neo-dotnet-tag-helper is a skill published in the GitHub repository Benknightdark/neo-skills (7 stars, last pushed 3d ago), licensed MIT. It adds 53 tokens to every session and 839 once invoked, about $0.0002 per session on Opus 5.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 skills, from other repositories
csharp-dotnet
Use when building on .NET 8+ with C# 12. Covers nullable reference types, records, async/await correctness, minimal APIs, dependency injection, and EF Core query performance. Trigger on "async deadlock in my asp.net app", "turn on nullable reference types", "ef core is doing n+1 queries", "set up a minimal api in .net…
create-pubsub-dotnet
Creates a Dapr pub/sub app in .NET (publisher, subscriber or both) with declarative, programmatic or streaming subscriptions, run with dapr run or Aspire. Use for "create a pub/sub app in .NET" or "build a Dapr publisher and subscriber in C#". For an existing project use add-pubsub-dotnet.
create-agent-dotnet
Creates a durable AI agent app in .NET with Microsoft Agent Framework on Dapr Workflow, run locally with dapr run. Use for "create an agent in .NET" or "scaffold a .NET agent". For Diagrid Catalyst use the catalyst-ai plugin.
create-workflow-dotnet
Creates a Dapr workflow app in .NET, run locally with dapr run. Use for "create a workflow in .NET" or "build a workflow app in C#". For Diagrid Catalyst use the catalyst-ai plugin.
add-workflow-dotnet
Adds Dapr Workflow to an existing .NET (ASP.NET Core, plain or Aspire) project. Shows a plan for approval, then adds the workflow, activities and management endpoints with targeted edits, building after each. Use for "add a workflow to my .NET project" or "make this process a durable workflow". For a new project use…
check-prereq-agent-dotnet
Checks prerequisites for building durable AI agents in .NET with Microsoft Agent Framework on Dapr Workflow. Use for "check prerequisites for .NET agents" or "verify .NET agent environment".