# 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 |