Skip to content

Skills

# specs/features/skills.feature
#
# SINGLE SOURCE OF TRUTH for Claude Code skill generation behaviour.
# This file is:
#   (1) the specification of which Claude Code skills are generated per project type
#   (2) executed by the acceptance test suite (living documentation)
#
# Rules:
#   - Step definitions live in: internal/acceptance/
#   - Keep scenarios focused: one behaviour per scenario.
#   - Use exact terms from specs/glossary.md.
#
# Skill Matrix:
#   Skill (.claude/skills/)  | CLI Tool | Library | Service
#   -------------------------|----------|---------|--------
#   adr                      |    *     |    *    |    *
#   arch-check               |    *     |    *    |    *
#   review                   |    *     |    *    |    *
#   security-review          |    *     |    *    |    *
#   test-coverage            |    *     |    *    |    *
#
#   Command (.claude/commands/) | CLI Tool | Library | Service
#   ----------------------------|----------|---------|--------
#   new-domain-object           |    *     |    *    |    *
#   new-endpoint                |    -     |    -    |    *
#   openapi                     |    -     |    -    |    *
#   bdd-scenarios               |    -     |    -    |    *
#   observability               |    -     |    -    |    *
#   new-command                 |    *     |    -    |    -
#
# Note: Java has no CLI Tool project type.

Feature: Claude Code Skills
    As a software engineer
    I want every generated project to include pre-defined Claude Code skills
    So that I can immediately use AI-assisted workflows aligned with the project guidelines.

    # ---------------------------------------------------------------------------
    # Universal skills — present in every project type and language
    # ---------------------------------------------------------------------------

    Scenario: Universal skills are present in all project types
        Given a generated project for:
            | Language | Artifact Type |
            | cpp      | tool          |
            | cpp      | library       |
            | cpp      | service       |
            | go       | tool          |
            | go       | library       |
            | go       | service       |
            | java     | library       |
            | java     | service       |
        Then .claude/skills/ contains at least these skills:
            | Skill           |
            | adr             |
            | arch-check      |
            | review          |
            | security-review |
            | test-coverage   |
        And .claude/commands/ contains at least these skills:
            | Skill             |
            | new-domain-object |

    # ---------------------------------------------------------------------------
    # Service skills — present only in service projects
    # ---------------------------------------------------------------------------

    Scenario: Service skills are present in service projects
        Given a generated project for:
            | Language | Artifact Type |
            | cpp      | service       |
            | go       | service       |
            | java     | service       |
        Then .claude/commands/ contains at least these skills:
            | Skill         |
            | new-endpoint  |
            | openapi       |
            | bdd-scenarios |
            | observability |

    # ---------------------------------------------------------------------------
    # CLI Tool skills — present only in CLI tool projects
    # ---------------------------------------------------------------------------

    Scenario: new-command skill is present in CLI tool projects
        Given a generated project for:
            | Language | Artifact Type |
            | cpp      | tool          |
            | go       | tool          |
        Then .claude/commands/ contains at least these skills:
            | Skill       |
            | new-command |

    Scenario: new-command skill is absent in non-CLI-tool projects
        Given a generated project for:
            | Language | Artifact Type |
            | cpp      | library       |
            | cpp      | service       |
            | go       | library       |
            | go       | service       |
            | java     | library       |
            | java     | service       |
        Then .claude/commands/ does not contain these skills:
            | Skill       |
            | new-command |