AGENT
Use when designing a new HTTP/GraphQL API or changing an existing one — modeling resources, defining endpoint contracts, choosing status codes, pagination,…
Two things here: a **blank template** to copy, and a **fully worked example** (with the JSON that `scripts/decision-score.mjs` consumes so the arithmetic and sensitivity are checked, not hand-waved).
$ npx -y skills add vanara-agents/skills --agent claude-codeHow it fires
How this agent gets triggered: by you, by Claude, or both.
Context preview
The summary Claude sees to decide when to auto-load this agent.
Two things here: a **blank template** to copy, and a **fully worked example** (with the JSON that `scripts/decision-score.mjs` consumes so the arithmetic and sensitivity are checked, not hand-waved).
Two things here: a **blank template** to copy, and a **fully worked example** (with the JSON that `scripts/decision-score.mjs` consumes so the arithmetic and sensitivity are checked, not hand-waved).
---
## Decision: <the question, in one sentence> - Owner: <who makes the call> - Door: one-way (hard to reverse) | two-way (reversible) ← if two-way, consider skipping the matrix ### Constraints (pass/fail gate — an option failing any is eliminated, not scored) - <must-have 1> - <must-have 2> ### Criteria & weights (must sum to 1.0; justify each weight) - <criterion 1> — <weight> — <why it matters this much> - <criterion 2> — <weight> — <why> - <criterion 3> — <weight> — <why> ### Scoring (1–5, one-line evidence per cell) Criterion (weight) | Option A | Option B | Option C ---------------------|----------|----------|---------- <criterion 1> (0.__) | _ | _ | _ <criterion 2> (0.__) | _ | _ | _ <criterion 3> (0.__) | _ | _ | _ ---------------------|----------|----------|---------- Weighted total | _ | _ | _ ### Recommendation - Choice: <option> - Justified against: <the weights that carry it> - What it trades away vs the runner-up: <the cost you're accepting> - Confidence: high | medium | low - Sensitivity: <robust, or "flips if <criterion> weight moves past <x>"> - Reversal cost / tripwire: <what would make us revisit>
---
Which datastore should the new event-ingestion service use? · Owner: platform lead · **One-way door** (the persistence engine and data model are expensive to change once we're writing production traffic).
→ *Kafka + external KV* is **eliminated**: the proposed design fails the self-hosted operability budget (two more stateful systems to run than the team can staff). It never enters the scoring.
liability regardless of raw speed.
Criterion (weight) | Postgres | Cassandra ------------------------|----------|---------- write throughput (0.40) | 3 | 5 operability (0.35) | 5 | 2 cost at scale (0.25) | 5 | 3 ------------------------|----------|---------- Weighted total | **4.20** | 3.45
Evidence, per cell: *throughput* — Postgres handles our volume with partitioning + `COPY` but needs tuning (3); Cassandra is built for write scale (5). *Operability* — the team runs Postgres today (5); nobody has operated a Cassandra cluster, repair/compaction is a new on-call burden (2). *Cost* — Postgres is one boring box (5); Cassandra needs a multi-node cluster from day one (3).
edge. The decisive criterion is **operability** — Postgres's +1.05 there covers its −0.80 throughput deficit with room to spare.
take, we revisit — but we'd rather solve that problem later, with data, than adopt an unfamiliar operational burden now for scale we don't yet have.
we believed we'd blow past Postgres's ceiling soon. We don't have evidence for that, so the weight stays at 0.40. That is the one assumption to revisit.
this decision with real load data.
{
"decision": "Datastore for the events service",
"constraints": ["must run self-hosted", ">= 20k writes/sec"],
"criteria": [
{ "name": "write throughput", "weight": 0.4 },
{ "name": "operability", "weight": 0.35 },
{ "name": "cost", "weight": 0.25 }
],
"options": [
{ "name": "Postgres", "scores": { "write throughput": 3, "operability": 5, "cost": 5 } },
{ "name": "Cassandra", "scores": { "write throughput": 5, "operability": 2, "cost": 3 } },
{ "name": "Kafka+KV", "eliminated": true, "reason": "fails self-hosted operability budget" }
]
}Run it: `node ../scripts/decision-score.mjs matrix.json` → prints the ranking (Postgres 4.200, Cassandra 3.450), the margin (0.750), the decisive criterion (operability, +1.050 for #1), and "robust". Change a weight and re-run to watch the sensitivity move — that is the point.
🐒 Free agents, skills & packs for Claude Code One subscription. An army of Claude Code agents. 30 production-grade agents, skills, and packs for Claude Code — free, Apache-2.0, install with one command.
Repo: vanara-agents/skills
Use when designing a new HTTP/GraphQL API or changing an existing one — modeling resources, defining endpoint contracts, choosing status codes, pagination,…
This shows how the api-designer agent reviews a flawed draft. Findings are severity-ranked so the implementer fixes the contract-breakers first. Severity…
The contract is the deliverable. Express it as an **OpenAPI 3.1** document so it is human-readable *and* machine-checkable. This reference covers how to…
Run through this before declaring an API contract done. It is ordered the way you should *design*: resources first, cross-cutting rules last. Every box is a…
APIs are forever once published: a consumer you've never met may depend on any field you expose. Design so you can **add without breaking**, and version…
Copy-paste templates for leaving review comments. Keep each comment to one finding: an anchor, the problem, and the fix.