> For the complete documentation index, see [llms.txt](https://developer.harness.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.harness.io/harness-solutions-factory/troubleshooting-and-resources/best-practices/naming-convention-standards.md).

# Naming Convention Standards

As new resources are created by various members of the team and sources, it is important to stick to a standard process to create and manage the resources.

### Solutions Factory <a href="#solutions-factory" id="solutions-factory"></a>

#### Factory templates <a href="#factory-templates" id="factory-templates"></a>

New factory templates (also referred to as stack templates or stacks) are designed to act as standalone solutions to be delivered to a customer.

When adding new stacks to the Solutions Factory, consider the following:

* Choose a clear, concise name for the stack, e.g., `harness-projects`, `maven-cicd-k8s`, `delegate-fleet-management`, etc.
* Use lowercase characters and hyphens to separate words
* Use only common and well-known abbreviations
* Document full stack names in the stack README file

#### Factory modules <a href="#factory-modules" id="factory-modules"></a>

When a factory template (aka stack) requires a Terraform Module to be included, the expectation is that the module should be included within the stack directory.

When new inline Terraform Modules are included in a stack template, consider the following:

* Modules should live as children of the directory `modules` located in the root of the stack template directory
* Choose a clear, concise name for the module denoting its purpose, e.g., `code_repository`, `sto_scanner`, `container_registry`, etc.
* Use lowercase characters and underscores to separate words
* Use only common and well-known abbreviations
* Include a full README for each module created
* Create a link in the stack README file to the module README file

#### Harness templates <a href="#harness-templates" id="harness-templates"></a>

New Harness Templates should adhere to the following conventions:

* Prefix all Harness Templates with the correct type based on the chart below
* Use lowercase characters and underscores to separate words
* Use the file extension `.yaml` for all YAML files

| Prefix | Type              | Stack Template Path                                               |
| ------ | ----------------- | ----------------------------------------------------------------- |
| art    | Artifact Source   | `<stack>/templates/artifacts/art_resource_name.yaml.tpl`          |
| dpl    | Deployment        | `<stack>/templates/deployments/dpl_resource_name.yaml.tpl`        |
| mns    | Monitored Service | `<stack>/templates/monitored_services/mns_resource_name.yaml.tpl` |
| pipe   | Pipeline          | `<stack>/templates/pipelines/pipe_resource_name.yaml.tpl`         |
| stm    | Secrets Manager   | `<stack>/templates/secrets_managers/stm_resource_name.yaml.tpl`   |
| sta    | Stage             | `<stack>/templates/stages/sta_resource_name.yaml.tpl`             |
| stp    | Step              | `<stack>/templates/steps/stp_resource_name.yaml.tpl`              |
| stg    | Step Group        | `<stack>/templates/step_groups/stg_resource_name.yaml.tpl`        |

### Customer resources <a href="#customer-resources" id="customer-resources"></a>

#### Customer-specific project <a href="#customer-specific-project" id="customer-specific-project"></a>

When creating custom code or pipelines, a new project should be added to the `Implementation_Engineering_Repositories` organization for each customer. This process will help to centralize examples and solutions delivered to customers. When creating a new project, consider the following:

* Projects should be named based on the customer name or common abbreviation
* Each project should have the following description, e.g., *This project will house the repositories, pipelines, and samples created for `customer_name`*

#### Customer-specific template library repositories <a href="#customer-specific-template-library-repositories" id="customer-specific-template-library-repositories"></a>

Never update the Harness Template Library with customer specific changes. It is important that a new repository is created for each customer to maintain the isolation of their specific customizations from the general pool of templates. When creating these repositories, consider the following:

* Use lowercase characters and hyphens to separate words
* Prefix the repository name with the *project\_identifier* followed by *-harness-template-library*, e.g., `cust-harness-template-library`
* Include a clear description for the repository
* Ensure that the standard security rules and branch protections have been added to the repository
* Only add customized factory templates to the repository
* New custom factory templates should follow all guidelines for global factory templates
