Skip to content

Uc001 Init Cpp Cli Tool Repo

# specs/features/UC001-init_cpp_cli_tool_repo.feature
#
# SINGLE SOURCE OF TRUTH for use case behaviour.
# This file is:
#   (1) referenced by specs/use_cases/UC001-init_cpp_cli_tool_repo.md  (documentation)
#   (2) executed by the acceptance test suite                           (living documentation)
#
# Rules:
#   - Scenario IDs (e.g. UC001-S01) must match the use case document.
#   - Step definitions live in: internal/acceptance/
#   - Keep scenarios focused: one behaviour per scenario.
#   - Use exact terms from specs/glossary.md.

Feature: Initialize a C++ CLI Tool Repository
    As a software engineer
    I want to initialize an empty Git repository with scaffolding files
    So that I can immediately start developing a CLI tool with C++.

    # ---------------------------------------------------------------------------
    # Happy path
    # ---------------------------------------------------------------------------

    Scenario: UC001-S01 Successful initialization of a C++ CLI tool repository (GitLab)
        Given current directory is an empty Git repository
        When  the user initializes this repository with the following settings:
            | Parameter           | Value            |
            | Project Name        | My C++ CLI Tool  |
            | Project Description | My C++ CLI Tool. |
            | Artifact Name       | cpp-cli-tool     |
            | Language            | cpp              |
            | Artifact Type       | tool             |
            | CI Type             | gitlab           |
        Then the repository contains exactly these essential files and directories:
            | .claude/settings.local.json                  |
            | avatar/avatar.afdesign                       |
            | specs/ADRs/ADR-000-template.md               |
            | specs/ADRs/ADR-001-structured_logging.md     |
            | specs/ADRs/ADR-002-hermetic-ci-build-images.md |
            | specs/ADRs/ADR-003-cpp-dual-platform-build.md |
            | specs/ADRs/README.md                         |
            | specs/api/consumed/README.md                 |
            | specs/api/provided/README.md                 |
            | specs/architecture/system_context.md         |
            | specs/domain_model/business_rules.md         |
            | specs/domain_model/domain_model.md           |
            | specs/features/UC001-sample_use_case.feature |
            | specs/glossary.md                            |
            | specs/index.md                               |
            | specs/guidelines/bash_coding.md              |
            | specs/guidelines/ci_cd.md                    |
            | specs/guidelines/cli_tool.md                 |
            | specs/guidelines/containerization.md         |
            | specs/guidelines/cpp_coding.md               |
            | specs/guidelines/user_experience.md          |
            | specs/guidelines/data_modeling.md            |
            | specs/guidelines/error_handling.md           |
            | specs/guidelines/general_coding.md           |
            | specs/guidelines/git.md                      |
            | specs/guidelines/library_design.md           |
            | specs/guidelines/oo_design_and_programming.md |
            | specs/guidelines/refactoring.md              |
            | specs/guidelines/security.md                 |
            | specs/guidelines/testing.md                  |
            | specs/guidelines/tool_chain.md               |
            | specs/use_cases/UC001-sample_use_case.md     |
            | scripts/arch_check.py                        |
            | src/CMakeLists.txt                           |
            | src/main.cpp                                 |
            | src/greeter.cpp                              |
            | src/greeter.hpp                              |
            | test/CMakeLists.txt                          |
            | test/greeter_test.cpp                        |
            | .clang-format                                |
            | .gitignore                                   |
            | .gitlab-ci.yml                               |
            | .prettierignore                              |
            | CHANGELOG.md                                 |
            | CLAUDE.md                                    |
            | cliff.toml                                   |
            | CMakeLists.txt                               |
            | conanfile.py                                 |
            | devbox.json                                  |
            | LICENSE                                      |
            | Makefile                                     |
            | mkdocs.yml                                   |
            | README.md                                    |