docs: replace CLAUDE.md with AGENTS.md and add frontend details

This commit is contained in:
Piotr Oleszczyk 2026-03-03 01:26:55 +01:00
parent 098b158b75
commit d1bdfc4993

View file

@ -1,17 +1,17 @@
# CLAUDE.md # AGENTS.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. This file provides guidance to AI coding agents when working with code in this repository.
## Repository structure ## Repository Structure
This is a monorepo. The backend lives in `backend/`; a frontend will be added in the future. This is a monorepo with **backend** and **frontend** directories.
## Commands ## Commands
Run all backend commands from the `backend/` directory: Run the backend from the `backend/` directory:
```bash ```bash
# Run scripts # Backend
cd backend && uv run python main.py cd backend && uv run python main.py
# Linting / formatting # Linting / formatting
@ -20,11 +20,29 @@ cd backend && uv run black .
cd backend && uv run isort . cd backend && uv run isort .
``` ```
No test suite exists yet. Run the frontend from the `frontend/` directory:
```bash
# Frontend
cd frontend && pnpm dev
# Type checking / linting / formatting
cd frontend && pnpm check
cd frontend && pnpm lint
cd frontend && pnpm format
```
No test suite exists yet (backend has some test files but they're not integrated into CI).
## Architecture ## Architecture
**innercontext** collects personal health and skincare data and exposes it via MCP to an LLM agent. Stack: Python 3.12, SQLModel (0.0.37) + SQLAlchemy, Pydantic v2, FastAPI, PostgreSQL (psycopg3). **innercontext** collects personal health and skincare data and exposes it via MCP to an LLM agent.
**Backend Stack:** Python 3.12, SQLModel (0.0.37) + SQLAlchemy, Pydantic v2, FastAPI, PostgreSQL (psycopg3).
**Frontend Stack:** SvelteKit 5, Tailwind CSS v4, bits-ui, inlang/paraglide (i18n), svelte-dnd-action.
### MCP Server (`backend/innercontext/mcp_server.py`)
### Models (`backend/innercontext/models/`) ### Models (`backend/innercontext/models/`)
@ -43,7 +61,7 @@ No test suite exists yet.
**`SkinConditionSnapshot`** is a weekly LLM-filled record (skin state, metrics 15, active concerns). **`SkinConditionSnapshot`** is a weekly LLM-filled record (skin state, metrics 15, active concerns).
### Key conventions ### Key Conventions
- All `table=True` models use `Column(DateTime(timezone=True), onupdate=utc_now)` for `updated_at` via raw SQLAlchemy column — do not use plain `Field(default_factory=...)` for auto-update. - All `table=True` models use `Column(DateTime(timezone=True), onupdate=utc_now)` for `updated_at` via raw SQLAlchemy column — do not use plain `Field(default_factory=...)` for auto-update.
- List/complex fields stored as JSON use `sa_column=Column(JSON, nullable=...)` pattern (DB-agnostic; not JSONB). - List/complex fields stored as JSON use `sa_column=Column(JSON, nullable=...)` pattern (DB-agnostic; not JSONB).