Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/samikuikka/aponpx agentmods add skills/samikuikka/apo/apoWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/samikuikka/apo/apo)<a href="https://agentmods.dev/skills/samikuikka/apo/apo"><img src="https://agentmods.dev/badge/skills/samikuikka/apo/apo/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/samikuikka/apo/apo"><img src="https://agentmods.dev/badge/skills/samikuikka/apo/apo.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00069 | $0.01512 |
| Opus 5.5 | $0.00028 | $0.00605 |
| Sonnet 5.5 | $0.00014 | $0.00302 |
| Haiku 4.5 | $0.00007 | $0.00151 |
Grade A, and why
apo scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 115 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Apo — write tasks for your agent
Apo turns "what my agent must be capable of" into an executable spec. A task is a .eval.ts file: fixtures go in, the real agent runs through an adapter, and checks assert the outcome. The result is a verdict — PASS/FAIL with per-check evidence. Read it like test output, fix the agent, rerun.
Vocabulary: a task is the spec of correct behavior; a run is one execution; the verdict is its PASS/FAIL plus the check breakdown; the trace is the tool/generation calls the agent made; deliverables are the structured outputs the adapter collected.
The four pieces
| Piece | What it is |
|---|---|
| Real agent | Your code — the LLM call or agent function that already exists in this repo |
| Adapter | Thin bridge (defineAdapter) that drives the agent turn by turn |
| Task | <task-id>/<task-id>.eval.ts — adapter + checks + options |
| Inputs | <task-id>/files/ — fixtures the task loads (files.read) |
Adapter — the minimal bridge
// e2e/my-adapter.ts
import { defineAdapter, registerApoTracing } from "@apo-ai/sdk/agent-task";
import { z } from "zod";
import { runMyAgent } from "../src/agent"; // your real agent
await registerApoTracing(); // routes the agent's gen_ai.* spans into the run trace
export const myAdapter = defineAdapter({
name: "my-agent",
deliverables: { summary: z.string() },
// What to hand the agent each turn; return null to end the conversation.
turn: async ({ files, transcript }) =>
transcript.length > 0 ? null : await files.read("instructions.md"),
async initialize() {
return {}; // per-run state, threaded into every later context
},
async startSession(ctx) {
return {
// report the model your agent actually resolved — apo never picks it
runConfiguration: { model: process.env.MY_AGENT_MODEL ?? "gpt-4o-mini" },
async sendUserTurn(turn) {
const response = await runMyAgent(String(turn));
return { response };
},
};
},
async collectDeliverables() {
return { summary: "what the agent produced" };
},
});
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 115 lines · 69 tokens per session scan A afb1bde54c3d
apo is a skill published in the GitHub repository samikuikka/apo (4 stars, last pushed today), licensed MIT. It adds 69 tokens to every session and 1,512 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-14.
Other skills, from other repositories
create-custom-grader
Use when converting an existing benchmark, rubric, verifier, task YAML/JSON, or domain check into SkillEvaluator BYOG/BYOT custom evaluation.
Autonomous Agent Testing
Testing patterns for autonomous AI coding agents like Devin and SWE-Agent including task verification, output validation, sandboxed execution, regression testing for agent behavior, and safety guardrails for autonomous code generation.
AI Agent Evaluation
Comprehensive evaluation patterns for AI agents including multi-turn conversation testing, LLM-as-judge frameworks, benchmark suites, regression detection, and systematic eval pipelines for measuring agent quality and safety.
AI System Quality Engineer
Test LLM, RAG, MCP, and agentic systems end to end. Build golden datasets, run deterministic checks and LLM judges, score retrieval, probe prompt injection, verify tool use, and gate CI on thresholds. Orchestrates DeepEval, Ragas, promptfoo, and Langfuse.
generate-tests
Generate EvalView test cases — either from a SKILL.md file using LLM-powered generation, or by capturing real agent interactions through a proxy.
run-eval
Run EvalView regression checks against golden baselines to detect regressions in AI agent behavior after code, prompt, or model changes.