Summary
The kanban_create tool (and the skills column in the Kanban DB) accepts any string array without validation. When toolset names like "web", "browser", "terminal", or "file" are passed as skills, the dispatcher spawns a worker with --skills web browser, which immediately crashes:
Error: Unknown skill(s): web, browser
This is a very common mistake — the distinction between skills (named skill bundles like kanban-worker, blogwatcher) and toolsets (runtime capabilities like web, browser, terminal) is not obvious, and orchestrator agents frequently put toolset names in the skills field.
Steps to Reproduce
- Create a kanban task with toolset names as skills:
kanban_create(title="Research competitors", assignee="researcher", skills=["web", "browser"])
- Dispatcher picks up the task and spawns a worker
- Worker crashes immediately with
Error: Unknown skill(s): web, browser
- Task increments
consecutive_failures and eventually gets auto-blocked
Expected Behavior
kanban_create should validate the skills parameter against known skill names and reject toolset names before the task is created — fail fast at creation time, not at dispatch time.
Suggested Fix
- Add a validation step in
kanban_create that checks each entry in skills against the known skills registry (or at minimum against a deny-list of known toolset names: web, browser, terminal, file, hermes-cli, discord, etc.)
- If invalid entries are found, return a clear error:
"web" is a toolset name, not a skill name. Add it to the profile config under toolsets: instead.
- Optionally: add a migration/lint that scans existing tasks for toolset-name skills and clears them.
Environment
- Hermes Agent v2.x
- Observed across multiple sessions and profiles
- Affects both CLI-created and agent-created tasks
Workaround
Manual DB surgery:
UPDATE tasks SET skills = [] WHERE id = t_xxx;
Then hermes kanban unblock t_xxx && hermes kanban dispatch
This is documented in the kanban-orchestrator skill pitfalls section.
Summary
The
kanban_createtool (and theskillscolumn in the Kanban DB) accepts any string array without validation. When toolset names like"web","browser","terminal", or"file"are passed as skills, the dispatcher spawns a worker with--skills web browser, which immediately crashes:This is a very common mistake — the distinction between skills (named skill bundles like
kanban-worker,blogwatcher) and toolsets (runtime capabilities likeweb,browser,terminal) is not obvious, and orchestrator agents frequently put toolset names in theskillsfield.Steps to Reproduce
Error: Unknown skill(s): web, browserconsecutive_failuresand eventually gets auto-blockedExpected Behavior
kanban_createshould validate theskillsparameter against known skill names and reject toolset names before the task is created — fail fast at creation time, not at dispatch time.Suggested Fix
kanban_createthat checks each entry inskillsagainst the known skills registry (or at minimum against a deny-list of known toolset names:web,browser,terminal,file,hermes-cli,discord, etc.)"web" is a toolset name, not a skill name. Add it to the profile config under toolsets: instead.Environment
Workaround
Manual DB surgery:
Then
hermes kanban unblock t_xxx && hermes kanban dispatchThis is documented in the kanban-orchestrator skill pitfalls section.