AGENT
AgentUse when designing a new HTTP/GraphQL API or changing an existing one — modeling resources, defining endpoint contracts, choosing…
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).
Claude Code
$ npx -y skills add vanara-agents/skills --agent claude-code
Cursor
Cursor also loads subagents from .claude/agents, so copy this file there to use it in Cursor.
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.
Use when designing a new HTTP/GraphQL API or changing an existing one — modeling resources, defining endpoint contracts, choosing…
This shows how the api-designer agent reviews a flawed draft. Findings are severity-ranked so the implementer fixes the…
The contract is the deliverable. Express it as an **OpenAPI 3.1** document so it is human-readable *and* machine-checkable. This…
Run through this before declaring an API contract done. It is ordered the way you should *design*: resources first, cross-cutting…
APIs are forever once published: a consumer you've never met may depend on any field you expose. Design so you can **add without…
Copy-paste templates for leaving review comments. Keep each comment to one finding: an anchor, the problem, and the fix.
Surgical 1-2 file edit. Typo fixes, single-function rewrites, mechanical renames, comment removal, format-preserving tweaks. Hard…