agentleFS
ForgeyClapForgeyClap/claude-forge/.claude/skills/forge-skill-testing/SKILL.md

forge-skill-testing

Skill2 starsChanged 33 days agoMITView on GitHub

Standard test protocol for a new/changed Forge skill: activation-test (trigger vs near-miss phrases, target >=95%) + opt-in fresh-session A/B benchmark. Use when creating or editing any skill.

1 other project uses a version of this, 1 of them edited.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

7 rules. About 0 are common, 5 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈5

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  • could be automatic: a setting could enforce it
  1. Very specific:

    Self-improvement substrate (wp-skill-evals): before applying this skill, read learnings.md in this skill's own folder and honor its …

    line 8
  2. Very specific:

    This is the CHECKLIST/PROTOCOL, not an automated runner: No script executes these steps — they are a human/agent-in-the-loop procedure, the …

    line 20
  3. Distinctive:

    NOT required for every trivial doc tweak (a typo fix, a one-line clarification) — use judgment.

    line 29
  4. Distinctive:

    Write 6+ trigger phrases — realistic things an owner/agent would actually type that SHOULD cause this skill to be selected/loaded.

    line 34
  5. Distinctive:

    Write 4+ near-miss phrases — realistic requests that sound adjacent but should NOT activate this specific skill (they belong to a sibling …

    line 37
  6. Distinctive:

    Run each phrase in a fresh session (or ask "would this skill fire on X?" against the current frontmatter honestly) and record activation …

    line 40
  7. Distinctive:

    Never report an activation score, an A/B pass-rate, a time, or a token count that wasn't actually measured in a real run.

    line 82

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

forge-skill-testing — activation + A/B test protocol

Self-improvement substrate (wp-skill-evals): before applying this skill, read learnings.md in this skill's own folder and honor its corrections. After a run that produced a genuine correction, append it to learnings.md with a date and real evidence — never invent a lesson that didn't happen.

Origin (wp-disclosure-ab, backlog item 8, YT-SWEEP-2026-07-31, 4 source videos: 7s9Fnorg3eI, O_z9vDLgvoY, UtGszoiwrsQ, wQ0duoTeAAU): complementary to the description-length budget work — a short, well-formed description is step 1 (discovery), but nobody was measuring whether a skill actually activates on real phrasing, or whether it genuinely helps once it does. Community data cited in the sweep: activation drops to ~20% with vague descriptions, and this is essentially never measured in practice.

This is the CHECKLIST/PROTOCOL, not an automated runner. No script executes these steps — they are a human/agent-in-the-loop procedure, the same way forge-code-review's severity scale is a method, not a linter. Step 2 after forge-skill-evals.cjs's binary evals (see that tool's own header comment for the "step 1 -> step 2" pointer).

When to use

  • A skill's SKILL.md frontmatter description was just written or rewritten.
  • A skill's body changed enough that its trigger conditions may have shifted.
  • Skill Boss or Head Chef wants real evidence a skill is actually discoverable/useful, not just present.
  • NOT required for every trivial doc tweak (a typo fix, a one-line clarification) — use judgment; this protocol costs real runs (see part 2) and is opt-in per skill change, never a merge/ship gate.

Part 1 — Activation test (cheap, do this for every meaningfully-changed skill)

  1. Write 6+ trigger phrases — realistic things an owner/agent would actually type that SHOULD cause this skill to be selected/loaded. Use the skill's own "When to use" bullets and description as the source, but phrase them the way a real request sounds, not a copy of the description.
  2. Write 4+ near-miss phrases — realistic requests that sound adjacent but should NOT activate this specific skill (they belong to a sibling skill, or a different domain entirely). A near-miss that accidentally activates the skill is a real precision problem, not a pass.
  3. Run each phrase in a fresh session (or ask "would this skill fire on X?" against the current frontmatter honestly) and record activation Y/N per phrase.
  4. Target: >= 95% correct (trigger phrases activate AND near-miss phrases don't, combined). Below that, the description likely needs sharper "when to use" language — rewrite and re-test, don't just accept a low score.
  5. Log the result in .claude/FORGE_SKILL_REGISTRY.md — that table has no dedicated activation-test column (see its own legend), so append a compact, dated note to the skill's existing Safety notes cell in the exact shape activation <correct>/<total> (<YYYY-MM-DD>) (see the template below for a worked example). Never touch any other skill's row while doing this.

Template with the exact phrase-count/scoring/logging worksheet: references/activation-test-template.md.

Part 2 — Fresh-session A/B benchmark (OPT-IN, costs real runs, never a gate)

This is the more expensive, complementary measurement: does the skill actually help, net of the tokens it costs to load?

  1. Designer/tester split, no context bias. One session (Claude A) designs or edits the skill. A SEPARATE, genuinely fresh session (Claude B, no shared conversation history with A) is the one that attempts the target task — never the same session that just wrote the skill grading its own work.
  2. 3 runs with the skill, 3 without. Same representative task, run 3 times with the skill available and 3 times with it unavailable (temporarily moved aside, or a throwaway project copy without it).
  3. Measure pass-rate, wall-clock time, and approximate token usage (via /context or session stats) for each of the 6 runs.
  4. Record the real numbers in the skill's own learnings.md, dated — a hypothetical/expected result standing in for a run that didn't happen is a fabrication, not a benchmark.
  5. This is genuinely optional and never a merge/ship gate. It costs real session time and tokens; run it when a skill is new, when its net value is genuinely in doubt, or when the owner asks for evidence a skill is worth its context cost — not as a checkbox on every routine skill edit.

Full worked table (runs, pass/fail, time, tokens, verdict): references/activation-test-template.md.

Relationship to forge-skill-evals.cjs

forge-skill-evals.cjs (evals.json + binary assertions) answers "is the skill's file/config/content structurally correct?" — a cheap, deterministic, always-safe-to-run check. This protocol answers a different, harder question — "does the skill actually get selected on real phrasing, and does it help once selected?" — which needs judgment and, for Part 2, real spend. Run evals first (fast, free, mechanical); run this protocol when a description/body genuinely changed and the answer to those two harder questions actually matters.

Honesty

Never report an activation score, an A/B pass-rate, a time, or a token count that wasn't actually measured in a real run. "Not yet executed" is a valid, honest status for a skill whose protocol hasn't been run — it is never silently upgraded to a fabricated passing number.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.