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-chronicle-client-typescriptgit 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-chronicle-client-typescript)<a href="https://agentmods.dev/skills/cratis/ai/cratis-chronicle-client-typescript"><img src="https://agentmods.dev/badge/skills/cratis/ai/cratis-chronicle-client-typescript.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.00128 | $0.04632 |
| Opus 5 | $0.00064 | $0.02316 |
| Sonnet 5 | $0.00026 | $0.00926 |
| Haiku 4.5 | $0.00013 | $0.00463 |
Grade A, and why
cratis-chronicle-client-typescript 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 — 397 lines — stays where its author put it; the contents beside it link to each section on GitHub.
The Chronicle client for TypeScript
@cratis/chronicle is a standalone Node.js client SDK that speaks gRPC to a
Chronicle server. It is not a browser library and it is not the Arc TypeScript
proxy layer — an Arc frontend calls generated command and query proxies over
HTTP and never sees this package.
Verified product sources
This skill is verified against Cratis/Chronicle.TypeScript at tag v4.0.0
(commit bed0b86), which is the version published on npm.
| Package | Version | Where |
|---|---|---|
@cratis/chronicle |
4.0.0 |
Source/package.json:2 |
@cratis/chronicle.contracts |
17.0.0 |
Source/package.json dependency |
@cratis/fundamentals |
^7.14.0 |
peer dependency — you install it |
Do not read the version out of the repository.
Source/package.jsonsays1.0.0;publish-version.jsoverwrites it at publish time. Take the version from npm.
v4.0.0 is a major bump and it changed real API. Guidance written against
3.x is wrong in at least three places — event tags did not exist, reducers took
two arguments, and two event-store RPCs were renamed. Do not carry 3.x examples
forward.
Project setup
yarn add @cratis/chronicle @cratis/fundamentals reflect-metadata
@cratis/fundamentals is a peer dependency, so it does not arrive on its own.
reflect-metadata must be imported once, at the entry point, before any
decorated class is loaded (Documentation/getting-started.md:16-27):
import 'reflect-metadata';
The package is ESM-only ("type": "module", Source/package.json:34) and
requires decorator support:
// tsconfig.json
{
"compilerOptions": {
"experimentalDecorators": true,
"emitDecoratorMetadata": true
}
}
Both are set in the shipped sample (Samples/Console/tsconfig.json:12-13).
Connecting
import 'reflect-metadata';
import { ChronicleClient, ChronicleOptions } from '@cratis/chronicle';
const client = new ChronicleClient(ChronicleOptions.development());
try {
const store = await client.getEventStore('<EventStoreName>');
// ... use store ...
} finally {
client.dispose();
}
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 · 397 lines · 128 tokens per session scan A 9fff19538b2b
cratis-chronicle-client-typescript is a skill published in the GitHub repository Cratis/AI (2 stars, last pushed today), licensed MIT. It adds 128 tokens to every session and 4,632 once invoked, about $0.0006 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
codegen
Use for .NET code generation work with Roslyn, Microsoft.OpenApi, Razor templates, DTO/manager/controller generation, REST API generation, C# HttpClient generation, Angular/Axios TypeScript request clients, generated formatting, and deterministic output.
grpc
Build or review gRPC services and clients in .NET. USE FOR: ASP.NET Core gRPC, protobuf contracts, unary or streaming RPC, gRPC client factory, interceptors, deadlines, cancellation, channel reuse, backend service integration. DO NOT USE FOR: broad browser-facing APIs without gRPC-Web tradeoff review, SignalR realtime…
capability
Creates or modifies a capability class in domain/capabilities/ and its corresponding Has interface in domain/tools/contracts.ts. Use when adding a new tool runtime behavior (agents, skills, commands, rules, mcp, hooks, settings, plugins), changing the constructor params of an existing capability class, or wiring a new…
amqplib
You are an expert in amqplib, the Node.js client for RabbitMQ and AMQP 0-9-1 protocol. You help developers implement reliable message queuing with work queues, pub/sub fanout, topic routing, RPC patterns, dead letter queues, and message acknowledgment — building decoupled microservices that communicate asynchronously…
openapi-ts-v0
Generate TypeScript clients from OpenAPI specs using @hey-api/openapi-ts — type-safe API clients. Use when generating TypeScript clients from OpenAPI specifications for frontend or API consumers.
api-development
Guidelines for building clean, scalable APIs with Go standard library and NestJS TypeScript, covering security, validation, and modular architecture.