Auto-activate for Controller classes, Router, route decorators, @get/@post/@put/@patch/@delete, route_handler, path params, app/domain modules, or DomainPlugin layout. Use when designing Litestar routes, handlers, Controller grouping, Router composition, or domain folders. Not for non-Litestar routing or frontend routers.
Scanned 5/28/2026
Install via CLI
openskills install litestar-org/litestar-skills---
name: litestar-routing
description: "Auto-activate for Controller classes, Router, route decorators, @get/@post/@put/@patch/@delete, route_handler, path params, app/domain modules, or DomainPlugin layout. Use when designing Litestar routes, handlers, Controller grouping, Router composition, or domain folders. Not for non-Litestar routing or frontend routers."
---
# Litestar Routing
Use this skill for route handlers, Controllers, Routers, domain clustering, and endpoint module layout.
## Code Style Rules
- Cluster Controllers by domain, not HTTP method.
- Keep handlers thin: parse request data, call a service, return a DTO or response object.
- Put shared path, dependencies, guards, and tags on the Controller class.
- Use typed path parameters and explicit return annotations.
## Quick Reference
- Controller and route patterns: [routing.md](references/routing.md)
- Domain folder layout: [domains.md](references/domains.md)
- End-to-end vertical slice: [example.md](references/example.md)
<workflow>
## Workflow
1. Identify the domain boundary and URL prefix.
2. Pick a Controller when routes share path, guards, dependencies, or tags.
3. Keep data access in services and validation in DTOs.
4. Wire the Controller into the app or DomainPlugin.
</workflow>
<guardrails>
## Guardrails
- Do not group Controllers by HTTP method.
- Do not put authorization logic in handlers; use Guards.
- Do not hand-roll query parameter pagination; use the data-services skill.
- Do not put app-wide plugin setup in route modules.
</guardrails>
<validation>
## Validation Checkpoint
- [ ] Routes are domain-clustered.
- [ ] Handlers are async when they perform I/O.
- [ ] Shared guards and dependencies live on the Controller.
- [ ] DTO and service concerns link to their owning skills.
</validation>
<example>
## Example
```python
from litestar import Controller, get
class UserController(Controller):
path = "/users"
@get("/")
async def list_users(self, users_service: UserService) -> list[UserRead]:
return await users_service.list_users()
```
</example>
## References Index
- [routing.md](references/routing.md)
- [domains.md](references/domains.md)
- [example.md](references/example.md)
## Official References
- <https://docs.litestar.dev/> - Litestar documentation
- <https://docs.litestar.dev/latest/reference/> - Litestar API reference
## Shared Styleguide Baseline
- [General](../litestar-styleguide/references/general.md)
- [Python](../litestar-styleguide/references/python.md)
- [Litestar](../litestar-styleguide/references/litestar.md)
No comments yet. Be the first to comment!