analyzing-options
Analyzing different approaches for a task or problem with structured comparisons, effort…
Reviewing a Go/TS service's operational risk by mapping integration failure points (external HTTP calls, queue consumers, outbound webhooks), simulating stuck intermediate states for each entity in a flow, and classifying each scenario into tiers — then emitting operational
$ npx -y skills add LerianStudio/ring --skill reviewing-operational-risk --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/reviewing-operational-riskContext preview
The summary Claude sees to decide when to auto-load this skill.
Reviewing a Go/TS service's operational risk by mapping integration failure points (external HTTP calls, queue consumers, outbound webhooks), simulating stuck intermediate states for each entity in a flow, and classifying each scenario into tiers — then emitting operational
name: ring:reviewing-operational-risk description: "Reviewing a Go/TS service's operational risk by mapping integration failure points (external HTTP calls, queue consumers, outbound webhooks), simulating stuck intermediate states for each entity in a flow, and classifying each scenario into tiers — then emitting operational runbooks (Tier 2) or gap specs (Tier 3). Two entry modes: explore an existing codebase, or read a dev-cycle plan.md and epic artifacts. Use before production hardening, incident retros, or at dev-cycle end. Skip for prototypes, pure libraries, or when no integration boundaries exist."
**Complementary:** ring:auditing-production-readiness (broad readiness scoring), ring:mapping-service-resources (resource inventory), ring:running-dev-cycle (optional end-of-cycle hook)
For every failure scenario, a **tier** and an actionable artifact:
| Tier | Meaning | Output | |------|---------|--------| | **Tier 1** | The app resolves it itself — automatic retry, compensation, TTL/expiry, DLQ replay | Note only (documented as self-healing) | | **Tier 2** | An **external trigger exists** that unblocks it — an API call, an endpoint, a Console/UI action | **Operational runbook** with concrete steps | | **Tier 3** | **Gap** — no rescue path exists short of direct DB intervention | **Gap spec** (what's missing, who can act today, what should exist) |
The output is always written **for the developer running the skill** (tech lead or engineer). Runbooks assume operator access; gap specs assume backlog ownership.
---
The review is split into two phases so the deterministic work is not left to the LLM:
**Phase 1 — mechanical (`scan-integration-points.mjs`, run by the dev):** A zero-dependency Node.js script traverses the target repo and finds integration boundaries (external HTTP calls, queue consumers, event publishers, outbound webhooks). For each point it heuristically records whether retry, DLQ, timeout, rollback/compensation, and idempotency patterns appear nearby. It emits a structured JSON report. It is generic: it runs on any Go or TypeScript/Node.js Lerian repo. This phase is repeatable and produces the same map every time.
**Phase 2 — judgement (this agent, from here on):** The agent takes the JSON as structured context, runs the confirmation dialogue, simulates stuck states, classifies Tier 1/2/3, and writes runbooks (T2) and gap specs (T3). This is the analysis that needs a human-in-the-loop and cannot be reduced to regex.
> **The developer runs the `.mjs` first and pastes/attaches its JSON output to > the agent before the dialogue begins.** In Mode A the agent uses that JSON as > the boundary map instead of re-deriving it by hand. See **Step 1 (Mode A)**.
---
Ask the developer (or infer from context):
If a `plan.md` (ring:writing-plans format) with an active cycle is present and the developer wants to review *what was just built*, prefer **Mode B**. Otherwise use **Mode A**.
---
The boundary map is produced **mechanically** by the script, not by hand. The developer runs it against the target repo and gives the JSON to the agent:
# From the target repo root (any Go or TS/Node.js Lerian service): node /path/to/reviewing-operational-risk/scan-integration-points.mjs . --out ops-risk-scan.json # then paste/attach ops-risk-scan.json to the agent before the dialogue.
> **Monorepo / hexagonal Go — do NOT scan only the service subdir.** In a > hexagonal layout the outbound boundaries live in the imported `pkg/*` (or > shared adapter) packages, **not** under `apps/<svc>`. Scanning only > `apps/<svc>` returns a **false 0**. The scanner defends against this: given a > subdir it walks up to the repo/module root, scans the whole tree, and > attributes each boundary to its service via top-level dir. **Always run from > the repo root (or let the scanner expand to it) so `pkg/*` adapters and > `ports/out` methods are included.** If you must scan a single subdir, pass > `--no-repo-root` and expect the map to miss shared adapters. Whenever > `integration_points == 0` for a service that imports `ports/out`, the scanner > emits an explicit `warnings[]` entry — treat it as a scope error, not a clean > bill of health.
The scanner is **port-aware and adapter-aware**: each method of a `ports/out` interface is treated as a boundary candidate (`category: "outbound_port"`), and its resilience is inferred over the whole concrete **adapter file** — so an SDK adapter (e.g. `midazsdk.WithTimeout`, `DoWithRetry`) that never calls `net/http` directly is still detected. Resilience for Go line-matches is inferred over the **enclosing function**, not a fixed ±N-line window, so a retry/timeout wrapper elsewhere in the function still counts.
**Optional per-repo config (`.ops-risk.json`)** at the repo root tunes detection: `shared_adapter_dirs`, `http_wrapper_packages`, `outbound_port_globs`, and `exclude_handler
Proven engineering practices, enforced through skills. Ring is a comprehensive skills library and workflow system for AI agents that transforms how AI assistants approach software development.
Repo: LerianStudio/ring
Analyzing different approaches for a task or problem with structured comparisons, effort…
Auditing a service's production readiness against Ring engineering standards across base…
Cleaning redundant and obvious comments following clean code principles while preserving…
Commit changes with scope allowlist enforcement, atomic grouping, GPG-signed conventional…
Creating a handoff document that captures session state (completed work, decisions, open…
Creating an isolated git worktree for parallel branch work: selects the directory by priority…