CLAUDE.md · git:20260320.cd1dca0 · 2026-03-20 · sha256 7f2c2c3855c6e432

CLAUDE.md git:20260320.cd1dca0A

Immutable. This exact content never changes and is served at /api/v1/blob/7f2c2c3855c6e432.

## Project Specifications

- **Operating System**: <YOUR_OPERATIVE_SYSTEM>
- **Programming Language**: Python >= 3.10
- **Package Manager**: uv
- **Linter & Formatter**: ruff

## Golden Rule

**Explicit intent and maintainability over brevity.** All code must be immediately understandable to another developer (or yourself in future).

## Naming Conventions

- **Variables, functions**: `snake_case` — descriptive and explicit about scope and purpose
- **Boolean variables**: Use `is_`, `has_`, `can_` prefixes (`is_authenticated`, `has_permission`)
- **Collections**: Use plural nouns (`users`, `orders`, `transactions`)
- **Temporary variables**: Acceptable in comprehensions/loops (`for item in items`)
- **Classes**: `PascalCase` — single noun or noun phrase
- **Constants**: `UPPER_CASE` — module-level immutable values
- **Private members**: `_leading_underscore` — single underscore for internal use only
- **Dunder names**: `__double_underscore__` — reserved for Python magic; avoid unless implementing protocols
- **Acronyms**: Treat as words (`HttpRequest` not `HTTPRequest`, `api_client` not `API_client`)

## File Organization

- One class per file unless classes are tightly coupled
- Imports grouped: Standard library → Third-party → Local application (alphabetical within groups)
- No circular imports: refactor if detected
- Module docstring: brief one-liner describing purpose
- Constants at module top, below imports

## Python Modern Syntax

Prefer Python 3.10+ features: `X | None` over `Optional[X]`, built-in generics (`list[int]`, `dict[str, Any]`), `match/case`, f-strings, `Path` over `os.path`, `@dataclass` for simple containers (Pydantic `BaseModel` when validation needed).

## Tech Stack

| Layer | Technology | Notes |
|-------|-----------|-------|
| Database | PostgreSQL | Default relational database |
| Cache | Redis | Optional, via `redis-py` |
| ORM | SQLAlchemy 2.0 | Async support via `asyncpg` |
| Data Validation | Pydantic | Also used for settings via `pydantic-settings` |
| Task Queue | Celery / ARQ | Celery (sync) or ARQ (async) |
| API | FastAPI | Async, OpenAPI, Pydantic validation |
| CLI | Typer | Command-line interfaces |
| Terminal/Logging | Rich | Rich output and logging |
| Testing | pytest | See `.claude/rules/testing.md` |
| Containers | Docker + docker-compose | Local dev and deployment |
| CI/CD | GitHub Actions | Default pipeline |

Adapt this stack to your project needs. Remove or replace layers that don't apply.
Use each tool per its design intent. Don't force workarounds.

## Common Commands

```bash
# Dependencies
uv sync                             # Install/sync all dependencies
uv add <package>                    # Add a dependency
uv add --dev <package>              # Add a dev dependency
uv remove <package>                 # Remove a dependency

# Testing
uv run pytest                       # Run all tests
uv run pytest tests/test_mod.py -v  # Run specific file, verbose
uv run pytest -k "test_name" -v     # Run tests matching pattern
uv run pytest --cov=src             # Run with coverage report

# Linting & Formatting
uv run ruff check .                 # Lint
uv run ruff check . --fix           # Lint + auto-fix
uv run ruff format .                # Format
```

## Verification

Run after code changes to verify correctness:

```bash
uv run ruff check . && uv run ruff format --check . && uv run pytest -x
```

After dependency changes:

```bash
uv sync && uv run pytest
```

## Detailed Rules

Coding standards are organized in `.claude/rules/` by topic:

- @.claude/rules/api-patterns.md
- @.claude/rules/architecture.md
- @.claude/rules/compaction.md
- @.claude/rules/documentation.md
- @.claude/rules/exception-handling.md
- @.claude/rules/git-workflow.md
- @.claude/rules/project-structure.md
- @.claude/rules/python-idioms.md
- @.claude/rules/security.md
- @.claude/rules/testing.md