hermes - ✅(Solved) Fix skill_view resolves by directory name but skills_list displays frontmatter name — mismatch causes 'not found' [1 pull requests, 2 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
NousResearch/hermes-agent#17914Fetched 2026-05-01 05:55:10
View on GitHub
Comments
2
Participants
2
Timeline
6
Reactions
0
Timeline (top)
labeled ×3commented ×2cross-referenced ×1

When a skill's directory name differs from its YAML frontmatter name, loading it with skill_view fails with "Skill not found" when using the name shown in skills_list.

Root Cause

  • skills_list displays the frontmatter name field (darwin-skill)
  • skill_view resolves by directory name (darwin/)
  • These two values can diverge (e.g., darwin-skill vs darwin), creating a confusing UX where the user copies the name from the list and it doesn't work

Fix Action

Fixed

PR fix notes

PR #17918: fix(skills): resolve skill_view by frontmatter name

Description (problem / solution / changelog)

Summary

  • Resolve local skills by the frontmatter name shown in skills_list when it differs from the directory name.
  • Keep existing directory-name and direct-path lookup behavior unchanged.

Root cause

skills_list displays each skill's frontmatter name, but skill_view only searched direct paths and directory names before falling back to legacy flat Markdown files. Copying a listed name like darwin-skill for a skill stored in darwin/SKILL.md therefore returned "Skill not found" even though skill_view("darwin") worked.

Fix

After the existing directory-name search misses, scan skill index files for a platform-compatible frontmatter name that matches the requested identifier and use that SKILL.md.

Related: #5433 / #5784 cover builtin-vs-local classification for the same directory/frontmatter naming mismatch family, but they do not make skill_view accept the name displayed by skills_list.

Regression coverage

  • Added TestSkillView::test_view_accepts_frontmatter_name_when_directory_differs, which creates darwin/SKILL.md with name: darwin-skill, verifies skills_list displays darwin-skill, and then verifies skill_view("darwin-skill") loads the skill.

Testing

  • scripts/run_tests.sh tests/tools/test_skills_tool.py::TestSkillView::test_view_accepts_frontmatter_name_when_directory_differs -q (fails before fix, passes after)
  • scripts/run_tests.sh tests/tools/test_skills_tool.py -q

Closes #17914

Changed files

  • tests/tools/test_skills_tool.py (modified, +22/-0)
  • tools/skills_tool.py (modified, +29/-0)

Code Example

# Skill stored at: ~/.hermes/skills/darwin/SKILL.md
# Frontmatter: name: darwin-skill

hermes skills list
# Shows: darwin-skill | Darwin Skill (达尔文.skill): ...

---

skill_view('darwin-skill')   # ❌ Skill 'darwin-skill' not found
skill_view('darwin')         # ✅ works
RAW_BUFFERClick to expand / collapse

skill_view resolves by directory name but skills_list displays frontmatter name — mismatch causes "not found"

Description

When a skill's directory name differs from its YAML frontmatter name, loading it with skill_view fails with "Skill not found" when using the name shown in skills_list.

Repro

# Skill stored at: ~/.hermes/skills/darwin/SKILL.md
# Frontmatter: name: darwin-skill

hermes skills list
# Shows: darwin-skill | Darwin Skill (达尔文.skill): ...

Then in-session:

skill_view('darwin-skill')   # ❌ Skill 'darwin-skill' not found
skill_view('darwin')         # ✅ works

Root cause

  • skills_list displays the frontmatter name field (darwin-skill)
  • skill_view resolves by directory name (darwin/)
  • These two values can diverge (e.g., darwin-skill vs darwin), creating a confusing UX where the user copies the name from the list and it doesn't work

Expected behavior

skill_view should accept both the directory name and the frontmatter name, or skills_list should display the directory name (the canonical identifier).

Environment

  • Hermes Agent latest
  • macOS
  • Skill: darwin-skill (directory darwin/, frontmatter name: darwin-skill)

Labels

bug skills

extent analysis

TL;DR

Update skill_view to accept both directory name and frontmatter name for skill resolution.

Guidance

  • Verify the discrepancy between skills_list display and skill_view resolution by checking the frontmatter name and directory name of the skill.
  • Consider modifying skill_view to perform a fallback search by directory name if the frontmatter name is not found.
  • Review the skills_list display to ensure it shows the canonical identifier (directory name) for skills, or update it to display both the frontmatter name and directory name.
  • Test the changes with the provided repro steps to ensure the fix resolves the "Skill not found" issue.

Example

No code snippet is provided as the issue does not specify the implementation details of skill_view or skills_list.

Notes

The solution may require updates to the Hermes Agent codebase, and thorough testing is necessary to ensure the fix does not introduce regressions.

Recommendation

Apply a workaround by updating skill_view to accept both directory name and frontmatter name for skill resolution, as this approach addresses the root cause of the issue and provides a more robust solution.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

skill_view should accept both the directory name and the frontmatter name, or skills_list should display the directory name (the canonical identifier).

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING