AGENTS.md: what it is, where it goes, and a generator
AGENTS.md is a plain Markdown file at the root of your repository that tells AI coding agents how to work on your project: the commands to run, the conventions to follow and the things to avoid. It is an open format stewarded by the Agentic AI Foundation under the Linux Foundation, and it is read by OpenAI Codex, Cursor, GitHub Copilot, Jules, Zed, Warp, opencode and many more tools. Claude Code and Gemini CLI can read it too with a one-line import or setting.
Where the file goes
AGENTS.mdat the repository root.- Optional nested
AGENTS.mdfiles in subfolders (for example in each package of a monorepo). The file closest to the code being edited takes precedence.
How it works
- There is no required schema: use normal Markdown headings such as Project, Commands, Conventions and Avoid.
- Agents load it automatically at the start of a session, so everything in it costs context tokens on every request. Keep it focused.
- Codex merges AGENTS.md files from the repo root down to the working directory and caps the combined size (32 KiB by default).
- Claude Code reads AGENTS.md when there is no CLAUDE.md. If you have both, add
@AGENTS.mdto CLAUDE.md to import it. - Gemini CLI reads it when
.gemini/settings.jsonlists it incontext.fileName.
Tips for a good AGENTS.md
- Put exact, copy-pasteable commands first: install, dev, test, lint, type-check.
- Write rules an agent can verify ("run
npm testbefore finishing") rather than vague advice ("write clean code"). - Use AGENTS.md as the single source of truth and point tool-specific files at it to avoid drift.
- Review it like code: update it in the same pull request that changes a convention.
Example: Next.js (App Router) + Tailwind CSS v4 + Supabase
# AGENTS.md - this project
Instructions for AI coding agents working in this repository.
## Project
A Next.js (App Router) + Tailwind CSS v4 + Supabase project.
Stack: Next.js (App Router), Tailwind CSS v4, Supabase.
## Commands
- Dev server: `npm run dev`
- Production build (also type-checks): `npm run build`
- Lint: `npm run lint`
- New migration: `npx supabase migration new <name>`
- Generate TS types: `npx supabase gen types typescript --local > types/supabase.ts`
## Project structure
- `app/` holds routes: `page.tsx`, `layout.tsx`, `loading.tsx`, `error.tsx`, `route.ts` for API handlers.
- Shared UI in `components/`, server-only helpers in `lib/` (mark them with `import "server-only"`).
## How to work in this repo
- Read the relevant files before editing. Follow the patterns already in the codebase over these generic rules.
- Make the smallest change that solves the task. Do not refactor or reformat unrelated code.
- Before saying a task is done, run the type-check, lint and tests listed under Commands and fix what you broke.
- If requirements are ambiguous, ask one clear question instead of guessing.
- Never commit secrets, API keys or `.env` files. Use env vars and keep `.env.example` up to date.
- Do not add a new dependency when the standard library or an existing dependency already covers it.
- Ask before adding, removing or upgrading any dependency.
- Ask before changing database schemas, auth, payments or CI configuration.
- Never delete files, drop data or run destructive commands (`rm -rf`, `git push --force`, `DROP TABLE`) without explicit approval.
- Keep each change under ~200 changed lines where possible; split larger work into steps.
## Next.js (App Router)
- Check the Next.js major version in `package.json` before using an API; follow the docs for that version.
- Components are Server Components by default. Add `"use client"` only to the smallest leaf component that needs state, effects, or browser APIs.
- Fetch data in Server Components or Server Actions, not in `useEffect`.
- In Next.js 15+, `params`, `searchParams`, `cookies()` and `headers()` are async: always `await` them.
- Mutations go through Server Actions (`"use server"`) or `route.ts` handlers. Validate every input on the server and re-check auth inside the action.
- After a mutation, call `revalidatePath()` or `revalidateTag()` instead of forcing the whole route dynamic.
- Use `next/image` for images, `next/font` for fonts and `next/link` for internal links.
- Export `metadata` or `generateMetadata` from every page for title, description and Open Graph tags.
- Only variables prefixed `NEXT_PUBLIC_` reach the browser. Never put secrets in them.
- In Next.js 16, `middleware.ts` is renamed `proxy.ts`. Use whichever file the project already has.
## Tailwind CSS v4
- Tailwind v4 is configured in CSS: `@import "tailwindcss";` plus `@theme { ... }` for design tokens. Do not create a `tailwind.config.js` unless the project already has one.
- Use theme tokens (colors, spacing) instead of arbitrary values like `w-[37px]`.
- Build responsive layouts mobile-first with `sm:`, `md:`, `lg:` prefixes.
- Extract repeated class lists into components, not `@apply` chains.
- Support dark mode with the `dark:` variant when the project uses it.
## Supabase
- Enable Row Level Security on every table and write explicit policies. No table ships without RLS.
- The anon/publishable key is public. The `service_role`/secret key bypasses RLS: use it only in trusted server code, never in the client.
- Change the schema with migration files in `supabase/migrations/`, not by clicking in the dashboard.
- On the server, verify the user with `supabase.auth.getUser()` (or `getClaims()`); do not trust `getSession()` alone for authorization.
- In SSR frameworks use `@supabase/ssr` (`createServerClient` / `createBrowserClient`), not the deprecated auth-helpers packages.
- Regenerate database types after each migration and type the client with them.
## Avoid
- Do not add `"use client"` to layouts or pages just to silence an error; move the interactive part into a child component.
- Do not use the Pages Router (`pages/`) APIs such as `getServerSideProps` in an App Router project.
## Reference docs
- [Next.js docs](https://nextjs.org/docs)
- [Tailwind CSS docs](https://tailwindcss.com/docs)
- [Supabase docs](https://supabase.com/docs)
FAQ
Is AGENTS.md the same as README.md?
No. README.md is for humans; AGENTS.md holds the extra, precise context agents need (build steps, test commands, conventions) that would clutter a README.
Does Cursor read AGENTS.md?
Yes. Cursor supports AGENTS.md in the project root and subdirectories, alongside its own .cursor/rules/*.mdc files.
Does Claude Code read AGENTS.md?
Recent Claude Code versions read AGENTS.md when no CLAUDE.md exists. The reliable cross-version approach is a CLAUDE.md containing @AGENTS.md.
How long should AGENTS.md be?
Usually 50-200 lines. Long files waste context on every request and bury the rules that matter.
AGENTS.md templates by stack
- Next.js (App Router) + Tailwind CSS v4 + shadcn/ui + Supabase + Zod validation AGENTS.md
- Next.js (App Router) + Tailwind CSS v4 AGENTS.md
- Next.js (App Router) + Tailwind CSS v4 + Prisma + Stripe payments + Zod validation AGENTS.md
- Next.js (App Router) + Tailwind CSS v4 + Drizzle ORM + Clerk auth + Zod validation AGENTS.md
- Next.js (App Router) + Tailwind CSS v4 + shadcn/ui + Vercel AI SDK + Zod validation AGENTS.md
- Next.js (App Router) + Tailwind CSS v4 + Supabase + Stripe payments + Zod validation + Vitest AGENTS.md
- Next.js (App Router) + Tailwind CSS v4 + Firebase AGENTS.md
- Next.js (App Router) + Tailwind CSS v4 + Vitest + Playwright E2E AGENTS.md
- React + Vite + Tailwind CSS v4 + TanStack Query + Vitest + Zod validation AGENTS.md
- React + Vite + Tailwind CSS v4 + Supabase + Zustand AGENTS.md
- React + Vite + Tailwind CSS v4 + Firebase + Vitest AGENTS.md
- Astro + Tailwind CSS v4 AGENTS.md
- SvelteKit (Svelte 5) + Tailwind CSS v4 + Supabase + Zod validation AGENTS.md
- SvelteKit (Svelte 5) + Tailwind CSS v4 + Drizzle ORM + Vitest AGENTS.md
- Nuxt (Vue 3) + Tailwind CSS v4 + Zod validation AGENTS.md
- Nuxt (Vue 3) + Tailwind CSS v4 + Supabase AGENTS.md
- Expo (React Native) + Supabase + Zod validation + Jest AGENTS.md
- Expo (React Native) + TanStack Query + Zustand + Jest AGENTS.md
- Node.js + Express + Prisma + Zod validation + Vitest + Docker AGENTS.md
- Node.js + Express + Drizzle ORM + Zod validation + Docker AGENTS.md
- Python + FastAPI + SQLAlchemy 2 + Alembic + pytest + Docker AGENTS.md
- Python + FastAPI + LLM / agent SDKs (Python) + pytest AGENTS.md
- Python + FastAPI + Supabase + pytest AGENTS.md
- Python (scripts, agents, libraries) + LLM / agent SDKs (Python) + pytest AGENTS.md
- Python + Django + pytest + Docker AGENTS.md
- Python + Django + Tailwind CSS v4 + pytest AGENTS.md
- Ruby on Rails + Tailwind CSS v4 + Docker AGENTS.md
- PHP + Laravel + Tailwind CSS v4 + Stripe payments AGENTS.md
- Go + Docker AGENTS.md
- Rust + Axum + Docker AGENTS.md
- Java + Spring Boot + Docker AGENTS.md
- Flutter (Dart) + Firebase AGENTS.md
- Flutter (Dart) + Supabase AGENTS.md
- Swift + SwiftUI AGENTS.md
- Unity (C#) AGENTS.md
- Godot 4 (GDScript) AGENTS.md
- Phaser (TypeScript web games) + Vitest AGENTS.md
- Chrome Extension (MV3) + Tailwind CSS v4 + Zustand + Vitest AGENTS.md
Official docs: agents.md. Last reviewed 2026-10-21.