Observability logo

Observability

Community
nahid-sparktales
observability

Instrument a service so the questions asked during an incident are answerable from data already being collected — rate, errors, latency distribution and saturation per route, structured events carrying a correlation id that survives process and queue boundaries, and alerts on symptoms users feel. Use before a service or a new critical path goes to production, after an incident that ended in "we had no data for that", or when adding a dependency, queue or job whose failure would be silent. Not for fighting a live outage (incident-response), not for profiling a known-slow path (performance-profiling), and not for tracing agent or LLM runs (llm-observability).

Overview

Publishernahid-sparktales
Repositoryagent-dispatcher
Skill nameobservability
Stars
58
Forks
5
Bundled files
1
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by nahid-sparktales on GitHub. Read the source before you install it.

Installation

Install the Observability AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/nahid-sparktales/agent-dispatcher/tree/main/skills/devops/observability
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/nahid-sparktales/agent-dispatcher.git /tmp/agent-dispatcher
mkdir -p .claude/skills
cp -r /tmp/agent-dispatcher/skills/devops/observability .claude/skills/observability
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Observability in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Observability on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Observability is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Observability

Telemetry is written before the incident and read during it. A dashboard nobody had a question for is a screensaver; a log line nobody can correlate is a receipt for an event you cannot find.

When this fires

A service is about to carry real traffic, a new critical path is added, or a review asks how a failure here would be noticed. It fires hardest immediately after an incident where the answer was not in the data — that is the only moment the gap is precisely known.

It does not fire for a live outage (mitigate first), for a slow path you can already reproduce and measure, or for LLM/agent run traces.

Procedure

  1. Write the questions down first. "Is it up, is it wrong, is it slow, which dependency, which deploy, which tenant." Each signal you add answers a named question. Instrumentation added without one becomes cost and noise that later gets sampled away.
  2. Cover every request path with four numbers: request rate, error rate, duration distribution, and saturation of whichever resource is actually constrained (connections, workers, memory, queue depth). Per route, job and consumer — a global error rate hides one broken endpoint completely.
  3. Emit structured events, not prose. One event per unit of work, with stable field names: timestamp, service, version, environment, correlation id, route or job name, outcome, duration, error class. A field you can filter on beats a sentence you have to regex.
  4. Propagate one correlation id everywhere — inbound request, outbound calls, log lines, emitted messages, and the background job that consumes them. Most traces die at the queue boundary, which is exactly where the unexplained latency lives.
  5. Instrument the boundaries you do not control: database, cache, third-party APIs, queues. Record attempt, outcome, duration and retry count separately from the caller's total. Use the tracing library the project already depends on rather than inventing a span format, and check its current API instead of recalling it.
  6. Record distributions, not averages. Keep p50/p95/p99 plus count. Percentiles cannot be recovered from a mean after the fact, and the tail is what the complaint is about.
  7. Bound label cardinality deliberately. User id, email, session, full URL and raw paths containing ids do not belong in metric labels — they belong in logs and traces. Write the allowed label values per metric; an unbounded label is the usual cause of a telemetry bill.
  8. Redact at the boundary, before anything leaves the process. Decide per field: kept, hashed, truncated, dropped. Authorization headers, cookies, tokens, request bodies and payment data are dropped. Exporting telemetry to a third-party backend is a data-export decision — raise it, do not enable it as a default.
  9. Separate liveness, readiness and dependency health. A check that returns 200 because the process is alive, while its database is unreachable, teaches the load balancer to keep sending traffic to a broken instance.
  10. Instrument the silent failures by name: retries, timeouts, queue depth and age, dead letters, dropped messages, circuit-breaker state, cache hit rate, job lag, clock skew. Nothing pages when a backlog grows unless something counts it.
  11. Carry version and deploy identity in the telemetry so "which release" is answerable by filtering rather than by asking in chat.
  12. Alert on symptoms users feel — error rate, latency against the stated objective, queue age — not on causes like CPU. Each alert names the first thing the responder should do and links the query behind it. An alert nobody can act on gets muted, and the mute outlives the reason.
  13. Propose thresholds; do not arm them. Creating alert rules, dashboards, retention or sampling policy changes shared production configuration and usually costs money. Write the rule and the query, then stop and ask before creating anything in the account.
  14. Drill it before you need it. In a non-production environment force an error, a dependency timeout and a slow request, then answer the step-1 questions using only the queries and dashboards. Every question you could not answer is the gap — fix it now, not at 3am.

Checklist

  • The questions this telemetry answers are written down
  • Rate, errors, duration distribution and saturation exist per route and per job
  • Events are structured with stable field names, including version and environment
  • A correlation id crosses process, HTTP and queue boundaries end to end
  • External calls and retries are timed separately from the caller
  • Percentiles recorded, not averages
  • Metric labels bounded; no user-level identifiers in label sets
  • Redaction decided per field; third-party export raised rather than assumed
  • Queue age, retries, timeouts and dead letters are counted
  • Alerts are symptom-based and each links its query and first action
  • The failure drill was run and the unanswered questions listed

Failure handling

  • All signals green, users complaining — you are measuring the wrong point. Move measurement closer to what the user experiences, past the load balancer, CDN and client.
  • Telemetry cost spiked — look for an unbounded label or a debug-level log left on in production before touching sampling.
  • Trace stops halfway — context is not propagating across an async, queue or thread boundary. Fix the propagation; a partial trace invites a confident wrong conclusion.
  • Nothing was recorded for the window that mattered — sampling or retention dropped it. Say that plainly. Do not reconstruct the window from what seems likely.
  • No telemetry backend available — instrument to structured local logs with the same field names and say so. Local output is not evidence about production behaviour.

Evidence to report

Name what was instrumented (code emitting signals), what was observed (a real event or query result you read back), and what remains untested — these are different claims. Quote one emitted event with its real field names, and the query that returns it. Give the drill result as a list of the step-1 questions with answered / not answered against each. List alerts proposed separately from any created, and who approved the ones created. Code that compiles but has not been seen to emit anything is instrumented, not verified.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Observability AI skill do?

Instrument a service so the questions asked during an incident are answerable from data already being collected — rate, errors, latency distribution and saturation per route, structured events carrying a correlation id that survives process and queue boundaries, and alerts on symptoms users feel. Use before a service or a new critical path goes to production, after an incident that ended in "we had no data for that", or when adding a dependency, queue or job whose failure would be silent. Not for fighting a live outage (incident-response), not for profiling a known-slow path (performance-pr...

Why use Observability on TypingMind?

Because you install it once and use it with any model. Observability is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Observability in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/nahid-sparktales/agent-dispatcher/tree/main/skills/devops/observability. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Observability?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Observability?

As many as you like. As long as a model supports skills, you can use Observability with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Observability AI skill free?

Yes. It is published on GitHub by nahid-sparktales under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇