Skip to content
Back to skills

Observability Compliance

ASecurity

Use when performing a deep observability audit or remediating missing structured logging, metrics, traces, or alerting rules

  • 4 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 12, 2026
businessgoreactapidatabasebackendperformance

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 12, 2026

npx -y skills add aibot88/sec_skill_store --skill observability-compliance --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Observability Compliance?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Observability Compliance
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aibot88-observability-compliance/badge)](https://www.skillsdirectory.com/skills/aibot88-observability-compliance)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: observability-compliance
description: Use when performing a deep observability audit or remediating missing structured logging, metrics, traces, or alerting rules
version: 1.0.0
owner: platform-governance
tier: full
source: .enterprise/governance/agent-skills/observability-compliance/SKILL.md
quick: .enterprise/governance/agent-skills/observability-compliance/SKILL-QUICK.md
portable: true
license: Apache-2.0
---

# Observability Compliance

## When to use
Use this skill when:
- reviewing a PR that adds new service operations, endpoints, or background jobs
- generating instrumentation code for new features
- auditing a service's observability coverage
- validating that log statements, metrics, and traces are correctly implemented

---

## 1. Structured Logging

- OC-01: ALL log statements MUST use **structured logging** (key/value pairs) — never concatenated strings.
- OC-02: Every backend log entry MUST include: `service`, `environment`, `correlationId`.
- OC-03: `traceId` and `spanId` MUST be included when distributed tracing context is available.
- OC-04: `eventName` or `operation` MUST be included to identify the log's business context.
- OC-05: Secrets, tokens, API keys, passwords, and PII MUST NEVER appear in log statements.
- OC-06: Payloads MUST be redacted by default — only safe, non-sensitive fields are logged.
- OC-07: Log levels MUST be used correctly:
  - `Debug` — high-volume, local diagnostics only; disabled in production by default
  - `Info` — business lifecycle milestones (order placed, payment confirmed)
  - `Warning` — recoverable anomalies (retry attempted, fallback activated)
  - `Error` — failed operations requiring attention
  - `Critical` — immediate action required (data corruption risk, auth outage)
- OC-08: Errors MUST be logged at `Error` or `Critical` — never swallowed silently.

---

## 2. Correlation & Trace Context

- OC-09: `correlationId` MUST be propagated from every inbound request/message to ALL outbound calls (HTTP, broker, background jobs).
- OC-10: `causationId` MUST be included on all domain and integration events (references the command or event that caused it).
- OC-11: HTTP services MUST accept an incoming correlation header (`X-Correlation-Id` or equivalent), generate one if missing, and return it in the response.
- OC-12: Message consumers MUST extract and propagate correlation context from the message envelope.
- OC-13: Background jobs MUST generate or inherit a correlation context at start.

---

## 3. Metrics

### 3.1 Required per HTTP endpoint
- OC-14: Request rate (requests/second, by endpoint and method)
- OC-15: Error rate (4xx and 5xx, by endpoint)
- OC-16: Latency distribution (p50, p95, p99, by endpoint)

### 3.2 Required per use case (Command/Query)
- OC-17: Commands executed (count, by command type)
- OC-18: Command failure rate (count, by command type and error category)
- OC-19: Queries executed (count, by query type)
- OC-20: Handler duration (p50/p95/p99, by handler)

### 3.3 Required per messaging operation
- OC-21: Events published (count, by event type)
- OC-22: Events consumed (count, by event type and consumer)
- OC-23: Consumer processing failures (count, by event type)
- OC-24: Outbox pending count
- OC-25: DLQ message count (by queue)
- OC-26: Consumer lag (time between event occurrence and processing)

### 3.4 Required per external dependency call
- OC-27: Dependency error rate (by dependency name)
- OC-28: Dependency latency (p95/p99, by dependency)
- OC-29: Circuit breaker state (CLOSED/OPEN/HALF-OPEN, by dependency)

---

## 4. Distributed Tracing

- OC-30: Spans MUST be created for:
  - inbound HTTP requests and gRPC calls
  - outbound HTTP and gRPC calls
  - database queries (at minimum for slow query threshold)
  - message broker publish and consume operations
  - significant background job phases
- OC-31: Span attributes MUST include:
  - use case or operation name
  - aggregate id (when safe — not PII)
  - event type (for broker operations)
  - outcome (success/failure)
- OC-32: Span names MUST be descriptive: `order.place`, `payment.charge`, `outbox.publish` — not generic `HTTP POST`.
- OC-33: Trace context MUST be propagated via W3C `traceparent` header or OpenTelemetry conventions.

---

## 5. Alerting Baseline

New services MUST configure baseline alerts:

- OC-34: p95 latency exceeds SLA threshold for > 5 minutes
- OC-35: Error rate exceeds threshold (default 1%) for > 2 minutes
- OC-36: DLQ count above threshold (default > 0) for > 5 minutes
- OC-37: Outbox backlog above threshold for > 5 minutes
- OC-38: Circuit breaker OPEN for > 60 seconds
- OC-39: Authentication error spike (> 10x normal rate)

---

## 6. Client Observability (Flutter / React Native)

- OC-40: Crashes MUST be captured and reported to crash reporting service.
- OC-41: Network failures MUST be captured (timeout, connection error, 5xx responses).
- OC-42: Slow screens/frames MUST be captured (render time > 500ms).
- OC-43: `correlationId` MUST be propagated in all outbound API calls when provided by backend.
- OC-44: User-sensitive data MUST NOT be captured in crash reports or performance traces.

---

## Examples

✅ Good:
```csharp
_logger.LogInformation(
    "Order placed successfully. OrderId={OrderId} CustomerId={CustomerId} CorrelationId={CorrelationId}",
    order.Id, order.CustomerId, correlationId);
```

❌ Bad:
```csharp
_logger.LogInformation($"Order placed: {order.Id} for user {user.Email} token={accessToken}");
// String concat + PII (email) + secret (token)
```

✅ Good: New endpoint registers counter, histogram, and propagates correlationId.
❌ Bad: New background job runs silently with no metrics and no correlation context.


## Quick Mode

For low-context activation, load `.enterprise/governance/agent-skills/observability-compliance/SKILL-QUICK.md` or `QUICK.md` first. Load this full skill for deep analysis, violation fixing, or formal review gates.

Files in this skill

  • SKILL.md5.8 KB
  • source.json692 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.