Skip to content

fix(skills): avoid mislabeling local skills as builtin in skills list#862

Merged
teknium1 merged 1 commit into
NousResearch:mainfrom
arceus77-7:fix/skills-list-source-provenance
Mar 12, 2026
Merged

fix(skills): avoid mislabeling local skills as builtin in skills list#862
teknium1 merged 1 commit into
NousResearch:mainfrom
arceus77-7:fix/skills-list-source-provenance

Conversation

@arceus77-7

@arceus77-7 arceus77-7 commented Mar 10, 2026

Copy link
Copy Markdown
Contributor

What does this PR do?

Fixes incorrect source labeling in hermes skills list.

Previously, every non-hub-installed skill was shown as builtin. This misclassified user-managed skills (for example skills synced in from external managers) as built-in Hermes skills.

This PR classifies installed skills into:

  • hub (present in Hub lockfile)
  • builtin (present in bundled skills manifest)
  • local (everything else under ~/.hermes/skills/)

It also adds a --source local filter.

Related Issue

Fixes #861

Type of Change

  • 🐛 Bug fix (non-breaking change that fixes an issue)
  • ✅ Tests (adding or improving test coverage)

Changes Made

  • Updated source classification in hermes_cli/skills_hub.py (do_list):
    • Reads bundled skill names from tools.skills_sync._read_manifest().
    • Distinguishes hub, builtin, and local skills.
    • Updates summary counts to include local skills.
  • Updated /skills help text to document --source hub|builtin|local.
  • Updated CLI argument choices in hermes_cli/main.py to include local.
  • Added tests in tests/hermes_cli/test_skills_hub.py:
    • test_do_list_distinguishes_hub_builtin_and_local
    • test_do_list_local_filter

How to Test

  1. Run tests:
    • ./venv/bin/pytest tests/hermes_cli/test_skills_hub.py -q
  2. Add or ensure a non-bundled local skill exists under ~/.hermes/skills/.
  3. Run:
    • hermes skills list
    • hermes skills list --source local
  4. Verify local skill shows Source=local and no longer appears as builtin.

Checklist

Code

  • I've read the Contributing Guide
  • My commit messages follow Conventional Commits (fix(scope):, feat(scope):, etc.)
  • I searched for existing PRs to make sure this isn't a duplicate
  • My PR contains only changes related to this fix/feature (no unrelated commits)
  • I've added tests for my changes (required for bug fixes, strongly encouraged for features)
  • I've tested on my platform: macOS

Documentation & Housekeeping

  • N/A for this scoped bugfix: README/docs/config/AGENTS/tool-schema updates
  • I've considered cross-platform impact (Windows, macOS) per the compatibility guide

Screenshots / Logs

  • ./venv/bin/pytest tests/hermes_cli/test_skills_hub.py -q -> 3 passed
  • Note: full pytest tests/ -q was not run for this focused fix.

@teknium1 teknium1 merged commit 7e637d3 into NousResearch:main Mar 12, 2026
teknium1 added a commit that referenced this pull request Mar 12, 2026
Follow-up to PR #862 (local skills classification by arceus77-7):

- Remove unnecessary isinstance guard on _read_manifest() return value —
  it always returns Dict[str, str], so set() on it suffices.
- Extract repeated hub-dir monkeypatching into a shared pytest fixture (hub_env).
- Add three_source_env fixture for source-classification tests.
- Add _read_manifest monkeypatch to test_do_list_initializes_hub_dir
  (was fragile — relied on empty skills list masking the real manifest).
- Add test coverage for --source hub and --source builtin filters.
- Extract _capture() helper to reduce console/StringIO boilerplate.

5 tests, all green.
teknium1 added a commit that referenced this pull request Mar 12, 2026
chore(skills): clean up PR #862 + feat(docs): add search to Docusaurus
angelburgosrosado pushed a commit to angelburgosrosado/hermes-agent that referenced this pull request Apr 27, 2026
…ource-provenance

Merging — clean fix for local skills mislabeling. Follow-up cleanup coming.
angelburgosrosado pushed a commit to angelburgosrosado/hermes-agent that referenced this pull request Apr 27, 2026
…, DRY up tests

Follow-up to PR NousResearch#862 (local skills classification by arceus77-7):

- Remove unnecessary isinstance guard on _read_manifest() return value —
  it always returns Dict[str, str], so set() on it suffices.
- Extract repeated hub-dir monkeypatching into a shared pytest fixture (hub_env).
- Add three_source_env fixture for source-classification tests.
- Add _read_manifest monkeypatch to test_do_list_initializes_hub_dir
  (was fragile — relied on empty skills list masking the real manifest).
- Add test coverage for --source hub and --source builtin filters.
- Extract _capture() helper to reduce console/StringIO boilerplate.

5 tests, all green.
angelburgosrosado pushed a commit to angelburgosrosado/hermes-agent that referenced this pull request Apr 27, 2026
…c877bdeb

chore(skills): clean up PR NousResearch#862 + feat(docs): add search to Docusaurus
02356abc pushed a commit to 02356abc/hermes-agent that referenced this pull request May 14, 2026
…ource-provenance

Merging — clean fix for local skills mislabeling. Follow-up cleanup coming.
02356abc pushed a commit to 02356abc/hermes-agent that referenced this pull request May 14, 2026
…, DRY up tests

Follow-up to PR NousResearch#862 (local skills classification by arceus77-7):

- Remove unnecessary isinstance guard on _read_manifest() return value —
  it always returns Dict[str, str], so set() on it suffices.
- Extract repeated hub-dir monkeypatching into a shared pytest fixture (hub_env).
- Add three_source_env fixture for source-classification tests.
- Add _read_manifest monkeypatch to test_do_list_initializes_hub_dir
  (was fragile — relied on empty skills list masking the real manifest).
- Add test coverage for --source hub and --source builtin filters.
- Extract _capture() helper to reduce console/StringIO boilerplate.

5 tests, all green.
02356abc pushed a commit to 02356abc/hermes-agent that referenced this pull request May 14, 2026
…c877bdeb

chore(skills): clean up PR NousResearch#862 + feat(docs): add search to Docusaurus
olympus-terminal pushed a commit to olympus-terminal/hermes-agent that referenced this pull request May 16, 2026
…ource-provenance

Merging — clean fix for local skills mislabeling. Follow-up cleanup coming.
olympus-terminal pushed a commit to olympus-terminal/hermes-agent that referenced this pull request May 16, 2026
…, DRY up tests

Follow-up to PR NousResearch#862 (local skills classification by arceus77-7):

- Remove unnecessary isinstance guard on _read_manifest() return value —
  it always returns Dict[str, str], so set() on it suffices.
- Extract repeated hub-dir monkeypatching into a shared pytest fixture (hub_env).
- Add three_source_env fixture for source-classification tests.
- Add _read_manifest monkeypatch to test_do_list_initializes_hub_dir
  (was fragile — relied on empty skills list masking the real manifest).
- Add test coverage for --source hub and --source builtin filters.
- Extract _capture() helper to reduce console/StringIO boilerplate.

5 tests, all green.
olympus-terminal pushed a commit to olympus-terminal/hermes-agent that referenced this pull request May 16, 2026
…c877bdeb

chore(skills): clean up PR NousResearch#862 + feat(docs): add search to Docusaurus
Egavasyug pushed a commit to Egavasyug/hermes-agent that referenced this pull request Jun 10, 2026
…ource-provenance

Merging — clean fix for local skills mislabeling. Follow-up cleanup coming.
Egavasyug pushed a commit to Egavasyug/hermes-agent that referenced this pull request Jun 10, 2026
…, DRY up tests

Follow-up to PR NousResearch#862 (local skills classification by arceus77-7):

- Remove unnecessary isinstance guard on _read_manifest() return value —
  it always returns Dict[str, str], so set() on it suffices.
- Extract repeated hub-dir monkeypatching into a shared pytest fixture (hub_env).
- Add three_source_env fixture for source-classification tests.
- Add _read_manifest monkeypatch to test_do_list_initializes_hub_dir
  (was fragile — relied on empty skills list masking the real manifest).
- Add test coverage for --source hub and --source builtin filters.
- Extract _capture() helper to reduce console/StringIO boilerplate.

5 tests, all green.
Egavasyug pushed a commit to Egavasyug/hermes-agent that referenced this pull request Jun 10, 2026
…c877bdeb

chore(skills): clean up PR NousResearch#862 + feat(docs): add search to Docusaurus
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

skills list mislabels local skills as builtin

2 participants