2.3 KiB
Repository Guidelines
Project Structure & Module Organization
This project uses a src/ layout:
src/lazy_enter/: application code (bridge.py,slack_handler.py,pty_manager.py,config.py,hooks.py)tests/:pytesttest suite (test_*.pyfiles)pyproject.toml: packaging, lint, type-check, and test configuration.env.example: environment variable template for local setup
Use module boundaries intentionally: bridge.py orchestrates flow, while Slack, PTY, config, and hook parsing stay in their dedicated modules.
Build, Test, and Development Commands
pip install -e .: install the package in editable mode for local development.python -m lazy_enterorlazy-enter: run the bridge locally.pytest: run all tests.pytest tests/test_hooks.py -v: run one test file with verbose output.ruff check src/ tests/: lint imports and code quality rules.ruff format src/ tests/: apply standard formatting.mypy src/: run strict static type checks.
Coding Style & Naming Conventions
Target runtime is Python 3.10+ with 4-space indentation and type hints on public functions.
Follow ruff rules (E, F, I, N, W, UP) and keep imports sorted.
Naming patterns:
- modules/files:
snake_case.py - functions/variables:
snake_case - classes:
PascalCase - constants/env keys:
UPPER_SNAKE_CASE
Testing Guidelines
Use pytest with tests under tests/ and names matching test_*.py (configured in pyproject.toml).
Prefer focused unit tests per module (see tests/test_hooks.py, tests/test_config.py).
For bug fixes, add or update a regression test in the matching test file before finalizing.
Commit & Pull Request Guidelines
Current git history is minimal (Initial commit), so enforce clear conventions now:
- Commit messages: imperative, concise subject (e.g.,
Add Slack user/channel guard). - Keep commits scoped to one logical change.
- PRs should include: problem summary, what changed, test evidence (
pytest,ruff,mypy), and linked issue/context. - Include screenshots or log snippets when behavior changes are user-visible (for example, Slack message formatting).
Security & Configuration Tips
Do not commit secrets. Copy .env.example to .env locally.
Restrict Slack access with SLACK_ALLOWED_USER_ID and SLACK_ALLOWED_CHANNEL_ID before running in shared workspaces.