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 Metalnib/dotnet-episteme-skills --skill dotnet-techne-story-qagit clone --depth 1 https://github.com/Metalnib/dotnet-episteme-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/metalnib/dotnet-episteme-skills/dotnet-techne-story-qa)<a href="https://agentmods.dev/skills/metalnib/dotnet-episteme-skills/dotnet-techne-story-qa"><img src="https://agentmods.dev/badge/skills/metalnib/dotnet-episteme-skills/dotnet-techne-story-qa/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/metalnib/dotnet-episteme-skills/dotnet-techne-story-qa"><img src="https://agentmods.dev/badge/skills/metalnib/dotnet-episteme-skills/dotnet-techne-story-qa.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.00000 | $0.01209 |
| Opus 5 | $0.00000 | $0.00605 |
| Sonnet 5 | $0.00000 | $0.00242 |
| Haiku 4.5 | $0.00000 | $0.00121 |
Grade A, and why
dotnet-techne-story-qa 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 12d 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 — 72 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Story QA (single context)
Check an implementation against the story that asked for it. Answer one question: do the
acceptance criteria hold, and what will hurt later? Every answer carries a file:line. Every
finding survives an attempt to kill it before it reaches the reader. This is the portable
single-context variant; hosts with subagent support run the same dimensions as a parallel
fan-out (Claude Code: /dotnet-qa; Codex: the dotnet-techne-qa-pipeline skill; OpenCode:
/dotnet-qa). A repo-local QA skill, when one exists, is tuned to that repo - prefer it there.
Boundary
Code review (dotnet-techne-code-review) hunts defects across a diff. This checks a diff
against a contract: acceptance criteria, reuse, design conformance, dead code. Same branch,
different question - run both when the story is large. Report findings. Change nothing.
Hard gates
Stop and fix these before continuing; they are not style preferences.
- Story reference unclear -> ask. Never guess a ticket (see spec discovery below). A QA check against the wrong story is worse than none.
- No reference -> no claim. Cut the sentence instead of softening it.
- No break test -> no finding. An unfalsified finding stays in your notes.
- Read before you judge. Booting, building, and running beats inferring from source.
Core workflow
- Target: the story diff - current branch vs its merge-base with the default branch, unless the user names another target. No diff - halt and say so. List the changed files with line counts; read the production code whole for small stories, whole-in-blast-radius for large ones.
- Spec: resolve via references/spec-discovery.md and write the AC list down verbatim before reading code (judging against a remembered AC drifts toward the code). No-spec mode only when the user explicitly chooses it; announce the skipped acceptance dimension.
- Contract source of truth: if the ticket names an external schema, consumer test suite, WSDL, or OpenAPI document, read it - and read the consumer, not just the schema. This is the step that separates "looks right" from "verified".
- Acceptance audit (spec mode only): for each AC, verdict IMPLEMENTED / PARTIAL / MISSING
with file:line evidence, plus the proving test - read the test before claiming what it
covers; a type-only assertion proves nothing behavioral. Run it: build the project, run
the tests, record the counts and warnings - a passing suite you executed outranks a test
file you read. Sweep exhaustively where the cost is low (all 23 hand-written names, not a
sample). Check constraints and out-of-scope declarations; cross-check claimed file/task
lists against
git diff --name-only. The story narrative is testimony, not evidence. - Reuse and design: reinvented helpers (search the solution for existing equivalents), missing adoption of the change's own new behavior (needs a supersession signal), conformance to the project's established patterns and siblings, and the convention this foundation sets that later stories will copy.
- Dead code: deletion check (removed code whose contract was neither re-established nor retired), newly-dead code nothing reaches (verify with solution-wide searches including tests), stale words - docs, log texts, test names describing behavior that no longer exists.
- Comment discipline: check every comment the diff adds or touches against references/comment-rules.md (host-repo conventions override it - say which you applied). Record the exact replacement line (or "delete") per finding.
- Negative space: the strongest findings often live outside the AC list. What does the
running system need that no story covers? What does the story defer, and does the deferral
fail loudly or silently? Tag these
backlog. - Falsify every finding: apply references/falsification.md
- build the strongest argument each finding is wrong, test it, and record survived / weakened / dead. Expect to kill some of your own; disproved suspicions go in Dropped, which is an honesty signal, not a footnote.
- Report per references/qa-output-contract.md - gate
and verdict line first, then summary, AC coverage, findings (ranked by consequence),
Dropped, Checked, Yours to call. Persist
.episteme/QA-<slug>.mdunless the user asks for report-only. Afterwards you may offer to apply the comment-line fixes; apply them ONLY after the user explicitly confirms.
What ships with it
4 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.
- 12d ago First seen · 72 lines · 0 tokens per session scan A 14b91d3485ef
dotnet-techne-story-qa is a skill published in the GitHub repository Metalnib/dotnet-episteme-skills (12 stars, last pushed 3d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,209 tokens. 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-30.
Other skills, from other repositories
improve-code-quality
Guided journey from a working-but-untested vibe-coded prototype to a production-ready product with tests, clean structure, a business-rules boundary, and resilience at scale. Orchestrates nine skills phase by phase - working-with-legacy-code, clean-code, refactoring-patterns, software-design-philosophy…
refactor
Refactors code for quality and maintainability. Triggers: refactor, clean up, restructure, improve code, modernize.
prompt-caching-patterns
Anthropic API prompt caching: TTL, breakpoints, stacking, invalidation, hit rate. Triggers: prompt caching, cachecontrol, cache breakpoint, cache TTL, hit rate.
code-review
Review .NET changes for bugs, regressions, architectural drift, missing tests, incorrect async or disposal behavior, and platform-specific pitfalls before you approve or merge them. USE FOR: reviewing a pull request or patch in a .NET repository; checking for behavioral regressions, API misuse, or missing tests…
test-verification
Requires behavioral, failure-path, and durable-seam evidence for tests and review. Use when writing tests, reviewing test coverage, assessing behavioral test quality, or accepting high-risk behavior on test evidence.
dotnet-best-practices
Ensure .NET/C# code follows maintainable, modern best practices. Use when reviewing or improving C# code, solution structure, async patterns, dependency injection, or testability.