Merge pull request #203 from sjhddh/fix/skill-description-empty-intro

fix: handle empty skill_intro in skill_description generation
This commit is contained in:
Yuhao
2026-04-17 23:31:46 +08:00
committed by GitHub
3 changed files with 15 additions and 2 deletions

View File

@@ -115,7 +115,12 @@ def extract_cli_metadata(harness_path: str) -> SkillMetadata:
# Build skill name and description
skill_name = f"cli-anything-{software_name}"
skill_description = f"Command-line interface for {_format_display_name(software_name)} - {skill_intro[:100]}..."
if skill_intro:
intro_snippet = skill_intro[:100]
suffix = "..." if len(skill_intro) > 100 else ""
skill_description = f"Command-line interface for {_format_display_name(software_name)} - {intro_snippet}{suffix}"
else:
skill_description = f"Command-line interface for {_format_display_name(software_name)}"
return SkillMetadata(
skill_name=skill_name,

View File

@@ -356,6 +356,9 @@ class TestEdgeCases:
assert metadata.skill_intro == "" # No README → empty intro
assert metadata.version == "1.0.0"
assert metadata.command_groups == []
# skill_description must not contain trailing " - ..." when intro is empty
assert " - " not in metadata.skill_description
assert not metadata.skill_description.endswith("...")
def test_harness_with_system_package(self, tmp_path):
"""README with apt install instructions should extract system_package."""

View File

@@ -237,7 +237,12 @@ def extract_cli_metadata(harness_path: str) -> SkillMetadata:
command_groups = extract_commands_from_cli(cli_file) if cli_file.exists() else []
examples = generate_examples(software_name, command_groups)
skill_name = f"cli-anything-{software_name}"
skill_description = f"Command-line interface for {_format_display_name(software_name)} - {skill_intro[:100]}..."
if skill_intro:
intro_snippet = skill_intro[:100]
suffix = "..." if len(skill_intro) > 100 else ""
skill_description = f"Command-line interface for {_format_display_name(software_name)} - {intro_snippet}{suffix}"
else:
skill_description = f"Command-line interface for {_format_display_name(software_name)}"
return SkillMetadata(
skill_name=skill_name,