Allow dotted skill titles (category.skill) in create_skill drafts

The model follows the repo's existing dotted naming (email.compose,
tracking.check) and proposed titles like tracking.status_lookup, which the
strict alnum-only check rejected. Accept dotted snake_case names.
This commit is contained in:
Denton Social
2026-09-23 23:45:52 -05:00
parent e68c56dca4
commit 789ed4ae25
2 changed files with 9 additions and 2 deletions
+2 -2
View File
@@ -430,8 +430,8 @@ def parse_skill_draft(raw: str) -> SkillDraft:
if not title or not description:
raise ValueError(f"skill draft missing title/description: {raw!r}")
name = re.sub(r"\s+", "_", title.lower())
if not name.replace("_", "").isalnum():
raise ValueError(f"skill title must be snake_case alnum: {title!r}")
if not re.fullmatch(r"[a-z0-9_]+(?:\.[a-z0-9_]+)*", name):
raise ValueError(f"skill title must be snake_case alnum (dots allowed): {title!r}")
return SkillDraft(name=name, description=description)
+7
View File
@@ -140,6 +140,13 @@ def test_parse_skill_draft_normalizes_title():
assert draft.name == "live_tracking"
def test_parse_skill_draft_allows_dotted_name():
draft = parse_skill_draft(
'{"title": "tracking.status_lookup", "description": "Look up a package status."}'
)
assert draft.name == "tracking.status_lookup"
def test_parse_skill_draft_missing_fields_raises():
with pytest.raises(ValueError):
parse_skill_draft('{"title": "only_title"}')