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 Cratis/AI --skill cratis-code-reviewgit clone --depth 1 https://github.com/Cratis/AIWrote 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/cratis/ai/cratis-code-review)<a href="https://agentmods.dev/skills/cratis/ai/cratis-code-review"><img src="https://agentmods.dev/badge/skills/cratis/ai/cratis-code-review.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.00073 | $0.01995 |
| Opus 5 | $0.00036 | $0.00997 |
| Sonnet 5 | $0.00015 | $0.00399 |
| Haiku 4.5 | $0.00007 | $0.00199 |
Grade A, and why
cratis-code-review 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 today.
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 — 178 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Cratis code review
A review is worth the reader's time only when it separates what must change from what could. Everything below is a criterion an analyzer does not already enforce — if the build is clean and this list is clean, the change is sound on the axes a reviewer can judge.
Review the change, not the file. A pre-existing violation in a line the change did not touch is a note, never a blocker.
Verified product sources
| Package | Version | Purpose |
|---|---|---|
Cratis.Arc.Core |
22.10.4 |
Command, query, validation and analyzer surface (ARC0001–ARC0015) |
Cratis.Chronicle |
16.45.2 |
Event, projection, read-model and constraint surface |
Cratis.Fundamentals |
7.18.2 |
ConceptAs<T>, IInstancesOf<T>, the DI conventions |
Reverify against the owning product repository before asserting a framework contract this file does not already state.
Route near misses
- A focused authentication, authorization, data-exposure, or event-sourcing
security audit: use
cratis-security-review. - A focused Chronicle, database, .NET or React scalability analysis: use
cratis-performance-review. The performance items below are the ones a general reviewer should catch in passing; do not duplicate the specialist's findings when both have run. - Deciding whether the behavior is right at all: that is modeling, not review.
Step 1 — Run the gates first
A review that reports what the build already says is noise. Confirm the change builds clean in Debug and Release, its specifications pass, and lint and the TypeScript build are clean. Report a gate failure as the finding and stop — there is nothing to review under a red build.
Step 2 — Architecture
- Each slice is its own folder,
<Module>/<Feature>/<Slice>/<Slice>.cs, with the backend artifacts together. No top-levelFeatures/wrapper. - Namespace mirrors the folder path under the source root.
- Commands are
recordtypes withHandle()on the record. No separate handler class. - Business rejection returns a
ValidationResultorResult<TEvent, ValidationResult>, or comes from a validator. Never thrown fromProvide()orHandle()— a throw is HTTP 500, not a validation error. - Fetched or computed handler data is in
Provide(), not inline inHandle(). - Events are
recordtypes: past tense, no mutable and no nullable properties, never carrying the event-source id, and each has an XML<summary>. - Identity concepts derive from
EventSourceId<T>, notConceptAs<Guid>. - Domain values are concepts, not raw
Guid,string, orint. - Projections consume events, never read models. AutoMap is on by default —
.AutoMap()appears only inside a scope disabled with.NoAutoMap(). - A
[Projection]id, once given explicitly and deployed, is permanent. The argument is optional; adding one to an existing projection after the fact changes its identity. - Model-bound query custom paths use
[Path("...")], never ASP.NET[Route]. - No service locator:
IServiceProvideris not injected. Implementation sets come fromIInstancesOf<T>, neverIEnumerable<T>. - No explicit singleton registration where
[Singleton]suffices. - Logging lives in a
*Logging.cspartial with[LoggerMessage], not inline in domain code. - No shared mutable state between commands.
What ships with it
1 file 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.
- today First seen · 178 lines · 73 tokens per session scan A 3cff40220ab1
cratis-code-review is a skill published in the GitHub repository Cratis/AI (2 stars, last pushed yesterday), licensed MIT. It adds 73 tokens to every session and 1,995 once invoked, about $0.0004 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-08.
Other skills, from other repositories
code-analysis
Use the free built-in .NET SDK analyzers and analysis levels with gradual Roslyn warning promotion. USE FOR: the repo wants first-party .NET analyzers; CI should fail on analyzer warnings; the team needs AnalysisLevel or AnalysisMode guidance. DO NOT USE FOR: third-party analyzer selection by itself; formatting-only…
sonarjs
Use SonarJS-derived rules in .NET repositories that ship JavaScript or TypeScript frontends and need deeper bug-risk, code-smell, or cognitive-complexity checks than a minimal ESLint baseline. USE FOR: SonarQube, SonarCloud, or eslint-plugin-sonarjs setups; frontend code smells; cognitive complexity and deeper…
meziantou-analyzer
Use the open-source free Meziantou.Analyzer package for design, usage, security, performance, and style rules in .NET. Use when a repo wants broader analyzer coverage with a single NuGet package. USE FOR: the repo uses or wants Meziantou.Analyzer; the team wants one analyzer pack that covers design, usage, security…
review
Code review skill for PRs, branches, or uncommitted changes. Loads the appropriate subset of architecture/subsystem docs based on what changed, walks the changeguardrailsrules pre-PR checklist, and emits structured findings (blocking / advisory / nit) with a verdict.
code-review
Plan-Forge-tuned comprehensive code review — runs public-surface diff, forge analysis, architecture / security / testing / patterns checks, plus Plan-Forge-specific gates (ACI compliance, dual-shell parity, branch model). Use before merging features or at the end of a phase. With --quorum, dispatches multi-model…
dotnet-techne-review-pipeline
Use when the user asks for a multi-agent .NET code review - five parallel reviewers (correctness, performance, security/observability, data/messaging/integration, generalist) plus an adversarial maintainer that refutes weak findings. Requires the review agent roles registered by scripts/install-codex.sh. Keywords…