nomimono
AGENTS.md0 starsChanged 44 days agoMITView on GitHub
A domain-agnostic monorepo contract, delivered as a versioned package. Consumers attach this repo at packages/nomimono, import mono.just, and get a just door, a buck2 build graph, an AGENTS.md contract, and a spec-first lifecycle, with no opinion about languages, vendors, or domains. This file is the contract for working on nomimono itself (called monomono before 0.5.0). template/.agents/AGENTS.md is the contract consumers get.
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,542 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 repository4 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- template/CLAUDE.mdCLAUDE.md
- nomimonoSkill
The file
We split this AGENTS.md into the rules it gives an agent
2 rules. About 0 are common, 0 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 15
Never edit rules/lua/*.lua with perl: @word and $" are interpolated.
- Very specific: line 20
Only prose: AGENTS.md, README.md, LICENSE, and skills/nomimono/SKILL.md (the agent skill, kept accurate to the recipes it describes).
≈ “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
🍶 nomimono
A domain-agnostic monorepo contract, delivered as a versioned package. Consumers attach this repo at packages/nomimono, import mono.just, and get a just door, a buck2 build graph, an AGENTS.md contract, and a spec-first lifecycle, with no opinion about languages, vendors, or domains.
This file is the contract for working on nomimono itself (called monomono before 0.5.0). template/.agents/AGENTS.md is the contract consumers get.
Rules
- Presuppose nothing a consumer did not ask for. No language, vendor, cloud, framework, or domain name may appear in
template/,scripts/, orrules/as a default. Toolchains are fragments the consumer adds; ecosystems are adapters the consumer picks. template/is the product. Files there are copied once bymono init, never overwritten. If a change needs to reach existing consumers, it is a migration inmigrations/<version>.sh, not a template edit.scripts/is the package's behavior. Bash and awk only,set -euo pipefail, sourcedscripts/lib.sh. No interpreter beyond a POSIX shell host is required; buck2's ownpython_bootstraptoolchain is the prelude's, not ours. Every script has ajustroute inmono.just.rules/is the@nomimono//buck2 cell.rules/defs.bzlis macros over the bundled prelude.rules/lua/is the one set of real rules, because the prelude has no Lua and the graph for scripts is the point of the package. Add another rule family only when the prelude cannot express it.rules/luaattribute names are frozen underRULES_API; a change bumps it and ships a migration. Every rule script and everything underrules/lua/lib/monomust run on Lua 5.1, 5.3, 5.4 and LuaJIT:read("*a"),(table.unpack or unpack),(loadstring or load), nogoto, no//, noutf8. The self-test runs the whole tree under each.- Telemetry vocabulary is closed and domain-free:
gen_ai.*(OpenTelemetry) is adopted,nomimono.*is ours, nothing else is named in the package. A consumer supplies its collector's names through a profile (MONO_TELEMETRY_PROFILE,telemetry.vocabulary); the self-test proves a profile with a third party's names, the package never mentions them. - Never edit
rules/lua/*.luawith perl:@wordand$"are interpolated. Use sed or a heredoc. toolchains/*.BUCKare fragments. Each names a prelude system toolchain with the name the prelude expects.adapters/*.shimplementensure|add|update|syncfor one ecosystem, withPKG_DIRset. They shell out to that ecosystem's own client.- Versions are semver tags
vX.Y.ZmatchingVERSION. A breaking change to a consumer-owned file ships with a migration. - This repo is its own first consumer for
just: rootjustfileimportsmono.justandmono.tomlsaysmode = "self". It is not a buck2 project root, because a nested cell may not carry its own[cells];just selftestscaffolds a throwaway consumer and runs itsjust checkinstead. - Only prose:
AGENTS.md,README.md,LICENSE, andskills/nomimono/SKILL.md(the agent skill, kept accurate to the recipes it describes). Usage isjust --listand script headers.
Folders
| Path | Owns |
install.sh | Machine install: just, buck2, and the bootstrap under ~/.local/bin. Standalone. |
bin/nomimono | Bootstrap. Attaches the package to a repo at packages/nomimono and scaffolds it. Standalone. |
mono.just | Recipes every consumer imports. |
scripts/ | Behavior behind those recipes. lib.sh, build/, tools/, update/. |
rules/ | Starlark macros, the @nomimono// cell. |
toolchains/ | Toolchain fragments (<name>.BUCK). |
adapters/ | Package-ecosystem adapters. |
template/ | The consumer skeleton. |
migrations/ | <version>.sh scripts run in order on just mono update. |
test/ | init.sh scaffolds two throwaway consumers and proves every feature: sh and Lua tests, bundles, hosts (C, Rust, wasm), lint/format/meta/typecheck, Gherkin + trace, coverage, hooks, 5.1/5.3/LuaJIT, lua-host/lua-config, provider refusal, and the 0.5.0 rename run by a real 0.4.3 updater. MONO_SELFTEST_SKIP narrows it. |
skills/nomimono/SKILL.md | The agent skill: how to work in a nomimono repo. Install it with a symlink from ~/.claude/skills/nomimono. |
.github/workflows/selftest.yml | CI: the self-test on ubuntu and macOS, on push, tags and pull requests. |
Release
just selftest
just release X.Y.Z # writes VERSION, commits, tags vX.Y.Z, pushesConsumers move with just mono update [vX.Y.Z].
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.

