{"repo":"NousResearch/hermes-agent","public_id":"11777","display_label":"Skill name mismatch between frontmatter and directory name","summary":"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.","subsystem":"gateway","counts":{"members":10,"open_issues":1,"open_issues_distinct":1,"open_prs":1,"closed_issues":3,"merged_prs":1,"attempt_prs":5},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":11853,"merged_at":"2026-04-18T01:56:37+00:00"},"resolution":{"state":"partially_resolved","by":"pr-11853"},"freshness":{"state":"stale","last_verified_at":"2026-04-18T01:56:37+00:00","is_stale":true},"grouping":{"backbone":"STRUCTURAL_PARTIAL","link_density":0.17955555555555555},"fix_edges":[{"issue_number":11777,"pr_number":11853,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-04-18T01:56:37+00:00"}],"members":[{"kind":"issue","number":11777,"title":"[Bug]: System prompt skills index uses directory names instead of frontmatter names, breaking skill routing","url":null,"state":"closed"},{"kind":"issue","number":17914,"title":"skill_view resolves by directory name but skills_list displays frontmatter name — mismatch causes 'not found'","url":null,"state":"closed"},{"kind":"issue","number":18872,"title":"[Bug]: skill_view/skills_list name mismatch breaks agent tool-calling loop — model can't load skills it discovers","url":null,"state":"closed"},{"kind":"issue","number":21782,"title":"[Bug]: `_create_skill` / `_edit_skill` allow frontmatter `name` to diverge from directory name","url":null,"state":"open"},{"kind":"pr","number":11853,"title":"fix(skills): use frontmatter name in skills index instead of directory name","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/prompt_builder.py"],"fix_hunks":[{"file":"agent/prompt_builder.py","hunks":["@@ -654,7 +654,7 @@ def build_skills_system_prompt(\n             ):\n                 continue\n             skills_by_category.setdefault(category, []).append(\n-                (skill_name, entry.get(\"description\", \"\"))\n+                (frontmatter_name, entry.get(\"description\", \"\"))\n             )\n         category_descriptions = {\n             str(k): str(v)","@@ -679,7 +679,7 @@ def build_skills_system_prompt(\n             ):\n                 continue\n             skills_by_category.setdefault(entry[\"category\"], []).append(\n-                (skill_name, entry[\"description\"])\n+                (entry[\"frontmatter_name\"], entry[\"description\"])\n             )\n \n         # Read category-level DESCRIPTION.md files","@@ -722,9 +722,10 @@ def build_skills_system_prompt(\n                     continue\n                 entry = _build_snapshot_entry(skill_file, ext_dir, frontmatter, desc)\n                 skill_name = entry[\"skill_name\"]\n-                if skill_name in seen_skill_names:\n+                frontmatter_name = entry[\"frontmatter_name\"]\n+                if frontmatter_name in seen_skill_names:\n                     continue\n-                if entry[\"frontmatter_name\"] in disabled or skill_name in disabled:\n+                if frontmatter_name in disabled or skill_name in disabled:\n                     continue\n                 if not _skill_should_show(\n                     extract_skill_conditions(frontmatter),","@@ -732,9 +733,9 @@ def build_skills_system_prompt(\n                     available_toolsets,\n                 ):\n                     continue\n-                seen_skill_names.add(skill_name)\n+                seen_skill_names.add(frontmatter_name)\n                 skills_by_category.setdefault(entry[\"category\"], []).append(\n-                    (skill_name, entry[\"description\"])\n+                    (frontmatter_name, entry[\"description\"])\n                 )\n             except Exception as e:\n                 logger.debug(\"Error reading external skill %s: %s\", skill_file, e)\n"]}]},{"kind":"pr","number":17918,"title":"fix(skills): resolve skill_view by frontmatter name","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#18337","number":18337},{"kind":"pr","value":"#17914","number":17914}],"category":"uncategorized","implication":"needs_llm"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":18337,"title":"fix: resolve 7 identified issues [automated]","url":null,"state":"open","close_reason":{"refs":[{"kind":"commit","value":"88bd1c01e","number":0},{"kind":"commit","value":"9caa12f4e","number":0}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":18879,"title":"fix(skills): skill_view fallback to frontmatter name lookup (fixes #18872)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#18901","number":18901}],"category":"superseded_by_pr","implication":"superseded"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":18901,"title":"fix(skills): add frontmatter-name fallback in skill_view to resolve name mismatch","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"9caa12f4ecd29d4376914c059306cecd405b548a","number":0}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":21815,"title":"fix(skills): prevent frontmatter name from diverging from directory name","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#21806","number":21806},{"kind":"pr","value":"#21782","number":21782}],"category":"duplicate_of","implication":"duplicate"},"merged":false}],"trust":{"default_tier":"verified","includes_suggested":false}}