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                   |    *     |    *    |    *
#   commit                          |    *     |    *    |    *
#   update-versions                 |    *     |    *    |    *
#   tdd                             |    *     |    *    |    *
#   systematic-debugging            |    *     |    *    |    *
#   verification-before-completion  |    *     |    *    |    *
#
#   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                  |
            | commit                         |
            | update-versions                |
            | tdd                            |
            | systematic-debugging           |
            | verification-before-completion |
        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 |