# specs/domain/features/UC001-cpp.feature # # SINGLE SOURCE OF TRUTH for C++ repository initialization behaviour. # This file is: # (1) referenced by specs/domain/use_cases/UC001-init_repo.md (documentation) # (2) executed by the acceptance test suite (living documentation) # # Rules: # - Scenario IDs (e.g. UC001-CPP-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/domain/glossary.md. Feature: Initialize a C++ Repository As a software engineer I want to initialize an empty Git repository with scaffolding files So that I can immediately start developing a C++ project. # --------------------------------------------------------------------------- # C++ CLI Tool # --------------------------------------------------------------------------- Scenario: UC001-CPP-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.json | | .claude/skills/adr/SKILL.md | | .claude/skills/adr/adr-template.md | | .claude/skills/arch-check/SKILL.md | | .claude/skills/review/SKILL.md | | .claude/skills/security-review/SKILL.md | | .claude/skills/test-coverage/SKILL.md | | .claude/skills/commit/SKILL.md | | .claude/skills/update-versions/SKILL.md | | .claude/commands/new-domain-object.md | | .claude/commands/new-command.md | | .claude/rules/bash_coding.md | | .claude/rules/ci_cd.md | | .claude/rules/cli_tool.md | | .claude/rules/containerization.md | | .claude/rules/cpp_coding.md | | .claude/rules/data_modeling.md | | .claude/rules/error_handling.md | | .claude/rules/general_coding.md | | .claude/rules/git.md | | .claude/rules/library_design.md | | .claude/rules/oo_design_and_programming.md | | .claude/rules/performance.md | | .claude/rules/refactoring.md | | .claude/rules/security.md | | .claude/rules/spec_consistency.md | | .claude/rules/testing.md | | .claude/rules/tool_chain.md | | .claude/rules/user_experience.md | | avatar/avatar.afdesign | | specs/architecture/ADRs/ADR-000-template.md | | specs/architecture/ADRs/ADR-001-structured_logging.md | | specs/architecture/ADRs/ADR-002-hermetic-ci-build-images.md | | specs/architecture/ADRs/ADR-003-cpp-dual-platform-build.md | | specs/architecture/ADRs/README.md | | specs/architecture/APIs/consumed/README.md | | specs/architecture/APIs/provided/README.md | | specs/architecture/system_context.md | | specs/domain/business_rules.md | | specs/domain/domain_model.md | | specs/domain/features/UC001-sample_use_case.feature | | specs/domain/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/performance.md | | specs/guidelines/refactoring.md | | specs/guidelines/security.md | | specs/guidelines/testing.md | | specs/guidelines/tool_chain.md | | specs/domain/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 | | Makefile.local | | mkdocs.yml | | README.md | | .repo.yaml | # --------------------------------------------------------------------------- # C++ Library # --------------------------------------------------------------------------- Scenario: UC001-CPP-S02 Successful initialization of a C++ library 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++ Library | | Project Description | My C++ Library. | | Artifact Name | cpp-library | | Language | cpp | | Artifact Type | library | | CI Type | gitlab | Then the repository contains exactly these essential files and directories: | .claude/settings.json | | .claude/skills/adr/SKILL.md | | .claude/skills/adr/adr-template.md | | .claude/skills/arch-check/SKILL.md | | .claude/skills/review/SKILL.md | | .claude/skills/security-review/SKILL.md | | .claude/skills/test-coverage/SKILL.md | | .claude/skills/commit/SKILL.md | | .claude/skills/update-versions/SKILL.md | | .claude/commands/new-domain-object.md | | .claude/rules/bash_coding.md | | .claude/rules/ci_cd.md | | .claude/rules/cpp_coding.md | | .claude/rules/cpp_library_coding.md | | .claude/rules/data_modeling.md | | .claude/rules/error_handling.md | | .claude/rules/general_coding.md | | .claude/rules/git.md | | .claude/rules/library_design.md | | .claude/rules/oo_design_and_programming.md | | .claude/rules/performance.md | | .claude/rules/refactoring.md | | .claude/rules/security.md | | .claude/rules/spec_consistency.md | | .claude/rules/testing.md | | .claude/rules/tool_chain.md | | avatar/avatar.afdesign | | specs/architecture/ADRs/ADR-000-template.md | | specs/architecture/ADRs/ADR-001-structured_logging.md | | specs/architecture/ADRs/ADR-002-hermetic-ci-build-images.md | | specs/architecture/ADRs/ADR-003-cpp-dual-platform-build.md | | specs/architecture/ADRs/README.md | | specs/architecture/APIs/consumed/README.md | | specs/architecture/APIs/provided/README.md | | specs/architecture/system_context.md | | specs/domain/business_rules.md | | specs/domain/domain_model.md | | specs/domain/features/UC001-sample_use_case.feature | | specs/domain/glossary.md | | specs/index.md | | specs/guidelines/bash_coding.md | | specs/guidelines/ci_cd.md | | specs/guidelines/cpp_coding.md | | specs/guidelines/cpp_library_coding.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/performance.md | | specs/guidelines/refactoring.md | | specs/guidelines/security.md | | specs/guidelines/testing.md | | specs/guidelines/tool_chain.md | | specs/domain/use_cases/UC001-sample_use_case.md | | scripts/arch_check.py | | include/cpp_library/greeter.hpp | | src/CMakeLists.txt | | src/greeter.cpp | | test/CMakeLists.txt | | test/greeter_test.cpp | | packaging/test_package/conanfile.py | | packaging/test_package/CMakeLists.txt | | packaging/test_package/src/main.cpp | | .clang-format | | .gitignore | | .gitlab-ci.yml | | .prettierignore | | CHANGELOG.md | | CLAUDE.md | | cliff.toml | | CMakeLists.txt | | conanfile.py | | devbox.json | | LICENSE | | Makefile | | Makefile.local | | mkdocs.yml | | README.md | | .repo.yaml | # --------------------------------------------------------------------------- # C++ Service # --------------------------------------------------------------------------- Scenario: UC001-CPP-S03 Successful initialization of a C++ service 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++ Service | | Project Description | My C++ Service. | | Artifact Name | cpp-service | | Language | cpp | | Artifact Type | service | | CI Type | gitlab | Then the repository contains exactly these essential files and directories: | .claude/settings.json | | .claude/skills/adr/SKILL.md | | .claude/skills/adr/adr-template.md | | .claude/skills/arch-check/SKILL.md | | .claude/skills/review/SKILL.md | | .claude/skills/security-review/SKILL.md | | .claude/skills/test-coverage/SKILL.md | | .claude/skills/commit/SKILL.md | | .claude/skills/update-versions/SKILL.md | | .claude/commands/new-domain-object.md | | .claude/commands/new-endpoint.md | | .claude/commands/openapi.md | | .claude/commands/bdd-scenarios.md | | .claude/commands/observability.md | | .claude/rules/api_design.md | | .claude/rules/bash_coding.md | | .claude/rules/business_process_design.md | | .claude/rules/ci_cd.md | | .claude/rules/containerization.md | | .claude/rules/cpp_coding.md | | .claude/rules/data_modeling.md | | .claude/rules/error_handling.md | | .claude/rules/general_coding.md | | .claude/rules/git.md | | .claude/rules/js_coding.md | | .claude/rules/library_design.md | | .claude/rules/logging.md | | .claude/rules/monitoring.md | | .claude/rules/oo_design_and_programming.md | | .claude/rules/performance.md | | .claude/rules/refactoring.md | | .claude/rules/security.md | | .claude/rules/spec_consistency.md | | .claude/rules/service_design.md | | .claude/rules/testing.md | | .claude/rules/tool_chain.md | | .claude/rules/ui_architecture.md | | .claude/rules/user_experience.md | | avatar/avatar.afdesign | | specs/architecture/ADRs/ADR-000-template.md | | specs/architecture/ADRs/ADR-001-structured_logging.md | | specs/architecture/ADRs/ADR-002-hermetic-ci-build-images.md | | specs/architecture/ADRs/ADR-003-cpp-dual-platform-build.md | | specs/architecture/ADRs/ADR-003-distroless-service-runtime-images.md | | specs/architecture/ADRs/README.md | | specs/architecture/APIs/consumed/README.md | | specs/architecture/APIs/provided/README.md | | specs/architecture/system_context.md | | specs/domain/business_rules.md | | specs/domain/domain_model.md | | specs/domain/features/UC001-sample_use_case.feature | | specs/domain/glossary.md | | specs/index.md | | specs/guidelines/api_design.md | | specs/guidelines/bash_coding.md | | specs/guidelines/business_process_design.md | | specs/guidelines/ci_cd.md | | specs/guidelines/containerization.md | | specs/guidelines/cpp_coding.md | | specs/guidelines/data_modeling.md | | specs/guidelines/error_handling.md | | specs/guidelines/general_coding.md | | specs/guidelines/git.md | | specs/guidelines/js_coding.md | | specs/guidelines/library_design.md | | specs/guidelines/logging.md | | specs/guidelines/monitoring.md | | specs/guidelines/oo_design_and_programming.md | | specs/guidelines/performance.md | | specs/guidelines/refactoring.md | | specs/guidelines/security.md | | specs/guidelines/service_design.md | | specs/guidelines/testing.md | | specs/guidelines/tool_chain.md | | specs/guidelines/ui_architecture.md | | specs/guidelines/user_experience.md | | specs/domain/use_cases/UC001-sample_use_case.md | | scripts/arch_check.py | | image/Dockerfile | | image/entrypoint.sh | | src/CMakeLists.txt | | src/greeter.hpp | | src/greeter.cpp | | src/main.cpp | | 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 | | Makefile.local | | mkdocs.yml | | README.md | | .repo.yaml |