litestar-htmx
SKILL.md
HTMX
Execution Workflow
- Decide whether HTMX should be enabled globally with
HTMXPluginor locally withrequest_class=HTMXRequest. - Shape handlers around one contract: full page for normal requests, fragment or HTMX-aware response for HTMX requests.
- Read request context from
request.htmxinstead of hand-parsing HTMX headers. - Choose the right response primitive:
HTMXTemplatefor rendered fragments or the dedicated HTMX response classes for redirect, refresh, swap, retarget, event, history, or polling behavior. - Keep templates small and swap-oriented so each endpoint returns only the markup or signal the target element needs.
- Verify both non-HTMX and HTMX behaviors in tests, including headers, redirect semantics, and fragment shape.
Core Rules
- Use
HTMXPlugin()when most of the app should speak HTMX-aware requests. - Use
request_class=HTMXRequestlocally when only one app layer or route needs HTMX support. - Prefer
request.htmxandHTMXDetailsproperties over manual header inspection. - Keep full-page and fragment rendering intentional; do not accidentally return layout HTML into a fragment swap target.
- Annotate
HTMXTemplatehandlers as returningTemplate, matching the Litestar docs. - If you trigger an HTMX event from
HTMXTemplate, provideafter=and keep it toreceive,settle, orswap. - Use the dedicated HTMX response classes instead of hand-setting
HX-*headers. - Treat HTMX handlers as first-class HTTP endpoints with clear success, validation, and fallback behavior.
Decision Guide
- Use
HTMXPlugin()when HTMX is the dominant interaction model. - Use
HTMXConfig(set_request_class_globally=False)when you want the plugin installed without forcingHTMXRequestat app scope. - Use
request.htmxtruthiness to branch between full-page and fragment responses. - Use
HTMXTemplatewhen the response is HTML and may also needpush_url,re_swap,re_target, or event triggering. - Use
ClientRedirectwhen the browser should redirect with a full reload. - Use
HXLocationwhen the client should navigate without a full page reload and may need target, swap, select, headers, or values. - Use
PushUrlorReplaceUrlwhen you want to return content and also mutate browser history or the location bar. - Use
Reswap,Retarget, orTriggerEventwhen the content stays inline but the HTMX client behavior must change. - Use
ClientRefreshwhen the whole page must refresh. - Use
HXStopPollingfor polling endpoints that should explicitly stop the HTMX client.
Reference Files
Read only the sections you need:
- For global vs local setup,
HTMXPlugin,HTMXConfig,HTMXRequest, andrequest.htmxusage, read references/setup-and-request-patterns.md. - For
HTMXTemplate, full-page vs fragment rendering, and the dedicated HTMX response classes, read references/template-and-response-patterns.md. - For HTMX details properties, history-aware flows, polling, and testing patterns, read references/details-polling-and-testing.md.
Recommended Defaults
- Keep template rendering centralized through normal
template_config; layer HTMX on top of existing server-rendered HTML rather than inventing a separate rendering stack. - Use
HTMXPlugin()when most handlers will needrequest.htmx. - Branch once near the handler boundary between full-page and fragment rendering.
- Return the smallest useful HTML fragment for the current swap target.
- Prefer
HTMXTemplateand the built-in HTMX response classes over manual header management. - Keep route URLs stable so
push_url,replace_url, andHXLocationremain predictable in tests and browser history.
Anti-Patterns
- Parsing raw
HX-*headers directly whenrequest.htmxalready provides the values. - Returning a full layout to an element that expects only a fragment.
- Annotating handlers as
HTMXTemplateinstead ofTemplate. - Mixing JSON API behavior and fragment HTML behavior without an explicit branching contract.
- Hand-crafting HTMX response headers when a Litestar response class already models the behavior.
- Using HTMX response primitives without covering the non-HTMX fallback path when the route can also be opened directly.
- Treating polling, redirects, or event triggers as frontend-only concerns and leaving the server contract implicit.
Validation Checklist
- Confirm HTMX enablement is global or local by intent.
- Confirm non-HTMX requests still receive a valid page or fallback response.
- Confirm HTMX requests return fragment-sized HTML or the intended HTMX response class.
- Confirm
request.htmxfields used by the handler actually match the client-side HTMX attributes in play. - Confirm
HTMXTemplateevent triggering includesafter=when required. - Confirm redirect, push, replace, retarget, swap, refresh, and polling behavior use the correct response primitive.
- Confirm templates do not depend on layout-only context when rendered as fragments.
- Confirm tests cover both body content and HTMX behavior.
Cross-Skill Handoffs
- Use
litestar-templatingfor engine setup, template directories, shared layouts, and template helper concerns. - Use
litestar-responseswhen the main issue is generic response metadata rather than HTMX-specific headers and flow control. - Use
litestar-routingwhen controller/router-levelrequest_classplacement or route structure is the real problem. - Use
litestar-testingto assert fragment HTML, redirects, polling stop behavior, and HTMX header-driven contracts.
Litestar References
Weekly Installs
12
Repository
alti3/litestar-skillsGitHub Stars
5
First Seen
14 days ago
Security Audits
Installed on
opencode12
gemini-cli12
github-copilot12
codex12
kimi-cli12
cursor12