- Add find_github_skills() to discover skills in .github/skills/ not reachable via the skills/ symlink tree (picks up 11 missing skills) - Add collision protection: if a target directory exists and was not from a previous Microsoft sync, append -ms suffix instead of overwriting - Microsoft mcp-builder → mcp-builder-ms (community version preserved) - Microsoft skill-creator → skill-creator-ms (community version preserved) - Total skills: 856 (was 845, +11 newly discovered)
53 lines
1.6 KiB
Markdown
53 lines
1.6 KiB
Markdown
---
|
|
name: fastapi-router-py
|
|
description: Create FastAPI routers with CRUD operations, authentication dependencies, and proper response models. Use when building REST API endpoints, creating new routes, implementing CRUD operations, or adding authenticated endpoints in FastAPI applications.
|
|
---
|
|
|
|
# FastAPI Router
|
|
|
|
Create FastAPI routers following established patterns with proper authentication, response models, and HTTP status codes.
|
|
|
|
## Quick Start
|
|
|
|
Copy the template from [assets/template.py](assets/template.py) and replace placeholders:
|
|
- `{{ResourceName}}` → PascalCase name (e.g., `Project`)
|
|
- `{{resource_name}}` → snake_case name (e.g., `project`)
|
|
- `{{resource_plural}}` → plural form (e.g., `projects`)
|
|
|
|
## Authentication Patterns
|
|
|
|
```python
|
|
# Optional auth - returns None if not authenticated
|
|
current_user: Optional[User] = Depends(get_current_user)
|
|
|
|
# Required auth - raises 401 if not authenticated
|
|
current_user: User = Depends(get_current_user_required)
|
|
```
|
|
|
|
## Response Models
|
|
|
|
```python
|
|
@router.get("/items/{item_id}", response_model=Item)
|
|
async def get_item(item_id: str) -> Item:
|
|
...
|
|
|
|
@router.get("/items", response_model=list[Item])
|
|
async def list_items() -> list[Item]:
|
|
...
|
|
```
|
|
|
|
## HTTP Status Codes
|
|
|
|
```python
|
|
@router.post("/items", status_code=status.HTTP_201_CREATED)
|
|
@router.delete("/items/{id}", status_code=status.HTTP_204_NO_CONTENT)
|
|
```
|
|
|
|
## Integration Steps
|
|
|
|
1. Create router in `src/backend/app/routers/`
|
|
2. Mount in `src/backend/app/main.py`
|
|
3. Create corresponding Pydantic models
|
|
4. Create service layer if needed
|
|
5. Add frontend API functions
|