UAT: SkillConfigSchema name validation rejects uppercase letters, contradicting spec JSON Schema #4549

Open
opened 2026-04-08 14:23:55 +00:00 by HAL9000 · 0 comments
Owner

Bug Report

Feature Area: Skills — SkillConfigSchema name validation pattern

Expected Behavior (from spec)

The spec (Section "Skill Configuration Files → JSON Schema", line 32600) defines the skill name pattern as:

"pattern": "^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+$"

This pattern allows uppercase letters (A-Z) in both the namespace and name portions of a skill name.

Actual Behavior (from code)

In src/cleveragents/skills/schema.py, line 41:

NAMESPACED_NAME_RE = re.compile(r"^[a-z0-9][a-z0-9_-]*/[a-z0-9][a-z0-9_-]*$")

This pattern:

  1. Rejects uppercase letters — only allows [a-z0-9]
  2. Requires starting with alphanumeric — the spec allows starting with _ or -

This same restrictive pattern is used for:

  • Skill name validation (SkillConfigSchema.validate_namespaced_name)
  • Tool reference name validation (SkillToolRefSchema.validate_namespaced_name)
  • Include name validation (SkillIncludeSchema.validate_namespaced_name)

Impact

A skill YAML with a name like MyOrg/DevOps-Toolkit would be rejected by the implementation even though it matches the spec's JSON Schema pattern. Users following the spec documentation would encounter unexpected validation errors.

Steps to Reproduce

from cleveragents.skills.schema import SkillConfigSchema

# This should work per spec but fails in implementation
yaml_content = """
name: MyOrg/DevOps-Toolkit
description: "DevOps tools"
"""
schema = SkillConfigSchema.from_yaml(yaml_content)  # Raises ValidationError

Code Location

  • src/cleveragents/skills/schema.py, line 41 (NAMESPACED_NAME_RE)

Note on Spec Consistency

The spec's JSON Schema (line 32600) uses ^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+$ which allows uppercase. However, the spec's narrative text (line 177) says skills use namespace/name format. The implementation's lowercase-only restriction may be intentional for consistency, but it contradicts the formal JSON Schema. This should be clarified and the implementation should match whichever is the authoritative definition.


Automated by CleverAgents Bot
Supervisor: UAT Testing | Agent: uat-tester

## Bug Report **Feature Area:** Skills — `SkillConfigSchema` name validation pattern ### Expected Behavior (from spec) The spec (Section "Skill Configuration Files → JSON Schema", line 32600) defines the skill name pattern as: ```json "pattern": "^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+$" ``` This pattern **allows uppercase letters** (A-Z) in both the namespace and name portions of a skill name. ### Actual Behavior (from code) In `src/cleveragents/skills/schema.py`, line 41: ```python NAMESPACED_NAME_RE = re.compile(r"^[a-z0-9][a-z0-9_-]*/[a-z0-9][a-z0-9_-]*$") ``` This pattern: 1. **Rejects uppercase letters** — only allows `[a-z0-9]` 2. **Requires starting with alphanumeric** — the spec allows starting with `_` or `-` This same restrictive pattern is used for: - Skill name validation (`SkillConfigSchema.validate_namespaced_name`) - Tool reference name validation (`SkillToolRefSchema.validate_namespaced_name`) - Include name validation (`SkillIncludeSchema.validate_namespaced_name`) ### Impact A skill YAML with a name like `MyOrg/DevOps-Toolkit` would be rejected by the implementation even though it matches the spec's JSON Schema pattern. Users following the spec documentation would encounter unexpected validation errors. ### Steps to Reproduce ```python from cleveragents.skills.schema import SkillConfigSchema # This should work per spec but fails in implementation yaml_content = """ name: MyOrg/DevOps-Toolkit description: "DevOps tools" """ schema = SkillConfigSchema.from_yaml(yaml_content) # Raises ValidationError ``` ### Code Location - `src/cleveragents/skills/schema.py`, line 41 (`NAMESPACED_NAME_RE`) ### Note on Spec Consistency The spec's JSON Schema (line 32600) uses `^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+$` which allows uppercase. However, the spec's narrative text (line 177) says skills use `namespace/name` format. The implementation's lowercase-only restriction may be intentional for consistency, but it contradicts the formal JSON Schema. This should be clarified and the implementation should match whichever is the authoritative definition. --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.5.0 milestone 2026-04-08 17:41:43 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
cleveragents/cleveragents-core#4549
No description provided.