litestar-static-files
SKILL.md
Static Files
Execution Workflow
- Decide whether the app needs normal asset serving, downloadable files, or static HTML mode.
- Mount assets with
create_static_files_router()under an explicit path and controlled directories. - Set delivery behavior intentionally: inline vs attachment, HTML mode, name, schema visibility, and router metadata.
- Choose cache behavior that matches asset mutability and deployment strategy.
- Lock down file system boundaries, especially symlink behavior and any remote/custom file system integration.
- Verify URL reversal,
404behavior, and template references before treating the mount as stable.
Core Rules
- Prefer
create_static_files_router()for current Litestar static-file serving. - Keep static directories separate from writable upload or user-content directories.
- Use explicit URL prefixes such as
/staticor/assetsunless HTML mode intentionally owns/. - Treat directories as relative to the working directory unless you pass explicit absolute paths.
- Use
send_as_attachment=Trueonly when download behavior is intentional. - Use
html_mode=Trueonly when the mounted directory should behave like a static site root. - Keep symlink escaping disabled unless you fully understand the file system and exposure risk.
- Match cache policy to asset versioning; long cache lifetimes require immutable or content-hashed files.
Decision Guide
- Use one static router for ordinary CSS, JS, fonts, and images.
- Use a separate static router when downloadable artifacts need different headers, pathing, or access controls.
- Use
html_mode=Truewhen/index.htmland/404.htmlshould drive static-site behavior. - Use
cache_control=when shared cache headers should apply to every static response from that router. - Use
name=when template helpers orroute_reverse()must distinguish multiple static mounts. - Use
include_in_schema=Falsefor public asset routes unless there is a real reason to document them. - Use
file_system=when assets come from a non-default or remote file system. - Use router-level
guards,middleware, or hooks only when asset access needs policy beyond plain public serving.
Reference Files
Read only the sections you need:
- For basic
create_static_files_router()setup, directory handling, attachment mode, and route naming, read references/router-basics-and-naming.md. - For HTML mode, cache policy, router options, schema visibility, and template URL generation, read references/html-mode-cache-and-urls.md.
- For remote file systems, symlink safety, and test patterns, read references/filesystems-security-and-testing.md.
Recommended Defaults
- Mount ordinary assets under
/staticor/assets. - Keep asset directories read-only at runtime whenever possible.
- Use hashed filenames or versioned asset paths before applying aggressive cache headers.
- Keep static routers out of OpenAPI unless clients truly need them documented.
- Use one clear static route name per mount and reference it through
url_fororroute_reverse()instead of hardcoding paths. - Reserve HTML mode for true static-site behavior rather than as a substitute for template rendering.
Anti-Patterns
- Serving static files from the project root or another overly broad directory.
- Publishing user-upload directories directly through the same static router as trusted build assets.
- Using
/as the mount path without intending HTML mode or full static-site ownership. - Applying long-lived cache headers to mutable filenames.
- Hardcoding asset URLs in templates when route reversal is available.
- Enabling symlink escape behavior without a narrow, audited need.
- Treating a static mount as an authorization-aware download endpoint when the route actually needs per-request business logic.
Validation Checklist
- Confirm the mount path and directory list are explicit and correct relative to the app's working directory.
- Confirm expected assets are reachable and unexpected paths return
404. - Confirm inline vs attachment behavior matches the product requirement.
- Confirm HTML mode serves
index.htmland404.htmlas intended when enabled. - Confirm cache headers align with asset mutability and CDN/browser expectations.
- Confirm
route_reverse()or template URL generation resolves the right path for each static router name. - Confirm any custom file system or symlink configuration is secure by intent.
- Confirm tests cover at least one happy path and one missing-file path.
Cross-Skill Handoffs
- Use
litestar-templatingwhen the main task is rendering HTML that references static assets. - Use
litestar-responseswhen one-off file download responses or manual response headers are the real concern. - Use
litestar-file-uploadswhen the challenge is ingesting or validating files before publication. - Use
litestar-testingwhen static asset routing, headers, and404behavior need regression coverage. - Use
litestar-securitywhen access to static or downloadable files must be guarded intentionally.
Litestar References
Weekly Installs
12
Repository
alti3/litestar-skillsGitHub Stars
5
First Seen
13 days ago
Security Audits
Installed on
opencode12
gemini-cli12
github-copilot12
codex12
kimi-cli12
cursor12