What's wrong
webcmd-adapter-author's SKILL.md (Step 12 / Runbook) marks a passing webcmd browser verify fixture as required for every adapter, with no documented exception:
verify/<cmd>.json: required. Expected values for webcmd browser verify: args, rowCount, columns, types, patterns, notEmpty.
But validateRowShape() in @agentrhq/webcmd/dist/src/browser/verify-fixture.js:205 hardcodes:
const DEFAULT_MAX_TOP_LEVEL_KEYS = 12; // verify-fixture.js:33
const maxTopLevelKeys = opts.maxTopLevelKeys ?? DEFAULT_MAX_TOP_LEVEL_KEYS;
and the call site in cli.js:2715 invokes it with no options at all:
const shapeFailures = validateRowShape(rows);
There is no CLI flag to raise maxTopLevelKeys. Any adapter whose rows have more than 12 top-level keys cannot ever pass webcmd browser verify, regardless of how correct the adapter is.
Impact
This isn't a hypothetical edge case — it affects a whole adapter family already shipped in the marketplace. The university postgraduate-course-export adapters (cincinnati, yale, concordia, goettingen, heidelberg, hft, iit) all emit a 52-column row shape (by design — the output is meant to become a spreadsheet/CSV for a downstream team, not a narrow agent-queryable API). None of them ship a verify fixture, presumably because it's structurally impossible to satisfy.
A subagent building a new adapter in this family (Manchester) followed the skill literally, hit repeated verify failures, tried --write-fixture, and eventually had to read webcmd's own dist source to figure out why — before falling back to webcmd validate, which is the gate that actually applies to browser:false plugin-style adapters.
Suggested fix
One of:
- Add a
--max-top-level-keys (or similar) override flag to webcmd browser verify, and have the skill tell agents when a wide row shape is legitimate (e.g. spreadsheet-export adapters) vs. a smell.
- Have the skill explicitly document the exception: for
browser:false/export-style adapters with an intentionally wide row shape, webcmd validate <site> is the required gate, not webcmd browser verify.
Context
Found while a subagent built a new university-course-export adapter (Manchester) following webcmd-adapter-author end to end. Happy to share the full transcript excerpt if useful.
What's wrong
webcmd-adapter-author's SKILL.md (Step 12 / Runbook) marks a passingwebcmd browser verifyfixture as required for every adapter, with no documented exception:But
validateRowShape()in@agentrhq/webcmd/dist/src/browser/verify-fixture.js:205hardcodes:and the call site in
cli.js:2715invokes it with no options at all:There is no CLI flag to raise
maxTopLevelKeys. Any adapter whose rows have more than 12 top-level keys cannot ever passwebcmd browser verify, regardless of how correct the adapter is.Impact
This isn't a hypothetical edge case — it affects a whole adapter family already shipped in the marketplace. The university postgraduate-course-export adapters (
cincinnati,yale,concordia,goettingen,heidelberg,hft,iit) all emit a 52-column row shape (by design — the output is meant to become a spreadsheet/CSV for a downstream team, not a narrow agent-queryable API). None of them ship a verify fixture, presumably because it's structurally impossible to satisfy.A subagent building a new adapter in this family (Manchester) followed the skill literally, hit repeated verify failures, tried
--write-fixture, and eventually had to read webcmd's own dist source to figure out why — before falling back towebcmd validate, which is the gate that actually applies tobrowser:falseplugin-style adapters.Suggested fix
One of:
--max-top-level-keys(or similar) override flag towebcmd browser verify, and have the skill tell agents when a wide row shape is legitimate (e.g. spreadsheet-export adapters) vs. a smell.browser:false/export-style adapters with an intentionally wide row shape,webcmd validate <site>is the required gate, notwebcmd browser verify.Context
Found while a subagent built a new university-course-export adapter (Manchester) following
webcmd-adapter-authorend to end. Happy to share the full transcript excerpt if useful.