Litestar routing
Opinionated first-party agent skills, plugins, subagents, slash commands, and MCP servers for the Litestar framework ecosystem — publishable to Claude Code, Gemini CLI, Codex CLI, Cursor, OpenCode, and VS Code/Copilot from a single repo.
npx -y skills add litestar-org/litestar-skills --skill litestar-routingAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 13 stars13 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Auto-activate for Controller, Router, @get/@post/@put/@patch/@delete, route_handler, path params, app/domain modules, or Autowire layout. Not for frontend routers.
SKILL.md
3.0 KB, as published. Nobody here has run it
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
FromPath[T],FromQuery[T],FromHeader[T], andFromCookie[T]for unconstrained request parameters. - Use
Annotated[T, PathParameter(...)],QueryParameter(...),HeaderParameter(...), orCookieParameter(...)when the parameter needs constraints, metadata, or a wire name. Do not use implicit parameters or the deprecatedfield: T = Parameter(...)form. - Use typed path parameters and explicit return annotations.
Quick Reference
- Controller and route patterns: routing.md
- Domain folder layout: domains.md
- End-to-end vertical slice: example.md
- Automatic domain-package registration: litestar-autowire
Workflow
- Identify the domain boundary and URL prefix.
- Pick a Controller when routes share path, guards, dependencies, or tags.
- Keep data access in services and validation in DTOs.
- Wire the Controller into the app explicitly or through Litestar Autowire.
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.
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.
Example
from litestar import Controller, get
from litestar.di import NamedDependency
class UserController(Controller):
path = "/users"
@get("/")
async def list_users(
self,
users_service: NamedDependency[UserService],
) -> list[UserRead]:
return await users_service.list_users()
</example>
References Index
Official References
- https://docs.litestar.dev/ - Litestar documentation
- https://docs.litestar.dev/latest/reference/ - Litestar API reference
- https://github.com/litestar-org/litestar/tree/v2.24.0 - Audited Litestar 2.24.0 source