diff --git a/AGENTS.md b/AGENTS.md index 3d29d42e2453c3dc25f04cfae0a1ae7b9e65b2ca..8ae925148ea753781296a05116fa04c699113ac8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,4 +1,4 @@ -# AGENTS.md — Labas Project Guide +# AGENTS.md — Pram Project Guide > This file is for AI agents. Read this first before making any changes. @@ -6,7 +6,7 @@ ## 1. Project Identity -- **Name:** `labas` — AI-powered multi-language test practice platform. +- **Name:** `pram` — AI-powered multi-language test practice platform. - **Repo type:** Turborepo monorepo (Bun workspaces). - **Workspace packages:** `apps/*`, `packages/*`. - **Runtime & package manager:** **Bun** (`packageManager: "bun@1.3.11"`). @@ -23,7 +23,7 @@ | DB Engine | PostgreSQL | Managed via Drizzle. | | DB ORM | Drizzle ORM | **Not Prisma.** | | Auth | Better-Auth | Email/password + OAuth. | -| UI | shadcn/ui (shared) | Lives in `packages/ui`. Imported as `@labas/ui/components/*`. | +| UI | shadcn/ui (shared) | Lives in `packages/ui`. Imported as `@pram/ui/components/*`. | | AI | OpenAI-compatible API | User-managed API keys via Settings UI. | | Build | Turborepo + `tsdown` | Server compiled with `tsdown`. | @@ -32,7 +32,7 @@ ## 3. Architecture Overview ``` -labas/ +pram/ ├── apps/ │ ├── web/ # Frontend (Vite, TanStack Router) — Port 5173 │ └── server/ # Backend (Hono, tRPC) — Port 3000 @@ -46,7 +46,7 @@ labas/ │ └── config/ # Shared TypeScript configs ``` -- **Internal imports** use the `@labas/*` workspace namespace. +- **Internal imports** use the `@pram/*` workspace namespace. - Do **NOT** create cross-imports between `apps/*` directly; route through `packages/*`. --- @@ -95,7 +95,7 @@ bun run build # Build all packages - ❌ **Do not hardcode API keys** in source code. AI keys are user-managed via the Settings UI. - ❌ **Do not add global CSS** in `apps/web` without checking `packages/ui/src/styles/globals.css` for existing design tokens and CSS variables. - ❌ **Do not skip heading levels**. After `

`, the next heading must be `

`, not `

` (or lower). Never have two `

` on one page. -- ❌ **Do not create custom modal/dialog components**. Use shadcn `` from `@labas/ui/components/dialog` — it provides built-in focus trap, escape key, scroll lock, and ARIA. +- ❌ **Do not create custom modal/dialog components**. Use shadcn `` from `@pram/ui/components/dialog` — it provides built-in focus trap, escape key, scroll lock, and ARIA. - ❌ **Do not use `any`** in frontend TypeScript. Enforced by eslint `@typescript-eslint/no-explicit-any: "error"` in `apps/web/eslint.config.mjs`. --- @@ -106,7 +106,7 @@ bun run build # Build all packages - shadcn/ui primitives are shared via **`packages/ui`**. - Import components like this: ```tsx - import { Button } from "@labas/ui/components/button"; + import { Button } from "@pram/ui/components/button"; ``` - To add new shadcn primitives, run from the **project root**: ```bash @@ -233,7 +233,7 @@ export const Route = createFileRoute("/my-route")({ - **Icon-only buttons**: Every `