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/eliasoulkadi/shokunin/error-handlernpx skills add EliasOulkadi/shokunin --skill error-handlergit clone --depth 1 https://github.com/EliasOulkadi/shokuninWrote 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/eliasoulkadi/shokunin/error-handler)<a href="https://agentmods.dev/skills/eliasoulkadi/shokunin/error-handler"><img src="https://agentmods.dev/badge/skills/eliasoulkadi/shokunin/error-handler.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 | $0.00125 | $0.03768 |
| Opus 5 | $0.00063 | $0.01884 |
| Sonnet 5 | $0.00025 | $0.00754 |
| Haiku 4.5 | $0.00013 | $0.00377 |
Grade A, and why
error-handler scanned grade A with 1 finding 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.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
| OpenTelemetry SDK not exporting traces | Exporter endpoint unreachable or `OTEL_EXPORTER_OTLP_ENDPOINT` not set | Verify endpoint with `curl $OTEL_EXPORTER_OTLP_ENDPOINT/v1/traces`. Set env var before SDK initializatio How it starts
The opening of the file, as written. The whole thing — 378 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Error Handler
Observability that makes debugging fast and production predictable. Based on Google SRE (Site Reliability Engineering), OpenTelemetry semantic conventions, and production patterns from Sentry, Honeycomb, and Datadog.
Sub-Commands
| Command | Description |
|---|---|
setup |
Set up OpenTelemetry SDK + instrumentation for a service |
classify |
Classify errors by HTTP status, severity, and alert priority |
recover |
Implement recovery patterns: retry with jitter, circuit breaker, timeout |
slo |
Define error budget, SLO, and burn rate alerts |
audit |
Audit existing error handling against best practices |
The 3 Signals (OpenTelemetry)
| Signal | Purpose | Example |
|---|---|---|
| Traces | Follow a request across services | User request ? API Gateway ? Auth ? DB |
| Metrics | Aggregate measurements over time | Request count, error rate, latency p50/p95/p99 |
| Logs | Discrete events with context | "User login failed: invalid credentials for user_abc123" |
All three signals share trace_id + span_id for correlation.
Workflow
Step 1: Classify errors
| Category | HTTP | Severity | Log level | SLO impact | Alert? |
|---|---|---|---|---|---|
| Validation (user error) | 400 | Low | info | No | No |
| Authentication | 401 | Medium | warn | No | Only if spike detected |
| Authorization | 403 | Medium | warn | No | Only if spike detected |
| Not Found | 404 | Low | debug | No | No |
| Conflict | 409 | Medium | info | No | No |
| Rate Limit | 429 | Low | warn | No | No |
| Internal | 500 | High | error | Yes | Yes |
| Downstream failure | 502/503 | High | error | Yes | Yes |
| Timeout | 504 | High | error | Yes | Yes |
Step 2: Set up OpenTelemetry (exact configuration)
import { NodeSDK } from '@opentelemetry/sdk-node'
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'
import { Resource } from '@opentelemetry/resources'
import { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions'
const sdk = new NodeSDK({
resource: new Resource({
[ATTR_SERVICE_NAME]: 'api-service',
'deployment.environment': process.env.NODE_ENV,
}),
traceExporter: new OTLPTraceExporter({
url: process.env.OTEL_EXPORTER_OTLP_ENDPOINT,
}),
instrumentations: [
new HttpInstrumentation(),
new ExpressInstrumentation(),
new PgInstrumentation(),
new RedisInstrumentation(),
],
})
sdk.start()
process.on('SIGTERM', async () => {
await sdk.shutdown()
})
What ships with it
4 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.
- 5d ago First seen · 378 lines · 125 tokens per session scan A 36d7f7a59251
error-handler is a skill published in the GitHub repository EliasOulkadi/shokunin (113 stars, last pushed 1mo ago), licensed MIT. It adds 125 tokens to every session and 3,768 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
memory-protocol
Universal protocol for total-agent-memory MCP server. Activate at session start, before any non-trivial task, after every significant action, on errors, and at session end. Relevant whenever the user mentions: memory, recall, past context, decisions history, conventions, lessons learned, "продолжаем", "сохранись"…
memory
Activate this skill when starting a new session, beginning a new task, saving knowledge, recalling past decisions, or after completing significant work. Also activate on errors to log them for pattern analysis. Relevant when the user asks about memory, past context, lessons learned, decisions history, project…
design-explore
Explore 2-4 design options with pros/cons/criteria matrix before writing code. Use for L3-L4 tasks (refactors, architecture, new subsystems). Pairs with savedecision MCP tool.
mnema
Use the Mnema MCP server to give the AI long-term, searchable memory. Use it whenever the user shares durable facts, preferences, decisions, or context worth recalling in future sessions. Mnema stores memories in a vector database and recalls them with semantic + hybrid search, with decay scoring and summarization so…
dejavu-rules
Manage dejavu rules manually. Use when user says "add a rule", "remember this", "edit rule", "remove rule", "이거 기억해", "룰 추가해", or wants to manage CLAUDE.md rules through conversation.
dejavu
Review and manage learned antipattern rules. Use when Claude should review its past mistakes, apply learned rules to CLAUDE.md, or check rule effectiveness. Triggers on "/dejavu", "review rules", "what did you learn".