Files
2025-11-09 00:26:00 -06:00

2.4 KiB

Repository Guidelines

Project Structure & Module Organization

FullMooncGPT hosts the orchestration code for conversational agents. Place runtime modules in src/fullmooncgpt/, grouped by feature folders such as agents/, pipelines/, and integrations/. Shared helpers belong in src/fullmooncgpt/common/ so they can be reused without circular dependencies. Prompt templates, YAML configs, and sample payloads live in assets/, with a short README.md per subsection describing expected inputs and outputs. Tests sit in tests/, mirroring the module layout, and notebooks or exploratory scripts go under research/ so they never ship with the package.

Build, Test, and Development Commands

  1. python -m pip install -r requirements.txt installs the runtime stack; add dev-only tooling to requirements-dev.txt.
  2. python -m pip install -e .[dev] enables editable development once pyproject.toml is in place.
  3. python -m fullmooncgpt.cli --help exercises the primary entry point; add new subcommands under src/fullmooncgpt/cli/.
  4. python -m pytest runs the entire suite; pass -k to focus on a subset during iteration.
  5. ruff format && ruff check enforce formatting and linting; run before every commit to match CI.

Coding Style & Naming Conventions

Target Python 3.11+, annotate public functions, and rely on dataclasses or pydantic models for structured payloads. Follow snake_case for modules and functions, PascalCase for classes, and keep module names short but descriptive. Stick to 4-space indentation and keep functions focused on a single responsibility. Store configuration in .env files loaded through pydantic-settings rather than hard-coding credentials.

Testing Guidelines

Use pytest and hypothesis for property-based coverage. Name files test_<module>.py and isolate test data under tests/fixtures/. Aim for ≥85% statement coverage; capture notable gaps in the PR description. Mark slow or external-integration tests with @pytest.mark.slow so CI can opt in.

Commit & Pull Request Guidelines

Adopt Conventional Commits (for example, feat: planner adds multi-hop support) to keep changelog generation simple. Keep PRs scoped; include a checklist covering tests run, documentation updates, and backward compatibility notes. Link related issues with Closes #ID and attach logs or screenshots for UI-facing adjustments. Request at least one maintainer review and avoid force pushes after review without coordination.