From brain-os
Runs eval checks against skill evals.json definitions to catch regressions after editing. Lists available evals, runs single or all skills, and reports pass/fail results.
How this skill is triggered — by the user, by Claude, or both
Slash command
/brain-os:evalThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Run eval checks against brain-os skills to catch regressions. Uses the standard `evals/evals.json` format from the skill-creator framework.
Run eval checks against brain-os skills to catch regressions. Uses the standard evals/evals.json format from the skill-creator framework.
/eval # List which skills have evals
/eval self-learn # Run eval on specific skill
/eval --all # Run eval on all skills with evals/evals.json
evals/evals.json in the target skill directoryprompt and expectationsSKILL.md and check each expectation against its contentself-learn (7 evals)
✓ #1 Phase 2 validation architecture
✓ #2 NotebookLM CLI commands
✗ #3 Question distribution — FAILED: "States 30% blind/cross-cutting questions"
✓ #4 Script references
✓ #5 Quality threshold
✓ #6 Note template format
✓ #7 Post-completion pipeline
6/7 passed. 1 FAILED.
Standard schema from skill-creator. Located at evals/evals.json inside each skill directory:
{
"skill_name": "self-learn",
"evals": [
{
"id": 1,
"prompt": "Explain the Phase 2 validation architecture",
"expected_output": "Lists 4 roles with information barriers",
"expectations": [
"Mentions Question Generator that creates questions without seeing answers",
"Mentions Knowledge Agent that answers ONLY from Obsidian notes",
"Describes information barriers preventing knowledge leaking"
]
}
]
}
When /eval <skill-name> is invoked:
${CLAUDE_PLUGIN_ROOT}/skills/<skill-name>/evals/evals.json${CLAUDE_PLUGIN_ROOT}/skills/<skill-name>/SKILL.mdWhen /eval --all:
evals/evals.jsonSkill prose IS code Claude executes verbatim (ai-brain#163: a recipe with an
unresolved $CLAUDE_PLUGIN_ROOT died silently in a detached shell). Every eval
run therefore also validates the fenced bash blocks, not just textual output:
PLUGIN_ROOT="${CLAUDE_PLUGIN_ROOT:-$(ls -d ~/.claude/plugins/cache/brain-os-marketplace/brain-os/*/ 2>/dev/null | sort -V | tail -1)}"; PLUGIN_ROOT="${PLUGIN_ROOT%/}"
bun run "$PLUGIN_ROOT/scripts/skill-bash-smoke.ts" <skill-name> # omit arg for --all
The tool extracts every ```bash block from SKILL.md, normalizes doc
placeholders (<N>, <tracker-repo>), then enforces:
bash -n must accept the block (broken quoting/heredoc/if-fi fails).CLAUDE_PLUGIN_ROOT must resolve it
with a :- glob fallback or :? assertion in the same block.Exit 0 = clean. Exit 1 = findings (report each as a failed eval line). Unit
tests for the tool live in scripts/skill-bash-smoke.test.ts.
Create evals/evals.json in your skill directory following the schema above. Each eval should test a critical aspect of the skill that would break if removed.
Follow skill-spec.md § 11. Append to {vault}/daily/skill-outcomes/eval.log:
{date} | eval | {action} | ~/work/brain-os-plugin | N/A | commit:N/A | {result}
action: eval (single skill) or eval-all (all skills)result: pass if all evals pass, partial if some fail, fail if errors prevent runningargs="{skill-name}", score={passed}/{total}npx claudepluginhub sonthanh/brain-os-pluginEvaluates a skill's effectiveness by running behavioral test cases and grading results against assertions. Use to validate improvements, benchmark against baselines, or create eval cases.
Runs evaluation pipelines on Claude Code skills to test triggering accuracy, workflow correctness, and output quality. Spawns sub-agents for parallel execution and generates JSON reports.
Runs evaluations for skills across baseline, variant, quality, and trigger modes to benchmark and validate behavior.