Skip to content

Glossary — Ubiquitous Language

Core Terms

Term Code Name Definition Scope
Generator Generator Interface with the single method PopulateRepository(). Contract for all code-generation delegates. NOT a factory - it does not create descriptors, it consumes them. D
Project Descriptor ProjectDescriptor Validated, immutable description of a project to be generated. Carries all user-supplied and inferred parameters. The single input to the generator pipeline. NOT a config file - it is an in-memory value. D
Generation Request GenerationRequest The raw, unvalidated user intent expressed via CLI flags. Validated and assembled into a ProjectDescriptor. NOT the same as ProjectDescriptor - a request may be invalid; a descriptor is always valid. A
Presentation Model PresentationModel Flat, template-ready data structure derived from a ProjectDescriptor. Fed directly into Go's text/template engine. NOT a domain model - contains no business logic, only data shaped for rendering. D
Template (embedded file) A text file containing Go text/template directives, embedded in the generator binary. Instantiated by the template engine to produce a generated file. Always refers to a text/template file, not a concept. I
Template Engine engine (package) The engine package that combines a template with a PresentationModel to produce a generated file. Handles file I/O and error propagation. I
Target Repository TargetPath The absolute or relative path of the empty Git repository to be populated. All generated and copied files are written here. NOT the generator's own repository. D
Artifact Name ArtifactName Technical identifier of the build output - the name of the executable binary or library archive. Derived from the Git remote slug when not supplied explicitly. In C++ projects hyphens are replaced by underscores. D
Delegate (pattern) A Generator implementation that handles a specific sub-scope (language or project type) by being called from its parent generator. NOT a general design pattern here - always a node in the delegate chain. D
Version Marker (content convention) The string Generated by prjinit, version X.Y.Z embedded in every generated file. Italic in Markdown; a comment in source and config files. Distinguishes generated files from hand-authored ones. ALL
Guideline (file concept) A Markdown document encoding a quality or process standard (e.g. testing.md, security.md). Copied verbatim to every generated project's specs/guidelines/ folder. NOT generated from a template. ALL
Scaffolding (process) The act of populating an empty repository with standard structure, boilerplate, and guidelines. The result is a scaffolded project. Includes both file generation and static file copying. ALL
User Human beeing that is using an application ALL
Developer A specific type of User. Uses this generator to initialize Git repositories to start development ALL
AI Assistant Technology to support the human Developer in his goals ALL
Repository   Directory with subdirectory and files tracked by SCM Git. ALL
SCM Short for Source Code Management, versioning of development artifacts ALL

Value Objects

Value objects are applicable here: project_descriptor.go defines typed string aliases for each constrained input. Every alias is a value object — no identity, validated on construction.

Term Code Name Validation / Constraints
Project Name ProjectName Must not be blank (BR-001)
Project Short Description ProjectShortDescription Must not be blank (BR-002)
Target Path TargetPath Must not be blank (BR-003)
Artifact Name ArtifactName Must not be blank; derived from Git remote slug when absent (BR-009)
Go Module Path GoModulePath Must not be blank; derived from Git remote URL when absent (BR-010); Go only
C++ Namespace CPPNamespace Derived from ArtifactName; hyphens replaced by underscores (BR-013); C++ only

Enumerations

Enumerations are applicable here: Language, ProjectType, and CIType are all typed int constants defined in the internal package.

Enum Name Code Name Values Notes
Language Language LANGUAGE_CPP, LANGUAGE_GO, LANGUAGE_JAVA Validated at CLI boundary (BR-004)
Project Type ProjectType PROJECT_TYPE_EMBEDDED, PROJECT_TYPE_LIBRARY, PROJECT_TYPE_SERVICE, PROJECT_TYPE_TOOL Validated at CLI boundary (BR-005)
CI Type CIType CI_TYPE_GITHUB, CI_TYPE_GITLAB Inferred from Git remote when absent (BR-008)