mcpField
O
oodle-o11y-context

oodle-o11y-context

github.com/oodle-aiCloud & DevOps0112 installsUpdated 3w ago
Repository

About oodle-o11y-context

A skill defining a structured O11y Change Context manifest for pull request descriptions, capturing change type, affected services, telemetry intent, and risk hypotheses. It serves as a shared contract across authoring, review, and alert triage.

Key features

  1. 01Define a structured change-context manifest
  2. 02Record change type, services, and telemetry signals
  3. 03State the purpose of each telemetry signal
  4. 04Connect review and alert triage through a lifecycle
  5. 05Keep field names and format stable

Use cases

  1. 01Add parseable observability context to relevant PRs
  2. 02Check telemetry and alert coverage during review
  3. 03Use recent change context to investigate alerts

MCP support

During triage, the manifest can be read from PR descriptions through GitHub or Linear MCP; when GitHub MCP is unavailable, the `gh` CLI can be used.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/oodle-ai/agent-skills --skill oodle-o11y-context

After installing, type/oodle-o11y-contextin Claude Code to confirm it loaded.

Details

From the project README

O11y Change Context — Manifest Spine

This skill defines one thing: the O11y Change Context manifest, a small structured block an authoring agent writes into a pull request description. It is the connective tissue of the observability loop — the left-side reviewer (oodle-o11y-review) enriches it, and the right-side triage (oodle-triage) reads it back when an alert fires. This skill carries no instrumentation how-to; it is a shared contract the other two skills reference.

Write the block only when it is warranted (see Relevance gate). Its value is that a change's observability intent survives from the moment it is authored to the moment it breaks in production.

The block

Put this fenced block in the PR description. Keep the ## O11y Change Context header and the field keys exactly as written — downstream agents locate and parse the block by this shape.

## O11y Change Context
type: perf, bugfix                 # bugfix | perf | feature | critical-path | refactor | infra
touches: checkout-svc, order-repo  # deploy/service units changed
telemetry:
  + span checkout.place_order {attr: tenant, order_id}   — trace slow orders per tenant
  ~ metric checkout_latency_seconds (histogram)          — widened buckets; guards SLO
  - metric checkout_legacy_timer                          — removed; duplicate of above
guarded-by: SLO checkout-p99, monitor HighCheckoutLatency  # existing alerts over touched code
watch: N+1 on order lookup under load; cache hit-rate regression
gaps: no per-item span in the loop — deferred (cardinality); triage can't attribute per-SKU
  • telemetry lines start with + (added), ~ (changed), or - (removed), followed by the signal and a short purpose. A signal whose purpose cannot be stated probably should not exist.
  • Omit a field only when it genuinely has no content (e.g. no gaps). Never rename a field.

Field reference

FieldMeaningFilled byWhy it matters downstream
typeNature of the changeAuthorSets scrutiny level for review and triage. critical-path earns the deepest review.
touchesDeploy/service units changedAuthorTriage matches a firing alert's service to recent changes here.
telemetrySignals added / changed / removed, each with a purposeAuthor (drafts), Review (verifies)Enforces "every signal serves a purpose, no duplicates."
guarded-byExisting alerts/SLOs covering the touched codeReview (resolved from backend)Confirms the alert↔code link at triage; flags high-risk changes.
watchRisk hypotheses to watch post-deployAuthor + ReviewTriage reads this first — the leading hypotheses are pre-written.
gapsTelemetry deliberately not addedReviewTells triage what the data cannot answer, so it stops chasing it.

Lifecycle

  1. Author drafts type, touches, telemetry, and watch when opening the PR.
  2. Review enriches — oodle-o11y-review resolves guarded-by from the live backend, appends gaps, and may upgrade type to critical-path when touched code sits under a critical SLO.
  3. Merge — the block lives on in the PR history.
  4. Triage reads — on an alert, oodle-triage finds recent PRs touching the alerting service and reads their manifests: watch and type focus the investigation, guarded-by confirms the alert↔code link, and gaps explains missing evidence.

Relevance gate

Write the block when the change touches instrumented or service code, or when its type is perf, critical-path, or bugfix. Skip it for docs-only, config-cosmetic, or otherwise trivial changes — an empty ritual block is noise. The reviewer skill makes the final call on relevance; when in doubt, include a short block over none.

Carrier

In v1 the manifest lives only in the PR description, read back at triage time through the GitHub or Linear MCP — or, when no GitHub MCP is present, the gh CLI (gh pr list, gh pr view). A durable git commit trailer and a tracked in-repo manifest file are deliberately deferred — revisit only if triage frequently lacks a discoverable PR for a deployed commit.

Stability contract

The ## O11y Change Context header and the field keys (type, touches, telemetry, guarded-by, watch, gaps) are a parsing contract. Other skills and future automation match on them — do not rename or reorder-away fields. Adding a new optional field is safe; renaming an existing one is a breaking change.

Comments

Markdown supported