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 makifbaysal/tasktrooper --skill rust-axum-servicegit clone --depth 1 https://github.com/makifbaysal/tasktrooperWrote 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/makifbaysal/tasktrooper/rust-axum-service)<a href="https://agentmods.dev/skills/makifbaysal/tasktrooper/rust-axum-service"><img src="https://agentmods.dev/badge/skills/makifbaysal/tasktrooper/rust-axum-service/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/makifbaysal/tasktrooper/rust-axum-service"><img src="https://agentmods.dev/badge/skills/makifbaysal/tasktrooper/rust-axum-service.svg" alt="Reviewed on agentmods" width="80" 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.00057 | $0.01457 |
| Opus 5.5 | $0.00023 | $0.00583 |
| Sonnet 5.5 | $0.00011 | $0.00291 |
| Haiku 4.5 | $0.00006 | $0.00146 |
Grade A, and why
rust-axum-service 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 3d 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 — 79 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Rust Service (axum on tokio)
Overview
Rust moves a class of bugs to compile time, and leaves two to you: panics on a request path and blocking the async runtime. Most of the rules below are about those two.
Core principle: the repository's framework, error crates, database crate and workspace layout win. Handlers stay thin; the domain is plain Rust that compiles without the web framework.
Layers
| Layer | Responsibility | axum surface |
|---|---|---|
| Router / handler | Extract and validate input, call one service, map the result | Router::new().route(...), extractors (State, Path, Json), impl IntoResponse |
| Service | Use-case orchestration and business rules | a struct holding its ports, async fn methods |
| Domain | Types and invariants: newtypes whose constructors validate | plain structs and enums, thiserror error enum |
| Adapter | Database, outbound HTTP, queues | a type implementing the port trait (sqlx, reqwest) |
In a workspace the domain is often its own crate; a crate that does not depend on axum cannot leak it.
Patterns
- Toolchain:
rust-toolchain.tomlwhen present; edition fromCargo.toml(2024 for a new crate). CommitCargo.lockfor a binary. Add crates withcargo add, the version from crates.io, not memory. - No panics on a request path: no
unwrap(),expect(), indexing that can go out of bounds, orascasts that truncate on input-derived values. Use?with a typed error.expectis for startup invariants with a message that says why it cannot fail. - Errors: a domain error enum with
thiserror; an application error that implementsIntoResponseand maps each variant to 400/404/409 in the repository's problem shape, logging the source of a 500 and never returning it.anyhowbelongs inmainand scripts, not in a library or a handler's signature. - Parse, don't validate: request DTOs
#[derive(Deserialize)](with#[serde(deny_unknown_fields)]where the contract is strict), converted into domain newtypes (TaskTitle::try_from(String)) whose constructors enforce the invariant. A malformed JSON body is already a 4xx throughJson's rejection — keep that rejection in the same error shape. - State: one
AppState(Clone, cheap:Arcs and pools inside) passed with.with_state(state)and taken byState<AppState>; no global mutable statics. - Never block the runtime: blocking I/O or CPU-heavy work goes to
tokio::task::spawn_blocking; nostd::thread::sleepin async code (tokio::time::sleep); never hold astd::sync::Mutexguard across.await— restructure, or usetokio::sync::Mutexwhen the lock must span an await. - Timeouts and limits:
tower_httplayers —TimeoutLayer,RequestBodyLimitLayer,TraceLayer,CorsLayerconfigured, notpermissive()in production. Outboundreqwestclients built once with a timeout and shared. - Database: sqlx with bound parameters (
query!/query_as!checked at compile time; keep the offline.sqlxdata committed withcargo sqlx preparewhen the repository uses offline mode) or the repository's diesel / sea-orm. Neverformat!a SQL string with input. Migrations withsqlx migrate add <name>(reversible when the repository's are) applied bysqlx::migrate!()or the deploy step; postgres-migrations covers safe DDL. - Logging:
tracingwith structured fields and#[tracing::instrument(skip(state, body))]on handlers and service methods — skip anything secret or large; JSON output fromtracing-subscriberwhere the repository logs JSON. - Graceful shutdown:
axum::serve(listener, app).with_graceful_shutdown(signal)on SIGTERM / Ctrl-C. unsafe: none in a feature task. If a dependency forces it, say so in a task comment; the security agent reviews everyunsafeblock.
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.
- 3d ago First seen · 79 lines · 57 tokens per session scan A b7b5f2c1100d
rust-axum-service is a skill published in the GitHub repository makifbaysal/tasktrooper (117 stars, last pushed yesterday), licensed Apache-2.0. It adds 57 tokens to every session and 1,457 once invoked, about $0.0002 per session on Opus 5.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-10-17.
Other skills, from other repositories
rust-systems
Build and upgrade Rust services, CLI and systems components with explicit error, async and resource contracts. Use when working on Rust ownership, concurrency, serialization or unsafe boundaries; preserve MSRV and edition compatibility unless their migration is requested.
desktop-backend-tauri
Tauri 2.x Rust command patterns, state management, error handling, events, channels, testing.
rust-core
Rust implementation guidance — stack-specific. Covers project structure, idiomatic patterns, ownership, error handling, testing, security, and observability for Rust backend services and CLIs. Use when the user asks about Rust-specific patterns, ownership, async with Tokio, testing strategy, or production reliability.…
performant-php
High-performance modern PHP — PHP 8.4/8.5, OPcache+JIT, FrankenPHP workers, Composer, Symfony/Laravel, PHPStan/Psalm, Pest.
performant-python
Strategies for high-performance Python systems (FastAPI, Asyncio, UVloop, Memory Optimization).
agent-crdt-synchronizer
Agent skill for crdt-synchronizer - invoke with $agent-crdt-synchronizer.