Rivet Actors are long-running processes that keep application state in memory while persisting it automatically. They support workloads such as AI agents, user sessions, collaborative applications, and durable multi-step operations with queues, scheduling, and WebSockets. Catalogue add-ons help operate and develop Rivet Actors.
Borrowing it
Nothing to install: this file belongs to rivet-dev/actors. 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/rivet-dev/actors/main/.claude/skills/sanity-check/SKILL.mdgit clone --depth 1 https://github.com/rivet-dev/actorsWrote 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/rivet-dev/actors/sanity-check)<a href="https://agentmods.dev/skills/rivet-dev/actors/sanity-check"><img src="https://agentmods.dev/badge/skills/rivet-dev/actors/sanity-check/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/rivet-dev/actors/sanity-check"><img src="https://agentmods.dev/badge/skills/rivet-dev/actors/sanity-check.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 2 findings, up to medium
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- medium MCP Rug Pull · line 169 Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.Fix: Pin the image: image:tag or image@sha256:abc123
- medium MCP Rug Pull · line 223 Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.Fix: Pin the image: image:tag or image@sha256:abc123
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.02489 |
| Opus 5.5 | $0.00029 | $0.00996 |
| Sonnet 5.5 | $0.00015 | $0.00498 |
| Haiku 4.5 | $0.00007 | $0.00249 |
Grade C, and why
sanity-check scanned grade C with 2 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.
Recursive force deletehighDestructive command
rm -rf with a variable or a broad path is one typo away from removing the wrong tree.
rm -rf "$SANITY_DIR" Runs shell commandslowCapability
Expected in a hook, worth knowing in a rule or an instructions file.
import { spawn } from "node:child_process"; How it starts
The opening of the file, as written. The whole thing — 224 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Sanity Check
Run a quick end-to-end sanity check of a published rivetkit version: copy the hello-world example to a temp directory, install the specified package version from the public npm registry, start the dev server, and run a client test script that verifies both HTTP actions and WebSocket connections with event broadcasting.
When to use
- User wants to verify a published rivetkit version works (e.g.,
[email protected],rivetkit@latest,[email protected]) - After a preview publish to verify the build is functional
- After a release to verify the package installs and runs correctly
- User says "sanity check", "smoke test", "verify the build", or "test this version"
Inputs
- Version or tag (required) — explicit pkg-pr-new preview, npm dist-tag, or semver. If not provided in the user's message, ask for it.
- Additional test behavior (optional) — e.g., "also verify workflows persist" or "check that KV works." If provided, extend
src/index.ts+test.mjsusing the menu in "Extending with custom tests" below.
Usage
/sanity-check <version>— run in a temp directory on the host/sanity-check docker <version>— run inside anode:22Docker container/sanity-check <version> <custom instructions>— any extra instructions (e.g. "also hit a KV action", "verify state persists across restart", "use pnpm", "test on node 20")
<version> is any npm-resolvable spec: an explicit pkg-pr-new preview (0.0.0-pr.4701.a818b77), an npm dist-tag (latest, rc, next), or a semver (2.3.0-rc.4). If the user omits it, ask for it.
What it tests
npm installofrivetkit,@rivetkit/react, and the platform-specific@rivetkit/rivetkit-napi-*native binding from the public npm registry- Boot the hello-world counter actor server via
registry.start()on port 6420 - HTTP path: call
counter.increment(5),counter.increment(3),counter.getCount()and assert the values - WebSocket path: open a
.connect()conn, subscribe to thenewCountevent, callincrement(10), assert the action response AND the broadcast event value match - Report the resolved versions of
rivetkit+@rivetkit/rivetkit-napi
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 · 224 lines · 73 tokens per session scan C abe34d8bda65
sanity-check is a skill published in the GitHub repository rivet-dev/actors (6,309 stars, last pushed yesterday), licensed Apache-2.0. It adds 73 tokens to every session and 2,489 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it C with 2 findings (recursive force delete, runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
codew-release-qa-sweep
Use before claiming Codewhale release work is done: run the full gate sweep and list the manual QA targets.
cw-gates
Use before claiming any Codewhale change is done, green, or ready to land: the focused-to-broad verification ladder, the budget checks CI enforces, and the rules for what counts as a passing test.
pdf-documents
Generate PDFs with fpdf2 and merge, split, or fill existing PDFs with pypdf, with visual QA before delivery.
coding-standards
General repo rules enforced by ESLint/TypeScript/CI — PRs-only, never bypass lint, import ordering, type imports, path privacy, commit format. Load for any code change.
verification-before-completion
Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always.
simplicio-orient
Terminal-first execution — answer facts with the shell, never with the LLM. Use whenever a step needs a fact about the filesystem, git, processes, or system resources, or runs a build/test/lint/diff whose output would flood context. Substitutes deterministic shell/CLI calls for native LLM operations and clamps their…