Always read @mise.toml.
- Python 3.10+ project using uv for dependency management
- Setup:
mise install && uv sync - Format:
mise run format(ruff) - Lint:
mise run lint(ruff) - Test:
mise run test(pytest) - Install pre-commit:
uv run pre-commit install
- Create
.envfile withGITHUB_TOKEN=your_tokenfor cimonitor - mise automatically loads .env file (already configured)
- Use
uv run cimonitor status --pr <number>to check CI status
src/autowt/cli.py- Main CLI entry point with command definitionssrc/autowt/commands/- Command implementations (checkout, cleanup, etc.)src/autowt/services/- Core services (git, state, process management)src/autowt/models/- Data models and types
- Read README.md
When describing a new feature in CHANGELOG.md, avoid multiple sibling bullet points about the same feature. Instead, use a single top-level bullet point per feature, with sub-bullets describing its various aspects.
Readers of the changelog do not care about the sequence of events leading up to a feature's release; they want to read about the feature in one shot.
ENCOURAGED: Use scratch/ directory for all temporary files or non-documentation Markdown files. FORBIDDEN: Using /tmp FORBIDDEN: deleting the entire scratch/ directory
For mulit-word doc filenames, smush the words together instead of adding _, -, or spaces between words.
- Use git as source of truth wherever possible
- Avoid adding config options unless a specific user has presented a use case
Configuration follows a strict precedence: CLI args > env vars > project config > global config > defaults. The config.py module implements a frozen dataclass hierarchy that ensures type safety. CLI overrides are handled through cli_config.py which creates temporary override objects that get merged during config initialization.
- Inline imports are considered errors. Put all imports at the top of the file. If concerned about circular imports in new code, propose changes to the module structure to ensure imports are a DAG.