agentleFS
MicrosoftKnown publishermicrosoft/amplifier-smart-tool-creator/AGENTS.md

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.

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
  1. Very specific:

    If not already, set up the environment by following docs/DEVELOPMENT.md.

    line 5
  2. Very specific:

    After making changes, prek run --all-files and uv run pytest must pass before the work is done.

    line 6
  3. Distinctive:

    Never modify this file unless explictly told.

    line 12
  4. Distinctive:

    When adding to existing documents, add only what's needed.

    line 17
  5. Distinctive:

    Do not restructure or rewrite existing content unless asked.

    line 18
  6. Distinctive:

    Always prefer code blocks and other formatting over tables.

    line 19
  7. Distinctive:

    Never write em dashes

    line 21
  8. Distinctive:

    Don't generate characters that a user could not type on a standard keyboard like fancy arrows (layout trees are fine)

    line 29
  9. Distinctive:

    Follow the Google Python Style Guide.

    line 32
  10. Very specific:

    NEVER add imports to __init__.py files.

    line 33
  11. Very specific:

    Always prefer pathlib for dealing with files.

    line 34
  12. Very specific:

    When using pathlib, always Use .parents[i] syntax to go up directories instead of using .parent multiple times.

    line 35
  13. Distinctive:

    When writing tests, use pytest and pytest-asyncio.

    line 36
  14. Distinctive:

    Prefer using loguru for logging instead of the built-in logging module.

    line 37
  15. Very specific:

    NEVER use # type: ignore. It is better to leave the issue and have the user work with you to fix it.

    line 38
  16. Distinctive:

    Don't put types in quotes unless it is absolutely necessary to avoid circular imports and forward references.

    line 39
  17. Very specific:

    When adding new dependencies, you must use uv add <package>.

    line 40
  18. Very specific:

    When constructing long strings like prompts for LLMs, use python-liquid's render function:

    line 41
  19. Very specific:

    Run prek run --all-files when you are done with code changes and fix everything it reports.

    line 49
  20. Very specific:

    NEVER add a bare *, keyword-only marker to a function signature.

    line 50

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
AGENTS.md

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-files and uv run pytest must pass before the work is done.
  • docs/00-vision.md is the source of truth for what this tool is and is not. Then README.md and docs/DEVELOPMENT.md, then the rest of docs/. 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 Intelligence interface, never an SDK directly, and their help text says they are model-backed.
  • A capability is its code, a row in CAPABILITIES, and a SKILL.md beside that code carrying its arguments, a worked invocation, its result, and its failures. <command> --help renders that skill, <command> -h stays 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 uv as the package and project manager. You must always follow best Python practices.
    • To figure out how uv works, start by using uv --help.
  • 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.
  • ty by 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.open instead of open.
  • When using pathlib, always Use .parents[i] syntax to go up directories instead of using .parent multiple 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 the pyproject.toml to follow the convention for versions like the other dependencies.
  • When constructing long strings like prompts for LLMs, use python-liquid's render function:
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-files when 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

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.