agent-config-manager
AGENTS.md0 starsChanged 23 days agoMITView on GitHub
Before editing files for a substantial task: - Run bunx @tanstack/intent@latest list from the workspace root to see available local skills. - If a listed skill matches the task, run bunx @tanstack/intent@latest load <package>#<skill> before changing files. - Use the loaded SKILL.md guidance while making the change. - Monorepos: when working across packages, run the skill check from the workspace root and prefer the local skill for the package being changed. - Multiple matches: prefer the most specific local skill…
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,700 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository33 other files it gives its agents.
- .agents/skills/vercel-react-best-practices/AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- accessibilitySkill
- ask-mattSkill
- cavemanSkill
- codebase-designSkill
- code-reviewSkill
- diagnosing-bugsSkill
- domain-modelingSkill
- frontend-designSkill
- grill-with-docsSkill
- implementSkill
- implement-specSkill
- improve-codebase-architectureSkill
- prototypeSkill
- researchSkill
- retroSkill
- setup-matt-pocock-skillsSkill
- shadcnSkill
- tailwind-v4-shadcnSkill
- tanstack-routerSkill
- tanstack-start-best-practicesSkill
- tanstack-startSkill
- tddSkill
- to-specSkill
- to-ticketsSkill
- triageSkill
- typescript-advanced-typesSkill
- ui-ux-pro-maxSkill
- vercel-react-best-practicesSkill
- wayfinderSkill
- web-design-guidelinesSkill
- wizardSkill
The file
We split this AGENTS.md into the rules it gives an agent
5 rules. About 0 are common, 1 is distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 4
Before editing files for a substantial task:
- Very specific: line 5
Run bunx @tanstack/intent@latest list from the workspace root to see available local skills.
- Very specific: line 6
If a listed skill matches the task, run bunx @tanstack/intent@latest load <package>#<skill> before changing files.
- Very specific: line 7
Use the loaded SKILL.md guidance while making the change.
- Very specific: line 50
Every write transaction opens with BEGIN IMMEDIATE, because the CLI, the MCP server, and the scanner all open the file.
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
<!-- intent-skills:start -->Skill Loading
Before editing files for a substantial task:
- Run
bunx @tanstack/intent@latest listfrom the workspace root to see available local skills. - If a listed skill matches the task, run
bunx @tanstack/intent@latest load <package>#<skill>before changing files. - Use the loaded
SKILL.mdguidance while making the change. - Monorepos: when working across packages, run the skill check from the workspace root and prefer the local skill for the package being changed.
- Multiple matches: prefer the most specific local skill for the package or concern you are changing; load additional skills only when the task spans multiple packages or concerns.
<!-- intent-skills:end -->agent-config-manager
Inventories a Claude Code setup — plugins, MCP servers, skills, environment tools, project scope — on the local machine, and is becoming an engine that reads Pi, Codex, and OpenCode config natively so one harness's configuration can be mirrored into another. README.md covers what it does and how to run it. Configuration on claude.ai is deliberately out of scope; see docs/adr/0002.
Bun is the package manager and script runner (bun install, bun run <script>, bunx); npm and
npx are not used here.
Engine tickets
Implementing a ticket under .scratch/acm-rearchitecture/ starts at that ticket file: follow its
Blocked by: line, and read spec.md beside it for the
settled decisions.
- The spec is the authority.
map.mdindexes each settled decision by ticket: read it when the reasoning behind one of them matters. CONTEXT.mdholds the vocabulary the spec, tickets, and code share; a word that is not there is a smell.- A resolved ticket's
## Answeris settled — build on it instead of re-deriving it. docs/research/{pi,codex,opencode}-config-surface.mdare the verified native surfaces for each harness — config paths and precedence, formats, merge semantics, which gates are human-only. Read the harness's file before changing its adapter or writing a mirror step for it. The canonical field tables, the seven transforms, and the per-tier allowlists are in docs/mcp-field-tables.md, beside the planner data that mirrors them.
Architecture
src/server/store.cjsis the only module that touchesnode:sqlite. It stays plain CJS so the TypeScript app can load it andscan.cjscan require it, and it holds everything the app persists: scan snapshots, theconfigrows behind/settings, the engine's canonical tables, and the operations an apply records — one transaction per apply, so the audit row, the target's plan hash, and its binding's verification status land together or not at all.PRAGMA user_versiongates an ordered migration list run on every open, so a fresh database and an existing one reach the same schema; migration 1 is pureCREATE TABLE IF NOT EXISTSnext tosnapshots/config, which therefore keep their rows. Every write transaction opens withBEGIN IMMEDIATE, because the CLI, the MCP server, and the scanner all open the file.- The engine and the CLI are a second face over that store.
src/engine/service.tsexposesdiscover(),listInstallations(),inspectInstallation(),planMirror(), andapplyPlan()/verifyPlan();src/engine/repo.tsis the only module that callsstore.cjs;src/engine/plan.tsbuilds the mirror plan document from a stored row and the target file alone — plus whatever source its bytes would have to come from: the tree a skill copy digests, or the file behind a body or a command the plan carries as a value — and writes nothing;src/engine/apply.tsexecutes exactly that document — one lock per store, every precondition read before the first byte, one file at a time,partialwith no rollback when a write fails — and re-reads the target to verify it;src/engine/edit.tsis the pointer-level native editor, so a write lands only on the addresses the plan named and comments and sibling entries survive — the one exception being a write that names a whole container (OpenCode'smcpblock, normalised out of its legacy flat shape), which replaces that node and drops the comments inside it, which the plan says as a manual step;src/engine/adapters/holds one directory per harness (Pi, Codex, OpenCode), shared MCP fact storage inmcp-facts.ts, the per-harness MCP write surfaces and transforms inmcp-write.ts, shared skill and instruction readers inskills.tsandinstructions.ts(the three harnesses differ only in which locations they declare), and per-tier file reading intier.ts; andsrc/engine/adapters/registry.tsfails at load when a claimed category has no handler. Roots (home, project root, store path,CODEX_HOME) arrive as an injectedEngineConfig, never read from the working directory;ACM_HOME/ACM_PROJECT_ROOT/ACM_STOREare the boundary overrides a test uses to point the engine at a fixture.src/cli/main.tsis theacmbin (bun run acm -- list, oracm listonce linked), andsrc/mcp/router.tsregisters the five MCP tools over the same service functions whilesrc/mcp/server.tsputs them on a stdio transport behindacm mcp serve— two faces over one library, and neither importsrepo,plan, or an adapter. Nothing undersrc/routes/orsrc/components/imports either. - The Claude dashboard is the previous product, kept working unchanged. It reads the same store;
its rendering, rescan, settings, scanner, and container notes are in
docs/dashboard.md. Read that before touching
src/routes/,src/components/,scan.cjs, ortools/.
Gotchas
bun run checkruns lint, typecheck, and the test suite underbun test;.githooks/pre-commitruns it,bun installpointscore.hooksPaththere, and.github/workflows/check.ymlruns the same command on pushes and pull requests tomain. A manualgit commit --no-verifyskips the local hook, so a greenbun run checkis still the thing to report.database/is gitignored and holdsdashboard.db— the only store. Deleting it drops the engine's inventory too, whichacm listrebuilds from the native configs on its next run.
Agent skills
Issue tracker: local markdown under .scratch/<feature-slug>/ — docs/agents/issue-tracker.md.
Triage labels: needs-triage, needs-info, ready-for-agent, ready-for-human, wontfix —
docs/agents/triage-labels.md. Domain docs: root CONTEXT.md + docs/adr/, created lazily by
/domain-modeling — docs/agents/domain.md.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

