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 "<invalid_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 "<invalid_ref>"
    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 "<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 "<invalid_include>"
    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 "<valid_name>"
    When I validate the skill schema
    Then the skill schema validation should succeed
    And the skill config name should be "<valid_name>"

    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"
