Individual skill
rails-hotwire
Ruby on Rails Hotwire best practices for building interactive applications with Turbo Drive, Turbo Frames, Turbo Streams, Turbo 8 morphing, and Stimulus controllers. This skill should be used when writing, reviewing, or refactoring Hotwire-powered Rails code to ensure optimal patterns for navigation, partial page updates, real-time broadcasting, morphing, Stimulus controller design, error handling, and progressive enhancement. Triggers on tasks involving Turbo Frames, Turbo Streams, Turbo Drive, broadcasts, morphing, Stimulus controllers, ActionCable, turbo_stream_from, turbo_frame_tag, data-controller, data-action, or Hotwire performance. Complementary to rails-dev, rails-testing, rails-design-system, ruby-optimise, and ruby-refactor skills.
skills/.experimental/rails-hotwire/SKILL.md
Source commit cf93c57cac89d6fc3e4194686000411567f5caf3
What was checked
- Matches the observed repository HEAD
- Yes
- Scanner rules are current
- No
- Repository scan complete
- No
- Skill scan complete
- Yes
- Observed behavior
- Not checked yet
- Last checked
- Nov 5, 2026
These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.
Install this skill
Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.
An install command is unavailable: current rules, complete repository and skill scans, an eligible behavior level and a permitted license are required.
Repository context
- Repository stars (not skill ratings)
- 222
- Repository last updated
- Aug 15, 2026
- License
- MIT
Observed agent integration: No specific integration evidence. Standard SKILL.md installation does not imply verified compatibility.
- engineering Derived category
- design Derived category
- writing Derived category
- data Derived category
- testing Derived category
Files and excerpt
File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.
Browse files
SKILL.mdcore · 9,334 bytesassets/templates/_template.mddoc · 918 bytesmetadata.jsonasset · 1,160 bytesreferences/_sections.mddoc · 2,617 bytesreferences/arch-avoid-client-state.mddoc · 2,535 bytesreferences/arch-frame-vs-stream-decision.mddoc · 2,439 bytesreferences/arch-importmap-management.mddoc · 2,295 bytesreferences/arch-progressive-enhancement.mddoc · 2,514 bytesreferences/arch-stimulus-boundaries.mddoc · 3,208 bytesreferences/bcast-avoid-view-logic-in-models.mddoc · 2,726 bytesreferences/bcast-debounce-n1.mddoc · 2,662 bytesreferences/bcast-model-broadcasts.mddoc · 2,003 bytesreferences/bcast-reconnect-handling.mddoc · 2,733 bytesreferences/bcast-refresh-over-replace.mddoc · 2,535 bytesreferences/bcast-scope-streams.mddoc · 1,878 bytesreferences/bcast-signed-stream-names.mddoc · 2,303 bytesreferences/drive-cache-control.mddoc · 2,111 bytesreferences/drive-confirm-dialog.mddoc · 3,134 bytesreferences/drive-error-recovery.mddoc · 2,850 bytesreferences/drive-form-submissions.mddoc · 2,112 bytesreferences/drive-prefetch-links.mddoc · 1,887 bytesreferences/drive-progress-bar.mddoc · 1,923 bytesreferences/drive-selective-disable.mddoc · 1,989 bytesreferences/drive-visit-actions.mddoc · 1,868 bytesreferences/frame-break-out.mddoc · 3,246 bytesreferences/frame-dom-id.mddoc · 2,392 bytesreferences/frame-empty-state.mddoc · 2,843 bytesreferences/frame-lazy-loading.mddoc · 2,271 bytesreferences/frame-promote-visits.mddoc · 2,591 bytesreferences/frame-scope-navigation.mddoc · 2,038 bytesreferences/frame-src-navigation.mddoc · 2,061 bytesreferences/morph-enable-page-refresh.mddoc · 1,955 bytesreferences/morph-frame-refresh.mddoc · 2,316 bytesreferences/morph-permanent-elements.mddoc · 2,335 bytesreferences/morph-scroll-preservation.mddoc · 2,164 bytesreferences/morph-stimulus-reconnect.mddoc · 3,848 bytesreferences/morph-vs-streams.mddoc · 3,119 bytesreferences/perf-batch-streams.mddoc · 2,082 bytesreferences/perf-frame-caching.mddoc · 2,286 bytesreferences/perf-memory-leak-prevention.mddoc · 2,944 bytesreferences/perf-optimistic-ui.mddoc · 2,867 bytesreferences/perf-prefetch-strategic.mddoc · 2,243 bytesreferences/stim-action-descriptors.mddoc · 3,108 bytesreferences/stim-outlets-communication.mddoc · 2,896 bytesreferences/stim-small-reusable-controllers.mddoc · 3,228 bytesreferences/stim-values-reactive-state.mddoc · 2,843 bytesreferences/stream-action-selection.mddoc · 2,432 bytesreferences/stream-custom-actions.mddoc · 2,407 bytesreferences/stream-http-delivery.mddoc · 2,022 bytesreferences/stream-multi-target.mddoc · 2,079 bytesreferences/stream-progressive-enhance.mddoc · 1,691 bytesreferences/stream-websocket-source.mddoc · 1,884 bytesreferences/test-broadcast-assertions.mddoc · 2,265 bytesreferences/test-frame-navigation.mddoc · 2,469 bytesreferences/test-stream-assertions.mddoc · 2,599 bytesreferences/test-system-test-async.mddoc · 2,421 bytesreferences/test-websocket-timing.mddoc · 2,708 bytes
Read excerpt
# Community Rails Hotwire Best Practices
Comprehensive guide for building interactive Rails applications with Hotwire (Turbo + Stimulus), maintained by Community. Contains 53 rules across 9 categories, prioritized by impact to guide automated refactoring and code generation. Follows the DHH "One Person Framework" philosophy: the server renders HTML, Turbo makes it feel like an SPA, Stimulus adds the sprinkle of JS where needed.
## When to Apply
Reference these guidelines when:
- Configuring Turbo Drive navigation, prefetching, and caching behavior
- Adding Turbo Frames for partial page updates and lazy loading
- Delivering Turbo Streams for surgical DOM mutations
- Broadcasting real-time updates over ActionCable
- Enabling Turbo 8 morphing for page refreshes
- Writing Stimulus controllers for client-side behavior
- Handling errors in Turbo navigation, frames, and WebSocket connections