dotfiles
AGENTS.md222 starsChanged 54 days agoMITView on GitHub
These are global defaults. Apply repository-specific guidance and conventions to the work at hand; use judgment where these defaults do not fit. - Ground decisions in actual code, requirements, and observed behavior. Inspect enough implementation, callers, and tests to understand the change. Verify unfamiliar or changing APIs against authoritative docs or dependency source. - Challenge flawed assumptions with evidence and explain the decisive tradeoff. Ask when uncertainty would materially change the design or scope; make routine implementation decisions independently. -…
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 repository13 other files it gives its agents.
- animated-spritesSkill
- anti-slopSkill
- code-reviewerSkill
- create-readmeSkill
- cut-readySkill
- engineering-drawingsSkill
- logging-sucksSkill
- motronicSkill
- neo-industrial-designSkill
- prompt-engineerSkill
- summarize-workSkill
- web-perfSkill
- wow-addon-developmentSkill
The file
We split this AGENTS.md into the rules it gives an agent
8 rules. About 0 are common, 8 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈8
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 12
Ask when uncertainty would materially change the design or scope.
- Distinctive: line 14
Treat questions, reviews, and plans as read-only unless implementation is requested.
- Distinctive: line 25
Prefer straightforward control flow, descriptive names, and cohesive modules with explicit dependencies.
- Distinctive: line 32
Use the established toolchain, formatters, linters, and generators.
- Distinctive: line 64
Test observable contracts and meaningful regressions, including failure paths and boundary cases.
- Distinctive: line 70
Keep fixtures and assertions readable, deterministic, and isolated.
- Distinctive: line 83
Write for maintainers who have no conversation history.
- Distinctive: line 94
Consider algorithmic cost, allocations, I/O, concurrency, and resource lifetime as part of design.
≈ “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
Software engineering
These are global defaults. Apply repository-specific guidance and conventions to the work at hand; use judgment where these defaults do not fit.
Scope and technical judgment
- Ground decisions in actual code, requirements, and observed behavior. Inspect enough implementation, callers, and tests to understand the change. Verify unfamiliar or changing APIs against authoritative docs or dependency source.
- Challenge flawed assumptions with evidence and explain the decisive tradeoff. Ask when uncertainty would materially change the design or scope; make routine implementation decisions independently.
- Treat questions, reviews, and plans as read-only unless implementation is requested. Complete implementation, relevant integration, validation, and fixes within the requested scope. Report findings with concrete evidence and impact; state blockers and verification gaps rather than implying completion.
Structure and maintainability
- Solve the underlying problem at the layer that owns it. Reuse existing shared components and conventions before adding parallel implementations. Keep the change coherent and focused; include refactoring when it makes the solution sound, without turning a local fix into an unrelated redesign.
- Prefer straightforward control flow, descriptive names, and cohesive modules with explicit dependencies. Keep invariants and related behavior together; separate domain logic from I/O when it improves reasoning and testing.
- Introduce abstractions for a concrete responsibility or repeated concept, not hypothetical future uses. A little duplication can be clearer than indirection that hides meaningful differences. Remove obsolete code rather than preserving speculative extension points.
- Use the established toolchain, formatters, linters, and generators. Change the source of generated artifacts and review the resulting diff. Keep dependencies and lockfile changes deliberate and limited to the task; weigh a dependency's maintenance and operational costs against what it replaces.
Types, APIs, and errors
- Model domain concepts and valid states explicitly. Use the language's type system to make invalid combinations difficult to express, while keeping types understandable. Prefer narrowing over unchecked assertions or casts. Handle closed variants exhaustively; handle unknown external values deliberately when formats are extensible. Fix diagnostics where practical and justify necessary suppressions.
- Validate external data at trust boundaries; a static type is not runtime validation. Keep unavoidable unsafe operations or type-system escapes local, and document the invariant that makes them sound.
- Design APIs from the caller's perspective: clear names, consistent semantics, small public surfaces, explicit ownership and side effects. Prefer named options or domain types when positional flags obscure intent. Account for compatibility in public APIs, wire formats, persisted data, and configuration.
- Represent expected failure explicitly using the codebase's idioms. Preserve useful error context and distinguish absence, invalid input, and operational failure. Avoid silently swallowed errors, success-shaped fallbacks, and panics for recoverable conditions; handle or propagate errors where responsibility is clear.
Tests and validation
- Match validation to the behavior changed and the risk involved. Use focused tests and checks while iterating; broaden coverage for shared contracts, platform differences, or integration risk. Once the relevant checks pass, repeat them only when new changes or evidence justify it.
- Test observable contracts and meaningful regressions, including failure paths and boundary cases. Check existing coverage first. Choose the test layer that can expose the bug; repeat scenarios across layers only when they protect distinct contracts. Include type-level checks when inference or compile-time rejection is part of the API contract. Avoid assertions on details that may change safely.
- Keep fixtures and assertions readable, deterministic, and isolated. Reuse established helpers without hiding the inputs that explain a scenario. Review changed snapshots and generated expectations against intended behavior.
- Exercise UI changes in the running interface and inspect them visually when possible, including relevant interaction and layout states. Report unavailable environments honestly. Distinguish source changes, passing tests, deployment, and behavior actually observed at runtime.
Comments and documentation
- Let code express the mechanics. Use comments to explain intent, invariants, constraints, and surprising tradeoffs; document public contracts and non-obvious failure behavior. Keep useful existing explanations accurate as behavior changes.
- Write for maintainers who have no conversation history. Describe the current behavior and rationale, using concrete names and examples where helpful. Keep documentation aligned with the implementation; omit iteration history and unnecessary UI copy or explanatory boilerplate.
Observability and performance
- Make important failures and state transitions diagnosable through the existing logging, metrics, and tracing conventions. Include actionable context without secrets or unnecessary personal data. Bound metric cardinality and telemetry volume; avoid duplicate instrumentation and noisy logs that obscure failures.
- Consider algorithmic cost, allocations, I/O, concurrency, and resource lifetime as part of design. Keep work, queues, retries, and retained state bounded where inputs or load can grow. Prefer a simpler algorithm or fewer operations before adding caching or concurrency with new invalidation or coordination costs.
- For performance work, establish a representative baseline and measure the affected path under comparable conditions. Use profiles and benchmarks to locate bottlenecks and assess improvements, including memory and tail behavior when relevant. Report methodology, variability, and tradeoffs; distinguish measured gains from plausible optimizations and avoid unrelated micro-tuning.
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.

