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-arc-commandgit 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-arc-command)<a href="https://agentmods.dev/skills/cratis/ai/cratis-arc-command"><img src="https://agentmods.dev/badge/skills/cratis/ai/cratis-arc-command.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.00090 | $0.03127 |
| Opus 5 | $0.00045 | $0.01563 |
| Sonnet 5 | $0.00018 | $0.00625 |
| Haiku 4.5 | $0.00009 | $0.00313 |
Grade A, and why
cratis-arc-command 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 — 287 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Define an Arc command
A command is a record that carries the user's intent and owns its own handler.
Arc discovers it, runs authorization and validation, calls Handle(), and turns
whatever Handle() returns into appended events, a response, or both.
Verified product sources
| Package | Version | Purpose |
|---|---|---|
Cratis.Arc.Core |
22.10.4 |
Cratis.Arc.Commands.ModelBound.CommandAttribute, CommandResult, CommandValidator<T> |
Cratis.Arc.Chronicle |
22.10.4 |
event append handling, Cratis.Arc.Chronicle.Commands.NotAuditedAttribute |
Cratis.Arc.ProxyGenerator.Build |
22.10.4 |
CratisProxiesOutputPath MSBuild integration |
Cratis.Fundamentals |
7.18.2 |
Cratis.Monads.Result<TResult, TError> |
Cratis.Chronicle |
16.39.1 |
EventTypeAttribute, EventForEventSourceId, ICanProvideEventSourceId |
@cratis/arc |
22.10.4 |
ICommand, CommandResult, ValidationResult |
Reverify before claiming support for another version. Arc without Chronicle is a supported setup; everything on this page that appends events needs Chronicle.
Declare the command
// Copyright (c) Cratis. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using Cratis.Arc.Commands.ModelBound;
using Cratis.Chronicle.Events;
namespace <NamespaceRoot>.<Feature>;
[Command]
public record <ImperativeName>(<ConceptType> <Name>, <ConceptType> <Name>)
{
public <EventType> Handle() => new(<Name>);
}
[EventType]
public record <EventType>(<ConceptType> <Name>);
Rules the framework actually enforces:
[Command]isCratis.Arc.Commands.ModelBound.CommandAttributeand applies to a class declaration only. A type counts as a command when it carries[Command]and declares aHandlemethod; either one alone is not enough.Handleis found by name on the command type itself.ARC0003is an error when another class definesHandlefor a command, andARC0004is an error when a[Command]type has no public instanceHandle.ARC0002warns when a type hasHandlebut no[Command];ARC0007warns when a command is aclassrather than arecord.- Name the command as the action —
OpenDebitAccount, notOpenDebitAccountCommand. Handleparameters are resolved from DI, so ask for services there rather than through a constructor.- Never inject
IEventLogintoHandleto append the command's own events —ARCCHR0007warns, and it bypasses Arc's append pipeline. Express the append through the return type.
What ships with it
5 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.
- today First seen · 287 lines · 90 tokens per session scan A 4ab431463afa
cratis-arc-command is a skill published in the GitHub repository Cratis/AI (2 stars, last pushed today), licensed MIT. It adds 90 tokens to every session and 3,127 once invoked, about $0.0005 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-06.
Other skills, from other repositories
add-permission
Add a permission constant across backend and frontend.
gen-types
Regenerate frontend API types from the backend OpenAPI spec.
architecture-paradigm-cqrs-es
Applies CQRS and Event Sourcing for read/write separation and audit trails. Use when designing systems with complex domain logic or full state-change history.
new-feature
Scaffold a full-stack feature from entity to frontend page.
regenerate-api
Regenerate the AppointMe frontend API client (orval/TanStack Query hooks + TypeScript schemas) after the backend OpenAPI surface changes. Use this whenever backend endpoints, request/response DTOs, or other contract-affecting types are added, removed, or modified — e.g. after editing files under src/AppointMe.Api…
csharp-skills
Use when developing with .NET/C# for Web APIs, ORM data access, Excel/Word file I/O, spreadsheet controls, error tracking, or .NET code protection. Index of 9 skills: Furion, Admin.NET Backend, Admin.NET Frontend, SqlSugar, NPOI, SOD, ReoGrid, DotNet Reactor, Sentry.