Skip to content

[Bug]: hermes skills list uses frontmatter name while bundled manifest uses directory name, causing builtin skills to appear as local #5433

@zachzhao1984

Description

@zachzhao1984

Bug Description

Summary

Some bundled skills are misclassified as local in hermes skills list when:

  • tools.skills_sync records bundled entries in ~/.hermes/skills/.bundled_manifest using skill_dir.name
  • tools.skills_tool._find_all_skills() returns the SKILL.md frontmatter name
  • hermes_cli.skills_hub.do_list() checks builtin status by matching that runtime name against manifest keys

If directory name != frontmatter name, builtin classification fails.

Example

Manifest entry:

  • vllm:

Skill frontmatter:

  • name: serving-llms-vllm

Impact

Functional loading seems fine; this mainly breaks builtin/local source classification and trust display.

Steps to Reproduce

  1. Sync bundled skills
  2. Ensure at least one bundled skill has directory name != frontmatter name
  3. Run:
    hermes skills list
  4. Observe it is classified as local

Expected Behavior

These should show as:

  • Source: builtin
  • Trust: builtin

Actual Behavior

Result:

  • serving-llms-vllm is shown as local instead of builtin

Observed affected skills on my machine

  • audiocraft-audio-generation
  • evaluating-llms-harness
  • fine-tuning-with-trl
  • gguf-quantization
  • modal-serverless-gpu
  • peft-fine-tuning
  • segment-anything-model
  • serving-llms-vllm
  • stable-diffusion-image-generation

Affected Component

Skills (skill loading, skill hub, skill guard)

Messaging Platform (if gateway-related)

No response

Operating System

macOS 26.4

Python Version

3.11

Hermes Version

0.7.0

Relevant Logs / Traceback

Root Cause Analysis (optional)

No response

Proposed Fix (optional)

Relevant code paths

  • tools/skills_sync.py

    • _discover_bundled_skills()
    • sync_skills()
  • tools/skills_tool.py

    • _find_all_skills()
  • hermes_cli/skills_hub.py

    • do_list()

Either:

  • compare against both manifest key and directory name when classifying builtin
    or
  • migrate bundled manifest to store canonical frontmatter names, with backward compatibility for old manifests

Are you willing to submit a PR for this?

  • I'd like to fix this myself and submit a PR

Metadata

Metadata

Assignees

No one assigned

    Labels

    sweeper:implemented-on-mainSweeper: behavior already present on current maintype/bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions