litestar-static-files

- Decide whether the app needs normal asset serving, downloadable files, or static HTML mode.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "litestar-static-files" with this command: npx skills add alti3/litestar-skills/alti3-litestar-skills-litestar-static-files

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, 404 behavior, 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 /static or /assets unless HTML mode intentionally owns / .

  • Treat directories as relative to the working directory unless you pass explicit absolute paths.

  • Use send_as_attachment=True only when download behavior is intentional.

  • Use html_mode=True only 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=True when /index.html and /404.html should 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 or route_reverse() must distinguish multiple static mounts.

  • Use include_in_schema=False for 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 /static or /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_for or route_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.html and 404.html as 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-templating when the main task is rendering HTML that references static assets.

  • Use litestar-responses when one-off file download responses or manual response headers are the real concern.

  • Use litestar-file-uploads when the challenge is ingesting or validating files before publication.

  • Use litestar-testing when static asset routing, headers, and 404 behavior need regression coverage.

  • Use litestar-security when access to static or downloadable files must be guarded intentionally.

Litestar References

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

litestar-caching

No summary provided by upstream source.

Repository SourceNeeds Review
General

litestar-logging

No summary provided by upstream source.

Repository SourceNeeds Review
General

litestar-requests

No summary provided by upstream source.

Repository SourceNeeds Review
General

litestar-databases

No summary provided by upstream source.

Repository SourceNeeds Review