observability
Skill71 starsChanged 8 days agoApache-2.0View on GitHub
Instrument services with structured logging, Prometheus metrics, and OpenTelemetry tracing. Build Grafana dashboards, write Prometheus alerting rules, run k6 load tests, and plan infrastructure capacity.
- Installs packages
We split this skill into the rules it gives an agent
18 rules. 0 are common, 13 are distinctive, and 5 are very specific to this project.
0
Common
Most of the 62 edited versions we read keep these.
13
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 16
When invoked with no arguments, ask before proceeding:
- Distinctive: line 43
Add the three pillars — logs, metrics, traces — to a service.
- Distinctive: line 46
Ask for: language/framework, existing logging library (if any), metrics backend (Prometheus / Datadog / CloudWatch), tracing backend …
- Very specific: line 47
Add structured JSON logging with correlation IDs (Pino for Node.js, structlog for Python)
- Distinctive: line 49
Add OpenTelemetry tracing with span attributes on critical paths
- Very specific: line 51
Add /healthz and /readyz health check endpoints
- Distinctive: line 52
Document what NOT to log (passwords, tokens, PII)
- Distinctive: line 60
Create a Grafana dashboard for a service.
- Distinctive: line 66
Add threshold lines at SLO boundaries
- Distinctive: line 75
Write Prometheus alerting rules for a service.
- Very specific: line 79
Write alert expressions using rate() over 5m windows
- Very specific: line 81
Add severity label (critical / warning) and runbook annotation to every alert
- Distinctive: line 86
Every alert needs a runbook URL
- Distinctive: line 97
Write and run a k6 load test.
- Distinctive: line 100
Ask for: target endpoint, expected peak RPS, SLO thresholds (p95 latency, error rate)
- Distinctive: line 101
Write ramp-up → steady-state → ramp-down stages
- Very specific: line 103
Add check() assertions on status code and response time
- Distinctive: line 120
Add 50% headroom for spikes
“Common” is measured: kept by at least 6 in 10 of the 62 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
Set up or improve observability for a service or platform component.
Interactive Wizard (fires when no arguments are provided)
When invoked with no arguments, ask before proceeding:
Q1 — Mode?
What do you need?
1. instrument — add structured logs, Prometheus metrics, and OTel tracing to a service
2. dashboard — create a Grafana RED/USE dashboard for a service
3. alert — write Prometheus alerting rules for a service
4. slo — define SLIs, error budgets, and SLO burn-rate alerts
5. loadtest — write and run a k6 load test
6. capacity — estimate resource requirements and HPA configuration
Enter 1–6 or mode name:Q2 — Context (after mode selected):
- instrument:
What language/framework and which metrics/tracing backend (Prometheus, Datadog, Jaeger, Tempo)? - dashboard:
Service name and which signal to lead with — request-based (RED) or resource-based (USE)? - alert:
Service name and what SLIs matter most — error rate, latency, availability? - slo:
Service name, expected availability target (e.g. 99.9%), and current p95 latency baseline: - loadtest:
Target endpoint, expected peak RPS, and SLO thresholds (p95 latency, max error rate): - capacity:
Expected peak RPS, measured p99 latency at current load, and memory per pod:
Mode: instrument
Add the three pillars — logs, metrics, traces — to a service.
Steps:
- Ask for: language/framework, existing logging library (if any), metrics backend (Prometheus / Datadog / CloudWatch), tracing backend (Jaeger / Tempo / OTLP)
- Add structured JSON logging with correlation IDs (Pino for Node.js, structlog for Python)
- Instrument RED metrics:
http_requests_totalcounter,http_request_duration_secondshistogram, per route and status - Add OpenTelemetry tracing with span attributes on critical paths
- Expose
/metricsscrape endpoint (Prometheus) or configure push exporter - Add
/healthzand/readyzhealth check endpoints - Document what NOT to log (passwords, tokens, PII)
Reference: references/observability.md → Structured Logging, Prometheus Metrics, OpenTelemetry Tracing
→ Next: Run /platform-skills:observability alert to write alerting rules for the metrics just added, then /platform-skills:observability slo to wrap them in an error budget.
Mode: dashboard
Create a Grafana dashboard for a service.
Steps:
- Choose method: RED (request-based services) or USE (resource-based infrastructure)
- Define panels: request rate, error rate %, p50/p95/p99 latency, active connections, queue depth
- Set meaningful Y-axis units (req/s, ms, %)
- Add threshold lines at SLO boundaries
- Configure template variables for environment and service filtering
Reference: references/observability.md → Grafana Dashboards
→ Next: Run /platform-skills:observability slo to add SLO burn-rate alerts and an error budget panel to this dashboard.
Mode: alert
Write Prometheus alerting rules for a service.
Steps:
- Identify SLIs: error rate, latency percentiles, availability
- Write alert expressions using
rate()over 5m windows - Set
for:duration ≥ 1m to suppress transient noise - Add
severitylabel (critical / warning) andrunbookannotation to every alert - Validate: no alert fires on healthy baseline, alert fires on injected fault
Alert design rules:
- Page on symptoms (error rate, latency), not causes (CPU %)
- Every alert needs a runbook URL
- Derive SLO burn-rate alerts from error budget, not raw thresholds
Reference: references/observability.md → Alerting Rules
Security posture and CVE alerts from Kubescape's exporter (kubescape_controls_total_*, kubescape_vulnerabilities_*; failing scans show only in the scanner's logs, not in these metrics) → /platform-skills:kubescape-operator metrics.
→ Next: Run /platform-skills:observability slo to promote these symptom alerts to proper SLO burn-rate alerts backed by an error budget.
Mode: loadtest
Write and run a k6 load test.
Steps:
- Ask for: target endpoint, expected peak RPS, SLO thresholds (p95 latency, error rate)
- Write ramp-up → steady-state → ramp-down stages
- Set
thresholdsmatching the SLO - Add
check()assertions on status code and response time
Version check:
k6 --version— must be ≥ 1.0.0. k6 v0.x and v1.x have incompatible JavaScript API syntax. Upgrade:brew install k6(macOS) or see https://grafana.com/docs/k6/latest/set-up/install-k6/ for other platforms.
- Run:
k6 run --out json=results.json load-test.js - Interpret results: p95/p99 latency, error rate, throughput achieved vs. thresholds
Reference: references/observability.md → Load Testing
Mode: capacity
Estimate resource requirements and HPA configuration for a service.
Steps:
- Gather: expected peak RPS, measured p99 latency, memory per pod at current load
- Apply formula:
replicas = ceil((peak_rps × avg_latency_s) / target_concurrency_per_pod) - Add 50% headroom for spikes
- Generate HPA manifest with CPU utilisation target ≤ 60%
- Set resource requests to measured baseline + 20%; set memory limit; omit CPU limit unless throttling is acceptable
- Define min/max replica bounds
Reference: references/observability.md → Capacity Planning
→ Next: After sizing, run /platform-skills:observability loadtest to validate the HPA triggers correctly under synthetic load.
Mode: slo
Define SLIs, set error budgets, and generate SLO burn-rate alerts from first principles.
Steps:
- Define SLIs — identify what "good" looks like for this service:
- Availability:
sum(rate(http_requests_total{status!~"5.."}[5m])) / sum(rate(http_requests_total[5m])) - Latency:
histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m])) < 0.3 - Choose one primary SLI per service; add a secondary only if the first doesn't capture the user journey
- Availability:
- Set the SLO target — start conservative, tighten over time:
SLO: 99.9% availability over a 30-day rolling window Error budget: 0.1% = 43.2 minutes per 30 days - Generate burn-rate alerts — multiwindow, multi-burn-rate (Google SRE Book approach):
# Fast burn — consumes 5% of monthly budget in 1h → page immediately - alert: SLOFastBurn expr: | ( rate(http_requests_total{status=~"5.."}[1h]) / rate(http_requests_total[1h]) ) > (14.4 * 0.001) # 14.4× burn rate exhausts budget in ~2 days for: 2m labels: severity: critical annotations: summary: "Fast error budget burn on {{ $labels.service }}" runbook: "https://runbooks.internal/slo-fast-burn" # Slow burn — consumes 10% of monthly budget in 6h → ticket - alert: SLOSlowBurn expr: | ( rate(http_requests_total{status=~"5.."}[6h]) / rate(http_requests_total[6h]) ) > (6 * 0.001) # 6× burn rate exhausts budget in ~5 days for: 15m labels: severity: warning annotations: summary: "Slow error budget burn on {{ $labels.service }}" runbook: "https://runbooks.internal/slo-slow-burn" - Track remaining error budget — add to the Grafana dashboard:
# Error budget remaining (%) over 30d 1 - ( sum(increase(http_requests_total{status=~"5.."}[30d])) / sum(increase(http_requests_total[30d])) ) / 0.001 # divide by error budget fraction (1 - SLO target) - Error budget policy — state in writing what happens when the budget is depleted:
50% remaining → normal feature velocity
- 10–50% remaining → reliability improvements prioritised alongside features
- <10% remaining → feature freeze; only reliability work until budget recovers
Key rules:
- Alert on burn rate, not on raw error count — burn rate is predictive
- The
for:on fast burn should be short (1–2m); slow burn needs longer (10–15m) - Latency SLOs need histogram buckets aligned to the SLO threshold at chart creation time — you cannot retroactively add buckets
→ Next: Run /platform-skills:observability alert to add symptom-based alerts alongside SLO burn-rate alerts.
Common mistakes
- Alerting on CPU% or memory% — these are causes, not symptoms. Alert on error rate and latency; let CPU/memory be dashboard panels only
- Missing
for:duration — without it, a single bad scrape triggers a page. Minimum 1m for slow alerts, 2m for fast SLO burn - Not defining SLOs before writing alerts — without an SLO, you don't know what threshold to alert at. Define the SLO first (
slomode), then write alerts - Histogram bucket boundaries misaligned with SLO — if your SLO is p95 < 300ms and you have no bucket at 0.3s,
histogram_quantileinterpolates inaccurately. Setlevalues at 0.1, 0.25, 0.3, 0.5, 1.0, 2.5 - Labelling with high-cardinality dimensions — never use
user_id,session_id, orrequest_idas Prometheus label values. Cardinality explodes memory usage - Alert fatigue from symptom + cause alerts — if you alert on both "error rate high" and "database connection pool exhausted", both fire simultaneously for the same incident. Alert on the symptom; include cause investigation in the runbook
Other versions79 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 79
- BuilderIO/agent-native★ 7.6ksame name
- openai/plugins★ 7.4ksame name
- brianlovin/briOS★ 2.3ksame name
- lablup/backend.ai★ 675same name
- DevelopersGlobal/ai-agent-skills★ 216same name
- kid-sid/claude-spellbook★ 190same name
- YougLin-dev/Aha-Loop★ 181same name
- proyecto26/system-design-skills★ 118same name
- TheBeardedBearSAS/claude-craft★ 108same name
- AsiaOstrich/universal-dev-standards★ 82same name
69 more not listed
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.
Used alongsideProjects with it also use documentation-site, databricks and 8 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
fmindSkilldocumentation-site
Build Zensical docs sites: navigation, API docs, Pages, MkDocs/Hugo migration.
Also in 3 projects that use this
DatabricksSkilldatabricks
Databricks CLI operations: auth, profiles, data exploration, and bundles. Contains up-to-date guidelines for Databricks-related CLI tasks.
Also in 3 projects that use this
cashew-labsSkillcli-development
Design and implement command-line interfaces with subcommand-scoped help, actionable success output, and debuggable failure output. Use when creating or modifying CLI commands, argument parsing, help and usage text, exit codes, or command UX for humans and agents.
Also in 4 projects that use this
MicrosoftSkilldata-modeling
Use when the app needs to store or read data — records, a database, entities, CRUD, lists, "save/remember X", or per-user data with row-level security. This app's data layer is Rayfin's: you declare entities as TypeScript classes with decorators in rayfin/data/, register them in the schema, and read/write them through the typed rayfin-client. Covers: defining an @entity, field decorators, registering it, per-entity access with @role, owner-only row-level security, and the client query/mutation API. Triggers: data, database, model, entity, schema, table, record, CRUD, create, read, update, delete, list, store, save, persist, per-user, row-level security, RLS, access control, ownership.
Also in 6 projects that use this
korchard333Skilldata-migration
Data migration to and within Dataverse. Use when: data migration, data import, bulk load, CSV import, legacy CRM migration, data quality, deduplication, staging tables, KingswaySoft, Azure Data Factory, dataflows, Web API bulk, entity mapping.
Also in 5 projects that use this
YepAPISkillbackground-jobs
Queue workers with BullMQ/Inngest/Trigger.dev, job retries, dead letter queues, concurrency.
Also in 3 projects that use this
In this repository59 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- .github/copilot-instructions.mdCopilot instructions
- .cursor/rules/keda.mdcCursor rule
- .cursor/rules/kubernetes.mdcCursor rule
- .cursor/rules/platform-skills.mdcCursor rule
- .cursor/rules/terraform.mdcCursor rule
- code-reviewSkill
- platform-skillsSkill
- ai-governanceSkill
- awesome-docsSkill
- aws-profileSkill
- awsSkill
- azureSkill
- backup-drSkill
- chaosSkill
- checkovSkill
- cluster-upgradeSkill
- commitSkill
- complianceSkill
- composite-actionsSkill
- datadogSkill
- debugSkill
- documentSkill
- doraSkill
- dynatraceSkill
- finopsSkill
- fluxcdSkill
- gateway-apiSkill
- github-actionsSkill
- gitopsSkill
- helmchartSkill
- karpenterSkill
- kedaSkill
- kingfisherSkill
- kubernetesSkill
- kubescape-operatorSkill
- kubescapeSkill
- kyvernoSkill
- linkerdSkill
- linuxSkill
- mcpSkill
- opaSkill
- openshiftSkill
- platform-skillsSkill
- preflightSkill
- productSkill
- progressive-deliverySkill
- pr-reviewSkill
- renovateSkill
- runtime-securitySkill
- secretsSkill
- self-improveSkill
- setup-agentsSkill
- supply-chainSkill
- terraformSkill
- token-optimizerSkill
- triageSkill
- trivySkill
- zizmorSkill
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.

