amplifier-smart-tool-creator
AGENTS.md1 starsChanged 46 days agoMITView on GitHub
This is a Smart Tool that must conform to Microsoft's Amplifier Smart Tool Spec.
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,439 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 repository5 other files it gives its agents.
- smart-tool-creatorSkill
- add_smart_capabilitySkill
- check_conformanceSkill
- check_spec_adherenceSkill
- initSkill
The file
Show its rules and text
We split this AGENTS.md into the rules it gives an agent
20 rules. About 0 are common, 10 are distinctive, and 10 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈10
Distinctive · estimate
This author's own choices. Worth a look.
10
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 5
If not already, set up the environment by following docs/DEVELOPMENT.md.
- Very specific: line 6
After making changes, prek run --all-files and uv run pytest must pass before the work is done.
- Distinctive: line 12
Never modify this file unless explictly told.
- Distinctive: line 17
When adding to existing documents, add only what's needed.
- Distinctive: line 18
Do not restructure or rewrite existing content unless asked.
- Distinctive: line 19
Always prefer code blocks and other formatting over tables.
- Distinctive: line 21
Never write em dashes
- Distinctive: line 29
Don't generate characters that a user could not type on a standard keyboard like fancy arrows (layout trees are fine)
- Distinctive: line 32
Follow the Google Python Style Guide.
- Very specific: line 33
NEVER add imports to __init__.py files.
- Very specific: line 34
Always prefer pathlib for dealing with files.
- Very specific: line 35
When using pathlib, always Use .parents[i] syntax to go up directories instead of using .parent multiple times.
- Distinctive: line 36
When writing tests, use pytest and pytest-asyncio.
- Distinctive: line 37
Prefer using loguru for logging instead of the built-in logging module.
- Very specific: line 38
NEVER use # type: ignore. It is better to leave the issue and have the user work with you to fix it.
- Distinctive: line 39
Don't put types in quotes unless it is absolutely necessary to avoid circular imports and forward references.
- Very specific: line 40
When adding new dependencies, you must use uv add <package>.
- Very specific: line 41
When constructing long strings like prompts for LLMs, use python-liquid's render function:
- Very specific: line 49
Run prek run --all-files when you are done with code changes and fix everything it reports.
- Very specific: line 50
NEVER add a bare *, keyword-only marker to a function signature.
≈ “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
This is a Smart Tool that must conform to Microsoft's Amplifier Smart Tool Spec.
Orientation
- If not already, set up the environment by following docs/DEVELOPMENT.md. It also has every command for linting, formatting, type checking, testing, and running the conformance kit.
- After making changes,
prek run --all-filesanduv run pytestmust pass before the work is done. docs/00-vision.mdis the source of truth for what this tool is and is not. ThenREADME.mdanddocs/DEVELOPMENT.md, then the rest ofdocs/. When work changes any of them, propose the doc updates at the end and call out contradictions.- The library is the tool. Every capability lives in the library and is reachable from
lib.py. The CLI and any other surface are thin wrappers: argument parsing and I/O conventions, then a call into the library. Capability that exists only in a wrapper is a defect. - Deterministic capabilities run with no model provider configured. Model-backed capabilities go through the
Intelligenceinterface, never an SDK directly, and their help text says they are model-backed. - A capability is its code, a row in
CAPABILITIES, and aSKILL.mdbeside that code carrying its arguments, a worked invocation, its result, and its failures.<command> --helprenders that skill,<command> -hstays the terse generated summary, and the tool's own skill stays a router pointing at both. - Failures name what went wrong and how to fix it. The caller is usually an agent.
- Never modify this file unless explictly told.
Writing Style
- Be concise. The user will not read walls of text.
- When adding to existing documents, add only what's needed.
- Do not restructure or rewrite existing content unless asked.
- Always prefer code blocks and other formatting over tables.
- Match the tone and density of what's already in the file.
- Never write em dashes
Python Development Instructions
- This is a production-grade Python project using
uvas the package and project manager. You must always follow best Python practices.- To figure out how
uvworks, start by usinguv --help.
- To figure out how
- Make sure any comments in code are necessary. A necessary comment captures intent that cannot be encoded in names, types, or structure. Comments should be reserved for the "why", only used to record rationale, trade-offs, links to specs/papers, or non-obvious domain insights. They should add signal that code cannot.
- The current code in the package should be treated as an example of high quality code. Make sure to follow its style and tackle issues in similar ways where appropriate.
- Don't generate characters that a user could not type on a standard keyboard like fancy arrows (layout trees are fine)
- Anything is possible. Do not blame external factors after something doesn't work on the first try. Instead, investigate and test assumptions through debugging through first principles.
tyby Astral is used for type checking. Always add appropriate type hints such that the code would pass ty's type check.- Follow the Google Python Style Guide.
- NEVER add imports to init.py files. Leave them empty unless absolutely necessary.
- Always prefer pathlib for dealing with files. Use
Path.openinstead ofopen. - When using pathlib, always Use
.parents[i]syntax to go up directories instead of using.parentmultiple times. - When writing tests, use pytest and pytest-asyncio.
- Prefer using loguru for logging instead of the built-in logging module. Do not add logging unless requested.
- NEVER use
# type: ignore. It is better to leave the issue and have the user work with you to fix it. - Don't put types in quotes unless it is absolutely necessary to avoid circular imports and forward references.
- When adding new dependencies, you must use
uv add <package>. AFTER that, update thepyproject.tomlto follow the convention for versions like the other dependencies. - When constructing long strings like prompts for LLMs, use
python-liquid'srenderfunction:
from liquid import render
print(render("Hello, {{ you }}!", you="World"))
# Hello, World!- To learn about how packages work, you should read from the relevant source code. This is especially important when determining which types to use.
- Run
prek run --all-fileswhen you are done with code changes and fix everything it reports; it runs the lock, lint, format, and type checks. - NEVER add a bare
*,keyword-only marker to a function signature. Write plain positional-or-keyword parameters and call them by keyword.
Key Files
@docs/DEVELOPMENT.md @docs/00-vision.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.

