Files
LazyEnter/AGENTS.md

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/: pytest test suite (test_*.py files)
  • 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_enter or lazy-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.