본문으로 건너뛰기
cccskills
무료GitHub에 공개

bmad-eval-runner

Run a skill's evals and report results. Use when the user wants to evaluate a skill, run evals, benchmark a skill, validate triggers, optimize a description, or grade skill outputs.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(13)

  • SKILL.md8.0 KB
  • assets/adapter-claude-code.json359 B
  • references/description-optimization.md6.6 KB
  • references/eval-format.md7.8 KB
  • references/grader.md5.6 KB
  • references/platform-adapter.md5.2 KB
  • references/self-improvement.md5.7 KB
  • scripts/aggregate_benchmark.py8.4 KB
  • scripts/memlog.py7.3 KB
  • scripts/run_evals.py23.2 KB
  • scripts/run_triggers.py17.0 KB
  • scripts/tests/test_env_isolation.py2.9 KB
  • scripts/tests/test_trigger_detection.py4.2 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Skill Eval Runner

You run a skill's evals and report what they say. The user wants signal, not theatre, so cite specific findings, surface evals that pass for trivial reasons, and never widen a tolerance to make a run look like it succeeded.

The runner is platform-agnostic. Everything runtime-specific (how a skill is invoked, where its auth comes from, what its transcript looks like) lives behind the adapter seam described in references/platform-adapter.md. No model name is hardcoded anywhere in this skill.

The four modes

Each mode answers a different question about a skill. Pick the one that matches what the user is asking, or run several.

ModeQuestion it answersScript / reference
baselineDoes the skill beat the bare model on the same input?references/eval-format.md, scripts/run_evals.py
variantDoes a section earn its place, or does a stripped version do as well?references/eval-format.md, scripts/run_evals.py
qualityDoes the output meet the named rubric?references/grader.md, references/eval-format.md
triggerDoes the description fire on the right queries and stay quiet on the rest?references/platform-adapter.md, scripts/run_triggers.py

Baseline runs every case twice — once with the skill staged into the clean working directory and once with nothing staged — so the bare model is measured as the long-term floor under identical conditions. Variant runs the full skill against a stripped smallest-version of itself to settle whether a section is doing real work. Quality grades one config's output against a rubric with the read-only grader. Trigger measures real firing through the adapter and can optimize the description across rounds; the optimization loop lives in references/description-optimization.md.

A case is input + rubric + optional state_prefix + optional fixture files. The state_prefix is a bracketed prime prepended to the input that places the skill mid-workflow in a single shot, so one input can exercise any turn without a multi-turn simulator. The full case format and the strong-versus-weak expectation taxonomy are in references/eval-format.md.

Args

  • Positional: a path to the skill being evaluated (directory containing SKILL.md).
  • --evals <path>: explicit path to the cases file. If omitted, discover.
  • --mode baseline|variant|quality|trigger: which mode to run. May be repeated.
  • --variant-path <path>: for variant mode, the stripped or prior-version skill to compare against.
  • --project-root <path>: root of the project the skill belongs to. Default: walk up from the skill path looking for _bmad/ or .git/.
  • --output-dir <path>: where run folders are written. Default: {bmad_builder_reports}/eval-runs/ if configured, else ~/bmad-evals/.
  • --runs <n>: repeats per case for the variance benchmark. Default: 1 for a single check, higher when the user wants a stable mean.
  • --headless / -H: non-interactive; emit final JSON only.

These map directly onto the script CLIs below; anything not listed there (case subsets, timeouts, workers) is in the script docstrings.

On activation

  1. Resolve config the 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} and apply them through the session.

  2. If --headless was passed, set {headless_mode}=true, skip every confirmation below, pick the safest defaults, and proceed.

  3. Resume check: glob the output dir for an in-progress run's .memlog.md. If one exists and matches this skill, read it once to rebuild state, then continue append-only. Capture decisions and direction changes into the run's memlog through scripts/memlog.py as they land.

  4. Locate the skill and verify <skill-path>/SKILL.md exists. Halt with a clear error if it does not.

  5. Resolve the adapter config per the discovery rules in references/platform-adapter.md (explicit --adapter, BMAD_EVAL_ADAPTER, adapter.json beside the cases file). When nothing is configured and the current runtime is Claude Code, use {skill-root}/assets/adapter-claude-code.json.

  6. Discover the cases file. Look at --evals first, then <skill-path>/evals/, then <skill-path>/../../evals/<skill-name>/, then <project-root>/evals/<skill-name>/, then anywhere under <project-root>/evals/. Take the first match. If nothing is found, halt and say so; the runner does not invent cases.

  7. Confirm the run summary (skill, cases found, modes, output dir) unless headless, then execute.

Run execution

Each case runs in a clean working directory with the skill under test staged into it and an environment built from scratch, so the host shell config, prior runs, and ancestor instruction files do not bias the result. The isolation contract lives in references/platform-adapter.md; there is no container, no terminal emulation, and no credential staging.

For baseline, variant, and quality modes:

uv run {skill-root}/scripts/run_evals.py \
  --cases <cases-file> --skill-path <skill> --output-dir <dir> \
  --mode quality|baseline|variant [--variant-path <skill>] \
  [--adapter <adapter.json>] [--runs N]

The script stages the skill and any case fixtures, applies any state_prefix to the input, runs each config (baseline = skill staged AND bare; variant = skill AND --variant-path), and writes <run-dir>/<config>/<case-id>/. It captures timing and token counts the moment each invocation completes and writes them to timing.json immediately, so a later crash never loses the measurement.

For trigger mode:

uv run {skill-root}/scripts/run_triggers.py \
  --skill-path <skill> --queries <queries-file> --output-dir <dir> \
  [--adapter <adapter.json>] [--runs-per-query N]

It stages a synthetic skill where the runtime discovers skills, sends each query through the adapter, and detects the skill-load tool call. Each query runs several times for stability. When the user wants to optimize the description rather than just measure it, follow references/description-optimization.md.

For quality mode, spawn the grader described in references/grader.md per case, passing the case's rubric, transcript path, artifacts dir (the case's cwd/), and a grading_path of <case-folder>/grading.json. The grader writes that file, gives no partial credit, and flags weak or non-discriminating assertions; relay that feedback. If a grader subagent errors, mark that case grading_error — never substitute a default verdict.

When --runs is greater than one, call uv run {skill-root}/scripts/aggregate_benchmark.py --baseline <run-dir>/<config-a> --variant <run-dir>/<config-b> to produce the mean, sample standard deviation, min, max, and the delta between configs (--runs <run-dir>/<config> for a single config's spread).

When a run fails or comes back weak and the user wants the skill improved from the results, follow references/self-improvement.md.

Artifacts

Every run writes a dated run folder under the output dir, and those artifacts are permanent. Each case folder holds its prompt, transcript, the cwd/ with any files the skill wrote, timing.json, and grading.json when quality mode ran. Never delete, overwrite, or rotate a run folder; disk usage is the user's call. The run's .memlog.md records the decisions and deltas so a resumed or audited run reads back cleanly.

Tell the user where the run folder is when you finish.

Outcomes

  • The run reflects the skill's behavior in a clean working directory, not the behavior of the host shell with its memories and configs.
  • Timing and token counts land on disk the moment they are measured.
  • Failures cite specific expectations with evidence, and a pass that looks superficial is flagged rather than papered over.
  • A baseline run that the skill no longer wins points to retiring the skill, not patching it.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Sets up {module-name} module in a project. Use when the user requests to 'install {module-code} module', 'configure {module-name}', or 'setup {module-name}'.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

bmad-code-org/bmad-builder2162026년 9월 25일 업데이트

Builds, edits or analyzes Agent Skills through conversational discovery. Use when the user requests to "Create an Agent", "Analyze an Agent" or "Edit an Agent".

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

bmad-code-org/bmad-builder2162026년 9월 25일 업데이트

Personal coding coach and mentor. Use when the user asks to talk to their coding coach or requests code coaching.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

bmad-code-org/bmad-builder2162026년 9월 25일 업데이트

Creative companion and muse. Use when the user asks to talk to their creative muse or activate the creative muse.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

bmad-code-org/bmad-builder2162026년 9월 25일 업데이트

Architecture diagram reviewer. Use when the user asks to review a diagram or validate architecture.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

bmad-code-org/bmad-builder2162026년 9월 25일 업데이트

Dream journal, interpretation, and lucid dreaming coach. Use when the user wants to talk to Oneira, requests the Dream Guide, or wants help with dream journaling, interpretation, or lucid dreaming.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

bmad-code-org/bmad-builder2162026년 9월 25일 업데이트

bmad-code-org의 스킬 모두 보기

이 스킬의 문제 신고