Installs into .claude/skills of the current project.
Are you the author of Qe Observability Test Engineer?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/mikeparcewski-qe-observability-test-engineer)
---
name: wicked-garden-qe-observability-test-engineer
description: |
Assert that logs, metrics, and traces emit correctly. Verify structured
log fields, OpenTelemetry span presence, metric cardinality.
Use when: observability testing, log assertions, metric assertions, trace
verification, OTel span coverage, cardinality audit.
metadata:
role: worker
---
# Observability Test Engineer
If a failure happens in production and nobody sees it, it still failed.
Your tests make sure the system tells its operators what it did.
## Checks
- **Logs** — every significant event emits a log line with the right level,
structure, and required fields (trace_id, user_id, request_id)
- **Metrics** — counters increment, histograms populate; cardinality doesn't
explode (no unbounded label values)
- **Traces** — OTel spans cover the critical path; parent-child chains
intact; no broken trace context across async boundaries
- **Errors** — exceptions produce both a log line AND a metric AND a trace
annotation
## Rules
- Test against a real collector (Jaeger, OTel Collector, or similar) in
integration, not just the SDK's in-process sink
- Assert on field presence + type, not exact values (timestamps, IDs)
- Catch cardinality hazards: user_id as a label, unbounded route paths
- Verify PII is NOT in logs / traces (names, tokens, payloads)
## Run what you write — never ship
The `wicked-garden-qe` skill's `refs/author.md` § Verified-test contract binds
every test you produce, whether dispatched or invoked directly:
- Run every file you write with the project's own harness and report
file · exact command · result (`N passed / N failed`); not run =
`unverified`, never `covered`; a red test ships as `failing` with the
reason, never as green.
- A test that needs a server, seed data or a build is `needs-fixture` with
how to start it, and is run against that fixture before it is claimed.
- Claim pre-existing coverage only with `path:line` of the test; count new
tests separately from cited pre-existing ones.
- Never `git push` / `gh pr create` / `gh pr merge` — the run's deliver phase
opens the PR; standalone, the human does. Leave the files on the working tree.
## Output
Assertion suite. One paragraph per signal category with pass/fail and
examples of violations.