Kanban worker handling of unresolved skills, plus one unrelated Gemini fix
Cluster 27136 · agent. Data as of
2 open items. Fix merged in #55585 on 30 Jun 2026. Check it covers your case.
The short answer
- Known?
- Yes. 6 related items grouped here, 1 issue already closed.
- Fix event
- A fix was merged to main in PR #55585. Check it covers your case. No release data is tracked.
- Tracker
- The maintainers' tracker marks this
partially resolved, deciding PR #55585. That is separate from the fix event. - Still open
- 1 issue and 1 PR.
Next step: read #55585, then check whether your report is the one still open.
Read #55585Pick up a Lab taskMost members concern making a Kanban worker or the CLI warn instead of crash when a preloaded or unknown skill cannot be looked up. One member, about adding a role field to Gemini systemInstruction for Gemma compatibility, does not appear related to this theme.
Open issues1
- Issue#54088Kanban worker should not crash when an optional preloaded skill cannot be resolved
Open PRs1
- PR#54100fix(kanban): keep a dispatcher-owned worker running when the whole skill set is missing (#54088)
Fixes on record
-
#55585 fix(kanban): unknown skill warns instead of crashing the worker
files:
cli.py,scripts/release.py,tui_gateway/server.pyShow the diff
-
cli.py@@ -15359,7 +15359,21 @@ def main( ) if missing_skills: missing_display = ", ".join(missing_skills) - raise ValueError(f"Unknown skill(s): {missing_display}") + # If at least one skill loaded, degrade gracefully: skip the + # unknown ones and continue. A typo'd skill name should not crash + # the worker (which auto-blocks the Kanban task after retries). + # Only when EVERY requested skill is missing do we hard-fail, so a + # fully-misconfigured worker fails loudly instead of running blind. + if loaded_skills: + logger.warning( + "Unknown skill(s) requested, skipping: %s. " + "Continuing with: %s. " + "List available skills with `hermes skills list`.", + missing_display, + ", ".join(loaded_skills), + ) + else: + raise ValueError(f"Unknown skill(s): {missing_display}") if skills_prompt: cli.system_prompt = "\n\n".join( part for part in (cli.system_prompt, skills_prompt) if part -
scripts/release.py@@ -45,6 +45,7 @@ # Auto-extracted from noreply emails + manual overrides AUTHOR_MAP = { + "[email protected]": "jimmyjohansson84", # PR #27123 salvage (Kanban unknown-skill warn-instead-of-crash; #27136) "[redacted:email]": "theAgenticBuilder", # PR #14180 salvage (route delegate_task progress lines through _safe_print so ACP stdio JSON-RPC frames stay clean) "[redacted:email]": "huangxudong663-sys", # PR #15157 salvage (isinstance(dict) guard on tool-call model_extra; NVIDIA NIM non-dict crash) "[redacted:email]": "Nickperillo", # PR #8008 salvage (Discord channel-name matching + flush pending sends on shutdown) -
tui_gateway/server.py@@ -4212,12 +4212,25 @@ def _make_agent( if startup_skills: from agent.skill_commands import build_preloaded_skills_prompt - skills_prompt, _loaded_skills, missing_skills = build_preloaded_skills_prompt( + skills_prompt, loaded_skills, missing_skills = build_preloaded_skills_prompt( startup_skills, task_id=session_id or key, ) if missing_skills: - raise ValueError(f"Unknown skill(s): {', '.join(missing_skills)}") + missing_display = ", ".join(missing_skills) + # Degrade gracefully when some skills loaded; only hard-fail when + # every requested skill is missing. Mirrors cli.py — a typo'd skill + # name should not crash the worker and auto-block the Kanban task. + if loaded_skills: + logger.warning( + "Unknown skill(s) requested, skipping: %s. " + "Continuing with: %s. " + "List available skills with `hermes skills list`.", + missing_display, + ", ".join(loaded_skills), + ) + else: + raise ValueError(f"Unknown skill(s): {missing_display}") if skills_prompt: system_prompt = "\n\n".join( part for part in (system_prompt, skills_prompt) if part
-
2 PRs closed without merging
From the close comments: merged via another change 2
Closed issues · 1
- Closed#27136fix(cli): unknown skills should warn instead of crash to prevent Kanban worker auto-blocking
How this cluster was grouped
-
Link evidence (
partly structural links): some members are connected by structural evidence (shared changed files, or a closing/superseded reference); the rest are joined by an automated relevance judgement over their text. - Members outside that structural core may belong to a different underlying problem.
-
Pairwise link density
0.29: the share of item pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36.1.00means every pair is linked.
Pick up a Lab task
Check whether a fix covers the open issues here, with your own agent. Bring back evidence for maintainers.
Open the LabAt a glance
- Subsystem
- agent
- Merged PRs
- #55585
- Closed issues
- 1
- Attempts
- 2 PRs closed without merging
- Fix link checked
- 30 Jun 2026