observability-engineering
Skill1 starsChanged 18 days agoApache-2.0View on GitHub
Engineering practice: Observability — Structured logs, metrics and traces tied to user-facing objectives, with alerts that page only when users are affected. Use in any language or framework whenever this practice applies, and when reviewing work that should follow it.
- Reads credentials
- Sends data out
4 other projects use a version of this.
Adopted by
Most recently taken up by
- nledford/engineering-review-boardtheir own version, first seen Nov 3, 2026
- rogue-dev-studio/ai-agents-roguetheir own version, first seen Nov 1, 2026
- JPeetz/agent-skillstheir own version, first seen Oct 28, 2026
- weirdgme/Claude-code-infrastructure-showcasetheir own version, first seen Nov 3, 2025
Other versions4 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 4
- JPeetz/agent-skills★ 14same name
- nledford/engineering-review-board★ 11same name
- weirdgme/Claude-code-infrastructure-showcase★ 4same name
- rogue-dev-studio/ai-agents-rogue★ 2same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository182 other files it gives its agents.
- skills/accessibility-audit-engineering/AGENTS.mdAGENTS.md
- skills/angular-app-engineering/AGENTS.mdAGENTS.md
- skills/aspnet-core-api-engineering/AGENTS.mdAGENTS.md
- skills/chrome-extension-engineering/AGENTS.mdAGENTS.md
- skills/ci-cd-pipelines-engineering/AGENTS.mdAGENTS.md
- skills/code-review-engineering/AGENTS.mdAGENTS.md
- skills/compose-android-app-engineering/AGENTS.mdAGENTS.md
- skills/context-engineering-engineering/AGENTS.mdAGENTS.md
- skills/database-migrations-engineering/AGENTS.mdAGENTS.md
- skills/dbt-analytics-engineering/AGENTS.mdAGENTS.md
- skills/dependency-supply-chain-engineering/AGENTS.mdAGENTS.md
- skills/deprecation-and-removal-engineering/AGENTS.mdAGENTS.md
- skills/design-tokens-to-code-engineering/AGENTS.mdAGENTS.md
- skills/django-app-engineering/AGENTS.mdAGENTS.md
- skills/end-to-end-testing-engineering/AGENTS.mdAGENTS.md
- skills/expo-react-native-app-engineering/AGENTS.mdAGENTS.md
- skills/fastapi-service-engineering/AGENTS.mdAGENTS.md
- skills/fastify-api-engineering/AGENTS.mdAGENTS.md
- skills/feature-flags-engineering/AGENTS.mdAGENTS.md
- skills/flutter-app-engineering/AGENTS.mdAGENTS.md
- skills/framework-upgrades-engineering/AGENTS.mdAGENTS.md
- skills/git-workflow-engineering/AGENTS.mdAGENTS.md
- skills/go-http-service-engineering/AGENTS.mdAGENTS.md
- skills/graphql-api-engineering/AGENTS.mdAGENTS.md
- skills/incident-response-engineering/AGENTS.mdAGENTS.md
- skills/incremental-implementation-engineering/AGENTS.mdAGENTS.md
- skills/internationalisation-engineering/AGENTS.mdAGENTS.md
- skills/kubernetes-helm-engineering/AGENTS.mdAGENTS.md
- skills/laravel-app-engineering/AGENTS.mdAGENTS.md
- skills/launch-readiness-engineering/AGENTS.mdAGENTS.md
- skills/llm-features-and-evals-engineering/AGENTS.mdAGENTS.md
- skills/marketing-site-engineering/AGENTS.mdAGENTS.md
- skills/nestjs-service-engineering/AGENTS.mdAGENTS.md
- skills/nextjs-app-engineering/AGENTS.mdAGENTS.md
- skills/nuxt-app-engineering/AGENTS.mdAGENTS.md
- skills/observability-engineering/AGENTS.mdAGENTS.md
- skills/privacy-by-design-engineering/AGENTS.mdAGENTS.md
- skills/python-ml-service-engineering/AGENTS.mdAGENTS.md
- skills/rails-app-engineering/AGENTS.mdAGENTS.md
- skills/react-web-app-engineering/AGENTS.mdAGENTS.md
- skills/release-and-versioning-engineering/AGENTS.mdAGENTS.md
- skills/requirements-interview-engineering/AGENTS.mdAGENTS.md
- skills/rest-api-design-engineering/AGENTS.mdAGENTS.md
- skills/rust-axum-service-engineering/AGENTS.mdAGENTS.md
- skills/rust-cli-tool-engineering/AGENTS.mdAGENTS.md
- skills/safe-refactoring-engineering/AGENTS.mdAGENTS.md
- skills/secure-code-review-engineering/AGENTS.mdAGENTS.md
- skills/source-grounded-development-engineering/AGENTS.mdAGENTS.md
- skills/spec-before-code-engineering/AGENTS.mdAGENTS.md
- skills/spec-driven-development-engineering/AGENTS.mdAGENTS.md
- skills/spring-boot-service-engineering/AGENTS.mdAGENTS.md
- skills/sveltekit-app-engineering/AGENTS.mdAGENTS.md
- skills/swiftui-ios-app-engineering/AGENTS.mdAGENTS.md
- skills/systematic-debugging-engineering/AGENTS.mdAGENTS.md
- skills/task-breakdown-engineering/AGENTS.mdAGENTS.md
- skills/tauri-desktop-app-engineering/AGENTS.mdAGENTS.md
- skills/technical-documentation-engineering/AGENTS.mdAGENTS.md
- skills/terraform-infrastructure-engineering/AGENTS.mdAGENTS.md
- skills/test-first-development-engineering/AGENTS.mdAGENTS.md
- skills/threat-modelling-engineering/AGENTS.mdAGENTS.md
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
5 rules. 0 are common, 5 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
5
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 14
Use when building or operating any service that runs in production.
- Distinctive: line 36
Never log secrets, tokens, passwords, full card numbers or raw request bodies.
- Distinctive: line 43
Use histograms for latency and alert on percentiles that reflect the SLO
- Distinctive: line 45
Test alerts by triggering them in staging before relying on them
- Distinctive: line 50
Leave debug-level logging on in production by default
“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Observability
Structured logs, metrics and traces tied to user-facing objectives, with alerts that page only when users are affected.
Use when building or operating any service that runs in production. It prevents finding outages from customer reports, alert floods that train people to ignore pages, and debugging sessions that start with no data.
How to do it
- Name the user journeys and their objectives — For each critical journey (sign in, checkout, search) define a service level indicator such as the share of requests that succeed under 500ms, and an objective such as 99.5% over 28 days.
- Instrument the four signals at every service edge — Record request rate, error rate, latency distribution (histograms, not averages) and saturation (queue depth, pool usage, memory) for inbound and outbound calls.
- Emit structured logs — Log JSON with timestamp, level, service, version, trace_id and an event name. Log decisions and failures, not every line executed. Strip personal data and secrets before writing.
- Propagate trace context — Use OpenTelemetry SDKs, accept and forward the W3C traceparent header, and add spans around database queries, external calls and queue handoffs.
- Keep metric labels bounded — Label by route template, method, status class and region. Never label by user ID, request ID or raw URL; put high-cardinality detail in traces and logs.
- Alert on objectives, not causes — Page on error-budget burn rate (fast and slow windows). Route cause-level signals such as high CPU or a full disk to tickets or dashboards unless they directly threaten users.
- Attach a runbook to every page — Each paging alert links a runbook: what it means, the dashboard to open, first checks, how to mitigate, who to escalate to.
- Review alerts monthly — For every page in the last month, record whether it was actionable. Delete or demote any alert that fired without needing a human.
Checklist
- Each critical journey has an SLI and an SLO written down
- Every service exports rate, errors, latency histograms and saturation
- Logs are structured JSON and include trace_id and service version
- Traces cross service boundaries without breaking
- Every paging alert is tied to user impact and links a runbook
- No metric uses an unbounded label
- Deploys are marked on dashboards so changes line up with graphs
Rules
- Never log secrets, tokens, passwords, full card numbers or raw request bodies; redact at the logger, not at the call site. (Logs are copied widely and kept long; one leaked token in a log is a breach.)
- Sample traces by rule (keep all errors and slow requests, sample the rest) and set retention per signal. (Keeps cost predictable without losing the data you need during incidents.)
- Record an error once, at the boundary that handles it, with the cause chain attached. (Logging the same failure at every layer multiplies noise and hides the origin.)
- Metric and span names follow OpenTelemetry semantic conventions where one exists. (Dashboards and queries work across services without per-team translation.)
- Instrumentation is part of the feature: new endpoints ship with metrics, spans and a dashboard panel. (Adding telemetry during an outage is too late.)
Do
- Use histograms for latency and alert on percentiles that reflect the SLO
- Include service version in every signal so regressions point at a release
- Test alerts by triggering them in staging before relying on them
Don't
- Page someone for a symptom that heals itself within minutes
- Build dashboards of averages that hide the slowest users
- Leave debug-level logging on in production by default
Quality gates
| Gate | Tool | Threshold | When |
| Paging alert quality | Monthly alert review | ≥ 80% of pages were actionable; every page has a runbook link | Monthly |
| Instrumentation present | Pull request checklist + telemetry smoke test in staging | New routes emit request metrics and spans visible in staging | Every pull request adding a route or dependency |
Workflow
Review
- Reviewer checks new log lines for personal data and new metrics for unbounded labels
Definition of done
- Dashboard panel and, for critical paths, SLO coverage exist for the new behaviour
Examples
Span and metric around an outbound call (src/payments/client.ts)
import { trace, metrics, SpanStatusCode } from '@opentelemetry/api';
const tracer = trace.getTracer('payments');
const latency = metrics.getMeter('payments').createHistogram('payments.charge.duration', { unit: 'ms' });
export async function charge(orderId: string, amountCents: number) {
return tracer.startActiveSpan('payments.charge', async (span) => {
const start = performance.now();
let outcome = 'error';
span.setAttribute('order.amount_cents', amountCents);
try {
const res = await fetch(`${process.env.PAYMENTS_URL}/charges`, {
method: 'POST',
body: JSON.stringify({ orderId, amountCents }),
});
span.setAttribute('http.response.status_code', res.status);
outcome = res.ok ? 'success' : 'failure';
return res;
} catch (err) {
span.recordException(err as Error);
span.setStatus({ code: SpanStatusCode.ERROR });
throw err;
} finally {
latency.record(performance.now() - start, { outcome });
span.end();
}
});
}Further reading
- OpenTelemetry documentation — SDKs, context propagation and semantic conventions.
- Site Reliability Engineering (book) — Chapters on service level objectives and monitoring distributed systems.
- obra/superpowers — Agent workflow skills, including systematic debugging that relies on good telemetry.
Written for Celestial; the sources above inspired it.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

