Agents / config
AGENTS.md1 starsChanged 58 days agoApache-2.0View on GitHub
Declarative eval configs. Protected, and executable: a config is untrusted input, not data. Every file here defines what an evaluation measures, which is why the whole directory is a protected path. README.md lists each config and what consumes it; this file is the security and journey contract an agent has to satisfy to add or change one. - The whole directory is protected. Changes need the eval-change-approved label and a code owner, because a threshold or a dataset path edited…
- Reads credentials
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,774 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 repository39 other files it gives its agents.
- agent-core/AGENTS.mdAGENTS.md
- .agents/AGENTS.mdAGENTS.md
- AGENTS.mdAGENTS.md
- behavioral-regression/AGENTS.mdAGENTS.md
- claude-foundation/AGENTS.mdAGENTS.md
- corpora/AGENTS.mdAGENTS.md
- demo/AGENTS.mdAGENTS.md
- docs/AGENTS.mdAGENTS.md
- examples/AGENTS.mdAGENTS.md
- experiments/AGENTS.mdAGENTS.md
- flow-corpus/AGENTS.mdAGENTS.md
- flow-protocol/AGENTS.mdAGENTS.md
- openspec/AGENTS.mdAGENTS.md
- scripts/AGENTS.mdAGENTS.md
- skills/AGENTS.mdAGENTS.md
- tests/AGENTS.mdAGENTS.md
- claude-foundation/CLAUDE.mdCLAUDE.md
- merge-gate-auditorSkill
- update-executive-reportSkill
- update-executive-reportSkill
- architecture-drift-guardSkill
- commonSkill
- corpus-guardianSkill
- dataset-lintSkill
- deploySkill
- e2e-matrix-sentinelSkill
- eval-corpus-forgeSkill
- hierarchical-recursive-brainstormSkill
- model-benchSkill
- openai-judgeSkill
- openspec-implementation-reviewSkill
- openspec-peer-reviewSkill
- openspec-quality-planSkill
- pre-pr-gateSkill
- project-setupSkill
- quality-gateSkill
- refactoring-decomposerSkill
- repo-invariant-reviewSkill
- test-completeness-guardSkill
The file
We split this AGENTS.md into the rules it gives an agent
2 rules. About 0 are common, 1 is distinctive, and 1 is 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.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 5
Every file here defines what an evaluation measures, which is why the whole directory is a protected path.
- Very specific: line 64
A shipped config must be journeyed or explicitly excluded: Every file here is either run end to end by …
≈ “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
AGENTS.md — config
Declarative eval configs. Protected, and executable: a config is untrusted input, not data.
Every file here defines what an evaluation measures, which is why the whole directory is a
protected path. README.md lists each config and what consumes it; this file
is the security and journey contract an agent has to satisfy to add or change one.
Map
| Path | Role |
eval.example.yaml | The canonical offline-runnable example. ../examples/run_offline.py loads it |
testgen_eval.yaml, rca_eval.yaml, requirements_eval.yaml, answer_quality_eval.yaml | The four corpus evals; gate rules are advisory |
testgen_agent_eval.yaml, testgen_agent_empty_eval.yaml | Agent-in-the-loop profile and its empty baseline |
model_target.yaml, nemotron_eval.yaml, lm_studio_eval.yaml | Model-backed and live-endpoint targets |
merge-gate-domains.yaml, agent-authors.yaml, agent-confidence.yaml | Calibrated merge-gate inputs |
legacy.v0_9.yaml | Kept deliberately to exercise the config migration chain |
fixtures/ | A committed calibration fixture, covered by this file |
Diagram
flowchart LR
accTitle: the two gates a config must pass through
accDescr: A config names a callable target and filesystem paths, which the callable allowlist and the data and output roots confine before the engine runs anything.
subgraph C["config/ (you are here)"]
CFG["a config YAML"]
end
ALLOW["EVAL_HARNESS_CALLABLE_TARGET_ALLOWLIST<br/>unset means deny"]
ROOTS["DATA_ROOT / OUTPUT_ROOT"]
TGT["target: import and call"]
DS["dataset read"]
SINK["sink write"]
ENG["engine run"]
JRN["pipeline e2e journey test"]
CFG --> ALLOW
CFG --> ROOTS
ALLOW --> TGT
ROOTS --> DS
ROOTS --> SINK
TGT --> ENG
DS --> ENG
ENG --> SINK
CFG --> JRN
classDef here fill:#e8f0fe,stroke:#1a73e8,stroke-width:2px
class C hereRules that bite here
- The whole directory is protected. Changes need the
eval-change-approvedlabel and a code owner, because a threshold or a dataset path edited here moves every score without touching a scorer. - A config is executable input. The
callabletarget turnsparams.pathinto an import and a call, gated byEVAL_HARNESS_CALLABLE_TARGET_ALLOWLIST. Unset means deny, and matching is on module boundaries, never a string prefix (ADR 0039). Do not add a new config-driven import or filesystem path without routing it through that gate or throughDATA_ROOT/OUTPUT_ROOT. - A shipped config must be journeyed or explicitly excluded. Every file here is either
run end to end by
tests/integration/test_pipeline_e2e.pyor named in that module's exclusion set with a reason. A config that is neither fails the suite, which is howrequirements_eval.yamlonce shipped naming an empty evidence store. - No credentials, ever. Endpoints and keys arrive as environment variables with
${VAR:-default}expansion;../.env.exampleis the canonical set. - No bare numeric literal at a call site. A threshold belongs in a validated config field with the default documented on the field, so it is reviewable here rather than in code.
Verify
python -m pytest tests/integration/test_pipeline_e2e.py -qSubagents
| Task in this directory | Agent | Why |
| Find which tests and docs name a config before renaming it | explorer | Read-only sweep; a config is referenced from tests, docs, the Makefile and CI |
| Run a config end to end offline and read the gate verdict | test-runner | Has Bash; needs the allowlist env var set, which only a shell can do |
| Review a new config before requesting the label | narrow-critic | An unconfined path or a widened allowlist is a security change, not a config tweak |
See also
| Doc | Read it when |
README.md | You need to know what a specific config here is for and what runs it |
../docs/decisions/0039-callable-target-allowlist.md | Your config names a callable target and you need the allowlist semantics |
../corpora/AGENTS.md | The config points at a committed corpus and you are about to change which one |
../scripts/eval_protected_paths.py | You want the authoritative protected-path list before starting work |
../docs/gap-analysis-requirements-eval-2026-09-07.md | You want the worked example of a shipped config that every gate passed and never ran |
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.

