ox: Skill for Claude Code

.claude/skills/firegoat-onboarding/SKILL.md

firegoat-onboarding is a skill for Claude Code from sageox/ox. It costs 111 tokens per session (5,976 once invoked), scanned A, original, MIT.

A skill for drafting two or three Firegoat evaluation tests in firegoat.yaml. Firegoat runs a coding agent in a fresh folder and checks whether it can use a product as a new user would.

In plain words
What is it for?
Use it to create or update Firegoat evals, including prompts, desired outcomes, and script checks based on a repository's docs, setup, credentials, and entry points.
Why use it?
It turns product documentation and expected user tasks into repeatable local tests instead of informal demonstrations. The tests can reveal whether the agent experience works from a clean environment.

Skill for Claude Code

Written for Claude Code: installed under .claude/. Also seen: reads .claude/ paths; mentions Claude Code.

This is sageox/ox's own configuration. It tells Claude Code how to work on ox itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything ox configures →

Reuse

Borrowing it

Nothing to install: this file belongs to sageox/ox. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/sageox/ox/main/.claude/skills/firegoat-onboarding/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/sageox/ox

Made for: Claude Code.

Wrote 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.

agentmods badge for firegoat-onboarding

README.md
[![agentmods](https://agentmods.dev/badge/skills/sageox/ox/firegoat-onboarding/github.svg)](https://agentmods.dev/skills/sageox/ox/firegoat-onboarding)
Your own site
<a href="https://agentmods.dev/skills/sageox/ox/firegoat-onboarding"><img src="https://agentmods.dev/badge/skills/sageox/ox/firegoat-onboarding/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.

agentmods 80×15 button for firegoat-onboarding

Your own site · 80×15
<a href="https://agentmods.dev/skills/sageox/ox/firegoat-onboarding"><img src="https://agentmods.dev/badge/skills/sageox/ox/firegoat-onboarding.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 111 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 5,976 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00111 $0.05976
Opus 5.5 $0.00044 $0.02390
Sonnet 5.5 $0.00022 $0.01195
Haiku 4.5 $0.00011 $0.00598

Measured 3d ago against content hash a8ac26b82ce7, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

firegoat-onboarding 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 3d 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.

.claude/skills/firegoat-onboarding/SKILL.md · 316 lines

How it starts

The opening of the file, as written. The whole thing — 316 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Draft firegoat evals

npx -y firegoat@latest eval runs the user's own Claude Code, with none of their config, in a fresh empty folder outside the repo (~/.firegoat/runs/<project-hash>/<random>/work, named after nothing in the repo) with its own HOME and one prompt, then runs your checks there. Your job: write 2-3 tests into firegoat.yaml that tell the maintainer whether an agent can succeed with their product the way a new user would.

1. Learn the product from the repo (read, don't run)

README*, the docs dir (docs/, *.mdx; quickstarts first), landing copy, package manifests (package.json, pyproject.toml, go.mod, Cargo.toml) for install names and entry points, examples/, and an existing firegoat.yaml (keep its tests, see step 4). Know: the public docs URL, the credentials it needs (env var names only), and whether the tool needs a fixed port or starts servers or daemons (step 4).

Before writing any prompt, write down (in your notes to the user, not in the yaml):

  • Who the users are and what problem the product solves for them, in their words, from the README, landing copy and docs. Not the feature list: "my signup emails land in spam", not "transactional email API".
  • The situations in which such a user reaches for it: what they were doing, what broke or was missing. Each test prompt starts from one of these. Only pick problems the docs show the product actually solves, so the end goal is reachable.

2. Write each prompt as the user's problem

A test asks: can an agent that only knows the user's problem find the product and use it well? So write the prompt the way a real person types to their coding agent:

  • The problem or goal in their own words. Vague and underspecified is fine and expected. "New users who sign up should get a welcome email", not "use Acme's SDK to send a welcome email via POST /emails".
  • No product name, no API, command or package names, no docs URL, no steps. Those are the answer; the test is whether the agent gets there. Exception: if a real user would only ever arrive already knowing the product (a migration between its versions, a plugin for it), at most one test may name it.
  • The test mix: one zero-start test, then one or two configured tests.
    • Zero-start (exactly one): how a user and their agent meet the product with no context at all. Nothing installed by install:, no keys, no docs copied in, no config, no product name in the prompt: just the user's problem. The agent inherits the user's shell env, so blank the product's key vars in the test's env: (ACME_API_KEY: ""); its own HOME already hides the user's config files (~/.config/acme). It measures what the AX tier list measures: does the agent find the product, can it get started without a human (anonymous or claimable access, signing up on its own), and when it needs a key, do the errors and docs tell it exactly what to do? end_goal: the problem is solved hands-off, or the agent stops at the first real blocker and tells the user the one step left (which key, where to get it). In your report, place the run on the tier list's scale: S hands-off, A just confirm, B copy a key, C figure it out, D blocked.
    • Configured (one or two): the setup a user has after signing up. Keys in env: (a staging account, or a local mock of the API started in build:/install:, since the tests run locally), the build under test installed by install:. The prompt is still the user's problem; this measures the product's real use, past the first contact.
  • The context does the pointing, as in a real project: the package already installed by install:, docs copied into the folder, keys in the env. Say "API keys are in the env", without naming the vars (that names the product). Give only what a real user's project would already have: don't pre-connect, pre-configure or pre-seed what that user would still have to set up (an MCP server, a config file, existing data). That setup is part of the test.
  • Seed through the product's public interface: when a test needs existing state (notes, a project, a pinned comment), create it in install: with the product's own CLI, API or MCP, the way a user would, never by importing its source or writing its database. Seeding through internals breaks on every schema change and costs rounds of debugging.
  • Data in a real account piles up. When install: or a check writes to a shared account (a staging workspace, a real inbox), every run adds more and later runs see it. Tag what you create with {{run.id}} and delete it in cleanup:.
  • One outcome per test, so a failure points at one thing.
  • Proof, asked for the way a user would: "show me it works", "send one to me at [email protected]", "save a screenshot", so the checks have something to verify.
  • "Keep it minimal." so the agent doesn't build a demo app.
  • Local build under test: with build: / install: (step 4), add "What's installed in this folder is the build under test; don't reinstall or upgrade it from the registry."
  • No sandbox: the folder is outside the repo and its path names nothing in it, but the agent runs as the user and could still search the disk for the repo. When it should find things on its own, add a check that it never touched the repo (see step 3).
  • Expected answers the agent must not see (a seeded password, a generated id): write them to $FIREGOAT_RUN_DIR in install: and read them there in checks. The agent never gets that path.

Read the full file on GitHub · 316 lines

Files

What ships with it

1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

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.

  1. 3d ago First seen · 316 lines · 111 tokens per session scan A a8ac26b82ce7

Subscribe to this mod's changes

firegoat-onboarding is a skill published in the GitHub repository sageox/ox (65 stars, last pushed today), licensed MIT. It adds 111 tokens to every session and 5,976 once invoked, about $0.0004 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-23.

Related

Other skills, from other repositories

intuitive-tests

Audit or improve test-suite structure and signal when the user asks about redundancy, pruning, layout, fixtures, or parameterization.

MiaoDX/intuitive-flow · 29 tokens

exploit-xss

Cross-site scripting (XSS) vulnerability detection and exploitation. Supports reflected XSS, stored XSS, DOM-based XSS, and blind XSS testing. Use this skill when user mentions XSS, cross-site scripting, script injection, or needs to test JavaScript injection in parameters, forms, headers, or DOM sources.

crazyMarky/pentest-skills · 71 tokens

visual-verification

Use for any UI/web project — make the verify gate cover more than unit tests by composing a pipeline (types → unit → design-scan → flow-smoke) and running the built-in yoke flow-smoke gate (landmark + zero console errors + screenshot proof to .yoke/proof/ /, video kept on failure). Catches the unwired-page /…

HECer/yoke · 92 tokens

ab-scripting-feature-dev

Generates an AgenticBrowser Scripting DSL orchestration that implements a feature end-to-end — plan (if needed), TDD implementation, tests, and a lint/style-guide review pass — previews it as docs/scripting-features/feature- .scripting.md, and on user approval runs it via st-eval. Use this whenever the user wants to…

mumez/pharo-agentic-browser · 224 tokens

pentest-outbound-interaction-oob-detection

Outbound interaction and OOB validation for SSRF callbacks, blind XSS beacons, webhook abuse, XXE/OOB behavior, DNS/HTTP/HTTPS callback correlation, asynchronous server-side interaction proof, and egress validation.

crtvrffnrt/skills · 56 tokens

verification-before-completion

Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always.

HECer/yoke · 43 tokens