Make any repo agent-ready in one command.
agentprep reads your project, learns its real conventions, and writes the
AGENTS.md + portable Agent Skills
that make AI coding agents — Claude Code, Cursor, Codex, Copilot, Gemini CLI —
actually follow your patterns instead of generic ones.
npx agentprepThat's it. Run it in your project root.
You adopted an AI coding agent. It's fast — and it keeps ignoring how your
codebase actually works. It puts files in the wrong place, invents a second way
to handle errors, skips your tests, reformats lines you didn't touch. So you
spend your day re-typing the same context: "we use pnpm, tests are Vitest, run
the linter before you finish, components go in src/components…"
The fix the ecosystem landed on is AGENTS.md (project context) plus
Agent Skills (reusable, portable capabilities in a SKILL.md format that now
works across 20+ tools). The catch: writing good ones by hand, per project, is
tedious — so most people don't, or they copy generic templates that don't match
their repo.
agentprep writes them from your actual code.
Point it at a repo. It detects your stack and conventions, then generates:
| file | what it is |
|---|---|
AGENTS.md |
Cross-tool project context: stack, setup, real commands, structure, conventions, working agreements. |
CLAUDE.md |
A thin pointer so Claude Code picks it up too. |
skills/verify-changes/SKILL.md |
"Run/test/lint/build the way this project does, before declaring done." |
skills/project-conventions/SKILL.md |
Coding standards & structure inferred from your code. |
skills/write-tests/SKILL.md |
How tests are written/run here (only if a test runner is found). |
Everything is plain Markdown you own and can edit. Nothing is locked to one tool.
- Runtimes: Node (npm · pnpm · yarn · bun), Python (pip · poetry · pipenv), Rust, Go, Ruby
- Frameworks: Next.js, React, Vue, Nuxt, SvelteKit, Svelte, Angular, Astro, Remix, Express, Fastify, NestJS, Koa, Django, Flask, FastAPI
- Tooling: Vitest, Jest, Mocha, Playwright, pytest · ESLint, Biome, Ruff · Prettier, Black · TypeScript · monorepos
- Commands: install / dev / build / test / lint / format / typecheck — read straight from your scripts
- Structure: annotates
src/,app/,components/,tests/,packages/, and more
Run inside a Next.js + TypeScript app:
$ npx agentprep
agentprep · make this repo agent-ready
~/code/acme-dashboard
project acme-dashboard
stack Next.js TypeScript node/pnpm
tooling Vitest, ESLint, Prettier
✓ written:
+ AGENTS.md
+ CLAUDE.md
+ skills/verify-changes/SKILL.md
+ skills/project-conventions/SKILL.md
+ skills/write-tests/SKILL.mdThe generated AGENTS.md:
# AGENTS.md
## Project
Internal analytics dashboard for Acme.
**Stack:** Next.js · TypeScript · node (pnpm)
## Setup & commands
- Install: `pnpm install`
- Dev: `pnpm run dev`
- Test: `pnpm run test`
- Lint: `pnpm run lint`
## Conventions
- Written in TypeScript — prefer typed code; avoid `any`.
- Code is formatted with Prettier — match existing style, don't reformat unrelated lines.
- Tests use Vitest — add/adjust tests for behavioural changes.
…npx agentprep # scan ./ and write the files
npx agentprep ./my-app # scan a specific directory
npx agentprep --print # preview everything, write nothingSkills are portable, but each tool looks in its own folder. Symlink once:
ln -s ../../skills .claude/skills # Claude Code
ln -s ../skills .agents/skills # Codex & othersThen commit. Your agents now read your conventions on every task.
agentprep gives you a strong, accurate starting point — not a finished
spec. It infers from manifests and structure, so:
- It can't know rules that live only in your head (domain logic, review etiquette, release process). The files are made to be edited — that's the workflow.
- Framework/tool detection covers the common cases above; exotic setups fall back to sensible defaults.
- A
--aimode (use an LLM to infer deeper conventions from the code itself) is on the roadmap — see issues.
Want it to detect your stack (Laravel? Spring? Deno? Elixir?) or generate a skill you rely on? Open an issue or PR — detectors are small and self-contained.