Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/thisismygitrepo/machineconfigWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/rules/thisismygitrepo/machineconfig/python_dev)<a href="https://agentmods.dev/rules/thisismygitrepo/machineconfig/python_dev"><img src="https://agentmods.dev/badge/rules/thisismygitrepo/machineconfig/python_dev/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/rules/thisismygitrepo/machineconfig/python_dev"><img src="https://agentmods.dev/badge/rules/thisismygitrepo/machineconfig/python_dev.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.01593 | $0.01593 |
| Opus 5.5 | $0.00637 | $0.00637 |
| Sonnet 5.5 | $0.00319 | $0.00319 |
| Haiku 4.5 | $0.00159 | $0.00159 |
Grade A, and why
python_dev scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 13d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 91 lines — stays where its author put it; the contents beside it link to each section on GitHub.
applyTo: "**/*.py"
Python Development Environment and tooling:
- Please run any python file using
uv run $file.py - Same for tools, e.g.
un run python pytest $file_path - To add a package, use
cd $repo_root; uv add <package_name>.- Please never mention versions of package, so uv will bring the latest.
- On this note, I have to say that I am seriously concerned about AI using very outdated coding style.
- Use python 3.13 & 3.14 syntax features.
- Use modern standards, e.g. Path from pathlib.
- Never touch
pyproject.tomlmanually, this file is strictly managed byuvtool on your behalf. - If you are writing a test or any temporary script for discovering or undestanding something as an intermediate step, then, please keep all your temp scripts and files under ./.ai/tmp_scripts directory, its included in .gitignore and won't litter the repo. Its also nice if you create a subdirectory therein to contain relevant files for the task at hand, to avoid confusion with other files from other ai agents working simulataneously on other things.
- When you run a command in the terminal, please don't assume that it will run in the correct repo root directory. Always cd first to the repo root, or the desired directory, then run the command.
Python Coding Rules
- Please type hint all the code. Use fully quilaified types, not just generics like dict, list, etc, rather dict[str, int], list[float], 'npt.NDarray[np.float32]', etc.
- Please avoid the type
Any, unless absoloutely necessary. - Please use
# type: ignore blah blah, to silence any warning from pyright or other linters and type checkers, but only when necessary. Otherwise, listen to them and adjust accordingly, or use cast from typing. - Use typeddict, dataclasses and literals when necessary to avoid blackbox str or dict[str, str] etc.
- ALL functions / methods etc must clearly indicate the return type in signature, even if its None.
- Don't make file name
types.pyit conflicts with built-in modules. - Avoid
from futures import annotationsand the like, we are using python 3.13+ so no need for that. - Avoid writing code in init.py files, I hate black magic, avoid shims, and export files.
- Avoid writing short functions with one or two lines, in-line instead.
- Do not leave dangling imports or variables unused, prefix their name with underscore if necessary to indicate they are unused.
- Please prefer to use absolute imports, avoid relatives when possible.
- Use triple quotes and triple double quotes f-strings for string formatting and avoid when possible all goofy escaping when interpolation.
- If needed, opt for polars not pandas, whenever possible.
- when finished, run a linting static analysis check against files you touched, Any fix any mistakes.
- Please run
uv run -m pyright $file_touchedand address all issues. - For all type checkers and linters, like mypy, pyright, pyrefly and pylint, there are config files at different levels of the repo all the way up to home directory level. You don't need to worry about them, just be mindful that they exist. The tools themselves will respect the configs therein.
- If you want to run all linters and pycheckers agains the entire project to make sure everything is clean, I prepared a nice shell script, you can run it from the repo root as
./.ai/scripts/lint_and_type_check.sh. It will produce markdown files that are you are meant to look at @ ./.ai/linters/*.md - Rust-inspired style, e.g.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 13d ago First seen · 91 lines · 1,593 tokens per session scan A b284774af242
python_dev is a cursor rule published in the GitHub repository thisismygitrepo/machineconfig (8 stars, last pushed 6mo ago), licensed Apache-2.0. It adds 1,593 tokens to every session, about $0.0064 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-02.
Other cursor rules, from other repositories
python_tests
We use the unit tests to cover internal behavior that can work without the web / backend counterpart. We aim for 95%+ unit test coverage of our Python code in lib/streamlit.
hypothesis
Definitive guidelines for writing robust, maintainable, and performant property-based tests using Hypothesis with Python and pytest.
mypy
This guide provides definitive, actionable best practices for using mypy to ensure robust static type checking in Python projects, focusing on modern patterns and common pitfalls.
python-general-coding-standards
A set of general standards for Python projects, including type hints, input checking, code style, security, web requests, background work, and tests. It also covers FastAPI-specific tasks such as CORS and authentication.
python-rules-opinionated
../../docs/general/agent-rules/python-rules-opinionated.md.
style
Cursor rule "style" from Ayanami1314/swe-pruner, covering style guide, bad, good, test style and bad.