NousResearch/hermes-agent

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

1open issue
1open PR
6items grouped
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.

Most 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

Merged to main. A stamp counts the issues a fix is linked to.

  • #55585 fix(kanban): unknown skill warns instead of crashing the worker

    merged to main

    files: cli.py, scripts/release.py, tui_gateway/server.py

    Show 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

  • #27123 fix(gemini): add missing role field to systemInstruction for Gemma compatibility · merged via another change → 018009b, #55585, #27123
  • #27201 fix(cli): unknown skills should warn instead of crash · merged via another change → 018009b
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.00 means 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 Lab

At a glance

Subsystem
agent
Merged PRs
#55585
Closed issues
1
Attempts
2 PRs closed without merging
Fix link checked
30 Jun 2026

For your agent

The same facts, typed.