@@ -600,6 +600,14 @@ def _skill_names_for_command(cmd_name: str) -> tuple[str, str]:
600600 legacy_skill_name = f"speckit.{ raw_short_name } "
601601 return modern_skill_name , legacy_skill_name
602602
603+ @staticmethod
604+ def _skill_title_from_command (cmd_name : str ) -> str :
605+ """Return a human-friendly title for a skill command name."""
606+ title_name = cmd_name
607+ if title_name .startswith ("speckit." ):
608+ title_name = title_name [len ("speckit." ):]
609+ return title_name .replace ("." , " " ).replace ("-" , " " ).title ()
610+
603611 def _build_extension_skill_restore_index (self ) -> Dict [str , Dict [str , Any ]]:
604612 """Index extension-backed skill restore data by skill directory name."""
605613 from .extensions import ExtensionManifest , ValidationError
@@ -723,6 +731,7 @@ def _register_skills(
723731 raw_short_name = raw_short_name [len ("speckit." ):]
724732 short_name = raw_short_name .replace ("." , "-" )
725733 skill_name , legacy_skill_name = self ._skill_names_for_command (cmd_name )
734+ skill_title = self ._skill_title_from_command (cmd_name )
726735
727736 # Only overwrite skills that already exist under skills_dir,
728737 # including Kimi native skills when ai_skills is false.
@@ -765,7 +774,7 @@ def _register_skills(
765774 f"---\n "
766775 f"{ frontmatter_text } \n "
767776 f"---\n \n "
768- f"# Speckit { short_name . title () } Skill\n \n "
777+ f"# Speckit { skill_title } Skill\n \n "
769778 f"{ body } \n "
770779 )
771780
@@ -851,11 +860,12 @@ def _unregister_skills(self, skill_names: List[str], preset_dir: Path) -> None:
851860 },
852861 }
853862 frontmatter_text = yaml .safe_dump (frontmatter_data , sort_keys = False ).strip ()
863+ skill_title = self ._skill_title_from_command (short_name )
854864 skill_content = (
855865 f"---\n "
856866 f"{ frontmatter_text } \n "
857867 f"---\n \n "
858- f"# Speckit { short_name . title () } Skill\n \n "
868+ f"# Speckit { skill_title } Skill\n \n "
859869 f"{ body } \n "
860870 )
861871 skill_file .write_text (skill_content , encoding = "utf-8" )
@@ -871,10 +881,7 @@ def _unregister_skills(self, skill_names: List[str], preset_dir: Path) -> None:
871881 )
872882
873883 command_name = extension_restore ["command_name" ]
874- title_name = command_name
875- if title_name .startswith ("speckit." ):
876- title_name = title_name [len ("speckit." ):]
877- title_name = title_name .replace ("." , " " ).replace ("-" , " " ).title ()
884+ title_name = self ._skill_title_from_command (command_name )
878885
879886 frontmatter_data = {
880887 "name" : skill_name ,
0 commit comments