NousResearch/hermes-agent

External skills resolving incorrect skill_dir in _load_skill_payload

Cluster 10313. Data as of

Nothing open on GitHub. Fix merged in #10587 on 16 Apr 2026. Check it covers your case.

The short answer

0open issues
0open PRs
3items grouped
Known?
Yes. 3 related items grouped here, 1 issue already closed.
Fix event
A fix was merged to main in PR #10587. Check it covers your case. No release data is tracked.
Tracker
The maintainers' tracker marks this resolved, deciding PR #10587. That is separate from the fix event.
Still open
Nothing open on GitHub.

The three members share one theme: _load_skill_payload reportedly rebuilds the wrong skill_dir for skills from skills.external_dirs. One is a bug report and two are fix proposals, one of which uses an absolute skill_dir; titles alone do not show their status or outcome.

Open issues0

No open issues.

Open PRs0

No open pull requests.

Fixes on record

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

  • #10587 fix: use absolute skill_dir for external skills

    merged to main

    files: agent/skill_commands.py, tools/skills_tool.py

    Show the diff
    • agent/skill_commands.py
      @@ -72,7 +72,14 @@ def _load_skill_payload(skill_identifier: str, task_id: str | None = None) -> tu
           skill_name = str(loaded_skill.get("name") or normalized)
           skill_path = str(loaded_skill.get("path") or "")
           skill_dir = None
      -    if skill_path:
      +    # Prefer the absolute skill_dir returned by skill_view() — this is
      +    # correct for both local and external skills.  Fall back to the old
      +    # SKILLS_DIR-relative reconstruction only when skill_dir is absent
      +    # (e.g. legacy skill_view responses).
      +    abs_skill_dir = loaded_skill.get("skill_dir")
      +    if abs_skill_dir:
      +        skill_dir = Path(abs_skill_dir)
      +    elif skill_path:
               try:
                   skill_dir = SKILLS_DIR / Path(skill_path).parent
               except Exception:
    • tools/skills_tool.py
      @@ -1263,6 +1263,7 @@ def skill_view(name: str, file_path: str = None, task_id: str = None) -> str:
                   "related_skills": related_skills,
                   "content": content,
                   "path": rel_path,
      +            "skill_dir": str(skill_dir) if skill_dir else None,
                   "linked_files": linked_files if linked_files else None,
                   "usage_hint": "To view linked files, call skill_view(name, file_path) where file_path is e.g. 'references/api.md' or 'assets/config.yaml'"
                   if linked_files

1 PR closed without merging

From the close comments: done elsewhere 1

  • #10348 fix(skills): resolve correct skill_dir for external skills in _load_skill_payload · done elsewhere → 4fdcae6, #10313, #10587
Closed issues · 1
  • Closed#10313Bug: _load_skill_payload rebuilds wrong skill_dir for external skills (from skills.external_dirs)
How this cluster was grouped
  • Link evidence (structural links throughout): every member is connected by structural evidence: shared changed files, or a closing/superseded reference.
  • Pairwise link density 0.67: 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

Merged PRs
#10587
Closed issues
1
Attempts
1 PR closed without merging
Fix link checked
16 Apr 2026. This confirmation is old and may be out of date (a revert or reopen would not have invalidated it here); re-verify.

For your agent

The same facts, typed.