Skip to content

fix(skills): classify builtin skills by dir_name when frontmatter name differs - #5784

Closed
r266-tech wants to merge 3 commits into
NousResearch:mainfrom
r266-tech:fix/skills-list-builtin-dir-name-mismatch
Closed

fix(skills): classify builtin skills by dir_name when frontmatter name differs#5784
r266-tech wants to merge 3 commits into
NousResearch:mainfrom
r266-tech:fix/skills-list-builtin-dir-name-mismatch

Conversation

@r266-tech

Copy link
Copy Markdown
Contributor

Problem

Closes #5433

                            Installed Skills                                

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┓
┃ Name ┃ Category ┃ Source ┃ Trust ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━┩
│ dogfood │ │ builtin │ builtin │
│ apple-notes │ apple │ builtin │ builtin │
│ apple-reminders │ apple │ builtin │ builtin │
│ findmy │ apple │ builtin │ builtin │
│ imessage │ apple │ builtin │ builtin │
│ claude-code │ autonomous-ai-agents │ builtin │ builtin │
│ codex │ autonomous-ai-agents │ builtin │ builtin │
│ hermes-agent │ autonomous-ai-agents │ builtin │ builtin │
│ opencode │ autonomous-ai-agents │ builtin │ builtin │
│ ascii-art │ creative │ builtin │ builtin │
│ ascii-video │ creative │ builtin │ builtin │
│ excalidraw │ creative │ builtin │ builtin │
│ manim-video │ creative │ builtin │ builtin │
│ p5js │ creative │ builtin │ builtin │
│ popular-web-designs │ creative │ builtin │ builtin │
│ songwriting-and-ai-music │ creative │ builtin │ builtin │
│ jupyter-live-kernel │ data-science │ builtin │ builtin │
│ webhook-subscriptions │ devops │ builtin │ builtin │
│ himalaya │ email │ builtin │ builtin │
│ minecraft-modpack-server │ gaming │ builtin │ builtin │
│ pokemon-player │ gaming │ builtin │ builtin │
│ codebase-inspection │ github │ builtin │ builtin │
│ github-auth │ github │ builtin │ builtin │
│ github-code-review │ github │ builtin │ builtin │
│ github-issues │ github │ builtin │ builtin │
│ github-pr-workflow │ github │ builtin │ builtin │
│ github-repo-management │ github │ builtin │ builtin │
│ find-nearby │ leisure │ builtin │ builtin │
│ mcporter │ mcp │ builtin │ builtin │
│ native-mcp │ mcp │ builtin │ builtin │
│ gif-search │ media │ builtin │ builtin │
│ heartmula │ media │ builtin │ builtin │
│ songsee │ media │ builtin │ builtin │
│ youtube-content │ media │ builtin │ builtin │
│ audiocraft-audio-generation │ mlops │ local │ local │
│ axolotl │ mlops │ builtin │ builtin │
│ clip │ mlops │ builtin │ builtin │
│ dspy │ mlops │ builtin │ builtin │
│ evaluating-llms-harness │ mlops │ local │ local │
│ fine-tuning-with-trl │ mlops │ local │ local │
│ gguf-quantization │ mlops │ local │ local │
│ grpo-rl-training │ mlops │ builtin │ builtin │
│ guidance │ mlops │ builtin │ builtin │
│ huggingface-hub │ mlops │ builtin │ builtin │
│ llama-cpp │ mlops │ builtin │ builtin │
│ modal-serverless-gpu │ mlops │ local │ local │
│ obliteratus │ mlops │ builtin │ builtin │
│ outlines │ mlops │ builtin │ builtin │
│ peft-fine-tuning │ mlops │ local │ local │
│ pytorch-fsdp │ mlops │ builtin │ builtin │
│ segment-anything-model │ mlops │ local │ local │
│ serving-llms-vllm │ mlops │ local │ local │
│ stable-diffusion-image-generation │ mlops │ local │ local │
│ unsloth │ mlops │ builtin │ builtin │
│ weights-and-biases │ mlops │ builtin │ builtin │
│ whisper │ mlops │ builtin │ builtin │
│ obsidian │ note-taking │ builtin │ builtin │
│ google-workspace │ productivity │ builtin │ builtin │
│ linear │ productivity │ builtin │ builtin │
│ nano-pdf │ productivity │ builtin │ builtin │
│ notion │ productivity │ builtin │ builtin │
│ ocr-and-documents │ productivity │ builtin │ builtin │
│ powerpoint │ productivity │ builtin │ builtin │
│ godmode │ red-teaming │ builtin │ builtin │
│ arxiv │ research │ builtin │ builtin │
│ blogwatcher │ research │ builtin │ builtin │
│ llm-wiki │ research │ builtin │ builtin │
│ multi-platform-sentiment-research │ research │ local │ local │
│ polymarket │ research │ builtin │ builtin │
│ research-paper-writing │ research │ builtin │ builtin │
│ openhue │ smart-home │ builtin │ builtin │
│ xitter │ social-media │ builtin │ builtin │
│ plan │ software-development │ builtin │ builtin │
│ requesting-code-review │ software-development │ builtin │ builtin │
│ subagent-driven-development │ software-development │ builtin │ builtin │
│ systematic-debugging │ software-development │ builtin │ builtin │
│ test-driven-development │ software-development │ builtin │ builtin │
│ writing-plans │ software-development │ builtin │ builtin │
│ perplexity-search │ web │ local │ local │
│ web-access │ web │ local │ local │
└───────────────────────────────────┴──────────────────────┴─────────┴─────────┘
0 hub-installed, 68 builtin, 12 local misclassifies some bundled skills as local instead of builtin when the skill's directory name differs from its SKILL.md frontmatter name.

Root cause: skills_sync stores manifest keys by directory name (e.g. vllm), but _find_all_skills() returns frontmatter names (e.g. serving-llms-vllm). The builtin check in do_list() compared them directly, failing silently.

Affected examples from #5433: audiocraft-audio-generation, serving-llms-vllm, segment-anything-model, etc.

Fix

Two minimal changes:

  1. tools/skills_tool.py – expose dir_name (the directory name) alongside name (frontmatter) in each skill dict returned by _find_all_skills(). All other callers ignore the new key.

  2. hermes_cli/skills_hub.py – in do_list(), check skill["dir_name"] against the manifest as a fallback when the frontmatter name isn't found.

Test plan

  • New regression test test_do_list_builtin_dir_name_mismatch in tests/hermes_cli/test_skills_hub.py: simulates a skill where directory name (vllm) differs from frontmatter name (serving-llms-vllm) and asserts it is shown as builtin with count 0 hub-installed, 1 builtin, 0 local
  • Existing test_do_list_distinguishes_hub_builtin_and_local continues to pass (same-name case unchanged)

@alt-glitch alt-glitch added type/bug Something isn't working P3 Low — cosmetic, nice to have tool/skills Skills system (list, view, manage) labels Apr 30, 2026
@alt-glitch

Copy link
Copy Markdown
Collaborator

Related to #17918 (skill_view resolution by frontmatter name). Multiple prior PRs for #5433 were closed (#5543, #5966, #6017).

@r266-tech

Copy link
Copy Markdown
Contributor Author

Closing as superseded — the root cause of #5433 was already resolved upstream in commit b87e0f5 ("fix(skills): read name from SKILL.md frontmatter in skills_sync") on 2026-04-10, which fixes _discover_bundled_skills() to read the frontmatter name: field. This PR is redundant. Thanks @alt-glitch for the redirect.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P3 Low — cosmetic, nice to have tool/skills Skills system (list, view, manage) type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

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

2 participants