Feature: Skill schema name validation data variation — Scenario Outline refactoring As a CleverAgents developer I want skill schema name validation tests to cover a wide range of inputs So that edge cases and boundary conditions are systematically exercised # ───────────────────────────────────────────────────────────────────────── # Refactored from skill_schema.feature using Scenario Outline. # Each Examples table row exercises a distinct validation path. # ───────────────────────────────────────────────────────────────────────── # ───────────────────────────────────────────────────────────────────────── # Invalid skill names — missing or malformed namespace/name format # ───────────────────────────────────────────────────────────────────────── Scenario Outline: Skill schema rejects invalid namespaced names Given a skill YAML string with name "" When I validate the skill schema expecting failure Then the skill schema validation should fail And the skill schema error should mention "namespace/name" Examples: Names without slash separator | invalid_name | description | | invalid-name-no-slash | plain name without namespace | | noslash | single word without slash | | justname | another plain word | | toolname | tool name without namespace | | a | single character without namespace | Examples: Names with special characters | invalid_name | description | | local/bad name!! | spaces and exclamation marks | | local/bad@name | at-sign in name | | local/bad#name | hash in name | | local/bad name | space in name component | | local/bad/extra | extra slash (three components) | | bad ns/name | space in namespace | | bad@ns/name | at-sign in namespace | # ───────────────────────────────────────────────────────────────────────── # Invalid tool reference names # ───────────────────────────────────────────────────────────────────────── Scenario Outline: Skill schema rejects invalid tool reference names Given a skill YAML string with an invalid tool ref name "" When I validate the skill schema expecting failure Then the skill schema validation should fail And the skill schema error should mention "namespace/name" Examples: Invalid tool reference formats | invalid_ref | description | | no-slash-tool | tool ref without namespace | | toolname | plain tool name | | bad name | tool ref with space | | bad@tool | tool ref with special character | | a | single character tool ref | # ───────────────────────────────────────────────────────────────────────── # Invalid MCP transport values # ───────────────────────────────────────────────────────────────────────── Scenario Outline: Skill schema rejects invalid MCP transport values Given a skill YAML string with MCP transport "" When I validate the skill schema expecting failure Then the skill schema validation should fail And the skill schema error should mention "transport" Examples: Invalid transport values | transport | description | | grpc | gRPC transport (not supported) | | websocket | WebSocket transport (not supported) | | http | plain HTTP transport (not supported) | | tcp | TCP transport (not supported) | | udp | UDP transport (not supported) | | invalid | completely invalid transport name | | ftp | FTP transport (not supported) | | amqp | AMQP transport (not supported) | # ───────────────────────────────────────────────────────────────────────── # Invalid include names # ───────────────────────────────────────────────────────────────────────── Scenario Outline: Skill schema rejects invalid include names Given a skill YAML string with an invalid include name "" When I validate the skill schema expecting failure Then the skill schema validation should fail And the skill schema error should mention "namespace/name" Examples: Invalid include name formats | invalid_include | description | | bad-include | include without namespace | | justname | plain name without slash | | bad include | include with space | | bad@include | include with special character | # ───────────────────────────────────────────────────────────────────────── # Valid skill names — accepted formats # ───────────────────────────────────────────────────────────────────────── Scenario Outline: Skill schema accepts valid namespaced names Given a skill YAML string with name "" When I validate the skill schema Then the skill schema validation should succeed And the skill config name should be "" Examples: Valid namespaced name formats | valid_name | description | | local/empty-skill | standard local namespace | | builtin/read-file | builtin namespace | | org/my-skill | organization namespace | | a/b | minimal single-char namespace and name | | my-org/my-skill-v2 | hyphenated namespace and versioned name | | ns123/skill456 | namespace and name with numbers | # ───────────────────────────────────────────────────────────────────────── # Edge cases — empty and null inputs # ───────────────────────────────────────────────────────────────────────── Scenario: Skill schema rejects None YAML string Given a None skill YAML string When I validate the skill schema expecting failure Then the skill schema validation should fail And the skill schema error should mention "None" Scenario: Skill schema rejects empty YAML string Given an empty skill YAML string When I validate the skill schema expecting failure Then the skill schema validation should fail And the skill schema error should mention "empty" Scenario: Skill schema rejects YAML that is a list instead of a mapping Given a skill YAML string that is a list When I validate the skill schema expecting failure Then the skill schema validation should fail And the skill schema error should mention "mapping" Scenario: Skill schema rejects missing name field Given a skill YAML string missing the name field When I validate the skill schema expecting failure Then the skill schema validation should fail And the skill schema error should mention "name"