Files
myice/AGENTS.md
Rene Luria 8ae1c33b3a chore: migrate to python 3.13 and update dependencies
Migrate from Python 3.11 to 3.13 with updated dependencies. Switch from PyPDF2 to pypdf library for better PDF processing. Add new U14 age groups and extract-pdf utility script.
2025-09-29 23:05:48 +02:00

2.7 KiB

Development Guide for Agentic Coding Agents

Build/Lint/Test Commands

Setup

# Install dependencies with Poetry
poetry install

# Install pre-commit hooks
pre-commit install

Linting and Formatting

# Run all pre-commit checks (linting, formatting, type checking)
pre-commit run --all-files

# Run specific linters
ruff check .                    # Python linting
ruff format .                   # Python formatting
mypy .                          # Type checking
yamllint .                      # YAML linting
markdownlint .                  # Markdown linting

Running Tests

# No formal test framework configured
# Project uses manual testing with example PDF files in repository
# To test individual functions, run the CLI commands directly:
# myice schedule --days 7
# myice mobile-login
# myice search --help

Running the Web API

# Or with poetry
poetry run fastapi run myice/webapi.py --host 127.0.0.1

Code Style Guidelines

Imports

  • Standard library imports first, then third-party, then local imports
  • Use explicit imports rather than wildcard imports
  • Group imports logically with blank lines between groups

Formatting

  • Use ruff-format for automatic formatting
  • Follow PEP 8 style guide
  • Maximum line length: 88 characters (default ruff setting)
  • Use 4 spaces for indentation

Types

  • Use type hints for function parameters and return values
  • Prefer built-in types (str, int, list, dict) over typing aliases when possible
  • Use typing.Annotated for Typer command options

Naming Conventions

  • Variables and functions: snake_case
  • Classes: PascalCase
  • Constants: UPPER_SNAKE_CASE
  • Private members: prefixed with underscore (_private)

Error Handling

  • Use try/except blocks for expected exceptions
  • Raise appropriate HTTPException for API errors
  • Include descriptive error messages
  • Use sys.exit(1) for command-line tool errors

Frameworks and Libraries

  • Typer for CLI interface
  • FastAPI for web API
  • requests for HTTP requests
  • pypdf for PDF processing
  • Use rich for enhanced console output
  • Custom rl_ai_tools package for AI functionalities

Git Commit Messages

  • Use conventional commits format
  • Never mention Claude in commit messages
  • Be descriptive but concise
  • Use present tense ("add feature" not "added feature")

Additional Rules

  • Always use ddg-mcp to perform Web Search functionality
  • Follow the existing code patterns in myice/myice.py and myice/webapi.py
  • Maintain backward compatibility when modifying existing APIs
  • Document new features in README.md
  • Always run ruff format and ruff check after editing a python file
  • use conventional commit messages