Scaffolded Project Structure
This page documents the complete file tree that pyrig init produces when run
inside a fresh project directory. The example below uses a project named
my-project.
Quick Start Recap
uv init my-project --python 3.12
cd my-project
uv add pyrig --dev
uv run pyrig init
Generated File Tree
my-project/
├── .env # Environment variables (user-managed, not committed)
├── .gitignore # Git ignore rules
├── .python-version # Python version pin
├── .scratch.py # Local scratch file (not committed)
├── CODE_OF_CONDUCT.md # Contributor Covenant code of conduct
├── CONTRIBUTING.md # Contribution guidelines
├── LICENSE # MIT license
├── mkdocs.yml # MkDocs documentation site configuration
├── prek.toml # Pre-commit hook definitions
├── pyproject.toml # Package metadata and tool configuration
├── README.md # Project README with badges
├── SECURITY.md # Security policy
├── uv.lock # Locked dependency manifest
│
├── .github/
│ ├── settings.json # Repository settings and branch protection rulesets
│ ├── pull_request_template.md # Pull request description template
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yml # Bug report issue form
│ │ ├── config.yml # Issue template chooser configuration
│ │ └── feature_request.yml # Feature request issue form
│ └── workflows/
│ ├── health_check.yml # CI: tests, linting, hooks, dependency audit
│ ├── release.yml # CD: tagging, repo protection, GitHub release
│ └── deploy.yml # CD: MkDocs documentation deployment
│
├── docs/
│ ├── api.md # API reference page (mkdocstrings)
│ └── index.md # Documentation home page
│
└── src/
└── my_project/ # Package root (project name → snake_case)
├── __init__.py # Top-level package module
└── py.typed # PEP 561 marker (typed package)
Notes
.envand.scratch.pyare version-control-ignored and created locally. They are not committed and can be recreated at any time withpyrig mk localorpyrig sync..github/settings.jsonis read by the release workflow to apply repository settings and branch protection rulesets via the GitHub API on every release.tests/is not created bypyrig init. Test files are generated bypyrig syncas you add source modules — each source module gets a mirrored test file skeleton automatically.