Borrowing it
Nothing to install: this file belongs to Cratis/VerticalSlices. 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/Cratis/VerticalSlices/main/.ai/skills/review-code/SKILL.mdgit clone --depth 1 https://github.com/Cratis/VerticalSlicesWrote 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/verticalslices/review-code)<a href="https://agentmods.dev/skills/cratis/verticalslices/review-code"><img src="https://agentmods.dev/badge/skills/cratis/verticalslices/review-code/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/cratis/verticalslices/review-code"><img src="https://agentmods.dev/badge/skills/cratis/verticalslices/review-code.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.00044 | $0.01113 |
| Opus 5.5 | $0.00018 | $0.00445 |
| Sonnet 5.5 | $0.00009 | $0.00223 |
| Haiku 4.5 | $0.00004 | $0.00111 |
Grade A, and why
review-code 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.
This is a copy
100% identical to review-code — 0 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 87 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Review changed code against all Cratis project standards and produce a structured report.
C# Architecture
- Each slice is its own folder
<Module>/<Feature>/<Slice>/<Slice>.cswith all backend artifacts — no top-levelFeatures/wrapper - Commands:
recordtype withHandle()directly on them — no separate handler classes - Business rejection returns a
ValidationResult/Result<TEvent, ValidationResult>(or validator) — never thrown fromProvide()/Handle()(a throw is HTTP 500, not a validation error) - Fetched/computed handler data is in
Provide(), not inline inHandle() - Events:
recordtype, no mutable/nullable properties, past tense, never carry the event-source id - Identity concepts derive from
EventSourceId<T>(notConceptAs<Guid>) - Projections: AutoMap is on by default —
.AutoMap()only after.NoAutoMap(); projections consume events, never read models - Model-bound query custom paths use
[Path("...")], not[Route] - No service locator (
IServiceProvidernot injected); discover implementations withIInstancesOf<T>, notIEnumerable<T> - Namespace matches folder under the app source root (
<RootNamespace>.<Module>.<Feature>.<Slice>)
C# Code Style
- File-scoped namespaces;
usingdirectives alphabetically sorted - No unused
usingdirectives -
is null/is not null— never== null/!= null -
varpreferred over explicit types - No postfixes:
Async,Impl,Serviceon class names - No regions
- All public types, methods, and properties have multiline XML doc comments
-
<summary>tags always multiline — never/// <summary>Text</summary>on one line - Methods with parameters include
<param name="...">for each - Non-void methods include
<returns> - Custom exception types only — never
InvalidOperationException,ArgumentException, etc. - Exception XML docs start with "The exception that is thrown when …"
- Copyright header on every file
- Strongly-typed Concepts for all domain IDs/values (no raw
Guid/stringin domain models)
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.
- 1mo ago First seen · 87 lines · 44 tokens per session scan A 6cd509452e8e
review-code is a skill published in the GitHub repository Cratis/VerticalSlices (2 stars, last pushed 1mo ago), licensed MIT. It adds 44 tokens to every session and 1,113 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. It is 100% identical to review-code, differing in 0 lines, and is treated as a copy.
Other skills, from other repositories
cratis-engineering-csharp-conventions
Apply the Cratis C# house conventions when writing or reviewing C# in a Cratis repository - formatting, naming, records and primary constructors, nullable handling, XML documentation, custom exceptions, structured logging, dependency injection, and service lifetimes. Use for any "how should this be written" C# style…
cratis-screenplay-model-review
Critic-mode review of a Cratis Screenplay .play model, candidate, proposal or edit request: verdict evidence, element sweep, entity walk, field lineage, an 89-check phased checklist, anti-pattern signals, event-sourcing correctness and a PASS / PASS WITH WARNINGS / FAIL report pinned to declarations, plus a…
cratis-code-review
Review changed code in a Cratis application against the architecture, style, and specification-coverage criteria that the compiler cannot check, and produce a structured report with blocking issues separated from suggestions. Use when asked to review, check, or validate a change. Do not substitute it for a focused…
cratis-application-slice-conformance
Reconcile a Cratis slice's hand-written or gap-filled code and specifications with its contract (the .play slice and its specifications, else the agreed slice outline) in both directions: every contracted field, rule, event, read-model property and specification has a realization, and nothing in code lacks authority.…
cratis-engineering-effect-boundaries
Apply the Cratis effect-boundary contract when writing or reviewing code that publishes, persists, generates, propagates, or releases. On those boundaries partial success is failure - no catch-and-continue, no defaulting to success on an unknown outcome. Use when a degraded run could still report success; defer style…
cratis-performance-review
Perform a focused scalability review of changed code in a Cratis application — Chronicle observers and replay, read-model query shape, command and query payloads, .NET enumeration, and React render cost — and report findings by risk. Use when asked to check for performance or scalability problems. Do not use for…