Quick start · Website · How it works · AGENTS.md · llms.txt · Skills · Discussions · All projects
Localisation for Next.js, checked in CI: plurals, right-to-left and search engines.
Parrot is an agent employee, a packaged specialist agent with its own skills, memory and tests. It owns one job: localisation. Coding agents use it through its skills, its MCP server and its command line. Its evals gate every merge in CI. A person makes every change.
Parrot is part of an agent-native play for agent-native systems that can eventually be recursively self-improving and evolving, operated by agent employees.
Parrot is for teams that ship a Next.js app in more than one language. It wires next-intl correctly the first time, finds user-facing strings that skip the message catalog, and checks the bugs English never shows: a wrong plural in Polish or Arabic, a layout that breaks right to left, and a broken hreflang graph that hides pages from search. It carries and checks the strings; it never writes the copy.
Claude Code: the plugin brings the skills, sub-agents, hooks and MCP server.
/plugin marketplace add naman10parikh/parrot
/plugin install parrot@parrot
Its MCP server, Codex, Cursor, Gemini CLI, one skill and the command line
Its MCP server, in any MCP client:
claude mcp add --transport stdio parrot -- npx -y -p github:naman10parikh/parrot parrot-mcp
codex mcp add parrot -- npx -y -p github:naman10parikh/parrot parrot-mcpCursor (.cursor/mcp.json), Gemini CLI (.gemini/settings.json) and most other clients take the same command as JSON:
{
"mcpServers": {
"parrot": {
"command": "npx",
"args": [
"-y",
"-p",
"github:naman10parikh/parrot",
"parrot-mcp"
]
}
}
}Gemini CLI: the extension brings the context and the MCP server.
gemini extensions install https://github.com/naman10parikh/parrotOne skill (6 in all, in skills/), in any agent that reads Agent Skills:
gemini skills install https://github.com/naman10parikh/parrot --path skills/i18n-setup-nextjs
git clone --depth 1 https://github.com/naman10parikh/parrot /tmp/parrot && cp -r /tmp/parrot/skills/i18n-setup-nextjs ~/.claude/skills/The command line:
npx -y -p github:naman10parikh/parrot parrot --helpCodex, Cursor, OpenCode, GitHub Copilot and other agents read AGENTS.md; Claude Code reads CLAUDE.md and Gemini CLI reads GEMINI.md, which import it. llms.txt maps every surface for agents that read first.
git clone https://github.com/naman10parikh/parrot && cd parrot
pnpm install && pnpm build
node bin/parrot extract --dir eval/fixtures/app # finds the planted hardcoded string (exits 1 by design)
node bin/parrot check --dir eval/fixtures/app --locales en,pl,ar # catches the planted Polish plural gap (exits 1 by design)
node bin/parrot brain "setRequestLocale static rendering" # ranked, cited hits from the brain
pnpm test && pnpm eval # unit tests and the eval gateextract and check are linters: they exit non-zero when they find a problem, so the fixture's planted bugs make
them fail on purpose. Add --json for agents. None of these needs an account or a key.
- Plumbing, not authoring. Every task is placed on one line first. Wiring the pipeline that carries and checks the strings is parrot's job. Writing the copy, choosing the brand voice or translating prose belongs to a person or a content employee, and parrot hands it off.
- Test the part English hides. Every correctness claim is tested in a language with many plural forms (Polish, Arabic) and in a right-to-left language (Arabic, Hebrew), never in English alone.
- One gate for CI.
parrot checkcovers key completeness, plurals, right-to-left markup, formats, hreflang codes,setRequestLocalein static pages and the middleware file for the Next.js version. It exits non-zero on any failure. - The brain is the asset. Six files in
brain/hold the twelve jobs, 16 real scenarios, 29 pitfalls, 25 opinions, the open disputes and the tool matrix.parrot brainand the MCP server search them. - A hook that obeys its own rule. In this repository, the
i18n-string-gatehook blocks an edit that adds a hardcoded user-facing string to a.tsxor.jsxfile.
Every project in this fleet is graded on the same 11 harness components and on self-improvement. Each mark is backed by a file you can open.
| Component | Grade | Where |
|---|---|---|
| Identity | ✅ | identity/SOUL.md:1 identity/BRAND.md:3 |
| Memory | ✅ | memory/MEMORY.md:1 scripts/brain-search.mjs:1 memory/LEARNINGS.md:5 |
| Skills | ✅ | skills/i18n-setup-nextjs/SKILL.md:1 skills/rtl-bidi-audit/SKILL.md:1 |
| Tools/CLIs | ✅ | package.json:7 bin/parrot:1 src/cli/index.ts:1 |
| Hooks | ✅ | .claude/settings.json:10 .claude/hooks/i18n-string-gate.js:1 .claude/hooks/package.json:2 hooks/hooks.json:8 |
| Sub-agents | ✅ | .claude/agents/i18n-correctness-auditor.md:2 .claude/agents/i18n-migration-planner.md:2 |
| MCPs | ✅ | src/mcp/server.ts:1 package.json:8 .mcp.json:3 |
| Dispatch | ✅ | src/dispatch/route.ts:169 .github/workflows/rsi.yml:10 |
| Evals | ✅ | eval/eval.mjs:1 .github/workflows/acceptance.yml:53 |
| Observability | ✅ | src/lib/logger.ts:44 scripts/runs-view.mjs:1 |
| Sandbox/Infra | ✅ | sandbox/boot.mjs:1 .github/workflows/ci.yml:114 sandbox/render-ar.mjs:1 |
| Self-improvement | ✅ | dsip.json:1 workflows/rsi.workflow.js:1 .github/workflows/rsi.yml:10 |
✅ real and tested · 🟡 partial, with the reason in the row · ❌ absent
It carries its own evals and a self-improvement contract, dsip.json, which says what it may change and how a change is judged. Its evals gate every merge in CI. A person makes every change. Lessons it learns are kept as rules in its memory files.
One of the projects by Naman Parikh. Each owns one part of an agent's harness, or of the product around an agent, and all of them follow one standard.
| Related project | What it owns |
|---|---|
| AgentDial | Identity |
| WikiMem | Memory |
| Skillsmith | Skills |
| Agent Booster | Tools / CLIs |
| Hooksmith | Hooks |
| AgentCast | Sub-agents |
| Plugsmith | Plugins |
| Armory | MCPs and the component registry |
| AgentGrid | Dispatch |
| AgentSwarm | Dispatch |
| AgentBench | Evals |
| AgentMoney | Observability |
| Sandforge | Sandbox / Infra |
| Claude Harness | The whole harness, as a template |
Questions and ideas go to Discussions; bugs go to issues. Follow the work on X and LinkedIn.
Read CONTRIBUTING.md. AI-assisted pull requests are welcome. Report a vulnerability privately, as SECURITY.md explains.
MIT, © 2026 Naman Parikh. See LICENSE and NOTICE.
If it is useful to you, a star helps other people find it.