Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Reliability

ASecurity

Add or remove resilience testing instrumentation — discovers endpoints at runtime and writes a config file for the daemon-hosted dashboard.

7 stars
0 votes
0 copies
1 views
Added 9/20/2026
ai-agentsjavashellnodetestingapi

Works with

claude codecliapimcp

Security Analysis

A100/100

Scanned 9/20/2026

Install to Claude Code

$npx -y skills add akka/ai-marketplace --skill reliability --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Reliability?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Reliability
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/akka-reliability/badge)](https://www.skillsdirectory.com/skills/akka-reliability)

More formats (shields.io, HTML) on the badges page.

Download with Pro
Files
SKILL.md
---
name: reliability
description: "Add or remove resilience testing instrumentation — discovers endpoints at runtime and writes a config file for the daemon-hosted dashboard."
---

## User Input

You **MUST** consider the user input before proceeding (if not empty).
If the input contains the word **"remove"**, execute the **Remove Workflow**.
Otherwise, execute the **Attach Workflow**.

## Required MCP Capabilities

This command requires the following MCP tools. If any are unavailable,
stop and tell the user to update the Akka CLI and restart Claude Code.

- **Local development**: `akka_local_start`, `akka_local_run_service`, `akka_local_cluster_status`, `akka_local_status`
- **Service introspection**: `akka_backoffice_list_components`, `akka_backoffice_discovery`

## Purpose

This command sets up resilience testing for an Akka service. It discovers
the service's endpoints at runtime via backoffice MCP tools and writes a
`.akka/reliability.yml` config file. The daemon (port 9889) reads this
config and serves a self-contained testing dashboard — no code is
generated in the user's project.

Two modes:

- **Attach** (default): ensure cluster is running, discover endpoints,
  write config, report dashboard URL
- **Remove**: delete `.akka/reliability.yml` (and any legacy artifacts)

The dashboard is served by the daemon at
`http://localhost:9889/resilience/` and provides:

- Single-shot READ/WRITE operations against the service
- Burst load testing with configurable duration, interval, and read ratio
- Real-time latency chart and transaction log via SSE
- Cluster node management (stop/start nodes 2–3 to test failover)

---

## Attach Workflow

### Step 0 — Ensure cluster is running

1. Call `akka_local_status` to check if the daemon is running.
2. If not running: call `akka_local_start` with `postgres: true`.
3. Check if a service is running. If not: call `akka_local_run_service`
   with `nodes: 3` to start a 3-node local cluster.
4. Call `akka_local_cluster_status` to verify nodes are up.
5. If the cluster fails to start, check `akka_local_logs` with
   `source: "service"` for errors and report to the user.

### Step 1 — Discover endpoints via backoffice

1. Read `pom.xml` to get the `<artifactId>` — this is the **service name**.
   Use it as the `service` parameter for all backoffice MCP calls.
   Do **not** guess or infer the service name from the project's domain
   or folder name.

2. Call `akka_backoffice_list_components` with `service` set to the
   artifactId and `local: true`. This returns every component and its
   `endpoint_definitions[]` with HTTP method and path for each endpoint.

2. **Present the inventory** to the user:

   ```
   ## Discovered Endpoints

   ### Components
   - ShoppingCart (EventSourcedEntity)
   - CartView (View)

   ### Endpoints
   - GET  /carts/{cartId}        → ShoppingCart       [READ]
   - POST /carts/{cartId}/items  → ShoppingCart        [WRITE]
   - GET  /carts/{cartId}/view   → CartView            [READ]

   ### Selected for testing
   - **Read operation**: GET /carts/{cartId} → ShoppingCart
   - **Write operation**: POST /carts/{cartId}/items → ShoppingCart
   ```

3. **Classify** each endpoint:
   - `GET` → **READ** candidate
   - `POST` / `PUT` / `DELETE` / `PATCH` → **WRITE** candidate
   - Methods on Agent components → **AGENT** candidate (also a write)
   - `POST` endpoints on View components that query data → **READ**
     (these are query endpoints, not mutations)

4. **Auto-select defaults**:
   - **Read**: prefer a `GET` endpoint with **no path parameters** (e.g.
     `GET /api/dinosaurs` over `GET /api/dinosaurs/{id}`). Parameterless
     endpoints always work — the daemon substitutes random values for
     `{id}` placeholders, which will 404 if the service uses non-UUID
     IDs like slugs. Only select a parameterized `GET` if no
     parameterless read endpoint exists.
   - **Write**: prefer a `POST`/`PUT` that mutates entity state. If none
     exists, use an Agent endpoint.

5. Present selections and ask the user to **confirm or override**.
   Show **only** the tables and selections above. Do **not** add any
   notes, commentary, caveats, or explanations about the selections.
   Do **not** mention admin endpoints, missing endpoints, or why one
   endpoint was chosen over another. Just present the data and ask.

### Step 2 — Construct body templates

For write operations, construct a minimal JSON body template:

1. Call `akka_backoffice_discovery` with `local: true` to get the full
   protobuf spec. This includes message type definitions with field
   names and types for every endpoint's request and response.
2. Find the message type for the selected write endpoint's request body.
   Build a minimal JSON template from its fields. Use `{id}` as a
   placeholder for string ID fields — the daemon substitutes UUIDs at
   runtime. Use sensible defaults for other fields.
3. Do **not** read source files on disk. All schema information is
   available from the protobuf discovery spec.

Example: `{"productId": "test-{id}", "name": "Load Test Item", "quantity": 1}`

### Step 3 — Write `.akka/reliability.yml`

Write the config file with all discovered information:

```yaml
# Written by /akka:reliability, read by the daemon
# Edit freely — changes take effect immediately (no restart needed)

service:
  name: "<artifactId>"

operations:
  read:
    method: GET
    path: "<selected read path>"
    component: "<component name>"
    description: "<brief description>"
  write:
    method: <POST|PUT>
    path: "<selected write path>"
    component: "<component name>"
    description: "<brief description>"
    body:
      template: "<JSON template>"

cluster:
  nodes: 3
```

Also write `.akka/reliability.manifest` listing generated files for
clean removal:

```
.akka/reliability.yml
.akka/reliability.manifest
```

### Step 4 — Report dashboard URL

```
Reliability Testing Ready

Dashboard: http://localhost:9889/resilience/

What you can do:
- Click READ/WRITE to run individual operations
- Launch a burst to generate sustained traffic
- Stop any node to observe failover behavior
- Watch the latency chart for spikes during failures
- The config is at .akka/reliability.yml — edit it to change
  endpoints, and changes take effect immediately
```

No compilation step. No restart. The daemon reads the config on demand.

---

## Remove Workflow

### Step R1 — Check for artifacts

1. Check for `.akka/reliability.manifest`. If found, read its file list.

### Step R2 — Confirm removal

Present the list of files to be deleted and ask for confirmation.

### Step R3 — Delete files

Delete each file found. For legacy artifacts, also run `akka_maven_compile`
to verify the project still compiles after removing generated Java code.

### Step R4 — Report

_"Reliability testing artifacts removed."_

---

## Error Handling

- If `akka_local_start` fails with port conflict: check `akka_local_status`,
  suggest `akka_local_stop` first.
- If `akka_backoffice_list_components` returns no components: the service
  may not have registered yet. Wait a few seconds and retry. If still
  empty: _"No components found. Make sure the service has at least one
  entity, agent, or workflow."_
- If `akka_backoffice_list_components` returns no endpoints: _"No HTTP
  endpoints found. Create at least one @HttpEndpoint class first."_
- If cluster nodes fail with `BindException`: call `akka_local_stop` to
  clean up stale processes, then retry.
- If the dashboard doesn't load at `http://localhost:9889/resilience/`:
  verify the daemon is running with `akka_local_status`. The dashboard is
  served by the daemon, not the user's service.

## Key Rules

- **No code generation** — the only file written to the user's project is
  `.akka/reliability.yml` (and the manifest). No Java, no HTML.
- **Runtime discovery** — always use `akka_backoffice_list_components` with
  `local: true` to discover endpoints. Never use static source analysis.
- **User approval required** — present auto-detected operations for
  confirmation before writing the config.
- **Dashboard is on port 9889** — the daemon port, not the service port.
  The dashboard is served by the daemon, not the user's service.
- **Hot-reload** — the daemon reads `.akka/reliability.yml` on every
  request. The user can edit the config and changes take effect immediately.
- **MCP tools only** — use `akka_*` tools for all interactions. Never use
  shell commands directly.

## Done When

**Attach workflow:**

- [ ] Required MCP tools were verified available (`akka_local_start`, `akka_local_run_service`, `akka_local_cluster_status`, `akka_local_status`, `akka_backoffice_list_components`, `akka_backoffice_discovery`) — the command stopped and told the user to update the Akka CLI if any were missing.
- [ ] `akka_local_status` confirms the daemon is running (started via `akka_local_start` with `postgres: true` if needed).
- [ ] A 3-node local cluster is running (started via `akka_local_run_service` with `nodes: 3` if not already active) and `akka_local_cluster_status` verifies all nodes are up.
- [ ] The service name came from `pom.xml`'s `<artifactId>` — not inferred from folder name or domain — and was passed as the `service` parameter to every backoffice call.
- [ ] `akka_backoffice_list_components` (`local: true`) returned the component inventory and endpoint definitions; the full inventory was presented to the user with the auto-selected READ and WRITE operations, and the user confirmed or overrode the selection before the config was written.
- [ ] Auto-selection followed the documented preferences: READ preferred a parameterless `GET`, WRITE preferred a `POST`/`PUT` that mutates entity state (Agent endpoints only if no other write exists); no explanatory notes about missing/rejected endpoints were added to the confirmation prompt.
- [ ] The write body template was constructed from `akka_backoffice_discovery` protobuf definitions — not from reading source files — with `{id}` placeholders for string IDs.
- [ ] `.akka/reliability.yml` was written with the service name, selected read/write operations (method, path, component, description, body template for write), and `cluster.nodes: 3`; `.akka/reliability.manifest` was written listing generated files.
- [ ] The report tells the user the dashboard URL `http://localhost:9889/resilience/`, describes what the dashboard supports, and reminds them the config is hot-reloaded on edit.
- [ ] NO Java, HTML, or other code was generated in the user's project — only `.akka/reliability.yml` and `.akka/reliability.manifest` were written.

**Remove workflow:**

- [ ] `.akka/reliability.manifest` was read (or the user was told there is nothing to remove).
- [ ] The list of files to be deleted was presented and the user explicitly confirmed removal.
- [ ] Each manifested file was deleted; for legacy artifacts including generated Java, `akka_maven_compile` was run afterward and the result reported.
- [ ] The user was told _"Reliability testing artifacts removed."_ once removal completed.

Attribution

akkaakka
View sourceMore from akka →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

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 (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Ultra-compressed communication mode that cuts output tokens while keeping technical accuracy. Levels: lite, full, ultra and the wenyan variants. Use for /caveman, "caveman mode", "talk like caveman", "be brief" or "less tokens".

1074701 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

693621 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3351 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

691 votes

math-skill

A comprehensive mathematical reasoning skill for AI assistants — handles arithmetic to research-level problems with rigorous step-by-step reasoning, systematic verification, and transparent uncertainty handling

381 votes
View all in ai-agents →