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 skills/rewrite-rs/skills/rust-observabilitynpx skills add rewrite-rs/skills --skill rust-observabilitygit clone --depth 1 https://github.com/rewrite-rs/skillsWrote 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/rewrite-rs/skills/rust-observability)<a href="https://agentmods.dev/skills/rewrite-rs/skills/rust-observability"><img src="https://agentmods.dev/badge/skills/rewrite-rs/skills/rust-observability.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.00085 | $0.01239 |
| Opus 5 | $0.00043 | $0.00620 |
| Sonnet 5 | $0.00017 | $0.00248 |
| Haiku 4.5 | $0.00009 | $0.00124 |
Grade A, and why
rust-observability 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 5d 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.
How it starts
The opening of the file, as written. The whole thing — 123 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Rust Observability
A log line is a structured event with named fields, and a library never installs
a subscriber. This skill governs how Rust code reports what it is doing; what
an error type contains is /rust-errors, and span behaviour across cancellation
is /async-rust.
A log line is an event, not a sentence
The core move: fields stay fields.
error!(user_id, %path, "config load failed") is queryable — user_id and
path are named columns. The interpolated form,
error!("config load failed for user {user_id} at {path}"), is a string
someone will later write a regex against. The difference shows up the first
time somebody needs "all failures for one user" — the moment logging either
pays for itself or does not.
The three layers, and which to use
println! writes to stdout with no level, no filter, and no structure; it
belongs in a CLI producing output the user asked for, never in a library.
log is the older facade, right when the dependency budget is tight.
tracing is the default here: spans carry context across .await points,
which is the problem async code actually has.
Naming events
component.operation.state — config.load.failed,
pool.connection.acquired. A consistent scheme is what makes a dashboard
possible; ad-hoc English messages are what make it impossible. Message
templates with placeholder syntax are one implementation of the field idea,
not the idea itself — a codebase already on templates is fine.
Spans
#[tracing::instrument] on a function makes every event inside it inherit the
request context; skip keeps large or secret arguments out of the fields.
The rule: a span is a unit of work with a beginning and an end; an event is a
point in time.
Levels and filtering
error!— someone should look at this.warn!— something went wrong and the code handled it.info!— lifecycle events a reader wants without a bug.debug!/trace!— developer detail, off in production.
The boundary that matters is error!: because it means someone should look, a
handled and expected failure is warn! or debug! at most. EnvFilter
gives per-module control, and in a library, filtering is the whole story:
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.
- 5d ago First seen · 123 lines · 85 tokens per session scan A 91a1a72e8b2f
rust-observability is a skill published in the GitHub repository rewrite-rs/skills (1 stars, last pushed 20d ago), licensed BSD-3-Clause. It adds 85 tokens to every session and 1,239 once invoked, about $0.0004 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-08-31.
Other skills, from other repositories
design-patterns
Rust design patterns for RTK. Newtype, Builder, RAII, Trait Objects, State Machine. Applied to CLI filter modules. Use when designing new modules or refactoring existing ones.
tdd-rust
TDD workflow for RTK filter development. Red-Green-Refactor with Rust idioms. Real fixtures, token savings assertions, snapshot tests with insta. Auto-triggers on new filter implementation.
code-simplifier
Review RTK Rust code for idiomatic simplification. Detects over-engineering, unnecessary allocations, verbose patterns. Applies Rust idioms without changing behavior.
rtk-tdd
Enforces TDD (Red-Green-Refactor) for Rust development. Auto-triggers on implementation, testing, refactoring, and bug fixing tasks. Provides Rust-idiomatic testing patterns with anyhow/thiserror, cfg(test), and Arrange-Act-Assert workflow.
polars
High-performance DataFrame library for Python ETL, analytics, and pandas migration. Use for expression-based data manipulation with lazy query optimization, parallel execution, streaming out-of-core processing, Arrow interoperability, and optional GPU execution.
rust-engineer
Writes, reviews, and debugs idiomatic Rust code with memory safety and zero-cost abstractions. Implements ownership patterns, manages lifetimes, designs trait hierarchies, builds async applications with tokio, and structures error handling with Result/Option. Use when building Rust applications, solving ownership or…