You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(orchestration): refuse an unoffered skill_triggered target at resolution; read plugin manifests as Claude Code does
validate_plugins now fails plan when a skill_triggered skill_name is not among
the offered skills, so a misnamed skill no longer costs a full run before it
finishes ERROR (a ${row...} name is checked on its expanded row; the checker
gate stays for detached grades of recorded runs).
Plugin scanning now matches Claude Code's plugins reference and a CLI 2.1.273
spike: a manifest skills path ADDS to the default skills/ instead of replacing
it, a declared path may name one skill, a root holding SKILL.md is a
single-skill plugin, and a skill is named by its SKILL.md frontmatter name.
The deliberately invalid skill_not_offered fixture is deleted; unit tests cover
the refusal on plan and resolution.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/TASK_DEFINITION_GUIDE.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1358,7 +1358,7 @@ Observed label is `"yes"` when either signal is found, else `"no"`. Expected lab
1358
1358
1359
1359
**Requires agent telemetry.** This criterion reads `turn_records`, so it only works against a real agent run (not a static check). With no turn records it reports `score=0.0` and an `error`.
1360
1360
1361
-
**The skill must be offered.** When the task sets `agent.plugins`, coder-eval stages the skills those paths offer (a plugin root or a bare skills directory) and records their names in `environment_info.skills_offered`. A `skill_name` that is not among them makes the criterion finish `ERROR`, not `0.0`: the positive control cannot run. This applies even when the skill reaches the agent another way (for example a template's `.claude/skills/`): with `agent.plugins` set, put the skill under test in a plugin path. A plugin path that offers no skill fails `coder-eval plan`. See [Plugin staging](agents/HARNESS_PARITY.md#plugin-staging).
1361
+
**The skill must be offered.** When the task sets `agent.plugins`, coder-eval stages the skills those paths offer (a plugin root or a bare skills directory) and records their names (the `SKILL.md` frontmatter `name`) in `environment_info.skills_offered`. A `skill_name` that is not among them fails `coder-eval plan` before the run is paid for: the positive control cannot run. A `skill_name` taken from a dataset row is checked on each expanded row. This applies even when the skill reaches the agent another way (for example a template's `.claude/skills/`): with `agent.plugins` set, put the skill under test in a plugin path. Re-grading a recorded run whose `skill_name` was not offered finishes `ERROR`, not `0.0`. A plugin path that offers no skill also fails `coder-eval plan`. See [Plugin staging](agents/HARNESS_PARITY.md#plugin-staging).
1362
1362
1363
1363
**Classification metrics.** `skill_triggered` returns a `ClassificationCriterionResult`, so on a [dataset-backed task](#dataset) the suite aggregator computes accuracy / precision / recall / F1 / confusion matrix across all rows. Gate the suite with `suite_thresholds` using any of: `accuracy`, `macro_f1`, `weighted_f1`, `micro_f1`, or per-label `precision.<label>` / `recall.<label>` / `f1.<label>` (labels are `yes` / `no`). The run exits non-zero if any listed metric falls below its minimum.
Copy file name to clipboardExpand all lines: docs/tutorials/07-plugin-in-claude-code.md
+1-2Lines changed: 1 addition & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -160,8 +160,7 @@ covers telling them apart with `/doctor` and `/context`.
160
160
| No `/coder-eval:` commands after installing | Check `/plugin`; re-run the install |
161
161
| A skill offers to install the CLI, or Bash reports `command not found`| The CLI isn't installed or isn't on `PATH` — accept the offer, or install it yourself |
162
162
|`coder-eval run` matches nothing | Wrong directory — use the path `init` reported in step 2 |
163
-
| Step 5 stops with a config error about `agent.plugins`|`SKILL_SOURCE_PATH` is unset, or points at a directory that holds no `<name>/SKILL.md`|
164
-
| A `skill_triggered` row finishes `ERROR`| The skill name is not among the skills the plugin path offers |
163
+
| Step 5 stops with a config error about `agent.plugins`|`SKILL_SOURCE_PATH` is unset, points at a directory that holds no `<name>/SKILL.md`, or the suite's `skill_name` is not the frontmatter `name` of a skill that path offers |
165
164
166
165
To update after the marketplace moves, `/plugin marketplace update coder-eval`; to
0 commit comments