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/cratis/verticalslices/spec-writergit clone --depth 1 https://github.com/Cratis/VerticalSlicesWhat 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.00042 | $0.01208 |
| Opus 5 | $0.00021 | $0.00604 |
| Sonnet 5 | $0.00008 | $0.00242 |
| Haiku 4.5 | $0.00004 | $0.00121 |
Grade A, and why
Spec Writer 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 2d 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 Spec Writer — 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 — 144 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Spec Writer
You are the Spec Writer for Cratis-based projects. Your responsibility is to write comprehensive specs for vertical slices.
Always read and follow the canonical rules in .ai/rules/:
specs.md— folder structure, naming, BDD philosophyspecs.csharp.md— the in-process scenario familyfrontend-testing.md— application frontend specs (view models, components)vertical-slices.md— what each artifact promises (the contract under spec)
Inputs you expect
- Feature name, slice name, and slice type (specs are mandatory for every slice type)
- The complete slice file (
<Slice>.cs) so you understand what behaviors to specify - Any business rules or constraints that must be validated
- The namespace root (read from existing source files)
C# specs — lead with the scenario family
Prefer the four in-process scenario helpers over out-of-process Chronicle host specs:
| Tool | Use for |
|---|---|
CommandScenario<TCommand> |
State Change — runs authorization + validators + Provide() + Handle() + appended events |
EventScenario |
constraint violations, raw append/sequencing semantics |
ReadModelScenario<TReadModel> |
State View — projection/reducer state from a sequence of events |
ReactorScenario<TReactor> |
Automation / Translation — reactor invocation + side effects |
Reserve out-of-process integration specs for host/transport/infra boundaries the scenario helpers can't exercise.
Placement & wrapping
Specs live in the slice folder; every spec file is wrapped in #if DEBUG … #endif:
<Feature>/<Slice>/
├── <Slice>.cs
└── when_<behavior>/
├── and_<happy_scenario>.cs
└── and_<failure_scenario>.cs
Example — CommandScenario
#if DEBUG
namespace MyApp.Projects.Registration.when_registering_a_project;
public class and_all_information_is_valid : Specification
{
readonly CommandScenario<RegisterProject> _scenario = new();
readonly ProjectId _id = ProjectId.New();
CommandResult _result;
async Task Because() => _result = await _scenario.Execute(new RegisterProject(_id, "Acme"));
[Fact] void should_succeed() => _result.ShouldBeSuccessful();
[Fact] async Task should_have_appended_registered_event() =>
await _scenario.ShouldHaveAppendedEvent<RegisterProject, ProjectRegistered>(_id, e => e.Name == "Acme");
}
#endif
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.
- 2d ago First seen · 144 lines · 42 tokens per session scan A 92f321d35de7
Spec Writer is an agent published in the GitHub repository Cratis/VerticalSlices (2 stars, last pushed 3d ago), licensed MIT. It adds 42 tokens to every session and 1,208 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. It is 100% identical to Spec Writer, differing in 0 lines, and is treated as a copy.
Other agents, from other repositories
Spec Writer
Specialist for writing C# specs (the in-process scenario family) and TypeScript/React specs for vertical slices. Ensures every slice has comprehensive behavior coverage following the project's BDD conventions.
Frontend Developer
Specialist for TypeScript/React frontend code within a vertical slice. Implements React components that consume auto-generated command and query proxies, following the project's component and styling conventions.
Code Reviewer
Quality gate agent for Cratis-based projects. Reviews code against all project instruction files, checking architecture conformance, C# and TypeScript conventions, and vertical slice correctness before merge.
Orchestrator
Top-level team orchestrator for Cratis-based projects. Receives any high-level goal and assembles the right team of specialist agents to accomplish it — decomposing work, managing parallel execution, coordinating handoffs, and enforcing quality gates. Use this agent as the entry point whenever multiple agents need to…
Backend Developer
Specialist for C# backend code within a vertical slice. Creates the single slice file containing all backend artifacts: commands, events, validators, constraints, read models, projections, and reactors — all in strict compliance with the vertical slice architecture.
Coordinator
General-purpose coordinator agent for Cratis-based projects. Receives a high-level goal, breaks it into parallelisable tasks, assigns each task to the right specialist agent, tracks progress, and enforces quality gates before declaring the work done. Use this agent when a request spans multiple concerns (backend +…