# NousResearch/hermes-agent · Skill name mismatch between frontmatter and directory name

## Open now

- 1 issue, 1 PR open on GitHub.
- #21782: \[Bug\]: \`_create_skill\` / \`_edit_skill\` allow frontmatter \`name\` to diverge from directory name
- PR #18337: fix: resolve 7 identified issues \[automated\]

Most members concern skills being listed or indexed by one name (frontmatter) but looked up or created by another (directory name), affecting skill_view, skills_list, and the system prompt index. One member, an automated '7 identified issues' fix, is not clearly tied to this theme.

## TL;DR

- 10 member(s): 1 open issue(s), 3 closed issue(s), 1 open PR(s), 1 merged PR(s), 4 PR(s) closed without merging.
- A fix was merged to main in PR #11853. Verify it addresses your case.
- **Recommended:** read PR #11853 (and any competing PRs below) before filing. Confirm the merged change covers your symptom.

## Maintainer resolution verdict

- Internal-tracker verdict over this cluster's issue members: `partially_resolved` · deciding PR(s): `pr-11853`. This is distinct from the fix status above. Weigh it yourself.

## How this cluster was grouped

- Link evidence (`STRUCTURAL_PARTIAL`): some members are connected by structural evidence (shared changed files, or a closing/superseded reference); the rest are joined by an automated relevance judgement over their text.
- Members outside that structural core may belong to a different underlying problem.
- Pairwise link density `0.18`: the share of member 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.

## Open related issues

- #21782: \[Bug\]: \`_create_skill\` / \`_edit_skill\` allow frontmatter \`name\` to diverge from directory name

## Closed / duplicate issues

- #11777: \[Bug\]: System prompt skills index uses directory names instead of frontmatter names, breaking skill routing
- #17914: skill_view resolves by directory name but skills_list displays frontmatter name — mismatch causes 'not found'
- #18872: \[Bug\]: skill_view/skills_list name mismatch breaks agent tool-calling loop — model can't load skills it discovers

## Prior & competing PRs

- **#11853: fix(skills): use frontmatter name in skills index instead of directory name**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`
  - files: `agent/prompt_builder.py`
  - fix hunks:
  - `agent/prompt_builder.py`

    ```diff
    @@ -654,7 +654,7 @@ def build_skills_system_prompt(
                 ):
                     continue
                 skills_by_category.setdefault(category, []).append(
    -                (skill_name, entry.get("description", ""))
    +                (frontmatter_name, entry.get("description", ""))
                 )
             category_descriptions = {
                 str(k): str(v)
    ```

    ```diff
    @@ -679,7 +679,7 @@ def build_skills_system_prompt(
                 ):
                     continue
                 skills_by_category.setdefault(entry["category"], []).append(
    -                (skill_name, entry["description"])
    +                (entry["frontmatter_name"], entry["description"])
                 )
     
             # Read category-level DESCRIPTION.md files
    ```

    ```diff
    @@ -722,9 +722,10 @@ def build_skills_system_prompt(
                         continue
                     entry = _build_snapshot_entry(skill_file, ext_dir, frontmatter, desc)
                     skill_name = entry["skill_name"]
    -                if skill_name in seen_skill_names:
    +                frontmatter_name = entry["frontmatter_name"]
    +                if frontmatter_name in seen_skill_names:
                         continue
    -                if entry["frontmatter_name"] in disabled or skill_name in disabled:
    +                if frontmatter_name in disabled or skill_name in disabled:
                         continue
                     if not _skill_should_show(
                         extract_skill_conditions(frontmatter),
    ```

    ```diff
    @@ -732,9 +733,9 @@ def build_skills_system_prompt(
                         available_toolsets,
                     ):
                         continue
    -                seen_skill_names.add(skill_name)
    +                seen_skill_names.add(frontmatter_name)
                     skills_by_category.setdefault(entry["category"], []).append(
    -                    (skill_name, entry["description"])
    +                    (frontmatter_name, entry["description"])
                     )
                 except Exception as e:
                     logger.debug("Error reading external skill %s: %s", skill_file, e)
    ```
- **#17918: fix(skills): resolve skill_view by frontmatter name**. closed without merge · fix tier `suggested`
  - maintainer direction: category `uncategorized`; implication `needs_llm`; refs `#18337`, `#17914`
- **#18879: fix(skills): skill_view fallback to frontmatter name lookup (fixes #18872)**. closed without merge · fix tier `suggested`
  - maintainer direction: category `superseded_by_pr`; implication `superseded`; refs `#18901`
  - _suggested-tier fix detail withheld; re-request with `?tier=all` to include it._
- **#18901: fix(skills): add frontmatter-name fallback in skill_view to resolve name mismatch**. closed without merge · fix tier `suggested`
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `9caa12f4ecd29d4376914c059306cecd405b548a`
  - _suggested-tier fix detail withheld; re-request with `?tier=all` to include it._
- **#18337: fix: resolve 7 identified issues \[automated\]**. open
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `88bd1c01e`, `9caa12f4e`
  - files: `agent/auxiliary_client.py`, `gateway/platforms/email.py`, `gateway/run.py`, `hermes_cli/profiles.py`, `optional-skills/migration/openclaw-migration/scripts/openclaw_to_hermes.py`, `tools/approval.py`, `tools/skills_tool.py`
- **#21815: fix(skills): prevent frontmatter name from diverging from directory name**. closed without merge
  - maintainer direction: category `duplicate_of`; implication `duplicate`; refs `#21806`, `#21782`

## Fix status

- Merged to main in PR #11853 (cited above). No release data is tracked. Verify downstream.
- Fix last verified (merged) `2026-04-18`. This confirmation is old and may be out of date (a revert/reopen would not have invalidated it here); re-verify.
- Subsystem: `gateway`
