# Project layout This section provides an overview of the key paths in your Salt extension project. :::{path} .copier-answers.yml ::: ## `.copier-answers.yml` Stores Copier-specific data, including answers to [template questions](questions-target), the template's source URI, and the last version the project was updated to. **Do not edit manually.** To change your answers, use `copier update --trust`. To avoid updating the template version, [pass the current version in `vcs-ref`](vcs-ref-target). :::{path} CHANGELOG.md ::: ## `CHANGELOG.md` Contains the project’s changelog. Update this file using [towncrier](changelog-build-target) instead of manually. :::{path} README.md ::: ## `README.md` Provides a brief project overview and developer information. Includes a note about user documentation and, if {question}`docs_url` was set, a link to the hosted documentation. :::{path} noxfile.py ::: ## `noxfile.py` Defines `nox` sessions for [running tests](run-tests-target), [building documentation](build-docs-target), and linting code. :::{path} pyproject.toml ::: ## `pyproject.toml` Holds project metadata, package dependencies and configuration for tools used in the project's lifecycle. :::{path} .github ::: ## `.github` Contains GitHub-related configurations and workflows. This directory is only present if your {question}`source_url` is on GitHub. :::{path} .github/workflows ::: ### `.github/workflows` Houses GitHub Actions {question}`workflows`. :::{path} .github/workflows/ci.yml ::: #### `.github/workflows/ci.yml` A meta-workflow that triggers other workflows based on inputs. :::{important} Only present when {question}`workflows` == `enhanced`. ::: :::{path} .github/workflows/pr.yml ::: #### `.github/workflows/pr.yml` Handles workflows for Pull Requests and pushes to the `main` branch. Depending on {question}`workflows`, it either calls centralized workflows in [salt-extensions/central-artifacts](https://github.com/salt-extensions/central-artifacts/tree/main/.github/workflows) or local workflows in {path}`ci.yml <.github/workflows/ci.yml>`. :::{path} .github/workflows/tag.yml ::: #### `.github/workflows/tag.yml` Triggered by [tag pushes](publishing-target) for tags beginning with `v`. Similar to {path}`pr.yml <.github/workflows/pr.yml>`, it either calls centralized workflows or local ones in {path}`ci.yml <.github/workflows/ci.yml>`. :::{path} changelog ::: ## `changelog` Directory containing [news fragments](news-fragment-target) for `towncrier`. Also includes the default version-specific changelog template in `changelog/.template.jinja`. :::{path} docs ::: ## `docs` Root directory for documentation-related files. :::{path} docs/conf.py ::: ### `docs/conf.py` Contains Sphinx configuration and plugins. :::{path} docs/index.rst ::: ### `docs/index.rst` Homepage for the documentation, (indirectly) linking to all other documentation files. :::{hint} If your project includes a `utils` directory, manually add the corresponding documentation here (not handled by the Copier template or the pre-commit hook). ::: :::{path} docs/ref ::: ### `docs/ref` Directory containing autogenerated module documentation. Typically does not require manual updates, but can be used for custom documents, like a configuration reference. :::{path} docs/topics ::: ### `docs/topics` Intended to hold high-level guides related to your Salt extension, such as `Configuration`. By default, includes an `Installation` guide. :::{path} src ::: ## `src` Root directory for your Salt extension's package. :::{path} tests ::: ## `tests` Root directory for Pytest-based test modules. :::{path} tests/conftest.py ::: ### `tests/conftest.py` Provides default fixtures and basic test setup. :::{path} tests/functional ::: ### `tests/functional` Contains functional tests. :::{path} tests/functional/conftest.py ::: #### `tests/functional/conftest.py` Provides default fixtures for functional tests. :::{path} tests/integration ::: ### `tests/integration` Contains integration tests. :::{path} tests/integration/conftest.py ::: #### `tests/integration/conftest.py` Provides default fixtures for integration tests. :::{path} tests/unit ::: ### `tests/unit` Contains unit tests. :::{path} tests/unit/conftest.py ::: #### `tests/unit/conftest.py` Provides default fixtures for unit tests.