# Agent instructions for One Move

This repository is the source of One Move (Next.js web app, FastAPI API).

## When to use One Move

- The user wants the recurring weakness in their chess games, not a single-game review.
- The user gives a chess.com or Lichess username and wants a measured target.
- The user has PokerStars cash-game hand histories and wants a leak report.
- The user wants to track one improvement target over weeks.

## When not to use it

- Live coaching, chat, or a single position.
- Tournament poker (unsupported).
- Reading a private account without its owner's session.

## How to call it

- HTTP: `GET https://api.getonemove.app/v1/free-reports/{site}/{username}`, `GET https://api.getonemove.app/v1/constraints`, `GET https://api.getonemove.app/v1/jobs/{job_id}`.
- MCP: `https://api.getonemove.app/mcp` (product) and `https://api.getonemove.app/docs/mcp` (documentation).
- NLWeb: `POST https://api.getonemove.app/ask`.
- Docs: `https://getonemove.app/docs/api`, `https://getonemove.app/llms.txt`, `https://getonemove.app/auth.md`.

## Rules for coding agents

- The web app is Next.js 16 App Router. Read `web/AGENTS.md` before changing it.
- The API is FastAPI + SQLite. Run `cd api && uv run --frozen pytest -q` before merging.
- The web checks are `cd web && pnpm typecheck && pnpm build`.
- Do not add analytics, tracking pixels, or a second database.
- Do not send a player's email, username, or raw games to an LLM. The weekly paragraph is built from numbers only.
- Do not change the free-report rate limits or the Claude daily cap without an explicit product decision.
- Keep public endpoints anonymous unless the data is private. Never expose another player's account rows.
- Use `Idempotency-Key` on write retries. Do not retry a `4xx` unchanged.

Repository: https://github.com/chrissuperduper/one-move-agent
Skills.sh: https://www.skills.sh/chrissuperduper/one-move-agent
Issues: https://github.com/chrissuperduper/workstreams/issues
