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/awesome-ai-dev/awesome-ai-devWrote 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/awesome-ai-dev/awesome-ai-dev/python-fastapi)<a href="https://agentmods.dev/rules/awesome-ai-dev/awesome-ai-dev/python-fastapi"><img src="https://agentmods.dev/badge/rules/awesome-ai-dev/awesome-ai-dev/python-fastapi/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/awesome-ai-dev/awesome-ai-dev/python-fastapi"><img src="https://agentmods.dev/badge/rules/awesome-ai-dev/awesome-ai-dev/python-fastapi.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.00000 | $0.00590 |
| Opus 5.5 | $0.00000 | $0.00236 |
| Sonnet 5.5 | $0.00000 | $0.00118 |
| Haiku 4.5 | $0.00000 | $0.00059 |
Grade A, and why
python-fastapi 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 1mo 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.
What it actually says
FastAPI 开发规范
Pydantic v2
类型提示
from pydantic import BaseModel, EmailStr, Field
class User(BaseModel):
id: int = Field(default=None, frozen=True)
name: str = Field(min_length=2, max_length=50)
email: EmailStr
role: str = 'user'
model_config = {'str_strip_whitespace': True}
验证器
from pydantic import field_validator
class User(BaseModel):
password: str
@field_validator('password')
@classmethod
def validate_password(cls, v: str) -> str:
if len(v) < 8:
raise ValueError('密码至少8位')
return v
依赖注入
from fastapi import Depends, Request
async def get_current_user(request: Request, token: str = Depends(oauth2_scheme)):
return await verify_token(token)
@app.get('/users/me')
async def read_users(current_user = Depends(get_current_user)):
return current_user
项目结构
app/
├── api/
├── models/
├── schemas/
├── services/
└── main.py
路由
from fastapi import APIRouter, Depends, Query
router = APIRouter()
@router.get('/users')
async def get_users(
page: int = Query(1, ge=1),
page_size: int = Query(10, le=100),
current_user = Depends(get_current_user)
):
offset = (page - 1) * page_size
users = await db.query(User).offset(offset).limit(page_size).all()
return {'data': users, 'page': page}
数据库 (SQLAlchemy 2.0)
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
class UserRepository:
async def get_by_email(self, db: AsyncSession, email: str) -> User | None:
result = await db.execute(
select(User).where(User.email == email)
)
return result.scalar_one_or_none()
最佳实践
- 使用 Pydantic v2 验证
- 异步 SQLAlchemy 2.0
- 依赖注入管理数据库
- 统一错误响应
参考
- 详细:
.cursor/skills/code-review/references/
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.
- 1mo ago First seen · 108 lines · 0 tokens per session scan A 507fac98add6
python-fastapi is a cursor rule published in the GitHub repository awesome-ai-dev/awesome-ai-dev (11 stars, last pushed 7mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 590 tokens. 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-08-30.
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.
django-python
Rules for writing Python services at PostHog (Python servers powered by the Django framework).
py-fast-api
Cursor rules for Python FastAPI backend development and best practices.
python
Python best practices and patterns for modern software development with Flask and SQLite.
python--typescript-guide-cursorrules-prompt-file
Cursor rules for Python development with TypeScript guide integration.
python-conventions
Python coding style, FastAPI endpoint template, code organisation sections.