# Python Structure Linter

> A filesystem structure and symbol-placement linter for Python projects. Declare how your source tree is laid out — required directories, allowed components, test mirroring, symbol counts — and enforce it with a single CLI command.

## Docs

- [Home](https://heumsi.github.io/python-structure-linter/): Overview, key features, and quick start examples
- [Installation](https://heumsi.github.io/python-structure-linter/getting-started/installation/): How to install python-structure-linter
- [Quick Start](https://heumsi.github.io/python-structure-linter/getting-started/quick-start/): Get up and running with your first config
- [Configuration](https://heumsi.github.io/python-structure-linter/getting-started/configuration/): Configuration file format and top-level keys
- [Rules](https://heumsi.github.io/python-structure-linter/guide/rules/): The four rule types and their options
- [Path Patterns](https://heumsi.github.io/python-structure-linter/guide/path-patterns/): Segment tokens for within, source, and mirror
- [Include / Exclude](https://heumsi.github.io/python-structure-linter/guide/include-exclude/): Restrict scanned roots and drop matching paths
- [Inline Ignore](https://heumsi.github.io/python-structure-linter/guide/inline-ignore/): Suppress violations with inline comments
- [CLI Reference](https://heumsi.github.io/python-structure-linter/cli/): The psl check command, options, and exit codes
- [Pre-commit](https://heumsi.github.io/python-structure-linter/pre-commit/): Pre-commit hook integration

## Cookbook

- [Cookbook Overview](https://heumsi.github.io/python-structure-linter/cookbook/): Example recipes index
- [Require Layer Directories](https://heumsi.github.io/python-structure-linter/cookbook/require-layer-directories/): Ensure each context has domain, application, and adapters layers
- [Restrict Component Directories](https://heumsi.github.io/python-structure-linter/cookbook/restrict-components/): Allow only recognized component directories inside a layer
- [Grouping Tiers](https://heumsi.github.io/python-structure-linter/cookbook/grouping-tiers/): Permit one grouping level (subdomains) with group_level optional
- [Tests Mirror Source](https://heumsi.github.io/python-structure-linter/cookbook/tests-mirror-source/): Keep the tests tree aligned with src, with test-only scaffolding exempt
- [One Class Per Module](https://heumsi.github.io/python-structure-linter/cookbook/one-class-per-module/): Bound each domain module to a single class with symbol-count
- [Single Public Function](https://heumsi.github.io/python-structure-linter/cookbook/single-public-function/): Constrain a module's public surface while leaving private helpers free

## Optional

- [Contributing](https://heumsi.github.io/python-structure-linter/contributing/): How to contribute
- [Changelog](https://heumsi.github.io/python-structure-linter/changelog/): Release history
- [GitHub Repository](https://github.com/heumsi/python-structure-linter): Source code
