Pre-action boundary checking — validates agent tool calls against declared capabilities and task contracts
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
FastAPI patterns for high-performance async APIs
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Apply FastAPI patterns for building high-performance async APIs.
structure:
domain_based: true
module_contents:
- router.py: API endpoints
- schemas.py: Pydantic models
- models.py: Database models
- service.py: Business logic
- dependencies.py: Route validators
- constants.py: Module constants
- config.py: Module configuration
- exceptions.py: Custom exceptions
- utils.py: Helper functions
imports:
style: explicit
example: "from src.auth import constants as auth_constants"
layout: |
src/
├── auth/
│ ├── router.py
│ ├── schemas.py
│ ├── models.py
│ ├── service.py
│ └── dependencies.py
├── users/
│ └── ...
├── config.py
└── main.py
io_intensive:
use: "async def"
await: "asyncio.sleep(), httpx, asyncpg, etc."
example: |
async def fetch_data():
async with httpx.AsyncClient() as client:
response = await client.get(url)
return response.json()
sync_io:
use: "def (regular function)"
reason: FastAPI offloads to threadpool automatically
example: |
def read_file():
with open('file.txt') as f:
return f.read()
cpu_intensive:
avoid: async and threadpool
use: separate worker processes
example: "Use Celery or multiprocessing"
never:
- "time.sleep() in async functions"
- "Blocking I/O in async functions"
validation:
use_builtin: regex, enums, email, URL validators
custom_validators: for complex logic
base_model:
create_custom: true
purpose: enforce application-wide standards
example: |
from pydantic import BaseModel
from datetime import datetime
class AppBaseModel(BaseModel):
class Config:
from_attributes = True
json_encoders = {
datetime: lambda v: v.isoformat()
}
settings:
split: across modules
avoid: single global configuration
example: |
# auth/config.py
class AuthSettings(BaseSettings):
jwt_secret: str
jwt_algorithm: str = "HS256"
# database/config.py
class DatabaseSettings(BaseSettings):
url: str
pool_size: int = 5
usage:
- Dependency injection
- Validation against database
- Authentication/authorization
- Request scoped caching
patterns:
chain: avoid code repetition
cache: FastAPI caches within request scope
decouple: small, reusable functions
example: |
async def get_current_user(
token: str = Depends(oauth2_scheme),
db: Session = Depends(get_db)
) -> User:
user = await db.get_user_by_token(token)
if not user:
raise HTTPException(status_code=401)
return user
async def get_active_user(
user: User = Depends(get_current_user)
) -> User:
if not user.is_active:
raise HTTPException(status_code=403)
return user
custom_exceptions:
scope: module-specific
purpose: clarity and consistency
pattern: |
# auth/exceptions.py
class AuthException(Exception):
pass
class InvalidCredentials(AuthException):
pass
class TokenExpired(AuthException):
pass
# auth/router.py
@router.post("/login")
async def login(credentials: LoginSchema):
try:
return await auth_service.login(credentials)
except InvalidCredentials:
raise HTTPException(
status_code=401,
detail="Invalid credentials"
)
exception_handlers: |
@app.exception_handler(AuthException)
async def auth_exception_handler(request, exc):
return JSONResponse(
status_code=401,
content={"detail": str(exc)}
)
naming:
establish: upfront conventions
consistency: across all models
migrations:
tool: Alembic
naming: explicit naming rules
design:
approach: SQL-first
then: add Pydantic models
patterns: |
# Use async database drivers
from sqlalchemy.ext.asyncio import AsyncSession
async def get_user(db: AsyncSession, user_id: int):
result = await db.execute(
select(User).where(User.id == user_id)
)
return result.scalar_one_or_none()
routing:
prefix: meaningful module prefix
tags: for documentation grouping
responses:
schema: always define response models
status_codes: document all possible codes
example: |
router = APIRouter(
prefix="/users",
tags=["users"]
)
@router.get(
"/{user_id}",
response_model=UserResponse,
responses={
404: {"model": ErrorResponse}
}
)
async def get_user(user_id: int):
...
setup:
async_client: from day one
structure: mirror module layout
patterns: |
import pytest
from httpx import AsyncClient
@pytest.fixture
async def client():
async with AsyncClient(app=app, base_url="http://test") as ac:
yield ac
@pytest.mark.asyncio
async def test_get_user(client):
response = await client.get("/users/1")
assert response.status_code == 200
When writing FastAPI code:
async def for I/O operations아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
Pre-action boundary checking — validates agent tool calls against declared capabilities and task contracts
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Auto-detect project context and optimize harness — deactivate unused agents/skills, suggest missing experts, generate project profile
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Adversarial code review using attacker mindset — trust boundary, attack surface, business logic, and defense evaluation
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Apache Airflow best practices for DAG authoring, testing, and production deployment
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Alembic migration patterns for naming conventions, safety checks, expand-contract, env.py configuration, and CI integration
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Pre-routing ambiguity analysis — scores request clarity and asks clarifying questions when needed (inspired by ouroboros)
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.