python-general-best-practices

A set of coding rules for modern Python projects that use Flask, a web framework, and SQLite, a small database stored in a file. It covers project layout, naming, type hints, formatting, and tests.

In plain words
What is it for?
Use it when building or reviewing Flask services, SQLite-backed applications, Python modules, routes, and automated tests.
Why use it?
Python projects can become inconsistent and harder to maintain when structure and style vary. These rules give developers a shared way to organize and check the code.

Cursor rule for Cursor

Install

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.

agentmods
npx agentmods add rules/liquidz00/jamfmcp/python-general-best-practices
Clone the repo
git clone --depth 1 https://github.com/liquidz00/jamfmcp

Made for: Cursor.

Per session 0 Nothing until a file matches its globs; then the whole rule loads.
When invoked 548 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin 84% copy Near-identical to another mod in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5 $0.00000 $0.00548
Opus 5 $0.00000 $0.00274
Sonnet 5 $0.00000 $0.00110
Haiku 4.5 $0.00000 $0.00055

Measured 2d ago against content hash 321d9370e7f7, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

python-general-best-practices 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 2d 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.

Origin

This is a copy

84% identical to python-coding — 64 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.

.cursor/rules/python-general-best-practices.mdc · 81 lines

How it starts

The opening of the file, as written. The whole thing — 81 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Python Best Practices

Project Structure

  • Place tests in tests/ directory parallel
  • Keep configuration in config/ or as environment variables
  • Store requirements in pyproject.toml
  • Place static files in static/ directory
  • Use templates/ for Jinja2 templates

Code Style

  • Follow Black code formatting
  • Use isort for import sorting
  • Follow PEP 8 naming conventions:
    • snake_case for functions and variables
    • PascalCase for classes
    • UPPER_CASE for constants
  • Maximum line length of 100 characters
  • Use absolute imports over relative imports
  • Use proper response formats

Type Hints

  • Use type hints for all function parameters and returns
  • Use modern Python 3.10+ union syntax: str | None instead of Optional[str]
  • Use built-in generics: list[str], dict[str, int], tuple[int, ...], set[int]
  • Import types from typing module for types not available as builtins (e.g., TypedDict, TypeVar, Literal, Callable, Protocol, Any)
  • Use TypeVar for generic types
  • Define custom types in types.py
  • Use Protocol for duck typing

Testing

  • Use pytest for testing
  • Write tests for all routes
  • Use pytest-cov for coverage
  • Implement proper fixtures
  • Use proper mocking with pytest-mock
  • Test all error scenarios

Security

  • Sanitize all user inputs
  • Use proper session configuration
  • Implement proper logging
  • Follow OWASP guidelines

Error Handling

  • Create custom exception classes
  • Use proper try-except blocks
  • Implement proper logging
  • Return proper error responses
  • Handle edge cases properly
  • Use proper error messages

Documentation

  • Use reStructuredText-style docstrings
  • Document all public APIs
  • Keep README.md updated
  • Use proper inline comments
  • Generate API documentation
  • Document environment setup

Development Workflow

  • Leverage uv for package management
  • Use virtual environments (venv)
  • Implement pre-commit hooks
  • Use proper Git workflow
  • Follow semantic versioning
  • Use proper CI/CD practices
  • Implement proper logging

Read the full file on GitHub · 81 lines

Changes

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.

  1. 2d ago First seen · 81 lines · 548 tokens per session scan A 321d9370e7f7

Subscribe to this mod's changes

python-general-best-practices is a cursor rule published in the GitHub repository liquidz00/jamfmcp (8 stars, last pushed 10d ago), licensed Apache-2.0. It costs nothing until one of its globs matches a file; then it loads 548 tokens. A static security scan graded it A with 0 findings. It is 84% identical to python-coding, differing in 64 lines, and is treated as a copy.