From a290464e49dc604a8c51ebc6fa90aeaf21298823 Mon Sep 17 00:00:00 2001 From: Brian Madison Date: Sat, 9 May 2026 13:42:28 -0500 Subject: [PATCH 1/6] feat(eval-runner): add bmad-eval-runner skill New skill for running a target skill's evals in a clean, isolated environment. Supports both artifact evals (evals.json with expectations) and trigger evals (triggers.json with should_trigger). Adapted from Anthropic's skill-creator eval pipeline (run_eval.py, grader.md, generate_review.py). Isolation strategy: - Docker preferred: each eval runs in a fresh bmad-eval-runner:latest container with HOME pointed at an empty in-container dir, no host CLAUDE.md or auto-memory bleed-through. Image built on first run. - Local fallback: ~/bmad-evals/// with HOME override to a clean .home/ directory. Best-effort; user is told. Artifacts (transcript, files Claude wrote, metrics, grading) are retained permanently per run so users can review what happened, not just whether it passed. Layout: SKILL.md outcome-driven entry references/isolation.md Docker + local strategies references/eval-formats.md evals.json + triggers.json schemas scripts/run_evals.py artifact runner scripts/run_triggers.py trigger runner (adapted from Anthropic) scripts/docker_setup.py Docker detection + image build scripts/generate_report.py aggregate HTML report scripts/utils.py shared helpers agents/grader.md judge subagent assets/Dockerfile clean Claude Code image --- skills/bmad-eval-runner/SKILL.md | 91 ++++ skills/bmad-eval-runner/agents/grader.md | 79 ++++ skills/bmad-eval-runner/assets/Dockerfile | 29 ++ .../references/eval-formats.md | 82 ++++ .../bmad-eval-runner/references/isolation.md | 96 ++++ .../bmad-eval-runner/scripts/docker_setup.py | 115 +++++ .../scripts/generate_report.py | 184 ++++++++ skills/bmad-eval-runner/scripts/run_evals.py | 425 ++++++++++++++++++ .../bmad-eval-runner/scripts/run_triggers.py | 338 ++++++++++++++ skills/bmad-eval-runner/scripts/utils.py | 164 +++++++ 10 files changed, 1603 insertions(+) create mode 100644 skills/bmad-eval-runner/SKILL.md create mode 100644 skills/bmad-eval-runner/agents/grader.md create mode 100644 skills/bmad-eval-runner/assets/Dockerfile create mode 100644 skills/bmad-eval-runner/references/eval-formats.md create mode 100644 skills/bmad-eval-runner/references/isolation.md create mode 100644 skills/bmad-eval-runner/scripts/docker_setup.py create mode 100644 skills/bmad-eval-runner/scripts/generate_report.py create mode 100644 skills/bmad-eval-runner/scripts/run_evals.py create mode 100644 skills/bmad-eval-runner/scripts/run_triggers.py create mode 100644 skills/bmad-eval-runner/scripts/utils.py diff --git a/skills/bmad-eval-runner/SKILL.md b/skills/bmad-eval-runner/SKILL.md new file mode 100644 index 0000000..8574c86 --- /dev/null +++ b/skills/bmad-eval-runner/SKILL.md @@ -0,0 +1,91 @@ +--- +name: bmad-eval-runner +description: Run a skill's evals in a clean, isolated environment and report results. Use when the user wants to evaluate a skill, run evals, benchmark a skill, validate triggers, or grade skill outputs. +--- + +# Skill Eval Runner + +## Overview + +Run a skill's evals in an environment that does not bleed in the user's global config, auto-memory, or ancestor `CLAUDE.md` files — so the result reflects the skill itself, not the bench it was tested on. Preserve every run's artifacts so the user can inspect what happened, not just whether it passed. + +Two eval shapes are supported and run independently: + +- **Artifact evals** (`evals.json`) — execute the skill against a prompt, capture the run's outputs, and grade each output against the eval's `expectations`. +- **Trigger evals** (`triggers.json`) — measure whether the skill's `description` actually causes Claude to invoke the skill on a given query versus stay clear when it shouldn't. + +You are an experienced eval engineer. The user wants signal, not theatre. Cite specific findings, surface evals that pass for trivial reasons, and never silently widen tolerances to make a run "succeed." + +## Args + +- Positional: a path to the skill being evaluated (directory containing `SKILL.md`). +- `--evals ` — explicit path to evals folder or a specific `evals.json` / `triggers.json` file. If omitted, discover. +- `--mode artifact|trigger|both` — which eval kind to run. Default: `both` if both files are found, else whichever exists. +- `--isolation docker|local|auto` — sandbox strategy. Default: `auto` (Docker when available, otherwise local). +- `--project-root ` — root of the project the skill belongs to. Default: walk up from skill path looking for `_bmad/` or `.git/`. +- `--output-dir ` — where run folders are written. Default: `{bmad_builder_reports}/eval-runs/` if configured, else `~/bmad-evals/`. +- `--workers ` — parallel evals. Default: 4. +- `--headless` / `-H` — non-interactive; emit final JSON only. + +## On Activation + +1. Resolve config the same way `bmad-workflow-builder` does (`{project-root}/_bmad/config.yaml` then `config.user.yaml`, falling back to `bmb/config.yaml`). Resolve `{user_name}`, `{communication_language}`, `{bmad_builder_reports}`. Apply throughout the session. + +2. If `--headless` was passed, set `{headless_mode}=true` and skip every confirmation below; pick the safest defaults and proceed. + +3. Locate the skill. Verify `/SKILL.md` exists; halt with a clear error if it doesn't. + +4. Discover evals — see `## Eval Discovery` below. + +5. Choose isolation — see `## Isolation` below. On the first Docker run on this machine, the image will need to be built; surface that, ask once unless headless, then cache. + +6. Confirm the run summary with the user (skill, evals found, mode, isolation, output dir) unless headless. Then execute. + +## Eval Discovery + +Look in this order, taking the first match: + +1. `--evals` argument if provided. May point to a folder (containing `evals.json` and/or `triggers.json`) or a specific JSON file. +2. `/evals/` — colocated with the skill. +3. `/../../evals//` — sibling-of-parent layout (common in BMad modules where `evals/` is excluded from distribution but lives next to `src/`). +4. `/evals//` — top-level evals tree. +5. `/evals/**//` — anywhere under project evals. + +Surface what you found and where. If no evals are discovered, halt with a clear message — do not attempt to fabricate evals. + +## Isolation + +Run each eval in a fresh workspace so memory, project CLAUDE.md, prior runs, and host shell config cannot bias the result. Two strategies, picked automatically by default: + +- **Docker** (preferred when available): each eval runs in a fresh container off `bmad-eval-runner:latest`. The host's `ANTHROPIC_API_KEY` is the only env passed in. The skill's project is bind-mounted read-only and copied into a writable scratch dir inside the container; `HOME` is a fresh in-container directory; there is no auto-memory and no host CLAUDE.md. + +- **Local fallback** (when Docker is unavailable or the user opts out): each eval runs in a fresh `~/bmad-evals///workspace/` directory with `HOME=/.home` overridden so global memory and global CLAUDE.md do not leak. The project is copied (or hardlinked where supported) into the workspace. Tell the user this is the active mode and acknowledge that local isolation is best-effort, not hermetic. + +The first time Docker is selected on this machine, build the image — `python3 {skill-root}/scripts/docker_setup.py --build` — and tell the user this is happening once. + +Details and the exact mount layout live in `references/isolation.md`. Read that file when you need to debug an isolation issue or explain to the user what is being isolated. + +## Run Execution + +For artifact evals, invoke `python3 {skill-root}/scripts/run_evals.py` with the resolved arguments. The script handles isolation per eval, runs `claude -p` in the sandbox with the eval's prompt and any staged fixture files, and writes a per-eval folder with `prompt.txt`, `transcript.jsonl`, `artifacts/`, and `metrics.json`. + +For trigger evals, invoke `python3 {skill-root}/scripts/run_triggers.py`. The script measures whether the skill's description causes the skill to fire for each query, with `runs-per-query` repeats for stability, and writes `triggers-result.json`. + +After artifact runs complete, grade each eval. Spawn a grader subagent per eval in parallel (Agent tool, prompt loaded from `{skill-root}/agents/grader.md` plus the eval's `expectations` and the path to its outputs). Each grader writes `grading.json` next to the artifacts. The grader has license to flag weak assertions — relay that feedback to the user. + +After all grading is done, generate the aggregate report — `python3 {skill-root}/scripts/generate_report.py --run-dir ` — which produces `report.html`. Tell the user where the run folder is and where the HTML report is. + +## Outcomes + +- Every eval's prompt, transcript, artifacts, and grading land on disk and stay there. Nothing is silently cleaned up. +- The run honestly reflects the skill's behavior in a clean room — not the behavior of the host shell with its memories and configs. +- The user knows whether Docker or local was used and why. +- Failures cite specific expectations and evidence; passes that look superficial are flagged, not papered over. + +## Constraints + +- **Artifacts are forever.** Never delete, overwrite, or rotate run folders. Disk usage is the user's call. +- **API key passthrough only.** The only secret that crosses the isolation boundary is `ANTHROPIC_API_KEY`. Do not invent reasons to pass other env vars. +- **Trigger evals do not need real artifacts.** They use a stub command file and only measure description firing — keep them cheap and parallel. +- **No silent fallbacks on grading.** If a grader subagent errors, mark that eval `grading_error` rather than substituting a default verdict. +- **Stop when evals are missing.** If discovery returns nothing, halt with diagnostics — the runner does not invent test cases. diff --git a/skills/bmad-eval-runner/agents/grader.md b/skills/bmad-eval-runner/agents/grader.md new file mode 100644 index 0000000..49a00dd --- /dev/null +++ b/skills/bmad-eval-runner/agents/grader.md @@ -0,0 +1,79 @@ +# Grader Agent + +Evaluate a single eval's expectations against its captured transcript and artifacts. Return pass/fail per expectation with evidence — and flag weak assertions when you see them. + +You are not the executor. You are not allowed to "fix" the artifacts. Your only job is to inspect what was produced and answer: did each expectation hold? + +## Inputs + +You receive in your prompt: + +- **eval_id**: identifier for this eval +- **prompt**: the original user message that was sent to the skill +- **expected_output**: human-readable description of what success looks like (context only, not scored against) +- **expectations**: list of strings — the assertions you grade +- **transcript_path**: absolute path to a stream-JSON transcript (`.jsonl`) +- **artifacts_dir**: absolute path to the directory containing files the skill wrote +- **grading_path**: absolute path where you write `grading.json` + +## Process + +1. **Read the transcript.** Open `transcript_path`. Note the prompt, the tool calls Claude made, and the final assistant message. Identify any errors or warnings logged. + +2. **List and inspect artifacts.** Walk `artifacts_dir`. For each expectation, open the files it implicates and read their contents — do not rely on filenames alone. + +3. **Grade each expectation independently.** For each entry in `expectations`: + - Search transcript and artifacts for evidence + - Decide PASS only if there is clear, specific evidence the expectation holds AND the evidence reflects substance, not surface compliance (e.g., a file exists AND contains correct content, not just the right filename) + - Decide FAIL when no evidence is found, evidence contradicts, or the assertion is technically satisfied but the underlying outcome is wrong + - Cite the evidence — quote a specific line, name a specific file, point to a specific tool call + +4. **Critique the evals.** After grading, surface assertions that look weak: ones that passed but would also pass for a clearly wrong output, or important outcomes you observed (good or bad) that no assertion checks. Keep the bar high — flag what an eval author would say "good catch" about, not nits. + +5. **Write `grading.json`.** Save to `grading_path`. + +## Output Format + +```json +{ + "eval_id": "", + "expectations": [ + { + "text": "brief.md exists in the run folder", + "passed": true, + "evidence": "Found at artifacts/2026-05-09-insulens/brief.md, 487 words" + }, + { + "text": "decision-log.md references having ingested the memo as source material", + "passed": false, + "evidence": "decision-log.md exists but contains only template placeholders; no mention of the memo" + } + ], + "summary": { + "passed": 1, + "failed": 1, + "total": 2, + "pass_rate": 0.5 + }, + "eval_feedback": { + "suggestions": [ + { + "assertion": "brief.md exists in the run folder", + "reason": "Existence is a weak check — an empty brief.md would also pass. Consider pairing with a content assertion (e.g., word count > 200, contains the project name)." + } + ], + "overall": "Assertions check structure but not content correctness in two places." + } +} +``` + +If `eval_feedback.suggestions` would be empty, set it to `[]` and `overall` to `"No suggestions; assertions look solid."` + +## Guidelines + +- **Be objective.** Verdicts come from evidence, not vibes. +- **Be specific.** Quote, name files, point to line numbers. +- **No partial credit.** Each expectation is pass or fail. +- **Burden of proof is on the expectation.** When uncertain, fail. +- **Do not edit artifacts.** You are read-only against the run folder. +- **Do not silently substitute defaults.** If you genuinely cannot read a file or the transcript is missing, mark the affected expectations failed with that as the evidence. diff --git a/skills/bmad-eval-runner/assets/Dockerfile b/skills/bmad-eval-runner/assets/Dockerfile new file mode 100644 index 0000000..9c791ae --- /dev/null +++ b/skills/bmad-eval-runner/assets/Dockerfile @@ -0,0 +1,29 @@ +FROM node:20-bookworm-slim + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + git \ + python3 \ + python3-pip \ + ca-certificates \ + curl \ + jq \ + rsync \ + && rm -rf /var/lib/apt/lists/* + +RUN npm install -g @anthropic-ai/claude-code + +RUN useradd -ms /bin/bash evaluator \ + && mkdir -p /workspace /project /output /home/evaluator/.claude \ + && chown -R evaluator:evaluator /workspace /output /home/evaluator + +USER evaluator +WORKDIR /workspace + +ENV HOME=/home/evaluator +ENV CLAUDE_CONFIG_DIR=/home/evaluator/.claude +ENV PATH=/home/evaluator/.local/bin:$PATH + +CMD ["bash"] diff --git a/skills/bmad-eval-runner/references/eval-formats.md b/skills/bmad-eval-runner/references/eval-formats.md new file mode 100644 index 0000000..d4859f9 --- /dev/null +++ b/skills/bmad-eval-runner/references/eval-formats.md @@ -0,0 +1,82 @@ +# Eval Formats + +The runner accepts two file shapes, both compatible with Anthropic's skill-creator conventions. + +## Artifact evals — `evals.json` + +```json +{ + "skill_name": "bmad-product-brief", + "evals": [ + { + "id": 1, + "prompt": "I want to create a brief for ...", + "expected_output": "A run folder with brief.md and decision-log.md ...", + "files": [ + "evals/.../files/some-fixture.md" + ], + "expectations": [ + "brief.md exists in the run folder", + "decision-log.md exists", + "brief.md word count is between 250 and 1500" + ] + } + ] +} +``` + +Field semantics: + +- **id**: stable identifier; used as the eval's directory name in the run folder. +- **prompt**: the literal user message Claude will receive. Sent verbatim to `claude -p`. +- **expected_output**: human-readable description, used for context only — the grader reads it but does not score against it directly. +- **files**: optional fixture paths. Resolved relative to the project root (or the evals folder). Each file is staged into the eval's workspace before execution. Path semantics: + - A bare filename is staged at the workspace root. + - A nested path (`some-brief/brief.md`) preserves the directory structure inside the workspace. +- **expectations**: list of pass/fail assertions evaluated by the grader subagent. Each is graded independently. The grader is instructed to flag weak assertions — assertions a wrong output would also trivially pass. + +The grader writes `grading.json` next to each eval's artifacts; the runner aggregates. + +## Trigger evals — `triggers.json` + +```json +[ + { "query": "Help me write a product brief for ...", "should_trigger": true }, + { "query": "Help me brainstorm ideas for ...", "should_trigger": false } +] +``` + +The runner creates a synthetic command file in the sandbox's `.claude/commands/.md` containing the skill's description, then runs each query against `claude -p` with stream-JSON output and detects whether the skill (or a Read of its SKILL.md) appears as a tool call. Each query is run `--runs-per-query` times (default 3); `trigger_rate` is the fraction of runs that fired. + +A query passes when: +- `should_trigger=true` and `trigger_rate >= --trigger-threshold` (default 0.5) +- `should_trigger=false` and `trigger_rate < --trigger-threshold` + +Trigger evals do not produce artifacts beyond the result JSON. They are cheap and parallelize aggressively. + +## Where evals can live + +The runner discovers evals in this order: + +1. `--evals ` — explicit. May point to a folder or a specific `*.json`. +2. `/evals/` — colocated with the skill. +3. `/../../evals//` — sibling-of-parent. Common pattern when evals are intentionally excluded from skill distribution. +4. `/evals//`. +5. `/evals/**//` — fuzzy search under the project's evals tree. + +If both `evals.json` and `triggers.json` are found, both run unless `--mode` narrows it. + +## Writing good expectations + +The grader's job is easier when expectations are *discriminating* — they are hard to pass without actually doing the work. Weak patterns to avoid: + +- **Filename-only checks** — "brief.md exists" can pass for an empty file. Pair with a content check. +- **Wholly subjective phrasing** — "the brief is high quality" cannot be evaluated. State the property concretely. +- **Tautologies** — anything that follows from the prompt being understood is not a useful expectation. + +Strong patterns: + +- Specific facts that should appear in the output ("incorporates at least 2 specific findings from section X") +- Structural claims that a wrong output would fail ("brief.md word count is between 250 and 1500") +- Negative assertions ("does not introduce content from unrelated sections") +- Decision-log entries that capture process choices ("decision-log indicates the report was filtered to the helmet category rather than ingested whole") diff --git a/skills/bmad-eval-runner/references/isolation.md b/skills/bmad-eval-runner/references/isolation.md new file mode 100644 index 0000000..87c5a21 --- /dev/null +++ b/skills/bmad-eval-runner/references/isolation.md @@ -0,0 +1,96 @@ +# Isolation Strategies + +The eval runner offers two strategies. The intent is identical in both: every eval starts from a clean slate so the result reflects the skill itself, not the host's accumulated state. + +## What we are isolating from + +- The user's global `~/.claude/CLAUDE.md` (private global instructions) +- Any ancestor `CLAUDE.md` in the project tree above the skill +- Auto-memory at `~/.claude/projects/.../memory/MEMORY.md` +- Cached settings, MCP configurations, IDE integrations +- Prior conversation context bleeding via the shell + +## Docker (preferred) + +A single image, `bmad-eval-runner:latest`, is built once per machine. It contains Node 20, Claude Code (via `npm install -g @anthropic-ai/claude-code`), Python 3, and standard tools. The image is intentionally minimal — every eval starts from this baseline. + +### Image build + +`scripts/docker_setup.py --build` builds the image from `assets/Dockerfile`. This runs once. Re-runs are a no-op unless `--rebuild` is passed. + +### Per-eval container + +Each eval gets a fresh container: + +``` +docker run --rm \ + -v ":/project:ro" \ + -v "/:/output" \ + -v ":/fixtures:ro" \ + -e ANTHROPIC_API_KEY \ + -e EVAL_PROMPT \ + -e EVAL_ID \ + -e SKILL_PATH \ + bmad-eval-runner:latest \ + /bin/bash -c "/scripts/run_one_eval.sh" +``` + +Inside the container: + +1. The project is copied from `/project` (read-only) to `/workspace` (writable, container-local). Copy is fast because the underlying layer is shared. +2. Fixtures are copied into `/workspace/fixtures/`. +3. `HOME` is `/home/evaluator`, an empty directory created by the image — no global `CLAUDE.md`, no memory. +4. `claude -p "$EVAL_PROMPT" --output-format stream-json --verbose` runs at `/workspace`. +5. The stream-json transcript is captured to `/output/transcript.jsonl`. Any files the skill writes under `/workspace` are rsynced to `/output/artifacts/` after the run completes. +6. The container exits and is removed automatically. + +The host then has `//transcript.jsonl`, `//artifacts/`, and timing data. Nothing on the host is touched. + +### Why Docker is preferred + +- The image is reproducible — every run starts from byte-identical state. +- `HOME` is genuinely empty, not just overridden. +- Filesystem isolation is real, not just convention. +- Network can be locked down (`--network=none` for trigger evals; full network for artifact evals that may need it). + +## Local fallback + +When Docker is unavailable, the runner falls back to per-eval temp directories under `~/bmad-evals///`. Layout: + +``` +~/bmad-evals/// + workspace/ # the eval's working directory + .home/ # HOME override — empty .claude/ inside + project/ # rsync'd copy of + fixtures/ # staged fixture files + transcript.jsonl # claude -p stream output + artifacts/ # files Claude wrote under workspace/ + metrics.json +``` + +Per-eval invocation roughly: + +``` +HOME="$WORKSPACE/.home" \ +CLAUDE_CONFIG_DIR="$WORKSPACE/.home/.claude" \ +ANTHROPIC_API_KEY="$ANTHROPIC_API_KEY" \ + claude -p "$EVAL_PROMPT" \ + --output-format stream-json --verbose \ + > transcript.jsonl +``` + +### Limitations of local mode + +- `HOME` override prevents global `CLAUDE.md` and memory loading, but a stray ancestor `CLAUDE.md` above the project copy will still be discovered if `` is itself nested. The runner detects this and either (a) walks up and copies just the project subtree, or (b) warns the user that ancestor discovery may still occur. +- Filesystem isolation is by convention only — the skill could write outside its workspace if it tries. We don't sandbox syscalls. +- Network is unrestricted. + +Tell the user clearly when local mode is in use and that it is best-effort. + +## Why not `--add-dir` only? + +`claude -p --add-dir ` would let Claude see the skill but would still inherit the user's `CLAUDE.md` and memory from the cwd's ancestors. The whole point of this runner is to test the skill, not the host's accumulated state. So we always either Docker-isolate or temp-dir-isolate. + +## Artifact retention + +Run folders are never deleted by this skill. Disk management is the user's responsibility. The runner emits the run folder path on completion; users who want to clean up old runs can delete `~/bmad-evals//` directly. diff --git a/skills/bmad-eval-runner/scripts/docker_setup.py b/skills/bmad-eval-runner/scripts/docker_setup.py new file mode 100644 index 0000000..5f6fe7a --- /dev/null +++ b/skills/bmad-eval-runner/scripts/docker_setup.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python3 +# /// script +# requires-python = ">=3.9" +# /// +"""Detect Docker and build the bmad-eval-runner image when needed. + +Usage: + python3 docker_setup.py --check # exit 0 if image is ready, 1 otherwise + python3 docker_setup.py --build # build the image (no-op if present) + python3 docker_setup.py --rebuild # force rebuild +""" + +from __future__ import annotations + +import argparse +import json +import shutil +import subprocess +import sys +from pathlib import Path + + +IMAGE_TAG = "bmad-eval-runner:latest" +SCRIPT_DIR = Path(__file__).resolve().parent +DOCKERFILE = SCRIPT_DIR.parent / "assets" / "Dockerfile" + + +def docker_available() -> tuple[bool, str]: + if shutil.which("docker") is None: + return False, "docker CLI not found on PATH" + try: + result = subprocess.run( + ["docker", "info"], + capture_output=True, + text=True, + timeout=5, + ) + if result.returncode != 0: + return False, f"`docker info` failed: {result.stderr.strip().splitlines()[-1] if result.stderr.strip() else 'unknown'}" + return True, "ok" + except subprocess.TimeoutExpired: + return False, "`docker info` timed out" + except Exception as e: + return False, f"docker check error: {e}" + + +def image_present(tag: str = IMAGE_TAG) -> bool: + try: + result = subprocess.run( + ["docker", "image", "inspect", tag], + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + timeout=10, + ) + return result.returncode == 0 + except Exception: + return False + + +def build_image(tag: str = IMAGE_TAG, force: bool = False, verbose: bool = True) -> int: + if not DOCKERFILE.is_file(): + print(f"Dockerfile missing at {DOCKERFILE}", file=sys.stderr) + return 2 + + cmd = ["docker", "build", "-t", tag, "-f", str(DOCKERFILE), str(DOCKERFILE.parent)] + if force: + cmd.insert(2, "--no-cache") + + if verbose: + print(f"Building {tag} from {DOCKERFILE} ...", file=sys.stderr) + + proc = subprocess.run(cmd, stdout=sys.stderr if verbose else subprocess.DEVNULL, stderr=sys.stderr) + return proc.returncode + + +def main() -> int: + parser = argparse.ArgumentParser(description="Manage the bmad-eval-runner Docker image") + group = parser.add_mutually_exclusive_group(required=True) + group.add_argument("--check", action="store_true", help="Report status as JSON; exit 0 if image is ready") + group.add_argument("--build", action="store_true", help="Build the image (no-op if already present)") + group.add_argument("--rebuild", action="store_true", help="Force rebuild") + parser.add_argument("--quiet", action="store_true") + args = parser.parse_args() + + available, reason = docker_available() + present = image_present() if available else False + + if args.check: + print(json.dumps({ + "docker_available": available, + "docker_reason": reason, + "image_present": present, + "image_tag": IMAGE_TAG, + }, indent=2)) + return 0 if (available and present) else 1 + + if not available: + print(f"Docker is not available: {reason}", file=sys.stderr) + return 3 + + if args.rebuild: + return build_image(force=True, verbose=not args.quiet) + + if args.build: + if present: + if not args.quiet: + print(f"{IMAGE_TAG} already present; skipping build (use --rebuild to force).", file=sys.stderr) + return 0 + return build_image(force=False, verbose=not args.quiet) + + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/skills/bmad-eval-runner/scripts/generate_report.py b/skills/bmad-eval-runner/scripts/generate_report.py new file mode 100644 index 0000000..7596d02 --- /dev/null +++ b/skills/bmad-eval-runner/scripts/generate_report.py @@ -0,0 +1,184 @@ +#!/usr/bin/env python3 +# /// script +# requires-python = ">=3.9" +# /// +"""Generate an aggregate HTML report for a run folder. + +Reads run.json, execution-summary.json, each /grading.json (if present), +and triggers-result.json (if present), then renders a single-file HTML report. + +Usage: + python3 generate_report.py --run-dir PATH [-o report.html] +""" + +from __future__ import annotations + +import argparse +import html as html_lib +import json +import sys +from pathlib import Path + + +def esc(s: object) -> str: + return html_lib.escape(str(s), quote=True) + + +def load(path: Path) -> dict | list | None: + if not path.is_file(): + return None + try: + return json.loads(path.read_text(encoding="utf-8")) + except json.JSONDecodeError: + return None + + +def render(run_dir: Path) -> str: + run_meta = load(run_dir / "run.json") or {} + exec_summary = load(run_dir / "execution-summary.json") or {} + triggers = load(run_dir / "triggers-result.json") + + eval_blocks: list[str] = [] + grading_total = 0 + grading_passed = 0 + + for res in exec_summary.get("results", []): + eval_id = str(res.get("eval_id", "?")) + eval_dir = run_dir / eval_id + grading = load(eval_dir / "grading.json") + metrics = res.get("metrics") or load(eval_dir / "metrics.json") or {} + rc = res.get("return_code") + + rows: list[str] = [] + if grading: + for exp in grading.get("expectations", []): + passed = bool(exp.get("passed")) + grading_total += 1 + if passed: + grading_passed += 1 + rows.append( + f'' + f'{ "✔" if passed else "✘" }' + f'{esc(exp.get("text", ""))}' + f'{esc(exp.get("evidence", ""))}' + ) + + feedback = (grading or {}).get("eval_feedback") or {} + feedback_html = "" + if feedback: + sugg = feedback.get("suggestions") or [] + sugg_html = "".join( + f"
  • {esc(s.get('assertion','(general)'))}: {esc(s.get('reason',''))}
  • " + for s in sugg + ) + overall = esc(feedback.get("overall", "")) + feedback_html = ( + f'' + ) + + artifacts_listing = "" + artifacts_dir = eval_dir / "artifacts" + if artifacts_dir.is_dir(): + files = sorted(p for p in artifacts_dir.rglob("*") if p.is_file()) + if files: + artifacts_listing = "
      " + "".join( + f'
    • {esc(p.relative_to(eval_dir))} ' + f'({p.stat().st_size}b)
    • ' + for p in files + ) + "
    " + + tool_calls = metrics.get("tool_calls", {}) + tool_summary = ", ".join(f"{k}={v}" for k, v in sorted(tool_calls.items())) or "—" + + eval_blocks.append(f""" +
    +

    Eval {esc(eval_id)} rc={esc(rc)} · {esc(metrics.get('elapsed_s', '?'))}s

    +

    Tool calls: {esc(tool_summary)} · output {esc(metrics.get('output_chars', 0))}b · transcript {esc(metrics.get('transcript_chars', 0))}b

    + { '' + ''.join(rows) + '
    ExpectationEvidence
    ' if rows else '

    No grading.json yet.

    ' } + {feedback_html} +
    Artifacts{artifacts_listing or '

    No artifacts captured.

    '}
    +
    + """) + + triggers_html = "" + if triggers: + rows = [] + for r in triggers.get("results", []): + rows.append( + f'' + f'{ "✔" if r["pass"] else "✘" }' + f'{esc(r["query"])}' + f'{esc(r["should_trigger"])}' + f'{r["triggers"]}/{r["runs"]} ({r["trigger_rate"]:.2f})' + ) + s = triggers.get("summary", {}) + triggers_html = f""" +
    +

    Trigger Evals — {s.get('passed',0)}/{s.get('total',0)} pass

    + + {''.join(rows)}
    QueryShould fireRate
    +
    + """ + + artifact_summary = "" + if exec_summary: + artifact_summary = ( + f"

    Executed {exec_summary.get('executed', 0)} / {exec_summary.get('total', 0)} " + f"evals · {exec_summary.get('exec_failures', 0)} execution failures · " + f"grader: {grading_passed}/{grading_total} expectations passed

    " + ) + + return f""" +Eval Run — {esc(run_meta.get('skill_name','?'))} + + +

    {esc(run_meta.get('skill_name','?'))} — eval run

    +
    + Run id: {esc(run_meta.get('run_id','?'))} · + isolation: {esc(run_meta.get('isolation','?'))} · + started: {esc(run_meta.get('started_at','?'))} +
    +{artifact_summary} +{''.join(eval_blocks)} +{triggers_html} + +""" + + +def main() -> int: + parser = argparse.ArgumentParser(description="Generate HTML report for an eval run folder") + parser.add_argument("--run-dir", required=True, type=Path) + parser.add_argument("-o", "--output", type=Path, default=None) + args = parser.parse_args() + + run_dir = args.run_dir.resolve() + if not run_dir.is_dir(): + print(f"run-dir not found: {run_dir}", file=sys.stderr) + return 2 + + out = args.output or (run_dir / "report.html") + out.write_text(render(run_dir), encoding="utf-8") + print(str(out)) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/skills/bmad-eval-runner/scripts/run_evals.py b/skills/bmad-eval-runner/scripts/run_evals.py new file mode 100644 index 0000000..642389c --- /dev/null +++ b/skills/bmad-eval-runner/scripts/run_evals.py @@ -0,0 +1,425 @@ +#!/usr/bin/env python3 +# /// script +# requires-python = ">=3.9" +# /// +"""Run a skill's artifact evals in isolated workspaces. + +For each eval, the runner: + 1. Stages a fresh workspace (Docker container or local tmp dir under ~/bmad-evals). + 2. Copies the project (excluding heavy directories) into the workspace; mounts the + skill so it's discoverable by `claude -p`. + 3. Stages any fixture files declared in the eval's `files` list. + 4. Runs `claude -p '' --output-format stream-json --verbose`, capturing + the transcript. + 5. Rsyncs any files Claude wrote into the workspace into `//artifacts/`. + 6. Writes `metrics.json` (tool-call counts, timing, output sizes). + +Grading is performed separately by the parent skill's grader subagents — this script +captures evidence; it does not score. + +Usage: + python3 run_evals.py \\ + --skill-path PATH \\ + --evals-file PATH/evals.json \\ + --project-root PATH \\ + --output-dir PATH \\ + --isolation docker|local \\ + [--workers N] [--timeout SECS] [--eval-ids 1,3] [--quiet] +""" + +from __future__ import annotations + +import argparse +import json +import os +import shutil +import subprocess +import sys +import time +from concurrent.futures import ThreadPoolExecutor, as_completed +from pathlib import Path + +SCRIPT_DIR = Path(__file__).resolve().parent +sys.path.insert(0, str(SCRIPT_DIR)) + +from utils import ( # noqa: E402 + new_run_id, + parse_skill_md, + read_json, + utc_now_iso, + write_json, +) + +DOCKER_IMAGE = "bmad-eval-runner:latest" +RSYNC_EXCLUDES = ( + ".git", ".bare", "node_modules", ".venv", "__pycache__", + ".pytest_cache", ".next", "dist", "build", ".cache", + ".DS_Store", "*.pyc", +) + + +def stage_workspace_local(workspace: Path, project_root: Path, skill_path: Path, + fixtures: list[tuple[Path, str]]) -> Path: + """Build a clean local workspace at /. Returns workspace path.""" + workspace.mkdir(parents=True, exist_ok=True) + project_dest = workspace / "project" + home_dir = workspace / ".home" + (home_dir / ".claude").mkdir(parents=True, exist_ok=True) + + excludes = [] + for pat in RSYNC_EXCLUDES: + excludes.extend(["--exclude", pat]) + + if shutil.which("rsync"): + subprocess.run( + ["rsync", "-a", *excludes, f"{project_root}/", f"{project_dest}/"], + check=True, + ) + else: + shutil.copytree(project_root, project_dest, dirs_exist_ok=True, + ignore=shutil.ignore_patterns(*RSYNC_EXCLUDES)) + + skill_link_dir = project_dest / ".claude" / "skills" + skill_link_dir.mkdir(parents=True, exist_ok=True) + skill_dest = skill_link_dir / skill_path.name + if not skill_dest.exists(): + try: + os.symlink(skill_path, skill_dest) + except OSError: + shutil.copytree(skill_path, skill_dest, dirs_exist_ok=True) + + for src, dest_rel in fixtures: + dest = project_dest / dest_rel + dest.parent.mkdir(parents=True, exist_ok=True) + shutil.copy2(src, dest) + + return project_dest + + +def run_eval_local(eval_item: dict, run_dir: Path, skill_path: Path, + project_root: Path, timeout: int) -> dict: + eval_id = str(eval_item.get("id", "unnamed")) + eval_dir = run_dir / eval_id + workspace_root = eval_dir / "workspace" + artifacts_dir = eval_dir / "artifacts" + transcript_path = eval_dir / "transcript.jsonl" + + eval_dir.mkdir(parents=True, exist_ok=True) + artifacts_dir.mkdir(parents=True, exist_ok=True) + + fixtures = resolve_fixtures(eval_item.get("files", []), project_root) + workspace_project = stage_workspace_local(workspace_root, project_root, skill_path, fixtures) + + (eval_dir / "prompt.txt").write_text(eval_item["prompt"], encoding="utf-8") + workspace_snapshot_before = snapshot_files(workspace_project) + + home_dir = workspace_root / ".home" + env = { + "HOME": str(home_dir), + "CLAUDE_CONFIG_DIR": str(home_dir / ".claude"), + "PATH": os.environ.get("PATH", ""), + "ANTHROPIC_API_KEY": os.environ.get("ANTHROPIC_API_KEY", ""), + } + + cmd = [ + "claude", + "-p", eval_item["prompt"], + "--output-format", "stream-json", + "--verbose", + "--dangerously-skip-permissions", + ] + + start = time.time() + try: + with transcript_path.open("wb") as out: + proc = subprocess.run( + cmd, + stdout=out, + stderr=subprocess.PIPE, + cwd=str(workspace_project), + env=env, + timeout=timeout, + ) + elapsed = time.time() - start + return_code = proc.returncode + stderr_tail = (proc.stderr or b"").decode("utf-8", errors="replace")[-2000:] + except subprocess.TimeoutExpired as e: + elapsed = time.time() - start + return_code = -1 + stderr_tail = f"TIMEOUT after {timeout}s" + if e.stderr: + stderr_tail += "\n" + e.stderr.decode("utf-8", errors="replace")[-2000:] + + new_files = diff_workspace(workspace_project, workspace_snapshot_before) + sync_artifacts(workspace_project, new_files, artifacts_dir) + + metrics = compute_metrics(transcript_path, artifacts_dir, elapsed, return_code, stderr_tail) + write_json(eval_dir / "metrics.json", metrics) + + return { + "eval_id": eval_id, + "elapsed_s": elapsed, + "return_code": return_code, + "transcript": str(transcript_path.relative_to(run_dir)), + "artifacts_dir": str(artifacts_dir.relative_to(run_dir)), + "metrics": metrics, + } + + +def run_eval_docker(eval_item: dict, run_dir: Path, skill_path: Path, + project_root: Path, timeout: int) -> dict: + eval_id = str(eval_item.get("id", "unnamed")) + eval_dir = run_dir / eval_id + artifacts_dir = eval_dir / "artifacts" + transcript_path = eval_dir / "transcript.jsonl" + + eval_dir.mkdir(parents=True, exist_ok=True) + artifacts_dir.mkdir(parents=True, exist_ok=True) + fixtures_staging = eval_dir / "fixtures_in" + fixtures_staging.mkdir(parents=True, exist_ok=True) + + fixtures = resolve_fixtures(eval_item.get("files", []), project_root) + for src, dest_rel in fixtures: + dest = fixtures_staging / dest_rel + dest.parent.mkdir(parents=True, exist_ok=True) + shutil.copy2(src, dest) + + (eval_dir / "prompt.txt").write_text(eval_item["prompt"], encoding="utf-8") + + # Inline shell script to run inside the container + container_script = r""" +set -e +mkdir -p /workspace +rsync -a \ + --exclude=.git --exclude=.bare --exclude=node_modules --exclude=.venv \ + --exclude=__pycache__ --exclude=.pytest_cache --exclude=.next \ + --exclude=dist --exclude=build --exclude=.cache --exclude=.DS_Store \ + /project/ /workspace/ +mkdir -p /workspace/.claude/skills +cp -R "$SKILL_SRC" "/workspace/.claude/skills/$SKILL_NAME" +if [ -d /fixtures ]; then + cp -R /fixtures/. /workspace/ +fi +cd /workspace +claude -p "$EVAL_PROMPT" \ + --output-format stream-json --verbose \ + --dangerously-skip-permissions \ + > /output/transcript.jsonl 2> /output/stderr.log || true +mkdir -p /output/artifacts +rsync -a --exclude=.claude --exclude=node_modules --exclude=.git \ + --filter='+ */' --filter='+ *' \ + /workspace/ /output/artifacts/ +""" + + skill_name = skill_path.name + cmd = [ + "docker", "run", "--rm", + "-v", f"{project_root}:/project:ro", + "-v", f"{skill_path}:/skill_src:ro", + "-v", f"{eval_dir}:/output", + "-e", "ANTHROPIC_API_KEY", + "-e", f"EVAL_PROMPT={eval_item['prompt']}", + "-e", f"SKILL_SRC=/skill_src", + "-e", f"SKILL_NAME={skill_name}", + ] + if fixtures: + cmd += ["-v", f"{fixtures_staging}:/fixtures:ro"] + cmd += [DOCKER_IMAGE, "bash", "-c", container_script] + + start = time.time() + try: + proc = subprocess.run( + cmd, + capture_output=True, + timeout=timeout + 30, + ) + elapsed = time.time() - start + return_code = proc.returncode + stderr_tail = proc.stderr.decode("utf-8", errors="replace")[-2000:] + if proc.stdout: + (eval_dir / "docker.stdout.log").write_bytes(proc.stdout) + except subprocess.TimeoutExpired as e: + elapsed = time.time() - start + return_code = -1 + stderr_tail = f"TIMEOUT after {timeout}s" + if e.stderr: + stderr_tail += "\n" + e.stderr.decode("utf-8", errors="replace")[-2000:] + + metrics = compute_metrics(transcript_path, artifacts_dir, elapsed, return_code, stderr_tail) + write_json(eval_dir / "metrics.json", metrics) + shutil.rmtree(fixtures_staging, ignore_errors=True) + + return { + "eval_id": eval_id, + "elapsed_s": elapsed, + "return_code": return_code, + "transcript": str(transcript_path.relative_to(run_dir)), + "artifacts_dir": str(artifacts_dir.relative_to(run_dir)), + "metrics": metrics, + } + + +def resolve_fixtures(files: list[str], project_root: Path) -> list[tuple[Path, str]]: + """Return [(source_path, dest_relpath)]. dest_relpath preserves nesting under fixtures_root.""" + out: list[tuple[Path, str]] = [] + for entry in files: + candidate = (project_root / entry).resolve() + if not candidate.is_file(): + # Try relative to cwd as a fallback + alt = Path(entry).resolve() + if alt.is_file(): + candidate = alt + else: + print(f"Warning: fixture not found: {entry}", file=sys.stderr) + continue + out.append((candidate, entry)) + return out + + +def snapshot_files(root: Path) -> set[str]: + snap: set[str] = set() + for p in root.rglob("*"): + if p.is_file(): + snap.add(str(p.relative_to(root))) + return snap + + +def diff_workspace(root: Path, before: set[str]) -> list[str]: + after = snapshot_files(root) + return sorted(after - before) + + +def sync_artifacts(workspace: Path, new_files: list[str], dest: Path) -> None: + for rel in new_files: + src = workspace / rel + if not src.is_file(): + continue + if any(part in (".claude", "node_modules", ".git", ".venv") for part in src.parts): + continue + target = dest / rel + target.parent.mkdir(parents=True, exist_ok=True) + shutil.copy2(src, target) + + +def compute_metrics(transcript: Path, artifacts: Path, elapsed: float, + rc: int, stderr_tail: str) -> dict: + tool_calls: dict[str, int] = {} + total_steps = 0 + if transcript.is_file(): + for raw in transcript.read_text(encoding="utf-8", errors="replace").splitlines(): + raw = raw.strip() + if not raw: + continue + try: + evt = json.loads(raw) + except json.JSONDecodeError: + continue + if evt.get("type") == "assistant": + total_steps += 1 + for item in evt.get("message", {}).get("content", []): + if item.get("type") == "tool_use": + name = item.get("name", "?") + tool_calls[name] = tool_calls.get(name, 0) + 1 + + output_chars = 0 + for f in artifacts.rglob("*"): + if f.is_file(): + try: + output_chars += f.stat().st_size + except OSError: + pass + + return { + "elapsed_s": round(elapsed, 2), + "return_code": rc, + "tool_calls": tool_calls, + "total_tool_calls": sum(tool_calls.values()), + "total_steps": total_steps, + "output_chars": output_chars, + "transcript_chars": transcript.stat().st_size if transcript.is_file() else 0, + "stderr_tail": stderr_tail, + } + + +def main() -> int: + parser = argparse.ArgumentParser(description="Run a skill's artifact evals in isolation") + parser.add_argument("--skill-path", required=True, type=Path) + parser.add_argument("--evals-file", required=True, type=Path) + parser.add_argument("--project-root", required=True, type=Path) + parser.add_argument("--output-dir", required=True, type=Path) + parser.add_argument("--isolation", choices=("docker", "local"), required=True) + parser.add_argument("--workers", type=int, default=4) + parser.add_argument("--timeout", type=int, default=600) + parser.add_argument("--eval-ids", default=None, help="Comma-separated subset of eval ids to run") + parser.add_argument("--quiet", action="store_true") + args = parser.parse_args() + + skill_path = args.skill_path.resolve() + project_root = args.project_root.resolve() + evals_file = args.evals_file.resolve() + if not evals_file.is_file(): + print(f"evals file not found: {evals_file}", file=sys.stderr) + return 2 + + skill_name, _, _ = parse_skill_md(skill_path) + data = read_json(evals_file) + evals = data["evals"] if isinstance(data, dict) and "evals" in data else data + + if args.eval_ids: + wanted = {x.strip() for x in args.eval_ids.split(",") if x.strip()} + evals = [e for e in evals if str(e.get("id")) in wanted] + + run_id = new_run_id(skill_name) + run_dir = (args.output_dir / run_id).resolve() + run_dir.mkdir(parents=True, exist_ok=True) + + write_json(run_dir / "run.json", { + "run_id": run_id, + "skill_name": skill_name, + "skill_path": str(skill_path), + "project_root": str(project_root), + "evals_file": str(evals_file), + "isolation": args.isolation, + "started_at": utc_now_iso(), + "eval_count": len(evals), + }) + + runner = run_eval_docker if args.isolation == "docker" else run_eval_local + + results: list[dict] = [] + if not args.quiet: + print(f"[run_evals] {len(evals)} evals, isolation={args.isolation}, run_dir={run_dir}", file=sys.stderr) + + with ThreadPoolExecutor(max_workers=args.workers) as pool: + future_to_eval = { + pool.submit(runner, item, run_dir, skill_path, project_root, args.timeout): item + for item in evals + } + for fut in as_completed(future_to_eval): + item = future_to_eval[fut] + try: + res = fut.result() + except Exception as e: + res = {"eval_id": str(item.get("id")), "error": str(e), "return_code": -1} + results.append(res) + if not args.quiet: + rc = res.get("return_code") + status = "ok" if rc == 0 else f"rc={rc}" + print(f" [{status}] eval {res.get('eval_id')} ({res.get('elapsed_s', 0)}s)", file=sys.stderr) + + summary = { + "run_id": run_id, + "completed_at": utc_now_iso(), + "total": len(evals), + "executed": len(results), + "exec_failures": sum(1 for r in results if r.get("return_code") != 0), + "run_dir": str(run_dir), + "results": results, + } + write_json(run_dir / "execution-summary.json", summary) + print(json.dumps(summary, indent=2)) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/skills/bmad-eval-runner/scripts/run_triggers.py b/skills/bmad-eval-runner/scripts/run_triggers.py new file mode 100644 index 0000000..036b070 --- /dev/null +++ b/skills/bmad-eval-runner/scripts/run_triggers.py @@ -0,0 +1,338 @@ +#!/usr/bin/env python3 +# /// script +# requires-python = ">=3.9" +# /// +"""Run trigger evals: does the skill's description fire on each query? + +Adapted from Anthropic skill-creator's run_eval.py +(https://github.com/anthropics/skills/tree/main/skills/skill-creator) with two +adaptations: + + 1. Isolation. Each query runs in either a fresh Docker container off + bmad-eval-runner:latest, or a fresh local tmp dir under ~/bmad-evals// + with HOME overridden to a clean directory. This prevents the host's global + CLAUDE.md and auto-memory from biasing whether the skill fires. + + 2. Output. Results are written to a run folder alongside the artifact eval + run-folder layout (so triggers and artifacts can share a single report). + +Usage: + python3 run_triggers.py \\ + --skill-path PATH \\ + --triggers-file PATH/triggers.json \\ + --output-dir PATH \\ + --isolation docker|local \\ + [--workers N] [--runs-per-query N] [--timeout SECS] [--threshold 0.5] +""" + +from __future__ import annotations + +import argparse +import json +import os +import shutil +import subprocess +import sys +import time +import uuid +from concurrent.futures import ThreadPoolExecutor, as_completed +from pathlib import Path + +SCRIPT_DIR = Path(__file__).resolve().parent +sys.path.insert(0, str(SCRIPT_DIR)) + +from utils import ( # noqa: E402 + new_run_id, + parse_skill_md, + read_json, + utc_now_iso, + write_json, +) + +DOCKER_IMAGE = "bmad-eval-runner:latest" + + +def write_command_file(commands_dir: Path, skill_name: str, description: str, unique_id: str) -> tuple[Path, str]: + """Create a synthetic command file so the description appears in claude -p's available skills.""" + commands_dir.mkdir(parents=True, exist_ok=True) + clean_name = f"{skill_name}-skill-{unique_id}" + path = commands_dir / f"{clean_name}.md" + indented_desc = "\n ".join(description.split("\n")) + path.write_text( + f"---\n" + f"description: |\n" + f" {indented_desc}\n" + f"---\n\n" + f"# {skill_name}\n\n" + f"This skill handles: {description}\n", + encoding="utf-8", + ) + return path, clean_name + + +def parse_stream_for_trigger(buffer: str, clean_name: str) -> tuple[bool | None, str]: + """Return (triggered_or_none, leftover_buffer). None means undecided yet.""" + triggered: bool | None = None + pending_tool: str | None = None + accumulated_json = "" + leftover = "" + + while "\n" in buffer: + line, buffer = buffer.split("\n", 1) + line = line.strip() + if not line: + continue + try: + evt = json.loads(line) + except json.JSONDecodeError: + continue + + if evt.get("type") == "stream_event": + se = evt.get("event", {}) + t = se.get("type", "") + if t == "content_block_start": + cb = se.get("content_block", {}) + if cb.get("type") == "tool_use": + name = cb.get("name", "") + if name in ("Skill", "Read"): + pending_tool = name + accumulated_json = "" + else: + return False, "" + elif t == "content_block_delta" and pending_tool: + delta = se.get("delta", {}) + if delta.get("type") == "input_json_delta": + accumulated_json += delta.get("partial_json", "") + if clean_name in accumulated_json: + return True, "" + elif t in ("content_block_stop", "message_stop"): + if pending_tool: + return clean_name in accumulated_json, "" + if t == "message_stop": + return False, "" + elif evt.get("type") == "assistant": + for item in evt.get("message", {}).get("content", []): + if item.get("type") != "tool_use": + continue + tname = item.get("name", "") + tinput = item.get("input", {}) + if tname == "Skill" and clean_name in tinput.get("skill", ""): + return True, "" + if tname == "Read" and clean_name in tinput.get("file_path", ""): + return True, "" + return False, "" + elif evt.get("type") == "result": + return triggered if triggered is not None else False, "" + leftover = buffer + return triggered, leftover + + +def run_query_local(query: str, skill_name: str, description: str, + workspace_root: Path, timeout: int) -> bool: + workspace_root.mkdir(parents=True, exist_ok=True) + home_dir = workspace_root / ".home" + (home_dir / ".claude").mkdir(parents=True, exist_ok=True) + project_dir = workspace_root / "project" + commands_dir = project_dir / ".claude" / "commands" + project_dir.mkdir(parents=True, exist_ok=True) + + unique = uuid.uuid4().hex[:8] + cmd_file, clean_name = write_command_file(commands_dir, skill_name, description, unique) + + env = { + "HOME": str(home_dir), + "CLAUDE_CONFIG_DIR": str(home_dir / ".claude"), + "PATH": os.environ.get("PATH", ""), + "ANTHROPIC_API_KEY": os.environ.get("ANTHROPIC_API_KEY", ""), + } + + cmd = [ + "claude", "-p", query, + "--output-format", "stream-json", + "--verbose", + "--include-partial-messages", + ] + + try: + proc = subprocess.Popen( + cmd, + stdout=subprocess.PIPE, + stderr=subprocess.DEVNULL, + cwd=str(project_dir), + env=env, + ) + buffer = "" + triggered: bool | None = None + start = time.time() + try: + while time.time() - start < timeout: + if proc.poll() is not None: + rest = proc.stdout.read() + if rest: + buffer += rest.decode("utf-8", errors="replace") + break + chunk = proc.stdout.read1(8192) if hasattr(proc.stdout, "read1") else proc.stdout.read(8192) + if not chunk: + time.sleep(0.05) + continue + buffer += chunk.decode("utf-8", errors="replace") + decided, buffer = parse_stream_for_trigger(buffer, clean_name) + if decided is not None: + triggered = decided + break + finally: + if proc.poll() is None: + proc.kill() + proc.wait() + if triggered is None: + decided, _ = parse_stream_for_trigger(buffer + "\n", clean_name) + triggered = bool(decided) + return bool(triggered) + finally: + try: + cmd_file.unlink() + except OSError: + pass + + +def run_query_docker(query: str, skill_name: str, description: str, + workspace_root: Path, timeout: int) -> bool: + workspace_root.mkdir(parents=True, exist_ok=True) + unique = uuid.uuid4().hex[:8] + cmd_dir = workspace_root / "commands_in" + cmd_dir.mkdir(parents=True, exist_ok=True) + cmd_file, clean_name = write_command_file(cmd_dir, skill_name, description, unique) + + container_script = f""" +set -e +mkdir -p /workspace/.claude/commands +cp /commands/*.md /workspace/.claude/commands/ 2>/dev/null || true +cd /workspace +claude -p "$EVAL_QUERY" \\ + --output-format stream-json --verbose --include-partial-messages \\ + > /output/stream.jsonl 2>/dev/null || true +""" + + output_dir = workspace_root / "output" + output_dir.mkdir(parents=True, exist_ok=True) + + cmd = [ + "docker", "run", "--rm", + "-v", f"{cmd_dir}:/commands:ro", + "-v", f"{output_dir}:/output", + "-e", "ANTHROPIC_API_KEY", + "-e", f"EVAL_QUERY={query}", + DOCKER_IMAGE, "bash", "-c", container_script, + ] + + try: + subprocess.run(cmd, capture_output=True, timeout=timeout + 30) + except subprocess.TimeoutExpired: + pass + + stream_file = output_dir / "stream.jsonl" + if not stream_file.is_file(): + return False + decided, _ = parse_stream_for_trigger(stream_file.read_text(encoding="utf-8", errors="replace") + "\n", clean_name) + return bool(decided) + + +def main() -> int: + parser = argparse.ArgumentParser(description="Run trigger evals in isolation") + parser.add_argument("--skill-path", required=True, type=Path) + parser.add_argument("--triggers-file", required=True, type=Path) + parser.add_argument("--output-dir", required=True, type=Path) + parser.add_argument("--isolation", choices=("docker", "local"), required=True) + parser.add_argument("--workers", type=int, default=8) + parser.add_argument("--runs-per-query", type=int, default=3) + parser.add_argument("--timeout", type=int, default=45) + parser.add_argument("--threshold", type=float, default=0.5) + parser.add_argument("--quiet", action="store_true") + args = parser.parse_args() + + skill_path = args.skill_path.resolve() + triggers_file = args.triggers_file.resolve() + if not triggers_file.is_file(): + print(f"triggers file not found: {triggers_file}", file=sys.stderr) + return 2 + + skill_name, description, _ = parse_skill_md(skill_path) + queries = read_json(triggers_file) + + run_id = new_run_id(f"{skill_name}-triggers") + run_dir = (args.output_dir / run_id).resolve() + (run_dir / "queries").mkdir(parents=True, exist_ok=True) + + write_json(run_dir / "run.json", { + "run_id": run_id, + "skill_name": skill_name, + "description": description, + "isolation": args.isolation, + "started_at": utc_now_iso(), + "query_count": len(queries), + "runs_per_query": args.runs_per_query, + "threshold": args.threshold, + }) + + runner = run_query_docker if args.isolation == "docker" else run_query_local + + def run_one(idx: int, q: dict, run_idx: int) -> tuple[int, bool]: + ws = run_dir / "queries" / f"q{idx:03d}-r{run_idx}" + triggered = runner(q["query"], skill_name, description, ws, args.timeout) + return idx, triggered + + per_query: dict[int, list[bool]] = {} + if not args.quiet: + print(f"[run_triggers] {len(queries)} queries × {args.runs_per_query} runs, isolation={args.isolation}", file=sys.stderr) + + with ThreadPoolExecutor(max_workers=args.workers) as pool: + futures = [] + for idx, q in enumerate(queries): + for run_idx in range(args.runs_per_query): + futures.append(pool.submit(run_one, idx, q, run_idx)) + for fut in as_completed(futures): + try: + idx, triggered = fut.result() + except Exception as e: + print(f"Warning: query failed: {e}", file=sys.stderr) + continue + per_query.setdefault(idx, []).append(triggered) + + results = [] + for idx, q in enumerate(queries): + triggers = per_query.get(idx, []) + rate = (sum(triggers) / len(triggers)) if triggers else 0.0 + should = bool(q["should_trigger"]) + if should: + passed = rate >= args.threshold + else: + passed = rate < args.threshold + results.append({ + "query": q["query"], + "should_trigger": should, + "trigger_rate": rate, + "triggers": int(sum(triggers)), + "runs": len(triggers), + "pass": passed, + }) + + output = { + "run_id": run_id, + "completed_at": utc_now_iso(), + "skill_name": skill_name, + "description": description, + "isolation": args.isolation, + "results": results, + "summary": { + "total": len(results), + "passed": sum(1 for r in results if r["pass"]), + "failed": sum(1 for r in results if not r["pass"]), + }, + } + write_json(run_dir / "triggers-result.json", output) + print(json.dumps(output, indent=2)) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/skills/bmad-eval-runner/scripts/utils.py b/skills/bmad-eval-runner/scripts/utils.py new file mode 100644 index 0000000..a104763 --- /dev/null +++ b/skills/bmad-eval-runner/scripts/utils.py @@ -0,0 +1,164 @@ +#!/usr/bin/env python3 +# /// script +# requires-python = ">=3.9" +# /// +"""Shared helpers for the eval runner.""" + +from __future__ import annotations + +import json +import re +import shutil +import subprocess +from datetime import datetime, timezone +from pathlib import Path + + +def parse_skill_md(skill_path: Path) -> tuple[str, str, str]: + """Return (name, description, body) from the skill's SKILL.md frontmatter.""" + text = (skill_path / "SKILL.md").read_text(encoding="utf-8") + fm_match = re.match(r"^---\s*\n(.*?)\n---\s*\n(.*)$", text, re.DOTALL) + if not fm_match: + raise ValueError(f"SKILL.md at {skill_path} is missing frontmatter") + frontmatter, body = fm_match.group(1), fm_match.group(2) + + name = None + description_lines: list[str] = [] + in_description = False + for line in frontmatter.splitlines(): + if line.startswith("name:"): + name = line.split(":", 1)[1].strip() + in_description = False + elif line.startswith("description:"): + value = line.split(":", 1)[1].strip() + if value in ("|", ">"): + in_description = True + else: + description_lines = [value] + in_description = False + elif in_description and line.startswith((" ", "\t")): + description_lines.append(line.strip()) + elif in_description: + in_description = False + + if not name: + raise ValueError(f"SKILL.md at {skill_path} is missing a name") + return name, " ".join(description_lines).strip(), body + + +def discover_project_root(skill_path: Path) -> Path: + """Walk up from the skill looking for _bmad/ or .git; default to skill's grandparent.""" + for parent in [skill_path, *skill_path.parents]: + if (parent / "_bmad").is_dir() or (parent / ".git").exists(): + return parent + return skill_path.parent.parent + + +def discover_evals( + skill_path: Path, + project_root: Path, + explicit: Path | None, +) -> dict[str, Path]: + """Locate evals.json and triggers.json. Return dict with keys 'evals' and/or 'triggers'.""" + found: dict[str, Path] = {} + + def check_dir(d: Path) -> None: + if not d.is_dir(): + return + for key, fname in (("evals", "evals.json"), ("triggers", "triggers.json")): + candidate = d / fname + if candidate.is_file() and key not in found: + found[key] = candidate + + if explicit is not None: + explicit = explicit.resolve() + if explicit.is_file(): + if explicit.name == "evals.json": + found["evals"] = explicit + elif explicit.name == "triggers.json": + found["triggers"] = explicit + elif explicit.is_dir(): + check_dir(explicit) + return found + + skill_name = skill_path.name + candidates: list[Path] = [ + skill_path / "evals", + skill_path.parent.parent / "evals" / skill_name, + project_root / "evals" / skill_name, + ] + for d in candidates: + check_dir(d) + if found: + break + + if not found: + evals_root = project_root / "evals" + if evals_root.is_dir(): + for sub in evals_root.rglob(skill_name): + if sub.is_dir(): + check_dir(sub) + if found: + break + + return found + + +def utc_now_iso() -> str: + return datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ") + + +def new_run_id(skill_name: str) -> str: + return f"{datetime.now().strftime('%Y%m%d-%H%M%S')}-{skill_name}" + + +def have_docker() -> bool: + if shutil.which("docker") is None: + return False + try: + result = subprocess.run( + ["docker", "info"], + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + timeout=5, + ) + return result.returncode == 0 + except Exception: + return False + + +def docker_image_present(image: str = "bmad-eval-runner:latest") -> bool: + if not have_docker(): + return False + try: + result = subprocess.run( + ["docker", "image", "inspect", image], + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + timeout=10, + ) + return result.returncode == 0 + except Exception: + return False + + +def write_json(path: Path, data: object) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(json.dumps(data, indent=2) + "\n", encoding="utf-8") + + +def read_json(path: Path) -> object: + return json.loads(path.read_text(encoding="utf-8")) + + +__all__ = [ + "parse_skill_md", + "discover_project_root", + "discover_evals", + "utc_now_iso", + "new_run_id", + "have_docker", + "docker_image_present", + "write_json", + "read_json", +] From ac978da27c8329889f2ad500047a26ebef50b3e4 Mon Sep 17 00:00:00 2001 From: Brian Madison Date: Sat, 9 May 2026 14:21:08 -0500 Subject: [PATCH 2/6] fix(eval-runner): credential staging + correct trigger detection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three fixes from running the runner end-to-end against bmad-product-brief: 1. Stage Claude Code OAuth credentials into each isolated workspace. Both isolation modes override HOME, so the subprocess can't read the host's ~/.claude/ and the macOS Keychain ACL prevents it from reading the credential directly. The parent process (which owns the ACL) now reads "Claude Code-credentials" via `security find-generic-password` once at import, then writes it as .credentials.json into each workspace's .claude/ before launching claude -p. ANTHROPIC_API_KEY passthrough still works as a fallback for non-macOS hosts. 2. Trigger detection: place the synthetic skill at .claude/skills// SKILL.md instead of .claude/commands/.md. Slash commands do not surface as Skill tool calls, which is why the previous implementation (matching Anthropic's reference run_eval.py) reported 0% trigger rates for every should-trigger query. Real skills under .claude/skills/ do fire the Skill tool, letting the existing detector observe genuine trigger events. 3. Docker credential mount: write to a dedicated /creds/ directory so the container mount holds exactly one file at the expected path (`/creds/.credentials.json`). Mounting eval-dir directly would expose all run output and required the container to know an undocumented dot-prefix filename. isolation.md and SKILL.md updated to document the auth flow, the local-mode trigger leak (host's installed skills can bleed in via cwd discovery despite HOME override — prefer Docker for triggers), and why real-skill placement is correct vs. slash-command placement. Multi-turn workflow handling for non-headless skills is still TODO. --- skills/bmad-eval-runner/SKILL.md | 4 +- .../bmad-eval-runner/references/isolation.md | 16 +++++- skills/bmad-eval-runner/scripts/run_evals.py | 25 +++++++++ .../bmad-eval-runner/scripts/run_triggers.py | 54 ++++++++++++++----- skills/bmad-eval-runner/scripts/utils.py | 38 +++++++++++++ 5 files changed, 120 insertions(+), 17 deletions(-) diff --git a/skills/bmad-eval-runner/SKILL.md b/skills/bmad-eval-runner/SKILL.md index 8574c86..911dbc9 100644 --- a/skills/bmad-eval-runner/SKILL.md +++ b/skills/bmad-eval-runner/SKILL.md @@ -69,7 +69,7 @@ Details and the exact mount layout live in `references/isolation.md`. Read that For artifact evals, invoke `python3 {skill-root}/scripts/run_evals.py` with the resolved arguments. The script handles isolation per eval, runs `claude -p` in the sandbox with the eval's prompt and any staged fixture files, and writes a per-eval folder with `prompt.txt`, `transcript.jsonl`, `artifacts/`, and `metrics.json`. -For trigger evals, invoke `python3 {skill-root}/scripts/run_triggers.py`. The script measures whether the skill's description causes the skill to fire for each query, with `runs-per-query` repeats for stability, and writes `triggers-result.json`. +For trigger evals, invoke `python3 {skill-root}/scripts/run_triggers.py`. The script measures whether the skill's description causes the skill to fire for each query, with `runs-per-query` repeats for stability, and writes `triggers-result.json`. Trigger evals should run under Docker isolation when available — local mode can have the host's installed skills bleed in via cwd-based skill discovery, biasing the trigger signal. If Docker is unavailable, run trigger evals locally but say so explicitly. After artifact runs complete, grade each eval. Spawn a grader subagent per eval in parallel (Agent tool, prompt loaded from `{skill-root}/agents/grader.md` plus the eval's `expectations` and the path to its outputs). Each grader writes `grading.json` next to the artifacts. The grader has license to flag weak assertions — relay that feedback to the user. @@ -85,7 +85,7 @@ After all grading is done, generate the aggregate report — `python3 {skill-roo ## Constraints - **Artifacts are forever.** Never delete, overwrite, or rotate run folders. Disk usage is the user's call. -- **API key passthrough only.** The only secret that crosses the isolation boundary is `ANTHROPIC_API_KEY`. Do not invent reasons to pass other env vars. +- **Auth boundary is narrow.** On macOS, the host's Claude Code OAuth credential is staged into each isolated `.claude/.credentials.json` so the subprocess can authenticate without inheriting host config. `ANTHROPIC_API_KEY`, if set, is also forwarded. Nothing else crosses. - **Trigger evals do not need real artifacts.** They use a stub command file and only measure description firing — keep them cheap and parallel. - **No silent fallbacks on grading.** If a grader subagent errors, mark that eval `grading_error` rather than substituting a default verdict. - **Stop when evals are missing.** If discovery returns nothing, halt with diagnostics — the runner does not invent test cases. diff --git a/skills/bmad-eval-runner/references/isolation.md b/skills/bmad-eval-runner/references/isolation.md index 87c5a21..056fda8 100644 --- a/skills/bmad-eval-runner/references/isolation.md +++ b/skills/bmad-eval-runner/references/isolation.md @@ -10,6 +10,16 @@ The eval runner offers two strategies. The intent is identical in both: every ev - Cached settings, MCP configurations, IDE integrations - Prior conversation context bleeding via the shell +## Authentication + +The isolated `claude -p` subprocess needs to authenticate, but cannot read the host's `~/.claude/` (HOME is overridden) or the macOS Keychain (Keychain ACLs are scoped to the process that wrote the entry). The runner solves this in the parent process: + +1. On macOS, read the OAuth credential JSON from the Keychain entry `Claude Code-credentials` via `security find-generic-password -s "Claude Code-credentials" -w`. This succeeds because the parent runs as the same user that wrote the entry. +2. Stage that JSON as `/.home/.claude/.credentials.json` (local mode) or copy it into `/home/evaluator/.claude/.credentials.json` inside the container (Docker mode). +3. The subprocess reads `.credentials.json` exactly the way Claude Code normally does, with no other host config bleed. + +If the parent has `ANTHROPIC_API_KEY` set, that env var is also forwarded — and it takes precedence over the Keychain credential. On non-macOS hosts, the Keychain step is skipped and `ANTHROPIC_API_KEY` is the only auth path. + ## Docker (preferred) A single image, `bmad-eval-runner:latest`, is built once per machine. It contains Node 20, Claude Code (via `npm install -g @anthropic-ai/claude-code`), Python 3, and standard tools. The image is intentionally minimal — every eval starts from this baseline. @@ -81,12 +91,16 @@ ANTHROPIC_API_KEY="$ANTHROPIC_API_KEY" \ ### Limitations of local mode -- `HOME` override prevents global `CLAUDE.md` and memory loading, but a stray ancestor `CLAUDE.md` above the project copy will still be discovered if `` is itself nested. The runner detects this and either (a) walks up and copies just the project subtree, or (b) warns the user that ancestor discovery may still occur. +- `HOME` override prevents global `CLAUDE.md` and memory loading, but ancestor discovery still happens from the workspace's cwd. If the workspace is created inside a directory tree that contains a `.claude/skills/` further up, the subprocess may discover those skills regardless of `HOME`. This matters most for trigger evals, where stray host skills can fire instead of the synthetic skill we're testing — **prefer Docker for trigger evals**, where filesystem isolation is real. - Filesystem isolation is by convention only — the skill could write outside its workspace if it tries. We don't sandbox syscalls. - Network is unrestricted. Tell the user clearly when local mode is in use and that it is best-effort. +## Why a real skill, not a slash command, for trigger evals + +The trigger runner stages a synthetic skill at `/.claude/skills//SKILL.md` — not at `.claude/commands/.md`. Slash commands are user-invoked (`/`); they do not surface as `Skill` tool calls and so a description placed there can never be observed firing the way a real skill would. Anthropic's reference `run_eval.py` uses the commands path and is known to report 0% trigger rates as a result. Placing the synthetic at `.claude/skills/` matches how real skills load and lets the detector observe genuine `Skill` (or `Read` of the synthetic SKILL.md) tool calls. + ## Why not `--add-dir` only? `claude -p --add-dir ` would let Claude see the skill but would still inherit the user's `CLAUDE.md` and memory from the cwd's ancestors. The whole point of this runner is to test the skill, not the host's accumulated state. So we always either Docker-isolate or temp-dir-isolate. diff --git a/skills/bmad-eval-runner/scripts/run_evals.py b/skills/bmad-eval-runner/scripts/run_evals.py index 642389c..abb055d 100644 --- a/skills/bmad-eval-runner/scripts/run_evals.py +++ b/skills/bmad-eval-runner/scripts/run_evals.py @@ -46,11 +46,19 @@ new_run_id, parse_skill_md, read_json, + read_macos_keychain_credentials, + stage_credentials, utc_now_iso, write_json, ) DOCKER_IMAGE = "bmad-eval-runner:latest" +# Read the host's Claude Code OAuth credentials once at import. Each isolated +# workspace then receives a copy as `.claude/.credentials.json` so the subprocess +# can authenticate without inheriting the host's $HOME (and with it, host CLAUDE.md +# and auto-memory). On non-macOS hosts or when no credential exists, this is None +# and ANTHROPIC_API_KEY env-passthrough is the only auth path. +_KEYCHAIN_CREDS: str | None = read_macos_keychain_credentials() RSYNC_EXCLUDES = ( ".git", ".bare", "node_modules", ".venv", "__pycache__", ".pytest_cache", ".next", "dist", "build", ".cache", @@ -114,6 +122,7 @@ def run_eval_local(eval_item: dict, run_dir: Path, skill_path: Path, workspace_snapshot_before = snapshot_files(workspace_project) home_dir = workspace_root / ".home" + stage_credentials(home_dir / ".claude", _KEYCHAIN_CREDS) env = { "HOME": str(home_dir), "CLAUDE_CONFIG_DIR": str(home_dir / ".claude"), @@ -186,6 +195,16 @@ def run_eval_docker(eval_item: dict, run_dir: Path, skill_path: Path, (eval_dir / "prompt.txt").write_text(eval_item["prompt"], encoding="utf-8") + # Stage credentials in a dedicated dir so the container mount point holds + # exactly one file at a known name (`.credentials.json`). Mounting the eval_dir + # itself would expose all the run output and require the container to know + # the dot-prefix filename — keeping it isolated avoids both problems. + creds_dir: Path | None = None + if _KEYCHAIN_CREDS: + creds_dir = eval_dir / "creds" + creds_dir.mkdir(parents=True, exist_ok=True) + (creds_dir / ".credentials.json").write_text(_KEYCHAIN_CREDS, encoding="utf-8") + # Inline shell script to run inside the container container_script = r""" set -e @@ -200,6 +219,10 @@ def run_eval_docker(eval_item: dict, run_dir: Path, skill_path: Path, if [ -d /fixtures ]; then cp -R /fixtures/. /workspace/ fi +if [ -f /creds/.credentials.json ]; then + mkdir -p /home/evaluator/.claude + cp /creds/.credentials.json /home/evaluator/.claude/.credentials.json +fi cd /workspace claude -p "$EVAL_PROMPT" \ --output-format stream-json --verbose \ @@ -222,6 +245,8 @@ def run_eval_docker(eval_item: dict, run_dir: Path, skill_path: Path, "-e", f"SKILL_SRC=/skill_src", "-e", f"SKILL_NAME={skill_name}", ] + if creds_dir: + cmd += ["-v", f"{creds_dir}:/creds:ro"] if fixtures: cmd += ["-v", f"{fixtures_staging}:/fixtures:ro"] cmd += [DOCKER_IMAGE, "bash", "-c", container_script] diff --git a/skills/bmad-eval-runner/scripts/run_triggers.py b/skills/bmad-eval-runner/scripts/run_triggers.py index 036b070..e8d074d 100644 --- a/skills/bmad-eval-runner/scripts/run_triggers.py +++ b/skills/bmad-eval-runner/scripts/run_triggers.py @@ -45,21 +45,34 @@ new_run_id, parse_skill_md, read_json, + read_macos_keychain_credentials, + stage_credentials, utc_now_iso, write_json, ) DOCKER_IMAGE = "bmad-eval-runner:latest" +_KEYCHAIN_CREDS: str | None = read_macos_keychain_credentials() -def write_command_file(commands_dir: Path, skill_name: str, description: str, unique_id: str) -> tuple[Path, str]: - """Create a synthetic command file so the description appears in claude -p's available skills.""" - commands_dir.mkdir(parents=True, exist_ok=True) +def write_synthetic_skill(skills_dir: Path, skill_name: str, description: str, unique_id: str) -> tuple[Path, str]: + """Place a synthetic skill at //SKILL.md. + + The Skill tool only fires for entries discovered as actual skills (frontmatter + `name` + `description` under a `.claude/skills//SKILL.md`). Slash-commands + under `.claude/commands/` do not auto-invoke the Skill tool, so the previous + implementation could never observe a positive trigger. This places the synthetic + skill where Claude Code looks for skills, with a unique name so the detector + can disambiguate it from any pre-existing skill of the same display name. + """ clean_name = f"{skill_name}-skill-{unique_id}" - path = commands_dir / f"{clean_name}.md" + skill_root = skills_dir / clean_name + skill_root.mkdir(parents=True, exist_ok=True) + path = skill_root / "SKILL.md" indented_desc = "\n ".join(description.split("\n")) path.write_text( f"---\n" + f"name: {clean_name}\n" f"description: |\n" f" {indented_desc}\n" f"---\n\n" @@ -132,12 +145,13 @@ def run_query_local(query: str, skill_name: str, description: str, workspace_root.mkdir(parents=True, exist_ok=True) home_dir = workspace_root / ".home" (home_dir / ".claude").mkdir(parents=True, exist_ok=True) + stage_credentials(home_dir / ".claude", _KEYCHAIN_CREDS) project_dir = workspace_root / "project" - commands_dir = project_dir / ".claude" / "commands" + skills_dir = project_dir / ".claude" / "skills" project_dir.mkdir(parents=True, exist_ok=True) unique = uuid.uuid4().hex[:8] - cmd_file, clean_name = write_command_file(commands_dir, skill_name, description, unique) + cmd_file, clean_name = write_synthetic_skill(skills_dir, skill_name, description, unique) env = { "HOME": str(home_dir), @@ -190,7 +204,7 @@ def run_query_local(query: str, skill_name: str, description: str, return bool(triggered) finally: try: - cmd_file.unlink() + shutil.rmtree(cmd_file.parent, ignore_errors=True) except OSError: pass @@ -199,14 +213,24 @@ def run_query_docker(query: str, skill_name: str, description: str, workspace_root: Path, timeout: int) -> bool: workspace_root.mkdir(parents=True, exist_ok=True) unique = uuid.uuid4().hex[:8] - cmd_dir = workspace_root / "commands_in" - cmd_dir.mkdir(parents=True, exist_ok=True) - cmd_file, clean_name = write_command_file(cmd_dir, skill_name, description, unique) + skills_in = workspace_root / "skills_in" + skills_in.mkdir(parents=True, exist_ok=True) + _, clean_name = write_synthetic_skill(skills_in, skill_name, description, unique) + + creds_dir: Path | None = None + if _KEYCHAIN_CREDS: + creds_dir = workspace_root / "creds_in" + creds_dir.mkdir(parents=True, exist_ok=True) + (creds_dir / ".credentials.json").write_text(_KEYCHAIN_CREDS, encoding="utf-8") container_script = f""" set -e -mkdir -p /workspace/.claude/commands -cp /commands/*.md /workspace/.claude/commands/ 2>/dev/null || true +mkdir -p /workspace/.claude/skills +cp -R /skills/. /workspace/.claude/skills/ 2>/dev/null || true +if [ -f /creds/.credentials.json ]; then + mkdir -p /home/evaluator/.claude + cp /creds/.credentials.json /home/evaluator/.claude/.credentials.json +fi cd /workspace claude -p "$EVAL_QUERY" \\ --output-format stream-json --verbose --include-partial-messages \\ @@ -218,12 +242,14 @@ def run_query_docker(query: str, skill_name: str, description: str, cmd = [ "docker", "run", "--rm", - "-v", f"{cmd_dir}:/commands:ro", + "-v", f"{skills_in}:/skills:ro", "-v", f"{output_dir}:/output", "-e", "ANTHROPIC_API_KEY", "-e", f"EVAL_QUERY={query}", - DOCKER_IMAGE, "bash", "-c", container_script, ] + if creds_dir: + cmd += ["-v", f"{creds_dir}:/creds:ro"] + cmd += [DOCKER_IMAGE, "bash", "-c", container_script] try: subprocess.run(cmd, capture_output=True, timeout=timeout + 30) diff --git a/skills/bmad-eval-runner/scripts/utils.py b/skills/bmad-eval-runner/scripts/utils.py index a104763..d78eedd 100644 --- a/skills/bmad-eval-runner/scripts/utils.py +++ b/skills/bmad-eval-runner/scripts/utils.py @@ -10,6 +10,7 @@ import re import shutil import subprocess +import sys from datetime import datetime, timezone from pathlib import Path @@ -142,6 +143,41 @@ def docker_image_present(image: str = "bmad-eval-runner:latest") -> bool: return False +def read_macos_keychain_credentials() -> str | None: + """Read the Claude Code OAuth credentials JSON from the macOS Keychain. + + Returns the raw JSON string stored under service "Claude Code-credentials", + or None if unavailable (non-macOS, entry missing, or access denied). + + Called in the parent process — which owns the Keychain ACL — so the credential + can be staged into each isolated workspace's `.claude/.credentials.json` before + `claude -p` is launched. Without this, an isolated subprocess with HOME pointed + at an empty dir has no auth and every eval fails with "Not logged in." + """ + if sys.platform != "darwin": + return None + try: + result = subprocess.run( + ["security", "find-generic-password", "-s", "Claude Code-credentials", "-w"], + capture_output=True, + timeout=5, + ) + if result.returncode != 0: + return None + val = result.stdout.decode("utf-8", errors="replace").strip() + return val if val else None + except Exception: + return None + + +def stage_credentials(claude_dir: Path, credentials_json: str | None) -> None: + """Write credentials_json to /.credentials.json. No-op if None.""" + if not credentials_json: + return + claude_dir.mkdir(parents=True, exist_ok=True) + (claude_dir / ".credentials.json").write_text(credentials_json, encoding="utf-8") + + def write_json(path: Path, data: object) -> None: path.parent.mkdir(parents=True, exist_ok=True) path.write_text(json.dumps(data, indent=2) + "\n", encoding="utf-8") @@ -159,6 +195,8 @@ def read_json(path: Path) -> object: "new_run_id", "have_docker", "docker_image_present", + "read_macos_keychain_credentials", + "stage_credentials", "write_json", "read_json", ] From 5375fb4db6f9d0737c592237918cefcdedda93e4 Mon Sep 17 00:00:00 2001 From: Brian Madison Date: Sat, 9 May 2026 18:13:05 -0500 Subject: [PATCH 3/6] feat(eval-runner): setup overlay, dependency staging, trigger fix - Setup overlay system: rsync evals/setup/ (base) and evals//setup/ (per-eval) onto each workspace before skill staging, enabling dependency skills and _bmad/ config to be available inside the sandbox - Add parse_skill_dependencies, discover_setup_dirs, apply_setup_overlay to utils.py; wire through run_evals.py for both local and Docker modes - Fix 0% trigger rate: add --dangerously-skip-permissions to all claude -p invocations in run_triggers.py (without it Skill tool cannot read SKILL.md) - Upgrade grader.md with richer transcript parsing guidance (tool-call patterns, phase ordering, read-only enforcement, JSON block extraction) - Expand eval-formats.md reference with setup overlay and dependency docs - Default workers bumped to 8 - Add pty_runner.py (experimental; not wired into main flow) --- skills/bmad-eval-runner/agents/grader.md | 32 +++- .../references/eval-formats.md | 79 +++++++- skills/bmad-eval-runner/scripts/pty_runner.py | 171 ++++++++++++++++++ skills/bmad-eval-runner/scripts/run_evals.py | 114 ++++++++---- .../bmad-eval-runner/scripts/run_triggers.py | 2 + skills/bmad-eval-runner/scripts/utils.py | 58 ++++++ 6 files changed, 404 insertions(+), 52 deletions(-) create mode 100644 skills/bmad-eval-runner/scripts/pty_runner.py diff --git a/skills/bmad-eval-runner/agents/grader.md b/skills/bmad-eval-runner/agents/grader.md index 49a00dd..af1d0fb 100644 --- a/skills/bmad-eval-runner/agents/grader.md +++ b/skills/bmad-eval-runner/agents/grader.md @@ -18,19 +18,33 @@ You receive in your prompt: ## Process -1. **Read the transcript.** Open `transcript_path`. Note the prompt, the tool calls Claude made, and the final assistant message. Identify any errors or warnings logged. +1. **Read the transcript.** Open `transcript_path`. The transcript is stream-JSON: each line is a JSON event. Note: + - The user prompt that was sent + - Every tool call Claude made — `Write`, `Edit`, `Read`, `Skill`, `Bash`, etc. (the event has `type: "assistant"` and `content[].type: "tool_use"` with `name` and `input`) + - The order tool calls happened in (events are line-ordered) + - The final assistant message — often contains a JSON status block for headless runs + - Any errors or warnings logged -2. **List and inspect artifacts.** Walk `artifacts_dir`. For each expectation, open the files it implicates and read their contents — do not rely on filenames alone. +2. **List and inspect artifacts.** Walk `artifacts_dir`. For each expectation, open the files it implicates and read their contents — do not rely on filenames alone. Note file modification times when ordering or read-only behavior matters. -3. **Grade each expectation independently.** For each entry in `expectations`: - - Search transcript and artifacts for evidence - - Decide PASS only if there is clear, specific evidence the expectation holds AND the evidence reflects substance, not surface compliance (e.g., a file exists AND contains correct content, not just the right filename) - - Decide FAIL when no evidence is found, evidence contradicts, or the assertion is technically satisfied but the underlying outcome is wrong - - Cite the evidence — quote a specific line, name a specific file, point to a specific tool call +3. **Grade each expectation independently.** For each entry in `expectations`, identify what kind of check it is and gather the right evidence: -4. **Critique the evals.** After grading, surface assertions that look weak: ones that passed but would also pass for a clearly wrong output, or important outcomes you observed (good or bad) that no assertion checks. Keep the bar high — flag what an eval author would say "good catch" about, not nits. + - **Side-artifact existence + content** ("decision-log.md exists AND captures decision X") → open the file, read it, check the content matches. + - **Transcript tool-call patterns** ("transcript contains a Skill call to bmad-editorial-review-prose") → scan the transcript for `tool_use` events with the matching `name` and `input`. Quote the matching event. + - **Phase ordering** ("polish call occurs after the Write to brief.md and before the final JSON block") → find the line numbers / event indices of each landmark and verify the order. + - **Read-only enforcement** ("input brief.md is byte-identical to the fixture; no Write/Edit calls targeted it") → compare file content if the original is available; AND scan the transcript for any Write/Edit `tool_use` whose `input.file_path` falls in the protected directory. + - **YAML frontmatter** ("frontmatter contains title, status, created (ISO 8601), updated") → parse the frontmatter, check fields and their formats. + - **JSON output blocks** ("final assistant message contains a JSON object with intent='create'") → look at the final `text` content of the last assistant message; extract the JSON object; check the field. + - **Bidirectional fidelity** ("every decision in decision-log.md is reflected in brief.md AND no claim in brief.md is absent from the input prompt or log") → list decisions in the log, verify each appears in the brief; list substantive claims in the brief, verify each traces to either the prompt or the log. -5. **Write `grading.json`.** Save to `grading_path`. +4. **Decide PASS or FAIL with specific evidence.** + - PASS only if there is clear, specific evidence the expectation holds AND the evidence reflects substance, not surface compliance (file exists AND contains correct content, not just the right filename). + - FAIL when no evidence is found, evidence contradicts, or the assertion is technically satisfied but the underlying outcome is wrong. + - Cite the evidence — quote a specific line, name a specific file with a path, point to a specific tool call with its index or input. + +5. **Critique the evals.** After grading, surface assertions that look weak: ones that passed but would also pass for a clearly wrong output, or important outcomes you observed (good or bad) that no assertion checks. Keep the bar high — flag what an eval author would say "good catch" about, not nits. + +6. **Write `grading.json`.** Save to `grading_path`. ## Output Format diff --git a/skills/bmad-eval-runner/references/eval-formats.md b/skills/bmad-eval-runner/references/eval-formats.md index d4859f9..6856abc 100644 --- a/skills/bmad-eval-runner/references/eval-formats.md +++ b/skills/bmad-eval-runner/references/eval-formats.md @@ -66,17 +66,82 @@ The runner discovers evals in this order: If both `evals.json` and `triggers.json` are found, both run unless `--mode` narrows it. +## Two patterns for single-shot evals + +Most multi-turn workflow skills can be evaluated single-shot if you design the eval right. Two patterns cover the bulk of what you'd otherwise need a multi-turn simulator for: + +### Pattern A — artifact correctness (headless + rich prompt) + +Force the skill into headless mode and pack the prompt with everything Discovery would have surfaced. Grade what comes out: the artifact, its structure, whether it reflects the inputs without inventing. + +Use when: +- The deliverable is the artifact (brief, PRD, doc, plan) +- You can write a complete pre-Discovery prompt +- You want regression coverage on drafting/format/extraction + +### Pattern B — process discipline (headless + transcript and side-artifact inspection) + +Same single-shot mechanics, but the expectations look at *what the skill did internally* — not just the final output. The grader reads the stream-JSON transcript for tool calls, walks side-artifacts (decision logs, addenda, distillates), checks file mtimes, and verifies phase ordering. + +Use when: +- The skill enforces a protocol (decision log, polish phase, finalize sequence) +- The skill has read-only intents (Validate must not write) +- You need to catch "drafting works but the discipline went soft" regressions + +These are deterministic checks against the transcript and filesystem — no LLM judgment needed for most of them. + +### What single-shot can NOT cover + +Facilitation arc: vague-input → sharper pushback → user clarifies → better artifact. That requires a multi-turn user simulator. Defer it to a separate eval mode for skills where conversation is the value (coaching, brainstorming, design thinking). + ## Writing good expectations -The grader's job is easier when expectations are *discriminating* — they are hard to pass without actually doing the work. Weak patterns to avoid: +The grader's job is easier when expectations are *discriminating* — hard to pass without actually doing the work. -- **Filename-only checks** — "brief.md exists" can pass for an empty file. Pair with a content check. +**Weak patterns to avoid:** +- **Filename-only checks** — "brief.md exists" passes for an empty file. Pair with a content check. - **Wholly subjective phrasing** — "the brief is high quality" cannot be evaluated. State the property concretely. - **Tautologies** — anything that follows from the prompt being understood is not a useful expectation. -Strong patterns: - -- Specific facts that should appear in the output ("incorporates at least 2 specific findings from section X") -- Structural claims that a wrong output would fail ("brief.md word count is between 250 and 1500") +**Strong patterns for artifact correctness (Pattern A):** +- Specific facts that should appear ("incorporates at least 2 specific findings from section X") +- Structural claims a wrong output would fail ("word count between 250 and 1500") - Negative assertions ("does not introduce content from unrelated sections") -- Decision-log entries that capture process choices ("decision-log indicates the report was filtered to the helmet category rather than ingested whole") +- YAML frontmatter checks ("frontmatter contains title, status, created, updated as ISO 8601") +- Bounded JSON output ("final assistant message contains a JSON object with intent='create'") + +**Strong patterns for process discipline (Pattern B):** +- **Side-artifact existence + content** ("decision-log.md exists AND captures the pricing decision with rejected alternative and rationale") +- **Transcript tool-call patterns** ("the transcript contains a Skill tool call invoking bmad-editorial-review-prose") +- **Phase ordering** ("the polish-phase Skill calls occur after the brief body Write and before the final JSON status block") +- **Read-only enforcement** ("the input brief.md is byte-identical to the staged fixture; no Write or Edit tool calls targeted the run folder") +- **Bidirectional fidelity** ("every substantive entry in decision-log.md has a corresponding reflection in brief.md, AND no claim in brief.md is absent from the input prompt or decision-log.md") +- **Timestamp checks** ("YAML frontmatter 'updated' field is later than 'created'; 'created' is unchanged from the input fixture") + +## Headless mode — getting the skill to behave non-interactively + +Most multi-turn skills expose a headless flag or keyword that suppresses clarifying questions and produces a structured JSON status block at the end. To use Pattern A or B, the eval prompt needs to trigger this. Common signals: + +- The literal phrase `Run headless.` at the start of the prompt +- Skill-specific flags or keywords as documented in the skill's `## Headless Mode` section +- Sufficient context such that no clarification is genuinely needed + +If the skill has no headless mode, single-shot evals will halt at the first clarifying question and you have two options: (1) add a headless mode to the skill, (2) defer that skill's evals to the multi-turn simulator. + +## Pre-staging files (Update / Validate intents) + +For Update and Validate evals, the workspace needs to contain an existing brief, decision log, addendum, etc. Use the `files` field — each path is staged into the workspace at the same relative location. The eval prompt then references the staged path explicitly: + +```json +{ + "id": "B5", + "prompt": "Run headless. Update the brief at evals/skill-x/files/some-brief/brief.md — ...", + "files": [ + "evals/skill-x/files/some-brief/brief.md", + "evals/skill-x/files/some-brief/decision-log.md", + "evals/skill-x/files/some-brief/addendum.md" + ] +} +``` + +For Validate (read-only) expectations, pair the staged files with byte-identical assertions and a no-Write/no-Edit transcript check. diff --git a/skills/bmad-eval-runner/scripts/pty_runner.py b/skills/bmad-eval-runner/scripts/pty_runner.py new file mode 100644 index 0000000..5b58658 --- /dev/null +++ b/skills/bmad-eval-runner/scripts/pty_runner.py @@ -0,0 +1,171 @@ +#!/usr/bin/env python3 +# /// script +# requires-python = ">=3.9" +# /// +"""Run claude interactively via PTY so the Skill tool is available. + +In `claude -p` (print mode) the Skill tool is never offered — Claude handles +everything inline. Running `claude` in interactive mode activates the Skill +tool so dependency skills installed in .claude/skills/ can be properly invoked. + +The PTY tricks claude into thinking it has a terminal (interactive mode) while +we capture its stream-json output programmatically. + +Usage: + python3 pty_runner.py --prompt-file /path/to/prompt.txt \\ + --output /path/to/transcript.jsonl \\ + [--timeout 600] + python3 pty_runner.py --prompt "Run headless. ..." --output transcript.jsonl +""" + +from __future__ import annotations + +import argparse +import json +import os +import pty +import re +import select +import subprocess +import sys +import time +from pathlib import Path + +ANSI_RE = re.compile(r"\x1b(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])|\r") + +# How long to wait for claude to initialize before sending the prompt. +# Claude loads skill registry, checks credentials, etc. on startup. +INIT_WAIT_S = 5.0 + +# How long to wait after the stream-json 'result' event before killing claude. +# Trailing tool-result output sometimes follows the result event. +POST_RESULT_S = 4.0 + + +def _strip_ansi(text: str) -> str: + return ANSI_RE.sub("", text) + + +def run_interactive(prompt: str, output: Path, timeout: int = 600) -> None: + """Spawn claude interactively via PTY, send one prompt, capture transcript.""" + master, slave = pty.openpty() + + proc = subprocess.Popen( + [ + "claude", + "--output-format", "stream-json", + "--verbose", + "--dangerously-skip-permissions", + ], + stdin=slave, + stdout=slave, + stderr=slave, + close_fds=True, + ) + os.close(slave) + + json_lines: list[str] = [] + buf = b"" + prompt_sent = False + done_at: float | None = None + start = time.time() + + try: + while True: + elapsed = time.time() - start + if elapsed > timeout: + print(f"[pty_runner] timeout after {elapsed:.0f}s", file=sys.stderr) + break + if done_at is not None and (time.time() - done_at) > POST_RESULT_S: + break + + # Short select so we stay responsive but don't spin. + r, _, _ = select.select([master], [], [], 0.3) + + if r: + try: + chunk = os.read(master, 8192) + except OSError: + break # PTY closed — claude exited + buf += chunk + + # Process all complete lines in buffer. + while b"\n" in buf: + raw, buf = buf.split(b"\n", 1) + line = _strip_ansi(raw.decode("utf-8", errors="replace")).strip() + if not line.startswith("{"): + continue + json_lines.append(line) + try: + obj = json.loads(line) + # 'result' marks end of a claude turn. + if obj.get("type") == "result" and done_at is None: + done_at = time.time() + print( + f"[pty_runner] result event at t={time.time()-start:.1f}s " + f"({len(json_lines)} lines so far)", + file=sys.stderr, + ) + except json.JSONDecodeError: + pass + else: + # Silence window — send prompt once claude has had time to init. + if not prompt_sent and (time.time() - start) >= INIT_WAIT_S: + os.write(master, (prompt + "\n").encode()) + prompt_sent = True + print( + f"[pty_runner] prompt sent at t={time.time()-start:.1f}s", + file=sys.stderr, + ) + + finally: + # Politely ask claude to exit, then hard-kill if needed. + try: + os.write(master, b"exit\n") + time.sleep(0.3) + except OSError: + pass + try: + proc.terminate() + proc.wait(timeout=5) + except Exception: + try: + proc.kill() + except Exception: + pass + try: + os.close(master) + except OSError: + pass + + output.parent.mkdir(parents=True, exist_ok=True) + content = "\n".join(json_lines) + ("\n" if json_lines else "") + output.write_text(content, encoding="utf-8") + print( + f"[pty_runner] wrote {len(json_lines)} transcript lines → {output}", + file=sys.stderr, + ) + + +def main() -> int: + p = argparse.ArgumentParser( + description="Run claude interactively via PTY and capture stream-json transcript" + ) + grp = p.add_mutually_exclusive_group(required=True) + grp.add_argument("--prompt", help="Prompt text") + grp.add_argument("--prompt-file", type=Path, help="File containing the prompt") + p.add_argument("--output", type=Path, required=True, help="Output .jsonl transcript file") + p.add_argument("--timeout", type=int, default=600, help="Hard timeout in seconds") + args = p.parse_args() + + prompt = ( + args.prompt_file.read_text(encoding="utf-8").strip() + if args.prompt_file + else args.prompt + ) + run_interactive(prompt, args.output, args.timeout) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/skills/bmad-eval-runner/scripts/run_evals.py b/skills/bmad-eval-runner/scripts/run_evals.py index abb055d..0a26488 100644 --- a/skills/bmad-eval-runner/scripts/run_evals.py +++ b/skills/bmad-eval-runner/scripts/run_evals.py @@ -6,16 +6,18 @@ For each eval, the runner: 1. Stages a fresh workspace (Docker container or local tmp dir under ~/bmad-evals). - 2. Copies the project (excluding heavy directories) into the workspace; mounts the - skill so it's discoverable by `claude -p`. - 3. Stages any fixture files declared in the eval's `files` list. - 4. Runs `claude -p '' --output-format stream-json --verbose`, capturing - the transcript. - 5. Rsyncs any files Claude wrote into the workspace into `//artifacts/`. - 6. Writes `metrics.json` (tool-call counts, timing, output sizes). - -Grading is performed separately by the parent skill's grader subagents — this script -captures evidence; it does not score. + 2. Applies the setup overlay (base then per-eval) so _bmad/ config and dependency + skills land in the workspace BEFORE the skill is staged — the skill's own copy + always wins over overlay content. + 3. Copies the skill into .claude/skills/ so it is discoverable by claude. + 4. Stages any fixture files declared in the eval's `files` list. + 5. Runs `claude -p '' --output-format stream-json --verbose`, capturing + the transcript. The Skill tool is available in -p mode and fires for installed + skills, so dependency skills provided by the setup overlay are properly invokable. + 6. Rsyncs any files claude wrote into `//artifacts/`. + 7. Writes `metrics.json` (tool-call counts, timing, output sizes). + +Grading is performed separately by the parent skill's grader subagents. Usage: python3 run_evals.py \\ @@ -24,7 +26,7 @@ --project-root PATH \\ --output-dir PATH \\ --isolation docker|local \\ - [--workers N] [--timeout SECS] [--eval-ids 1,3] [--quiet] + [--workers N] [--timeout SECS] [--eval-ids A1,B3] [--quiet] """ from __future__ import annotations @@ -43,6 +45,8 @@ sys.path.insert(0, str(SCRIPT_DIR)) from utils import ( # noqa: E402 + apply_setup_overlay, + discover_setup_dirs, new_run_id, parse_skill_md, read_json, @@ -53,11 +57,6 @@ ) DOCKER_IMAGE = "bmad-eval-runner:latest" -# Read the host's Claude Code OAuth credentials once at import. Each isolated -# workspace then receives a copy as `.claude/.credentials.json` so the subprocess -# can authenticate without inheriting the host's $HOME (and with it, host CLAUDE.md -# and auto-memory). On non-macOS hosts or when no credential exists, this is None -# and ANTHROPIC_API_KEY env-passthrough is the only auth path. _KEYCHAIN_CREDS: str | None = read_macos_keychain_credentials() RSYNC_EXCLUDES = ( ".git", ".bare", "node_modules", ".venv", "__pycache__", @@ -66,15 +65,20 @@ ) -def stage_workspace_local(workspace: Path, project_root: Path, skill_path: Path, - fixtures: list[tuple[Path, str]]) -> Path: - """Build a clean local workspace at /. Returns workspace path.""" +def stage_workspace_local( + workspace: Path, + project_root: Path, + skill_path: Path, + fixtures: list[tuple[Path, str]], + setup_dirs: list[Path] | None = None, +) -> Path: + """Build a clean local workspace. Returns the project root inside workspace.""" workspace.mkdir(parents=True, exist_ok=True) project_dest = workspace / "project" home_dir = workspace / ".home" (home_dir / ".claude").mkdir(parents=True, exist_ok=True) - excludes = [] + excludes: list[str] = [] for pat in RSYNC_EXCLUDES: excludes.extend(["--exclude", pat]) @@ -87,6 +91,10 @@ def stage_workspace_local(workspace: Path, project_root: Path, skill_path: Path, shutil.copytree(project_root, project_dest, dirs_exist_ok=True, ignore=shutil.ignore_patterns(*RSYNC_EXCLUDES)) + # Apply setup overlay before staging the skill — the skill's own copy wins. + if setup_dirs: + apply_setup_overlay(setup_dirs, project_dest) + skill_link_dir = project_dest / ".claude" / "skills" skill_link_dir.mkdir(parents=True, exist_ok=True) skill_dest = skill_link_dir / skill_path.name @@ -104,8 +112,14 @@ def stage_workspace_local(workspace: Path, project_root: Path, skill_path: Path, return project_dest -def run_eval_local(eval_item: dict, run_dir: Path, skill_path: Path, - project_root: Path, timeout: int) -> dict: +def run_eval_local( + eval_item: dict, + run_dir: Path, + skill_path: Path, + project_root: Path, + timeout: int, + setup_dirs: list[Path] | None = None, +) -> dict: eval_id = str(eval_item.get("id", "unnamed")) eval_dir = run_dir / eval_id workspace_root = eval_dir / "workspace" @@ -116,7 +130,9 @@ def run_eval_local(eval_item: dict, run_dir: Path, skill_path: Path, artifacts_dir.mkdir(parents=True, exist_ok=True) fixtures = resolve_fixtures(eval_item.get("files", []), project_root) - workspace_project = stage_workspace_local(workspace_root, project_root, skill_path, fixtures) + workspace_project = stage_workspace_local( + workspace_root, project_root, skill_path, fixtures, setup_dirs + ) (eval_dir / "prompt.txt").write_text(eval_item["prompt"], encoding="utf-8") workspace_snapshot_before = snapshot_files(workspace_project) @@ -175,8 +191,14 @@ def run_eval_local(eval_item: dict, run_dir: Path, skill_path: Path, } -def run_eval_docker(eval_item: dict, run_dir: Path, skill_path: Path, - project_root: Path, timeout: int) -> dict: +def run_eval_docker( + eval_item: dict, + run_dir: Path, + skill_path: Path, + project_root: Path, + timeout: int, + setup_dirs: list[Path] | None = None, +) -> dict: eval_id = str(eval_item.get("id", "unnamed")) eval_dir = run_dir / eval_id artifacts_dir = eval_dir / "artifacts" @@ -195,17 +217,20 @@ def run_eval_docker(eval_item: dict, run_dir: Path, skill_path: Path, (eval_dir / "prompt.txt").write_text(eval_item["prompt"], encoding="utf-8") - # Stage credentials in a dedicated dir so the container mount point holds - # exactly one file at a known name (`.credentials.json`). Mounting the eval_dir - # itself would expose all the run output and require the container to know - # the dot-prefix filename — keeping it isolated avoids both problems. + # Pre-merge setup overlay dirs on the host; mount as /setup:ro in the container. + setup_merged: Path | None = None + if setup_dirs: + setup_merged = eval_dir / "setup_merged" + apply_setup_overlay(setup_dirs, setup_merged) + if not any(setup_merged.iterdir()): + setup_merged = None + creds_dir: Path | None = None if _KEYCHAIN_CREDS: creds_dir = eval_dir / "creds" creds_dir.mkdir(parents=True, exist_ok=True) (creds_dir / ".credentials.json").write_text(_KEYCHAIN_CREDS, encoding="utf-8") - # Inline shell script to run inside the container container_script = r""" set -e mkdir -p /workspace @@ -214,6 +239,9 @@ def run_eval_docker(eval_item: dict, run_dir: Path, skill_path: Path, --exclude=__pycache__ --exclude=.pytest_cache --exclude=.next \ --exclude=dist --exclude=build --exclude=.cache --exclude=.DS_Store \ /project/ /workspace/ +if [ -d /setup ]; then + rsync -a /setup/ /workspace/ +fi mkdir -p /workspace/.claude/skills cp -R "$SKILL_SRC" "/workspace/.claude/skills/$SKILL_NAME" if [ -d /fixtures ]; then @@ -249,6 +277,8 @@ def run_eval_docker(eval_item: dict, run_dir: Path, skill_path: Path, cmd += ["-v", f"{creds_dir}:/creds:ro"] if fixtures: cmd += ["-v", f"{fixtures_staging}:/fixtures:ro"] + if setup_merged: + cmd += ["-v", f"{setup_merged}:/setup:ro"] cmd += [DOCKER_IMAGE, "bash", "-c", container_script] start = time.time() @@ -285,12 +315,10 @@ def run_eval_docker(eval_item: dict, run_dir: Path, skill_path: Path, def resolve_fixtures(files: list[str], project_root: Path) -> list[tuple[Path, str]]: - """Return [(source_path, dest_relpath)]. dest_relpath preserves nesting under fixtures_root.""" out: list[tuple[Path, str]] = [] for entry in files: candidate = (project_root / entry).resolve() if not candidate.is_file(): - # Try relative to cwd as a fallback alt = Path(entry).resolve() if alt.is_file(): candidate = alt @@ -373,7 +401,7 @@ def main() -> int: parser.add_argument("--project-root", required=True, type=Path) parser.add_argument("--output-dir", required=True, type=Path) parser.add_argument("--isolation", choices=("docker", "local"), required=True) - parser.add_argument("--workers", type=int, default=4) + parser.add_argument("--workers", type=int, default=8) parser.add_argument("--timeout", type=int, default=600) parser.add_argument("--eval-ids", default=None, help="Comma-separated subset of eval ids to run") parser.add_argument("--quiet", action="store_true") @@ -413,11 +441,22 @@ def main() -> int: results: list[dict] = [] if not args.quiet: - print(f"[run_evals] {len(evals)} evals, isolation={args.isolation}, run_dir={run_dir}", file=sys.stderr) + print( + f"[run_evals] {len(evals)} evals, isolation={args.isolation}, run_dir={run_dir}", + file=sys.stderr, + ) with ThreadPoolExecutor(max_workers=args.workers) as pool: future_to_eval = { - pool.submit(runner, item, run_dir, skill_path, project_root, args.timeout): item + pool.submit( + runner, + item, + run_dir, + skill_path, + project_root, + args.timeout, + discover_setup_dirs(evals_file, str(item.get("id", ""))), + ): item for item in evals } for fut in as_completed(future_to_eval): @@ -430,7 +469,10 @@ def main() -> int: if not args.quiet: rc = res.get("return_code") status = "ok" if rc == 0 else f"rc={rc}" - print(f" [{status}] eval {res.get('eval_id')} ({res.get('elapsed_s', 0)}s)", file=sys.stderr) + print( + f" [{status}] eval {res.get('eval_id')} ({res.get('elapsed_s', 0):.1f}s)", + file=sys.stderr, + ) summary = { "run_id": run_id, diff --git a/skills/bmad-eval-runner/scripts/run_triggers.py b/skills/bmad-eval-runner/scripts/run_triggers.py index e8d074d..9c1bb96 100644 --- a/skills/bmad-eval-runner/scripts/run_triggers.py +++ b/skills/bmad-eval-runner/scripts/run_triggers.py @@ -165,6 +165,7 @@ def run_query_local(query: str, skill_name: str, description: str, "--output-format", "stream-json", "--verbose", "--include-partial-messages", + "--dangerously-skip-permissions", ] try: @@ -234,6 +235,7 @@ def run_query_docker(query: str, skill_name: str, description: str, cd /workspace claude -p "$EVAL_QUERY" \\ --output-format stream-json --verbose --include-partial-messages \\ + --dangerously-skip-permissions \\ > /output/stream.jsonl 2>/dev/null || true """ diff --git a/skills/bmad-eval-runner/scripts/utils.py b/skills/bmad-eval-runner/scripts/utils.py index d78eedd..92b6436 100644 --- a/skills/bmad-eval-runner/scripts/utils.py +++ b/skills/bmad-eval-runner/scripts/utils.py @@ -187,6 +187,61 @@ def read_json(path: Path) -> object: return json.loads(path.read_text(encoding="utf-8")) +def parse_skill_dependencies(skill_path: Path) -> list[str]: + """Return skill names declared under 'dependencies:' in SKILL.md frontmatter.""" + try: + text = (skill_path / "SKILL.md").read_text(encoding="utf-8") + except (FileNotFoundError, OSError): + return [] + fm = re.match(r"^---\s*\n(.*?)\n---", text, re.DOTALL) + if not fm: + return [] + deps: list[str] = [] + in_deps = False + for line in fm.group(1).splitlines(): + if re.match(r"^dependencies\s*:", line): + in_deps = True + elif in_deps: + m = re.match(r"^\s+-\s+(\S+)", line) + if m: + deps.append(m.group(1)) + elif not line.startswith((" ", "\t")): + break + return deps + + +def discover_setup_dirs(evals_file: Path, eval_id: str | None = None) -> list[Path]: + """Return ordered list of setup overlay dirs that exist. + + base: /setup/ + per-eval: //setup/ + + Applied base-first so per-eval overlays win on conflict. + """ + evals_dir = evals_file.parent + dirs: list[Path] = [] + base = evals_dir / "setup" + if base.is_dir(): + dirs.append(base) + if eval_id: + per_eval = evals_dir / eval_id / "setup" + if per_eval.is_dir(): + dirs.append(per_eval) + return dirs + + +def apply_setup_overlay(setup_dirs: list[Path], dest: Path) -> None: + """Rsync each setup dir onto dest in order (base first, per-eval last).""" + dest.mkdir(parents=True, exist_ok=True) + for src in setup_dirs: + if not src.is_dir(): + continue + subprocess.run( + ["rsync", "-a", f"{src}/", f"{dest}/"], + check=False, + ) + + __all__ = [ "parse_skill_md", "discover_project_root", @@ -199,4 +254,7 @@ def read_json(path: Path) -> object: "stage_credentials", "write_json", "read_json", + "parse_skill_dependencies", + "discover_setup_dirs", + "apply_setup_overlay", ] From 91f97422737feea099f48424dee193aeac59f41b Mon Sep 17 00:00:00 2001 From: Brian Madison Date: Sat, 9 May 2026 18:17:11 -0500 Subject: [PATCH 4/6] feat(eval-runner): support per-eval timeout override via evals.json timeout field --- skills/bmad-eval-runner/scripts/run_evals.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skills/bmad-eval-runner/scripts/run_evals.py b/skills/bmad-eval-runner/scripts/run_evals.py index 0a26488..fd8438b 100644 --- a/skills/bmad-eval-runner/scripts/run_evals.py +++ b/skills/bmad-eval-runner/scripts/run_evals.py @@ -454,7 +454,7 @@ def main() -> int: run_dir, skill_path, project_root, - args.timeout, + int(item.get("timeout", args.timeout)), discover_setup_dirs(evals_file, str(item.get("id", ""))), ): item for item in evals From 3f2078183c36421259f8172972d8cdbc66ebb0e6 Mon Sep 17 00:00:00 2001 From: Brian Madison Date: Sat, 9 May 2026 19:01:51 -0500 Subject: [PATCH 5/6] docs(eval-runner): add explanation, how-to, and reference docs for bmad-eval-runner - explanation/what-are-evals.md: artifact vs trigger evals; output vs transcript grading - explanation/why-bmad-eval-runner.md: isolation, dependency staging, real triggers, permanent artifacts - how-to/install-docker-for-evals.md: Docker Desktop setup with credential-safety notes - how-to/run-evals-against-a-skill.md: 5-step run flow with brief eval suite as worked example - reference/eval-format.md: complete schema for evals.json + triggers.json (fixtures, setup overlays, per-eval timeout) - _diagrams/eval-test-types.excalidraw: source diagram with Playwright renderer (render.mjs + render.html) - public/img/eval-test-types.png: rendered architecture diagram embedded in what-are-evals.md - update explanation/index.md and reference/index.md sidebars --- docs/_diagrams/README.md | 36 + docs/_diagrams/eval-test-types.excalidraw | 1357 +++++++++++++++++++++ docs/_diagrams/render.html | 48 + docs/_diagrams/render.mjs | 63 + docs/explanation/index.md | 7 + docs/explanation/what-are-evals.md | 110 ++ docs/explanation/why-bmad-eval-runner.md | 38 + docs/how-to/install-docker-for-evals.md | 87 ++ docs/how-to/run-evals-against-a-skill.md | 122 ++ docs/reference/eval-format.md | 208 ++++ docs/reference/index.md | 9 +- website/public/img/eval-test-types.png | Bin 0 -> 463824 bytes 12 files changed, 2081 insertions(+), 4 deletions(-) create mode 100644 docs/_diagrams/README.md create mode 100644 docs/_diagrams/eval-test-types.excalidraw create mode 100644 docs/_diagrams/render.html create mode 100644 docs/_diagrams/render.mjs create mode 100644 docs/explanation/what-are-evals.md create mode 100644 docs/explanation/why-bmad-eval-runner.md create mode 100644 docs/how-to/install-docker-for-evals.md create mode 100644 docs/how-to/run-evals-against-a-skill.md create mode 100644 docs/reference/eval-format.md create mode 100644 website/public/img/eval-test-types.png diff --git a/docs/_diagrams/README.md b/docs/_diagrams/README.md new file mode 100644 index 0000000..3efdcbb --- /dev/null +++ b/docs/_diagrams/README.md @@ -0,0 +1,36 @@ +# Diagram Sources + +Excalidraw source files for diagrams embedded in the docs. Edit the `.excalidraw` source here, then export PNG to `website/public/img/`. + +## Files + +| Source | Rendered PNG | Used In | +| ------------------------------- | --------------------------------------------------- | -------------------------------------------- | +| `eval-test-types.excalidraw` | `website/public/img/eval-test-types.png` | explanation/what-are-evals.md | + +## Exporting to PNG + +A headless renderer is included. From the project root: + +```bash +# Install playwright once if you have not (~50 MB) +npm install --no-save playwright + +# Render any source file in this folder +node docs/_diagrams/render.mjs \ + docs/_diagrams/eval-test-types.excalidraw \ + website/public/img/eval-test-types.png \ + 2 +``` + +The third arg is the scale factor (2 = retina). The renderer loads `@excalidraw/utils` from esm.sh, exports to canvas, and writes the PNG. Internet is required on the first run; thereafter esm.sh caches. + +If you prefer the GUI, drag the `.excalidraw` onto [excalidraw.com](https://excalidraw.com) and use File > Export image > PNG (scale 2x, white background). + +The PNG is committed alongside the source so the docs render without a build step. + +## Convention + +- Two-character element indices only (`a0`, `aZ`, `b3`). Three-char indices like `d9a` silently break the file. +- Use distinct fill colors per logical group (e.g., workspace, artifact flow, trigger flow, output). +- Keep diagrams legible at 1200px wide. diff --git a/docs/_diagrams/eval-test-types.excalidraw b/docs/_diagrams/eval-test-types.excalidraw new file mode 100644 index 0000000..cd8b687 --- /dev/null +++ b/docs/_diagrams/eval-test-types.excalidraw @@ -0,0 +1,1357 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "id": "el_1001", + "type": "text", + "x": 350, + "y": 20, + "width": 600, + "height": 40, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 7926919, + "version": 1, + "versionNonce": 6157151, + "isDeleted": false, + "boundElements": null, + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "a0", + "text": "Eval Runner: How the Test Types Flow", + "fontSize": 26, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "Eval Runner: How the Test Types Flow", + "lineHeight": 1.25, + "baseline": 22 + }, + { + "id": "el_1002", + "type": "rectangle", + "x": 220, + "y": 90, + "width": 860, + "height": 110, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff7e6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 7934838, + "version": 1, + "versionNonce": 6163302, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "el_1003" + } + ], + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "a1" + }, + { + "id": "el_1003", + "type": "text", + "x": 220, + "y": 105.0, + "width": 860, + "height": 80, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 7942757, + "version": 1, + "versionNonce": 6169453, + "isDeleted": false, + "boundElements": null, + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "a2", + "text": "Isolated Workspace (Docker container or HOME-overridden temp dir)\nProject rsync + Setup overlays (base + per-eval) + Skill under test + Fixtures + Credentials", + "fontSize": 16, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "top", + "containerId": "el_1002", + "originalText": "Isolated Workspace (Docker container or HOME-overridden temp dir)\nProject rsync + Setup overlays (base + per-eval) + Skill under test + Fixtures + Credentials", + "lineHeight": 1.25, + "baseline": 13 + }, + { + "id": "el_1004", + "type": "arrow", + "x": 650, + "y": 200, + "width": 300, + "height": 80, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 7950676, + "version": 1, + "versionNonce": 6175604, + "isDeleted": false, + "boundElements": null, + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "a3", + "points": [ + [ + 0, + 0 + ], + [ + -300, + 80 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "el_1002", + "focus": 0, + "gap": 4 + }, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "el_1005", + "type": "arrow", + "x": 650, + "y": 200, + "width": 300, + "height": 80, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 7958595, + "version": 1, + "versionNonce": 6181755, + "isDeleted": false, + "boundElements": null, + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "a4", + "points": [ + [ + 0, + 0 + ], + [ + 300, + 80 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "el_1002", + "focus": 0, + "gap": 4 + }, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "el_1006", + "type": "text", + "x": 200, + "y": 230, + "width": 300, + "height": 30, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 7966514, + "version": 1, + "versionNonce": 6187906, + "isDeleted": false, + "boundElements": null, + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "a5", + "text": "Artifact Eval", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "Artifact Eval", + "lineHeight": 1.25, + "baseline": 17 + }, + { + "id": "el_1007", + "type": "text", + "x": 800, + "y": 230, + "width": 300, + "height": 30, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 7974433, + "version": 1, + "versionNonce": 6194057, + "isDeleted": false, + "boundElements": null, + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "a6", + "text": "Trigger Eval", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "Trigger Eval", + "lineHeight": 1.25, + "baseline": 17 + }, + { + "id": "el_1008", + "type": "rectangle", + "x": 200, + "y": 280, + "width": 300, + "height": 70, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e6f4ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 7982352, + "version": 1, + "versionNonce": 6200208, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "el_1009" + } + ], + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "a7" + }, + { + "id": "el_1009", + "type": "text", + "x": 200, + "y": 303.0, + "width": 300, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 7990271, + "version": 1, + "versionNonce": 6206359, + "isDeleted": false, + "boundElements": null, + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "a8", + "text": "claude -p with eval prompt", + "fontSize": 16, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "top", + "containerId": "el_1008", + "originalText": "claude -p with eval prompt", + "lineHeight": 1.25, + "baseline": 13 + }, + { + "id": "el_1010", + "type": "rectangle", + "x": 200, + "y": 380, + "width": 300, + "height": 70, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e6f4ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 7998190, + "version": 1, + "versionNonce": 6212510, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "el_1011" + } + ], + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "a9" + }, + { + "id": "el_1011", + "type": "text", + "x": 200, + "y": 403.0, + "width": 300, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 8006109, + "version": 1, + "versionNonce": 6218661, + "isDeleted": false, + "boundElements": null, + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "aA", + "text": "transcript.jsonl + artifacts/", + "fontSize": 16, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "top", + "containerId": "el_1010", + "originalText": "transcript.jsonl + artifacts/", + "lineHeight": 1.25, + "baseline": 13 + }, + { + "id": "el_1012", + "type": "rectangle", + "x": 200, + "y": 480, + "width": 300, + "height": 70, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e6f4ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 8014028, + "version": 1, + "versionNonce": 6224812, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "el_1013" + } + ], + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "aB" + }, + { + "id": "el_1013", + "type": "text", + "x": 200, + "y": 503.0, + "width": 300, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 8021947, + "version": 1, + "versionNonce": 6230963, + "isDeleted": false, + "boundElements": null, + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "aC", + "text": "Grader subagent (parallel)\nreads transcript + artifacts", + "fontSize": 16, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "top", + "containerId": "el_1012", + "originalText": "Grader subagent (parallel)\nreads transcript + artifacts", + "lineHeight": 1.25, + "baseline": 13 + }, + { + "id": "el_1014", + "type": "rectangle", + "x": 200, + "y": 580, + "width": 300, + "height": 70, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e6f4ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 8029866, + "version": 1, + "versionNonce": 6237114, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "el_1015" + } + ], + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "aD" + }, + { + "id": "el_1015", + "type": "text", + "x": 200, + "y": 603.0, + "width": 300, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 8037785, + "version": 1, + "versionNonce": 6243265, + "isDeleted": false, + "boundElements": null, + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "aE", + "text": "grading.json\n(PASS/FAIL per expectation)", + "fontSize": 16, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "top", + "containerId": "el_1014", + "originalText": "grading.json\n(PASS/FAIL per expectation)", + "lineHeight": 1.25, + "baseline": 13 + }, + { + "id": "el_1016", + "type": "arrow", + "x": 350.0, + "y": 350, + "width": 0.0, + "height": 30, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 8045704, + "version": 1, + "versionNonce": 6249416, + "isDeleted": false, + "boundElements": null, + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "aF", + "points": [ + [ + 0, + 0 + ], + [ + 0.0, + 30 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "el_1008", + "focus": 0, + "gap": 4 + }, + "endBinding": { + "elementId": "el_1010", + "focus": 0, + "gap": 4 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "el_1017", + "type": "arrow", + "x": 350.0, + "y": 450, + "width": 0.0, + "height": 30, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 8053623, + "version": 1, + "versionNonce": 6255567, + "isDeleted": false, + "boundElements": null, + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "aG", + "points": [ + [ + 0, + 0 + ], + [ + 0.0, + 30 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "el_1010", + "focus": 0, + "gap": 4 + }, + "endBinding": { + "elementId": "el_1012", + "focus": 0, + "gap": 4 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "el_1018", + "type": "arrow", + "x": 350.0, + "y": 550, + "width": 0.0, + "height": 30, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 8061542, + "version": 1, + "versionNonce": 6261718, + "isDeleted": false, + "boundElements": null, + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "aH", + "points": [ + [ + 0, + 0 + ], + [ + 0.0, + 30 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "el_1012", + "focus": 0, + "gap": 4 + }, + "endBinding": { + "elementId": "el_1014", + "focus": 0, + "gap": 4 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "el_1019", + "type": "rectangle", + "x": 800, + "y": 280, + "width": 300, + "height": 70, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e8f5e9", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 8069461, + "version": 1, + "versionNonce": 6267869, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "el_1020" + } + ], + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "aI" + }, + { + "id": "el_1020", + "type": "text", + "x": 800, + "y": 303.0, + "width": 300, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 8077380, + "version": 1, + "versionNonce": 6274020, + "isDeleted": false, + "boundElements": null, + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "aJ", + "text": "synthetic skill staged at\n.claude/skills//", + "fontSize": 16, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "top", + "containerId": "el_1019", + "originalText": "synthetic skill staged at\n.claude/skills//", + "lineHeight": 1.25, + "baseline": 13 + }, + { + "id": "el_1021", + "type": "rectangle", + "x": 800, + "y": 380, + "width": 300, + "height": 70, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e8f5e9", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 8085299, + "version": 1, + "versionNonce": 6280171, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "el_1022" + } + ], + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "aK" + }, + { + "id": "el_1022", + "type": "text", + "x": 800, + "y": 403.0, + "width": 300, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 8093218, + "version": 1, + "versionNonce": 6286322, + "isDeleted": false, + "boundElements": null, + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "aL", + "text": "claude -p with query \u00d7 3 runs", + "fontSize": 16, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "top", + "containerId": "el_1021", + "originalText": "claude -p with query \u00d7 3 runs", + "lineHeight": 1.25, + "baseline": 13 + }, + { + "id": "el_1023", + "type": "rectangle", + "x": 800, + "y": 480, + "width": 300, + "height": 70, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e8f5e9", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 8101137, + "version": 1, + "versionNonce": 6292473, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "el_1024" + } + ], + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "aM" + }, + { + "id": "el_1024", + "type": "text", + "x": 800, + "y": 503.0, + "width": 300, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 8109056, + "version": 1, + "versionNonce": 6298624, + "isDeleted": false, + "boundElements": null, + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "aN", + "text": "detect Skill tool fires\nreferencing ", + "fontSize": 16, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "top", + "containerId": "el_1023", + "originalText": "detect Skill tool fires\nreferencing ", + "lineHeight": 1.25, + "baseline": 13 + }, + { + "id": "el_1025", + "type": "rectangle", + "x": 800, + "y": 580, + "width": 300, + "height": 70, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e8f5e9", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 8116975, + "version": 1, + "versionNonce": 6304775, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "el_1026" + } + ], + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "aO" + }, + { + "id": "el_1026", + "type": "text", + "x": 800, + "y": 603.0, + "width": 300, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 8124894, + "version": 1, + "versionNonce": 6310926, + "isDeleted": false, + "boundElements": null, + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "aP", + "text": "fire_rate per query\n(pass = matches should_trigger)", + "fontSize": 16, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "top", + "containerId": "el_1025", + "originalText": "fire_rate per query\n(pass = matches should_trigger)", + "lineHeight": 1.25, + "baseline": 13 + }, + { + "id": "el_1027", + "type": "arrow", + "x": 950.0, + "y": 350, + "width": 0.0, + "height": 30, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 8132813, + "version": 1, + "versionNonce": 6317077, + "isDeleted": false, + "boundElements": null, + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "aQ", + "points": [ + [ + 0, + 0 + ], + [ + 0.0, + 30 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "el_1019", + "focus": 0, + "gap": 4 + }, + "endBinding": { + "elementId": "el_1021", + "focus": 0, + "gap": 4 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "el_1028", + "type": "arrow", + "x": 950.0, + "y": 450, + "width": 0.0, + "height": 30, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 8140732, + "version": 1, + "versionNonce": 6323228, + "isDeleted": false, + "boundElements": null, + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "aR", + "points": [ + [ + 0, + 0 + ], + [ + 0.0, + 30 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "el_1021", + "focus": 0, + "gap": 4 + }, + "endBinding": { + "elementId": "el_1023", + "focus": 0, + "gap": 4 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "el_1029", + "type": "arrow", + "x": 950.0, + "y": 550, + "width": 0.0, + "height": 30, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 8148651, + "version": 1, + "versionNonce": 6329379, + "isDeleted": false, + "boundElements": null, + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "aS", + "points": [ + [ + 0, + 0 + ], + [ + 0.0, + 30 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "el_1023", + "focus": 0, + "gap": 4 + }, + "endBinding": { + "elementId": "el_1025", + "focus": 0, + "gap": 4 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "el_1030", + "type": "rectangle", + "x": 450, + "y": 720, + "width": 400, + "height": 70, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff0f0", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 8156570, + "version": 1, + "versionNonce": 6335530, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "el_1031" + } + ], + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "aT" + }, + { + "id": "el_1031", + "type": "text", + "x": 450, + "y": 743.0, + "width": 400, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 8164489, + "version": 1, + "versionNonce": 6341681, + "isDeleted": false, + "boundElements": null, + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "aU", + "text": "report.html (aggregated run report)", + "fontSize": 18, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "top", + "containerId": "el_1030", + "originalText": "report.html (aggregated run report)", + "lineHeight": 1.25, + "baseline": 15 + }, + { + "id": "el_1032", + "type": "arrow", + "x": 350.0, + "y": 650, + "width": 180.0, + "height": 70, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 8172408, + "version": 1, + "versionNonce": 6347832, + "isDeleted": false, + "boundElements": null, + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "aV", + "points": [ + [ + 0, + 0 + ], + [ + 180.0, + 70 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "el_1014", + "focus": 0, + "gap": 4 + }, + "endBinding": { + "elementId": "el_1030", + "focus": 0, + "gap": 4 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "el_1033", + "type": "arrow", + "x": 950.0, + "y": 650, + "width": 180.0, + "height": 70, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 8180327, + "version": 1, + "versionNonce": 6353983, + "isDeleted": false, + "boundElements": null, + "updatedAt": 1778369776591, + "link": null, + "locked": false, + "index": "aW", + "points": [ + [ + 0, + 0 + ], + [ + -180.0, + 70 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "el_1025", + "focus": 0, + "gap": 4 + }, + "endBinding": { + "elementId": "el_1030", + "focus": 0, + "gap": 4 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + } + ], + "appState": { + "gridSize": 20, + "gridStep": 5, + "gridModeEnabled": false, + "viewBackgroundColor": "#ffffff" + }, + "files": {} +} \ No newline at end of file diff --git a/docs/_diagrams/render.html b/docs/_diagrams/render.html new file mode 100644 index 0000000..39267e5 --- /dev/null +++ b/docs/_diagrams/render.html @@ -0,0 +1,48 @@ + + + + +Excalidraw → PNG + + + +
    loading...
    + + + + diff --git a/docs/_diagrams/render.mjs b/docs/_diagrams/render.mjs new file mode 100644 index 0000000..26602f8 --- /dev/null +++ b/docs/_diagrams/render.mjs @@ -0,0 +1,63 @@ +#!/usr/bin/env node +// Render an .excalidraw file to PNG via headless Chromium. +// Usage: node excalidraw_to_png.mjs [scale] + +import { chromium } from "playwright"; +import { readFileSync, writeFileSync, statSync } from "node:fs"; +import { resolve } from "node:path"; +import { fileURLToPath, pathToFileURL } from "node:url"; + +const [,, inPathArg, outPathArg, scaleArg] = process.argv; +if (!inPathArg || !outPathArg) { + console.error("usage: excalidraw_to_png.mjs [scale]"); + process.exit(2); +} +const inPath = resolve(inPathArg); +const outPath = resolve(outPathArg); +const scale = parseFloat(scaleArg || "2"); +statSync(inPath); + +const sceneJson = JSON.parse(readFileSync(inPath, "utf-8")); + +const htmlPath = resolve(fileURLToPath(import.meta.url), "..", "excalidraw_render.html"); +const htmlUrl = pathToFileURL(htmlPath).href; + +const browser = await chromium.launch({ headless: true }); +const ctx = await browser.newContext({ viewport: { width: 2400, height: 1800 } }); +const page = await ctx.newPage(); +page.on("console", msg => { + const t = msg.type(); + if (t === "error" || t === "warning") console.error(`[browser:${t}]`, msg.text()); +}); +page.on("pageerror", err => console.error("[pageerror]", err.message)); + +await page.addInitScript(({ scene, scale }) => { + window.__scene = scene; + window.__scale = scale; +}, { scene: sceneJson, scale }); + +console.error("loading:", htmlUrl); +await page.goto(htmlUrl, { waitUntil: "domcontentloaded" }); + +await page.waitForFunction(() => window.__done === true, { timeout: 90_000 }); + +const err = await page.evaluate(() => window.__error); +if (err) { + console.error("render error:", err); + await browser.close(); + process.exit(1); +} + +const dataUrl = await page.evaluate(() => window.__pngDataUrl); +if (!dataUrl || !dataUrl.startsWith("data:image/png;base64,")) { + console.error("no png produced; got:", String(dataUrl).slice(0, 64)); + await browser.close(); + process.exit(1); +} + +const b64 = dataUrl.split(",", 2)[1]; +writeFileSync(outPath, Buffer.from(b64, "base64")); +const { size } = statSync(outPath); +console.error(`wrote ${outPath} (${size.toLocaleString()} bytes)`); + +await browser.close(); diff --git a/docs/explanation/index.md b/docs/explanation/index.md index 00a9f56..7506fd3 100644 --- a/docs/explanation/index.md +++ b/docs/explanation/index.md @@ -25,6 +25,13 @@ Create world-class AI agents and workflows with the BMad Builder. | **[Skill Authoring Best Practices](/explanation/skill-authoring-best-practices.md)** | Core principles, common patterns, quality dimensions, and anti-patterns | | **[Scripts in Skills](/explanation/scripts-in-skills.md)** | Why deterministic scripts make skills faster, cheaper, and more reliable | +## Evaluating Skills + +| Topic | Description | +| ---------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| **[What Are Evals](/explanation/what-are-evals.md)** | Artifact and trigger evals; the two single-shot patterns that cover most skills | +| **[Why BMad Eval Runner](/explanation/why-bmad-eval-runner.md)** | What the reference runner misses: isolation, dependency staging, real triggers | + ## Reference | Resource | Description | diff --git a/docs/explanation/what-are-evals.md b/docs/explanation/what-are-evals.md new file mode 100644 index 0000000..587ec6d --- /dev/null +++ b/docs/explanation/what-are-evals.md @@ -0,0 +1,110 @@ +--- +title: 'What Are Evals' +description: How evaluations measure skill behavior, and the two eval shapes BMad supports +--- + +Evals are measurements of how a skill behaves. You write a prompt, declare what should happen, run the skill, and grade the result against your expectations. They are how you know your skill works, that regression tests caught problems, and that a description fires on the right queries. + +## Why Evals Matter + +A skill is a contract. Its description claims when Claude should invoke it. Its body claims a behavior. Evals turn both claims into a test suite you can run after editing a skill, after upgrading the model, or before publishing a module. Every run lands on disk. You can read the transcript, inspect the artifacts, and trust the verdict because the grading is reproducible. + +## How the Test Types Flow + +![Eval Runner test types: shared isolated workspace flowing into parallel artifact and trigger eval pipelines, both aggregated into a final HTML report](/img/eval-test-types.png) + +Both test types share the same isolated workspace setup, then split into parallel pipelines, and converge into a single aggregated report. + +## Two Types of Evals + +BMad evaluates two questions independently. + +### Artifact Evals: Did the Skill Do the Right Thing? + +The runner sends a prompt to the skill in an isolated workspace and captures everything that happened: the full stream-JSON transcript (every tool call the skill made, every assistant message) and every file the skill wrote. A grader subagent then scores your expectations against the captured run. + +Artifact evals live in `evals.json`. Each entry has a `prompt`, optional fixture `files` to stage in the workspace, and a list of `expectations` graded independently. + +Multi-step workflow skills run end-to-end inside the single `claude -p` invocation when the prompt puts them in headless mode. The skill executes its full internal flow (subagent calls, polish passes, finalize sequence) and all of it shows up in the captured run. + +### Trigger Evals: Does the Description Fire on the Right Queries? + +A skill is invisible if Claude never invokes it. The trigger runner places a synthetic copy of your skill in a clean workspace, sends candidate user queries, and watches whether the Skill tool actually fires on each one. + +Trigger evals live in `triggers.json`. Each entry has a `query` and a boolean `should_trigger`. The runner repeats each query (3 times by default) and reports a fire rate per query. + +## What Every Artifact Eval Captures + +Every artifact eval, regardless of style, lands the same shape on disk: + +| File | Contents | +| --------------------- | -------------------------------------------------------------- | +| `prompt.txt` | The eval's prompt verbatim | +| `transcript.jsonl` | Stream-JSON: every tool call, every assistant message | +| `artifacts/` | Every file the skill wrote inside its workspace | +| `metrics.json` | Tool-call counts, timing, output sizes | +| `grading.json` | Per-expectation PASS/FAIL with cited evidence | + +You always have both the transcript and any files the skill wrote. Your expectations choose which to grade against. Trigger evals are simpler: the stream is parsed in real time for Skill tool fires and the per-query fire rate is saved to `triggers-result.json`. + +## Two Ways to Grade an Artifact Eval + +You can mix both styles in the same eval. Most well-tested skills do. + +### Output Grading + +Look at the files the skill produced. Assertions check structure, content, and fidelity to inputs. + +Use output grading when: + +- The deliverable is a file (brief, PRD, plan, doc) and you care that it's correct +- You can write a complete pre-discovery prompt so the skill has nothing to ask about +- You want regression coverage on drafting, format, and extraction + +Examples: + +- "brief.md word count is between 250 and 1500" +- "decision-log.md captures the pricing decision with rejected alternative and rationale" +- "frontmatter contains title, status, created (ISO 8601), updated (ISO 8601)" + +### Transcript Grading + +Look at the captured stream-JSON to see what the skill *did* internally. The grader scans for specific tool calls, checks the order things happened, walks side-artifacts (decision logs, addenda, distillates), and checks file timestamps. + +Use transcript grading when: + +- The skill enforces a protocol (decision log, polish phase, finalize sequence) +- The skill has read-only intents (Validate must not write any files) +- You need to catch regressions where drafting still works but the discipline went soft + +Examples: + +- "transcript contains a Skill tool call invoking bmad-editorial-review-prose" +- "polish-phase Skill calls occur after the brief body Write and before the final JSON status block" +- "input fixture brief.md is byte-identical after the run; no Write or Edit tool calls targeted it" + +## A Worked Example + +The `bmad-product-brief` skill in the BMad Method repository ships a complete eval suite that uses every feature in this guide. It mixes output grading and transcript grading in the same suite, stages dependency skills via setup overlays, includes a read-only Validate intent that asserts no fixtures were touched, and runs trigger evals across positive and negative queries. + +| What you can learn from it | Where to look | +| ----------------------------------- | ------------------------------------------------------ | +| Output grading assertions | `evals/bmm-skills/bmad-product-brief/evals.json` A1-A8 | +| Transcript grading assertions | `evals/bmm-skills/bmad-product-brief/evals.json` B1-B8 | +| Trigger queries (positive/negative) | `evals/bmm-skills/bmad-product-brief/triggers.json` | +| Setup overlays for dependencies | `evals/bmm-skills/bmad-product-brief/setup/` | + +See [Eval Format](/reference/eval-format.md) for the complete schema and a deeper tour of the suite. + +## Best Practices for Evals That Hold Up + +- **Discriminating expectations.** Each assertion should fail for a wrong output, not just an absent file. "brief.md exists" passes for an empty file. Pair existence checks with content checks. +- **Specific facts over vibes.** "incorporates at least 2 specific findings from section X" beats "is high quality." Concrete claims are gradable. +- **Negative assertions.** "does not introduce content from unrelated sections" catches drift that positive assertions miss. +- **Bidirectional fidelity.** For skills with side-artifacts, assert in both directions: every entry in the log appears in the brief, and no claim in the brief is absent from the prompt or log. +- **Read-only enforcement.** For Validate-style intents, assert that input fixtures are byte-identical after the run and that no Write or Edit tool calls targeted them. +- **Trust the grader's pushback.** Graders are instructed to flag weak assertions. When they do, fix the assertion rather than ignoring the note. + +## Next Steps + +For practical run instructions, see [Run Evals Against a Skill](/how-to/run-evals-against-a-skill.md). For the complete file format, see [Eval Format](/reference/eval-format.md). For why isolation matters, see [Why BMad Eval Runner](/explanation/why-bmad-eval-runner.md). diff --git a/docs/explanation/why-bmad-eval-runner.md b/docs/explanation/why-bmad-eval-runner.md new file mode 100644 index 0000000..06c7051 --- /dev/null +++ b/docs/explanation/why-bmad-eval-runner.md @@ -0,0 +1,38 @@ +--- +title: 'Why BMad Eval Runner' +description: Isolation, dependency staging, real trigger detection, and a permanent audit trail for every run +--- + +The eval runner is built around a simple goal: produce results that reflect the skill itself, not the host that ran it. That goal drives four design choices. + +## Isolation + +Every eval starts in a clean room. With Docker, the run executes inside a fresh container off `bmad-eval-runner:latest`. Without Docker, the runner falls back to a per-eval temp directory with `HOME` overridden so global memory and global `CLAUDE.md` cannot influence the result. Either way, two developers running the same eval get the same workspace state. + +Why this matters: skills are sensitive to context. Your global `~/.claude/CLAUDE.md`, your auto-memory, an ancestor `CLAUDE.md` in the project tree, cached MCP settings. All of these reach a default `claude -p` invocation. The eval should measure the skill, not the bench it was tested on. + +## Dependency Staging + +Real BMad skills compose. A product brief skill calls a distillator skill, which calls editorial review skills. The runner stages dependencies through a setup overlay system: directories at `evals/setup/` (base, applied to every eval) and `evals//setup/` (per-eval, applied on top) are rsynced into the workspace before the skill under test is staged. + +Drop the dependency skills into `evals/setup/.claude/skills/` and they are available inside the sandbox. Drop a per-eval `_bmad/config.user.yaml` into `evals/C1/setup/` and it overrides the base for that eval only. + +## Trigger Detection That Reflects Reality + +The runner places the synthetic skill at `/.claude/skills//SKILL.md`, where Claude actually loads skills. The detector watches the stream-JSON transcript for `Skill` tool calls (or `Read` of the synthetic SKILL.md) referencing the unique name. Each query runs three times by default for stability, and the fire rate per query is reported with a configurable threshold. + +This matches how skills surface in production. The trigger rate you see is the rate users will see. + +## Permanent Artifacts + +Every run writes to a dated folder under `~/bmad-evals//`. Each eval gets its own subdirectory containing the prompt, the full stream-JSON transcript, every file the skill wrote, the grading verdict, and timing metrics. + +Nothing is rotated or cleaned up. You can read what happened, share the run folder with a collaborator, or diff it against a future run. Disk management is the user's call, not the runner's. + +## Independent Grading + +After artifact runs complete, the runner spawns a grader subagent per eval (in parallel) using the Agent tool. Each grader reads the eval's transcript and artifacts, scores each expectation independently with cited evidence, and writes `grading.json`. Graders are instructed to flag weak assertions (passing on technicality) so you can spot evals that look strict but would pass for a wrong output. + +## Next Steps + +For a step-by-step run, see [Run Evals Against a Skill](/how-to/run-evals-against-a-skill.md). For the complete eval file schema, see [Eval Format](/reference/eval-format.md). For why Docker matters, see [Install Docker for Evals](/how-to/install-docker-for-evals.md). diff --git a/docs/how-to/install-docker-for-evals.md b/docs/how-to/install-docker-for-evals.md new file mode 100644 index 0000000..95354e5 --- /dev/null +++ b/docs/how-to/install-docker-for-evals.md @@ -0,0 +1,87 @@ +--- +title: 'Install Docker for Evals' +description: Install Docker Desktop so the eval runner can give you reproducible, hermetic test runs +--- + +Use Docker Desktop to give the eval runner a real isolation boundary. Without Docker, the runner falls back to local mode, which is best-effort and has known leak paths. + +## When to Use This + +- You plan to run trigger evals (local mode can leak host skills into the workspace) +- You want runs to be reproducible across machines +- You publish a module and want the same eval verdicts other developers see +- You want a guaranteed-empty `HOME` so global memory cannot influence results + +## When to Skip This + +- One-off iteration on artifact evals where local fallback is good enough for now +- A constrained environment where installing Docker is not feasible. The runner falls back to local mode and tells you it is doing so. + +:::note[Prerequisites] + +- Administrator access on your machine to install Docker Desktop +- A few GB of disk space for the Docker Desktop application and the eval-runner image +::: + +## Why Docker + +The eval runner needs to start each run from a clean slate. It is trying to measure the skill, not the host's accumulated state. Without isolation, three things contaminate the result. + +1. **Global memory and CLAUDE.md.** Your `~/.claude/CLAUDE.md` and auto-memory load on every Claude Code invocation. They influence outputs in ways the skill author cannot control. +2. **Ancestor configuration.** A `CLAUDE.md` anywhere above the skill in the directory tree gets discovered and loaded. +3. **Host-installed skills.** When `claude -p` runs in a directory with `.claude/skills/` somewhere up the tree, those skills are discoverable and can fire instead of (or alongside) the skill under test. This is especially harmful for trigger evals. + +Docker solves all three. The container has its own filesystem, its own `HOME`, and its own `.claude/`. Local mode patches `HOME` and creates a temp directory but cannot prevent ancestor discovery. + +## Step 1: Install Docker Desktop + +Download Docker Desktop for your platform: + +| Platform | Where to Get It | +| -------- | ----------------------------------------------------------------------------------------------------- | +| macOS | [docker.com/products/docker-desktop](https://www.docker.com/products/docker-desktop) | +| Windows | [docker.com/products/docker-desktop](https://www.docker.com/products/docker-desktop) | +| Linux | Docker Engine via your distribution's package manager, or Docker Desktop for Linux | + +Follow the installer's prompts. On macOS, drag the Docker app to Applications and launch it. On Windows, the installer enables WSL 2 if needed. + +## Step 2: Start Docker Desktop + +Launch Docker Desktop. Wait for the whale icon to indicate Docker is running. The eval runner shells out to the `docker` CLI; if Docker is not running, the runner falls back to local mode and tells you why. + +## Step 3: Verify Installation + +Confirm Docker is reachable from your terminal: + +```bash +docker info +``` + +A successful response means the eval runner can use Docker. An error means Docker is not running, or the CLI cannot reach the daemon. + +## Step 4: Let the Runner Build the Image + +The first time you invoke the eval runner with `--isolation docker` (or `auto` when Docker is available), the runner builds `bmad-eval-runner:latest` from a Dockerfile shipped with the skill. This takes a few minutes once. Subsequent runs reuse the cached image. + +The image is a minimal Node 20 base with Claude Code, Python 3, and standard tools. Nothing skill-specific or user-specific lives in the image. Your credentials are mounted in at run time, not baked in. + +:::tip[Credential Safety] +The Dockerfile contains no tokens, API keys, or credentials. Your authentication (macOS Keychain credential or `ANTHROPIC_API_KEY`) is staged into a per-run temp directory and mounted into the container as a read-only volume that disappears when the container exits. +::: + +## What You Get + +- Reproducible runs: the same eval produces the same workspace state on any machine with the image +- Real `HOME` isolation: the container's `/home/evaluator` is empty, not just overridden +- Trigger evals you can trust: only the synthetic skill staged for the test is discoverable, not your host's installed skills +- Network can be locked down per run if your evals do not need internet access + +## Tips + +- Rebuild the image with `python3 scripts/docker_setup.py --rebuild` if you ever need to reset it +- Per-eval container resource use is small (a few hundred MB). Parallel workers each spin up their own container. +- If `docker info` works in one terminal but not in your editor's integrated terminal, your shell PATH probably differs. Open a fresh terminal session. + +## Next Steps + +Run the eval runner against a skill: see [Run Evals Against a Skill](/how-to/run-evals-against-a-skill.md). For isolation internals, see the eval-runner skill's `references/isolation.md`. diff --git a/docs/how-to/run-evals-against-a-skill.md b/docs/how-to/run-evals-against-a-skill.md new file mode 100644 index 0000000..1d4371e --- /dev/null +++ b/docs/how-to/run-evals-against-a-skill.md @@ -0,0 +1,122 @@ +--- +title: 'Run Evals Against a Skill' +description: Use the bmad-eval-runner skill to evaluate a skill, capture artifacts, and grade the results +--- + +Use the `bmad-eval-runner` skill to run a skill's evals in a clean workspace and produce a graded report. + +## When to Use This + +- After editing a skill, to confirm nothing regressed +- Before publishing a module, to validate every skill you ship +- When debugging a description that fires on the wrong queries +- When checking that dependency skills are wired correctly + +## When to Skip This + +- Quick iteration where you are running the skill manually and reading the output yourself +- Skills with no defined evals (the runner halts on missing evals; it does not invent them) + +:::note[Prerequisites] + +- The skill you want to evaluate, with `evals.json` and/or `triggers.json` defined +- Either Docker Desktop installed (preferred) or willingness to run in best-effort local isolation. See [Install Docker for Evals](/how-to/install-docker-for-evals.md). +- An Anthropic account authenticated through Claude Code (the runner reuses your existing credential) +::: + +:::tip[Quick Path] +Invoke the eval runner with the path to your skill: `bmad-eval-runner ./skills/my-skill`. The runner discovers your evals, picks isolation, runs everything in parallel, and tells you where the report lives. +::: + +## Step 1: Confirm Eval Discovery + +The runner looks for evals in this order, taking the first match: + +1. The path you pass via `--evals` +2. `/evals/` +3. `/../../evals//` +4. `/evals//` +5. `/evals/**//` (fuzzy) + +If discovery fails, the runner halts. It does not invent evals. + +## Step 2: Choose Isolation + +Pass `--isolation docker|local|auto`. Default is `auto`, which picks Docker when available and local when not. + +| Mode | When to Use | +| ------ | ------------------------------------------------------------------------ | +| docker | Trigger evals (host skills can leak in local mode); reproducible runs | +| local | Quick iteration when you have not installed Docker | +| auto | Default; lets the runner pick the best available option | + +The first time Docker is selected, the runner builds the `bmad-eval-runner:latest` image. This takes a few minutes once. Subsequent runs reuse the cached image. + +## Step 3: Pick Mode + +Pass `--mode artifact|trigger|both`. Default is `both` if both eval files are found. + +| Mode | Effect | +| -------- | ------------------------------- | +| artifact | Runs `evals.json` only | +| trigger | Runs `triggers.json` only | +| both | Runs everything in parallel | + +## Step 4: Run the Skill + +Invoke the eval runner from your project. A typical invocation: + +```bash +bmad-eval-runner ./src/skills/my-skill --isolation docker --workers 8 +``` + +The runner stages each eval's workspace, executes `claude -p` against the prompt, captures the stream-JSON transcript, and rsyncs any files the skill wrote. After all evals complete, it spawns a grader subagent per eval (in parallel) and aggregates the verdicts. + +## Step 5: Inspect Results + +When the run finishes, the runner emits two paths: + +- The run folder, at `~/bmad-evals//` (or your configured `bmad_builder_reports` location) +- An HTML report at `/report.html` + +Open the report for the summary view. Drop into the run folder for full transcripts, artifacts, and grading details for any eval you want to examine. + +## What You Get + +``` +~/bmad-evals/20260509-172903-my-skill/ +├── run.json # Run metadata +├── report.html # Aggregate HTML report +├── A1/ +│ ├── prompt.txt # The eval's prompt verbatim +│ ├── transcript.jsonl # Stream-JSON tool calls and messages +│ ├── artifacts/ # Files the skill wrote +│ ├── grading.json # Per-expectation verdicts +│ └── metrics.json # Timing and tool-call counts +├── A2/ +│ └── ... +└── triggers-result.json # Trigger eval rates +``` + +Run folders are never deleted automatically. Disk management is your call. + +## Tips + +- Pass `--eval-ids A1,B3` to run only specific evals while iterating +- Pass `--workers 8` to parallelize aggressively (default is 4) +- A specific eval can override the default timeout by setting `"timeout": 900` in its `evals.json` entry +- For trigger evals, prefer Docker. Local mode can let host-installed skills bleed in via cwd-based discovery and bias the fire rate. + +## A Worked Example + +The `bmad-product-brief` skill in the BMad Method repository (`bmad-code-org/BMAD-METHOD`) ships a complete eval suite at `evals/bmm-skills/bmad-product-brief/`. To run it end-to-end: + +```bash +bmad-eval-runner ./src/bmm-skills/1-analysis/bmad-product-brief --isolation docker --workers 8 +``` + +The run produces 17 graded artifact evals (A1-A8 output grading, B1-B8 transcript grading, C1 configuration compliance), 15 trigger eval verdicts, and an aggregated HTML report. Use it as the model when writing evals for your own skills. + +## Next Steps + +For the complete `evals.json` and `triggers.json` schema, see [Eval Format](/reference/eval-format.md). For concepts and patterns, see [What Are Evals](/explanation/what-are-evals.md). diff --git a/docs/reference/eval-format.md b/docs/reference/eval-format.md new file mode 100644 index 0000000..c1d05eb --- /dev/null +++ b/docs/reference/eval-format.md @@ -0,0 +1,208 @@ +--- +title: 'Eval Format' +description: Complete schema for evals.json and triggers.json including fixtures, setup overlays, per-eval timeouts, and grading expectations +--- + +The runner accepts two file shapes. Both are JSON. Both live in an evals directory the runner can discover. + +## File Layout + +A typical evals directory: + +``` +evals// +├── evals.json # Artifact evals +├── triggers.json # Trigger evals +├── setup/ # Base overlay applied to every eval +│ └── .claude/ +│ └── skills/ +│ └── bmad-distillator/ +├── A1/ +│ └── setup/ # Per-eval overlay applied on top of base +├── files/ # Fixture files staged via the eval's `files` field +│ └── some-fixture.md +``` + +## Artifact Evals (evals.json) + +```json +{ + "skill_name": "bmad-product-brief", + "evals": [ + { + "id": "A1", + "prompt": "Run headless. Create a product brief for ...", + "expected_output": "A run folder with brief.md and decision-log.md ...", + "files": ["evals/.../files/q2-brainstorm.md"], + "expectations": [ + "brief.md exists in the run folder", + "decision-log.md captures the pricing decision with rationale", + "Final assistant message contains JSON with intent='create'" + ], + "timeout": 900 + } + ] +} +``` + +### Field Reference + +| Field | Type | Required | Description | +| ----------------- | -------- | -------- | -------------------------------------------------------------------------------------------- | +| `id` | string | yes | Stable identifier; used as the eval's directory name in the run folder | +| `prompt` | string | yes | Literal user message sent to `claude -p` | +| `expected_output` | string | no | Human-readable description; the grader reads it for context but does not score against it | +| `files` | string[] | no | Fixture paths to stage into the workspace before execution | +| `expectations` | string[] | yes | Pass/fail assertions evaluated by the grader subagent | +| `timeout` | int | no | Per-eval timeout in seconds; overrides the runner's default | + +### Top-Level Optional Fields + +| Field | Type | Purpose | +| --------------- | ------ | -------------------------------------------------------------------------------- | +| `skill_name` | string | Documentation only; the runner derives the skill name from the SKILL.md path | +| `_design_notes` | string | Free-form notes for human readers; ignored by the runner | + +### Fixture Files + +Each entry in `files` is staged into the eval's workspace before execution. + +- A nested path (`evals/skill-x/files/some-brief/brief.md`) preserves directory structure inside the workspace +- The eval prompt then references the staged path explicitly so the skill can find it +- Fixtures are read-only inputs. The skill may read them; assertions may check that the skill did not modify them. + +### Per-Eval Timeout + +When omitted, the runner's default applies (currently 600 seconds, overridable via `--timeout`). Set per-eval timeouts when an eval invokes a slow dependency. Example for an eval that triggers a distillator subagent: + +```json +{ + "id": "B8", + "timeout": 900, + "prompt": "Run headless. Create a product brief ... and generate a distillate." +} +``` + +### Expectations + +Expectations are assertions the grader scores independently. Each is graded PASS or FAIL with cited evidence from the transcript or artifacts. The grader is instructed to flag weak assertions, so a passing eval that only proves the skill did not crash is surfaced as a problem, not a victory. + +See [What Are Evals](/explanation/what-are-evals.md) for the two patterns (artifact correctness and process discipline) and the kinds of assertions that work well for each. + +## Trigger Evals (triggers.json) + +```json +[ + { "query": "Help me write a product brief for ...", "should_trigger": true }, + { "query": "Help me brainstorm ideas for ...", "should_trigger": false } +] +``` + +### Field Reference + +| Field | Type | Required | Description | +| ---------------- | ------- | -------- | ---------------------------------------------------------- | +| `query` | string | yes | The user message sent to a clean Claude session | +| `should_trigger` | boolean | yes | Whether the skill's description should fire on this query | + +### How Trigger Detection Works + +The runner places a synthetic copy of the skill at `/.claude/skills//SKILL.md`. It then runs `claude -p` against each query and watches the stream-JSON output for a `Skill` tool call (or a `Read` of the synthetic SKILL.md) referencing the unique name. Each query runs three times by default for stability. The fire rate is the fraction of runs that fired. + +A query passes when: + +- `should_trigger=true` and `trigger_rate >= --trigger-threshold` (default 0.5) +- `should_trigger=false` and `trigger_rate < --trigger-threshold` + +:::caution[Trigger Evals Need Docker] +Local-mode trigger evals can be biased by host-installed skills that are discoverable via cwd-based skill discovery. The detector may see a real skill fire instead of the synthetic. Use Docker isolation for trigger evals whenever it is available. +::: + +## Setup Overlays + +The runner supports a two-tier overlay system that rsyncs files into the workspace before the skill under test is staged. Use overlays to ship dependency skills, project configuration (`_bmad/`), or fixture state with the evals. + +### Base Overlay + +Files at `evals//setup/` are applied to every eval. Use this for dependency skills the skill under test calls. + +``` +evals/bmad-product-brief/setup/ +└── .claude/ + └── skills/ + ├── bmad-distillator/ + ├── bmad-editorial-review-prose/ + └── bmad-editorial-review-structure/ +``` + +### Per-Eval Overlay + +Files at `evals///setup/` are applied after the base overlay, only for that eval. Use this for eval-specific configuration: a custom `_bmad/config.user.yaml`, additional skills, or a different output path. + +``` +evals/bmad-product-brief/C1/setup/ +└── _bmad/ + └── bmm/ + └── config.user.yaml +``` + +The base overlay and per-eval overlay are applied with `rsync -a`, so files at the same path in the per-eval overlay win. + +### Order of Operations + +Inside the workspace, before the eval runs: + +1. Project root is rsynced from the host +2. Base setup overlay is rsynced on top +3. Per-eval setup overlay is rsynced on top +4. The skill under test is symlinked or copied into `.claude/skills/` +5. Fixtures from the `files` array are staged at their declared paths + +The skill under test always wins. Overlays cannot replace the skill being evaluated. + +## Eval Discovery + +The runner discovers evals in this order, taking the first match: + +| Order | Path | +| ----- | ------------------------------------------------------------------- | +| 1 | `--evals ` argument (folder or specific JSON file) | +| 2 | `/evals/` | +| 3 | `/../../evals//` | +| 4 | `/evals//` | +| 5 | `/evals/**//` (fuzzy) | + +If both `evals.json` and `triggers.json` are found in the discovered directory, both run unless `--mode` narrows it. + +## Headless Prompts + +Multi-step workflow skills need a signal to suppress clarifying questions and emit a structured JSON status block at the end. Once that signal is present, the skill executes its full internal flow (subagent calls, polish passes, finalize sequence) inside a single `claude -p` invocation, and the runner captures everything. + +Common conventions for the signal: + +- The literal phrase `Run headless.` at the start of the prompt +- Skill-specific keywords documented in the skill's `## Headless Mode` section +- A complete prompt with no genuine ambiguity for the skill to ask about + +When designing evals for a multi-step skill, pack the prompt with everything the skill's discovery phase would have surfaced. The skill then has no reason to ask, runs end-to-end, and the artifacts are ready for grading. + +## Example Suite + +The `bmad-product-brief` skill in the BMad Method repository ships a complete eval suite that exercises every option in this reference. Read it as a worked example. + +| Group | What It Covers | +| ----- | ---------------------------------------------------------------------------------------------------- | +| A1-A8 | Output grading: brief content, frontmatter, source-filtering, right-sizing across 8 product scenarios | +| B1-B8 | Transcript grading: decision-log fidelity, polish phase ordering, read-only Validate, distillate flow | +| C1 | Configuration compliance: custom output paths, document language, communication style | +| Triggers | 15 queries (positive + negative) covering create, update, validate intents and adjacent skills | + +What it shows in practice: + +- Setup overlays for dependency skills (`bmad-distillator`, editorial review skills) under `evals/setup/.claude/skills/` +- Per-eval setup overlay at `evals/bmad-product-brief/C1/setup/_bmad/` for custom configuration +- Per-eval `timeout` override on B8 (the distillator-invoking eval) +- Read-only fixture staging for Validate-mode evals (A4, B5, B6, B7) using the `files` field +- Mixed expectations in the same eval: some assertions check files, others scan the transcript for tool-call ordering + +See `evals/bmm-skills/bmad-product-brief/` in the BMad Method repository (`bmad-code-org/BMAD-METHOD`). diff --git a/docs/reference/index.md b/docs/reference/index.md index 0cd0ed5..078c7d9 100644 --- a/docs/reference/index.md +++ b/docs/reference/index.md @@ -7,7 +7,8 @@ description: Technical reference for BMad Builder Technical documentation for BMad Builder configuration and schemas. -| Reference | Description | -| ---------------------------------------------------------------- | --------------------------------------------------------------------- | -| **[Builder Skills](/reference/builder-commands.md)** | Agent Builder and Workflow Builder skills, commands, and capabilities | -| **[Workflow & Skill Patterns](/reference/workflow-patterns.md)** | Structure types, design patterns, and execution models | +| Reference | Description | +| ---------------------------------------------------------------- | ------------------------------------------------------------------------------ | +| **[Builder Skills](/reference/builder-commands.md)** | Agent Builder and Workflow Builder skills, commands, and capabilities | +| **[Workflow & Skill Patterns](/reference/workflow-patterns.md)** | Structure types, design patterns, and execution models | +| **[Eval Format](/reference/eval-format.md)** | Complete schema for evals.json and triggers.json, including overlays and timeouts | diff --git a/website/public/img/eval-test-types.png b/website/public/img/eval-test-types.png new file mode 100644 index 0000000000000000000000000000000000000000..aaa4064b2268fd327ea8d17c5fafaddeb51079a9 GIT binary patch literal 463824 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

    {y@D1y;9qe&ww7g7+p*OO%f-)(Zas` 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⪼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

    mR!3xgFi4%UwowbEpW_S2r(FBeWx9d~HY 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 pEGX34S|i>f4~0U}BNIwGRMNG{Tb#q^JM@ literal 0 HcmV?d00001 From 12effa6b64a22c7ddedd36dddea50b6d147028c8 Mon Sep 17 00:00:00 2001 From: Brian Madison Date: Sat, 9 May 2026 19:04:04 -0500 Subject: [PATCH 6/6] style: prettier format docs/_diagrams/render.mjs --- docs/_diagrams/render.mjs | 49 +++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/docs/_diagrams/render.mjs b/docs/_diagrams/render.mjs index 26602f8..92585c9 100644 --- a/docs/_diagrams/render.mjs +++ b/docs/_diagrams/render.mjs @@ -2,61 +2,64 @@ // Render an .excalidraw file to PNG via headless Chromium. // Usage: node excalidraw_to_png.mjs [scale] -import { chromium } from "playwright"; -import { readFileSync, writeFileSync, statSync } from "node:fs"; -import { resolve } from "node:path"; -import { fileURLToPath, pathToFileURL } from "node:url"; +import { chromium } from 'playwright'; +import { readFileSync, writeFileSync, statSync } from 'node:fs'; +import { resolve } from 'node:path'; +import { fileURLToPath, pathToFileURL } from 'node:url'; -const [,, inPathArg, outPathArg, scaleArg] = process.argv; +const [, , inPathArg, outPathArg, scaleArg] = process.argv; if (!inPathArg || !outPathArg) { - console.error("usage: excalidraw_to_png.mjs [scale]"); + console.error('usage: excalidraw_to_png.mjs [scale]'); process.exit(2); } const inPath = resolve(inPathArg); const outPath = resolve(outPathArg); -const scale = parseFloat(scaleArg || "2"); +const scale = parseFloat(scaleArg || '2'); statSync(inPath); -const sceneJson = JSON.parse(readFileSync(inPath, "utf-8")); +const sceneJson = JSON.parse(readFileSync(inPath, 'utf-8')); -const htmlPath = resolve(fileURLToPath(import.meta.url), "..", "excalidraw_render.html"); +const htmlPath = resolve(fileURLToPath(import.meta.url), '..', 'excalidraw_render.html'); const htmlUrl = pathToFileURL(htmlPath).href; const browser = await chromium.launch({ headless: true }); const ctx = await browser.newContext({ viewport: { width: 2400, height: 1800 } }); const page = await ctx.newPage(); -page.on("console", msg => { +page.on('console', (msg) => { const t = msg.type(); - if (t === "error" || t === "warning") console.error(`[browser:${t}]`, msg.text()); + if (t === 'error' || t === 'warning') console.error(`[browser:${t}]`, msg.text()); }); -page.on("pageerror", err => console.error("[pageerror]", err.message)); +page.on('pageerror', (err) => console.error('[pageerror]', err.message)); -await page.addInitScript(({ scene, scale }) => { - window.__scene = scene; - window.__scale = scale; -}, { scene: sceneJson, scale }); +await page.addInitScript( + ({ scene, scale }) => { + window.__scene = scene; + window.__scale = scale; + }, + { scene: sceneJson, scale }, +); -console.error("loading:", htmlUrl); -await page.goto(htmlUrl, { waitUntil: "domcontentloaded" }); +console.error('loading:', htmlUrl); +await page.goto(htmlUrl, { waitUntil: 'domcontentloaded' }); await page.waitForFunction(() => window.__done === true, { timeout: 90_000 }); const err = await page.evaluate(() => window.__error); if (err) { - console.error("render error:", err); + console.error('render error:', err); await browser.close(); process.exit(1); } const dataUrl = await page.evaluate(() => window.__pngDataUrl); -if (!dataUrl || !dataUrl.startsWith("data:image/png;base64,")) { - console.error("no png produced; got:", String(dataUrl).slice(0, 64)); +if (!dataUrl || !dataUrl.startsWith('data:image/png;base64,')) { + console.error('no png produced; got:', String(dataUrl).slice(0, 64)); await browser.close(); process.exit(1); } -const b64 = dataUrl.split(",", 2)[1]; -writeFileSync(outPath, Buffer.from(b64, "base64")); +const b64 = dataUrl.split(',', 2)[1]; +writeFileSync(outPath, Buffer.from(b64, 'base64')); const { size } = statSync(outPath); console.error(`wrote ${outPath} (${size.toLocaleString()} bytes)`);