addy-observability-and-instrumentation
Instruments code so production behavior is visible and diagnosable.
Skill by TylerSimons1127
Chalk Labs
Need help deploying addy-observability-and-instrumentation?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/tylersimons1127-addy-observability-and-instrumentation
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: data
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/addy-observability-and-instrumentation
What's inside
- Skill name
addy-observability-and-instrumentation- Description
- Instruments code so production behavior is visible and diagnosable. Use when adding logging, metrics, tracing, or alerting. Use when shipping any feature that runs in production and you need evidence it works. Use when production issues are reported but you can't tell what happened from the available data.
- License
- MIT
- Instructions
- 200 lines in SKILL.md · view on GitHub
Files (2)
- SKILL.md
- observability-checklist.md · references/
SKILL.md (first lines)
# Observability and Instrumentation
## Overview
Code you can't observe is code you can't operate. Observability is the ability to answer "what is the system doing and why?" from the outside, using the telemetry the code emits. Instrumentation is not a post-launch add-on — it's written alongside the feature, the same way tests are. If a feature ships without telemetry, the first user-reported bug becomes archaeology instead of a query.
## When to Use
- Building any feature that will run in production
- Adding a new service, endpoint, background job, or external integration
- A production incident took too long to diagnose ("we couldn't tell what happened")
- Setting up or reviewing alerting rules
- Reviewing a PR that adds I/O, retries, queues, or cross-service calls
**NOT for:**
- Diagnosing a failure happening right now — use the `debugging-and-error-recovery` skill (observability is what makes that skill fast next time)
- Profiling and optimizing measured slowness — use the `performance-optimization` skill
- Launch-day monitoring checklists and rollback triggers — see the `shipping-and-launch` skill; this skill covers the instrumentation that feeds them
## Process
### 1. Define "working" before instrumenting
Telemetry without a question is noise. Before adding any instrumentation, write down 2–4 questions an on-call engineer will ask about this feature:
```
FEATURE: checkout payment retry
QUESTIONS ON-CALL WILL ASK:
1. What fraction of payments succeed on first attempt vs after retry?
2. When a payment fails permanently, why? (provider error? timeout? validation?)
3. Is the payment provider slower than usual?
→ Every signal below must help answer one of these.
```
If you can't name the questions, you're not ready to instrument — you'll log everything and learn nothing.
### 2. Pick the right signal for each question
| Signal | Answers | Cost profile | Example |
|---|---|---|---|
| **Structured log** | "What happened in this specific case?" | Per-event; grows with traffic | `payment_failed` with provider error code |
| **Metric** | "How often / how fast, in aggregate?" | Fixed per series; cheap to query | p99 latency of provider calls |
| **Trace** | "Where did time go across services?" | Per-request; usually sampled | One slow checkout, broken down by hop |
Rule of thumb: metrics tell you **that** something is wrong, traces tell you **where**, logs tell you **why**.
### 3. Structured logging
Log events, not prose. Every log line is a JSON object with a stable event name and machine-readable fields:
```typescript
// BAD: string interpolation — unqueryable, inconsistent
logger.info(`Payment ${id} failed for user ${userId} after ${n} retries`);
// GOOD: stable event name + structured fields
logger.warn({
event: 'payment_failed',
paymentId: id,
provider: 'stripe',
errorCode: err.code,
attempt: n,
}, 'payment failed');
```
**Log levels — use them consistently:**
| Level | Meaning | On-call action |
|---|---|---|
| `error` | Invariant broken; someone may need to act | Investigate |
| `warn` | Degraded but handled (retry succeeded, fallback used) | Watch for trends |
| `info` | Significant business event (order placed, job finished) | None |
| `debug` | Diagnostic detail | Off in production by default |
**Correlation IDs are mandatory.** Generate (or accept) a request ID at the system boundary and attach it to every log line, span, and outbound call. Without it, you cannot reconstruct a single request from interleaved logs:
```typescript
// Express: child logger per request, ID propagated downstream
app.use((req, res, next) => {
req.id = req.headers['x-request-id'] ?? crypto.randomUUID();
req.log = logger.child({ requestId: req.id });
res.setHeader('x-request-id', req.id);
next();
});
```
**Never log secrets, tokens, passwords, or full PII.** This is a hard rule from the `security-and-hardening` skill — telemetry pipelines are a classic data-leak path. Allowlist fields; don't log whole request bodies.
### 4. Metrics
For request-driven services, instrument **RED** on every endpoint and every external dependency: **R**ate (requests/sec), **E**rrors (failure rate), **D**uration (latency histogram, not average). For resources (queues, pools, hosts), use **USE**: **U**tilization, **S**aturation, **E**rrors.
As with tracing, the vendor-neutral path is the OpenTelemetry metrics API (same SDK and context as step 5). The example below uses Prometheus' `prom-client` — one common backend choice, not the only one; the RED/USE and cardinality rules are identical either way.
```typescript
import { Histogram } from 'prom-client';
const httpDuration = new Histogram({
name: 'http_request_duration_seconds',
help: 'HTTP request duration',
labelNames: ['method', 'route', 'status_class'], // '2xx', not '200'
buckets: [0.05, 0.1, 0.25, 0.5, 1, 2.5, 5],
});
```
**Cardinality is the failure mode.** Every unique label combination is a separate time series. Labels must come from small, fixed sets (route template, status class, provider name). Never use user IDs, raw URLs, error messages, or other unbounded values as labels — that belongs in logs and traces.
```
OK as label: route="/api/tasks/:id" status_class="5xx" provider="stripe"
NEVER a label: user_id, email, request_id, full URL, error message text
```
Track averages never, percentiles always: an average hides the 1% of users having a terrible time. Use histograms and read p50/p95/p99.
### 5. Distributed tracing
Use OpenTelemetry — it's the vendor-neutral standard, and auto-instrumentation covers HTTP, gRPC, and common DB clients with near-zero code:
```typescript
// tracing.ts — must be imported before anything elseFrom TylerSimons1127/vibe, MIT.
More from TylerSimons1127/vibe
- 0.529score
addy-idea-refine
TylerSimons1127
Refines raw ideas into sharp, actionable concepts through structured divergent and convergent thinking.
SkillBFreshness: BClaude Code +9 - 0.529score
addy-planning-and-task-breakdown
TylerSimons1127
Breaks work into ordered tasks.
SkillBFreshness: BClaude Code +9 - 0.529score
addy-incremental-implementation
TylerSimons1127
Delivers changes incrementally.
SkillBFreshness: BClaude Code +9 - 0.529score
addy-frontend-ui-engineering
TylerSimons1127
Builds production-quality, accessible, responsive user-facing UIs.
SkillBFreshness: BClaude Code +9 - 0.529score
addy-shipping-and-launch
TylerSimons1127
Prepares production launches.
SkillBFreshness: BClaude Code +9 - 0.529score
addy-security-and-hardening
TylerSimons1127
Hardens code against vulnerabilities.
SkillBFreshness: BClaude Code +9 - 0.524score
addy-git-workflow-and-versioning
TylerSimons1127
Structures git workflow practices.
SkillBFreshness: BClaude Code +9 - 0.524score
addy-interview-me
TylerSimons1127
Extracts what the user actually wants instead of what they think they should want.
SkillBFreshness: BClaude Code +9 - 0.524score
addy-api-and-interface-design
TylerSimons1127
Guides stable API and interface design.
SkillBFreshness: BClaude Code +9 - 0.504score
addy-doubt-driven-development
TylerSimons1127
Subjects every non-trivial decision to a fresh-context adversarial review before it stands.
SkillBFreshness: BClaude Code +9 - 0.504score
addy-code-review-and-quality
TylerSimons1127
Conducts multi-axis code review.
SkillBFreshness: BClaude Code +9 - 0.499score
addy-browser-testing-with-devtools
TylerSimons1127
Tests in real browsers via Chrome DevTools MCP.
SkillBFreshness: BClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Aug 21, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/TylerSimons1127/vibe
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from TylerSimons1127
- 0.529score
addy-planning-and-task-breakdown
TylerSimons1127
Breaks work into ordered tasks.
SkillBFreshness: BClaude Code +9 - 0.529score
addy-security-and-hardening
TylerSimons1127
Hardens code against vulnerabilities.
SkillBFreshness: BClaude Code +9 - 0.529score
addy-incremental-implementation
TylerSimons1127
Delivers changes incrementally.
SkillBFreshness: BClaude Code +9 - 0.529score
addy-idea-refine
TylerSimons1127
Refines raw ideas into sharp, actionable concepts through structured divergent and convergent thinking.
SkillBFreshness: BClaude Code +9 - 0.529score
addy-frontend-ui-engineering
TylerSimons1127
Builds production-quality, accessible, responsive user-facing UIs.
SkillBFreshness: BClaude Code +9 - 0.529score
addy-shipping-and-launch
TylerSimons1127
Prepares production launches.
SkillBFreshness: BClaude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get addy-observability-and-instrumentation running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
addy-observability-and-instrumentation skill. Agent Mart. https://agentmart.dev/skills/tylersimons1127-addy-observability-and-instrumentation (last updated 2026-10-24)