Ask an agent to "add AI" and it wires a single SDK call to a model it named from memory — no eval, no guardrail, a price quote three months stale. ai builds the model-powered behavior — model routing, the context harness, structured outputs, tools/MCP, the agent loop, RAG, memory, evals, guardrails, and AI cost — re-verifying every volatile fact against the live source, pruning the harness instead of only adding to it, and proving the system works with a real eval before it calls the job done.
runs onClaude CodeCodexCursorAntigravityopencodeGrok BuildHermes
evaluation.mdsurface-rag-app.mdsurface-multi-agent.md
3 of 16 loaded · read fully
Route before acting. Pick one job and at most one base surface, read only those references — never the whole library. When the system is also multi-agent, surface-multi-agent stacks additively on top of the base surface; it does not replace it.
The router is the skill. There is no fixed pipeline to run start-to-finish — each job stands alone and enters where your request is. The animation traces one path; the sections below map the whole surface it routes across.
ai owns the model-powered behavior — the part of a product whose core uncertainty or capability comes from a model: model choice and routing, the prompt/context harness, structured outputs, tool and MCP consumption, the agent loop, retrieval behavior, memory, evals, guardrails, and AI-specific cost and observability. It is the intelligence layer of the Build stage — peer of frontend and backend. It references the substrates the cognition runs on rather than re-teaching or overriding them: backend serves, data governs, frontend renders, quality verifies, operate runs.
the cognition & the decision record behind it
consume or recommend; own none
Implement inside the decision. When compatible upstream artifacts are supplied — a solution-architecture doc, contracts, an NFR budget, a threat model, a handoff.yaml — ai builds against them. When they don't exist (a standalone run), it says so explicitly rather than inventing a contract or threat model to fill the gap.
SKILL.md is a router, not a script. Every request selects the smallest sufficient route: one primary job — the ten below — combined with at most one base surface that reshapes how the job applies to the deployment shape, plus the additive multi-agent overlay when the system is also multi-agent. Read the selected references completely; load two or three at most, never the whole pack. Ten jobs and five surfaces compose across deployment shapes without ever reading all sixteen references at once.
| facet | options | rule |
|---|---|---|
| ① Primary job | routing · context-engineering · structured-outputs · tools/MCP · agent-construction · RAG · memory · evaluation ⭐ · guardrails · observability&cost | Exactly one. Pick the single job the request needs; the default entry is the surface's spine (e.g. retrieval for a RAG app). |
| ② Base surface | chat-assistant (default / start-simplest) · autonomous-agent · rag-app · batch-and-pipeline | At most one. The deployment shape reshapes how every job applies — it points to the job references, it doesn't redefine them. |
| ③ Multi-agent overlay ⭐ | surface-multi-agent — orchestrated specialists on top of a base shape | Additive. Stacks on top of the base surface, never replaces it. A multi-agent RAG app is rag-app + multi-agent. |
npm view/PyPI, HF model cards, the spec changelog.
Our own research literally caught a stale model cache; the method is the deliverable, never a frozen value.Each job is one reference, read fully only when its route is selected — grounded in named canon, producing a running implementation plus the decision record behind it. This is the whole surface, not a headline slice.
| I need to… | Read | Grounded in | Produces |
|---|---|---|---|
| Pick/route a model or provider · set a cost/latency/effort budget · add fallback/degradation · decide open-vs-closed / self-host | model-selection-and-routing.md |
price-per-intelligence · routing cascade · open ≠ open-source | Cost-aware model pick, routing cascade (the #1 cost lever), fallback that degrades honestly, effort knobs, license read |
| Engineer the prompt/context harness — attention budget, JIT retrieval, compaction, note-taking — or prune an over-grown one | prompt-and-context-engineering.md |
whole-token-budget · Model/Harness/Agent · long-horizon levers | Curated token budget, progressive disclosure, long-horizon levers, harness-hygiene / prune-before-add discipline |
| Get typed/structured output or conformant tool arguments · pick constrained-decoding vs reask/retry vs provider-native | structured-outputs.md |
schema-first (Zod / Pydantic) · three enforcement mechanisms | Schema-first contract, the three enforcement mechanisms + when each, tool-arg conformance |
| Design/consume tool calls or integrate MCP · decide direct-API vs CLI vs MCP · build against the MCP spec/SDKs | tool-and-mcp-integration.md |
typed + validate-retry · MCP anatomy · spec → SDK pin-v1 → registry | Tool contract (typed + validate-retry), MCP build chain, direct/CLI/MCP decision |
| Build an agent — the loop, termination, multi-agent shape, durability decision, framework pick | agent-construction.md |
workflow-vs-agent · four multi-agent shapes + when-NOT · durable execution | Workflow-vs-agent shape, tool contract, four multi-agent shapes + when-NOT, durable-execution + license flag, framework pick with what-NOT |
| Add retrieval/RAG behavior — chunking, embeddings, hybrid search, rerank, agentic retrieval, vector-store choice | retrieval-and-rag.md |
contextual/late chunk → hybrid + RRF → rerank → agentic · pgvector-default | 5-stage pipeline, pgvector-default vector-store decision, retrieval eval'd separately |
| Give the system durable memory across turns / sessions | memory.md |
short-vs-long-term · fact-store / temporal-KG / self-editing / ontology | Short-vs-long-term split, four philosophies as options, benchmark-subordinated recall eval |
| Prove the system works — build a dataset, an aligned judge, a harness, a CI gate ⭐ | evaluation.md |
error-analysis-first · Critique-Shadowing judge + jury · pass^k | Error-analysis taxonomy, aligned judge + jury, three harness shapes, offline/online/regression/safety, pass^k |
| Add guardrails/safety — moderation, rails, validators, code-exec guards, approval gates, red-team | guardrails-and-safety.md |
uniform 5-way controls table · prompt self-verification | Controls table (control→impl→verified) + self-audit, self-verification, validate-the-guardrail-like-a-judge |
| Instrument AI cost and behavior — traces, token/cost/latency/cache telemetry, online-eval monitors | observability-and-cost.md |
OTel-GenAI gen_ai.* · cache-as-architecture · cost-lever ordering |
Vendor-neutral OTel-GenAI semconv, cache-as-architecture, cost-lever ordering (cascade→cache→batch), license-pattern read |
Full router table & invariants: SKILL.md.
One base surface, at most, reshapes every job for the deployment shape — the same eval job is bounded differently on an interactive assistant than on an unattended batch pipeline. The multi-agent overlay is additive — it stacks on top of whichever base you picked, never replaces it — and carries a distinct teal identity throughout this page.
Most of the field treats evals as an afterthought; here evals are the completion gate. A route never asserts "it works" from memory — it builds the dataset error-analysis-first, aligns a binary judge against human labels, runs the right suites, and reports pass^k for reliability. This is the distinctive that separates a demo from a system, and it is a first-class job, not a footnote.
# evals are the completion gate, not an afterthought dataset: error-analysis-first # open-code failures → taxonomy judge: binary + aligned # precision/recall vs human labels method: Critique-Shadowing # + jury for high-stakes suites: offline · online · regression · safety reliability: pass^k # not a single lucky pass subtract: decompose the judge # one axis per call, not one mega-rubric
Two stances set ai apart from the vendor-SDK collections and single-topic skills: it subtracts where the field only adds, and it treats the churning model/price/license layer as a first-class, date-stamped concern rather than frozen trivia.
Every recommendation names what to build, what NOT to build, and what to remove. The field is loud on adding and silent on pruning — be the exception.
The model/price/version layer churns monthly — our own research caught a
stale model cache. Every volatile fact is date-stamped and re-verified; volatile_facts
travels in the handoff so a frozen value can't leak downstream.
npm view/PyPI · HF card · spec changelogSix rules govern every route, whichever references it loads — the behavioral spine, condensed.
volatile_facts into the handoff.ai's deliverable is a running behavior plus the decision record behind it, closed on an eval that
was run, not asserted. A full pass emits up to four kinds of artifact — the behavior, its eval
suite, its guardrails/telemetry, and the fillable checklists that ship in the pack — plus the
machine-readable handoff.yaml companion when downstream work is expected. Each records
the decision and options, the trade-off accepted (including what was removed), and — for any
model/SDK fact — the date it was verified and how to re-verify it.
The model-powered behavior itself — the implementation, not a plan — wired to the chosen surface and provider.
A dataset, an aligned judge, and the harness — run, with pass^k reported, not an assertion.
The controls table (control→impl→verified) and the OTel-GenAI fields — uniform, with a self-audit count.
Fillable scorecards for the model pick, the token budget, and the retrieval pipeline — the record behind the call.
The loop, termination, and typed tool contract — checked, not narrated, with the when-NOT-to-multi-agent call.
The routing index into the behavior, its evals, and telemetry — carrying volatile_facts so frozen model numbers can't leak.
ai consumes architecture's artifacts upstream — boundaries, NFR budgets, the threat model,
build-vs-buy — and, when downstream build/verify work is expected, emits a compact
handoff.yaml beside the running behavior: a routing index into the behavior,
eval suite, guardrails, and telemetry, never a copy of them, always carrying
volatile_facts. Standalone by default; the companion appears only when a consumer will
actually read it.
skill: ai status: complete objective: "" # only required field artifacts_created: [behavior, evals, guardrails, telemetry] decisions: · assumptions: · constraints: evaluation: suite run · pass^k reported volatile_facts: [model, price, ver + date + re-verify pointer] recommended_next: quality · operate · backend · frontend · data
The behavior plus its eval suite and safety border for the independent red-team and release gate, and the AI-specific telemetry to deploy and monitor the running system.
The tool/MCP + vector-store contract to serve, the streaming shape to render, and the retrieval behavior whose governed pipeline and dataset live with data.
Seam discipline. The running behavior and its eval suite are the real deliverables; if a consumer needs more than the index gives, the artifact itself is incomplete — the yaml never grows to compensate. Every volatile model/SDK/price/spec fact leaves date-stamped with a re-verify pointer. Never silently invoke a build skill; name it in recommended_next.
Install once. It's a plain SKILL.md router — no flags, no config, no scripts — so it
activates on natural-language phrasing ("route a cheaper model", "add RAG with citations", "write an
eval set", "add a guardrail", "build the agent loop", "instrument token cost") rather than a fixed
command.
The same install runs on any Agent Skills
host. Codex installs to ${CODEX_HOME:-$HOME/.codex}/skills and triggers with
$ai; agents remains a separate cross-agent installation target.
| host | install target | command |
|---|---|---|
| Claude Code | ~/.claude/skills | ./install.sh claude |
| Codex | ${CODEX_HOME:-$HOME/.codex}/skills | ./install.sh codex |
| Cross-agent path | ~/.agents/skills | ./install.sh agents |
| Cursor CLI | ~/.cursor/skills | ./install.sh cursor |
| Antigravity (IDE + agy) | ~/.gemini/…/skills | ./install.sh antigravity |
| opencode | ~/.config/opencode/skills | ./install.sh opencode |
| Grok Build | ~/.grok/skills | ./install.sh grok |
| Hermes | ~/.hermes/skills | ./install.sh hermes |
Prefer npx skills add gabros20/ai-skill -g -y when you have Node — it maps supported clients itself.
More docs: docs/installation.md · docs/usage.md · docs/recipes.md.