重要前提
安装AI Skills的关键前提是:必须科学上网,且开启TUN模式,这一点至关重要,直接决定安装能否顺利完成,在此郑重提醒三遍:科学上网,科学上网,科学上网。查看完整安装教程 →
rails-hotwire by pproenca/dot-skills
npx skills add https://github.com/pproenca/dot-skills --skill rails-hotwire使用 Hotwire (Turbo + Stimulus) 构建交互式 Rails 应用程序的综合指南,由社区维护。包含 9 个类别共 53 条规则,按影响优先级排序,以指导自动化重构和代码生成。遵循 DHH 的“单人框架”哲学:服务器渲染 HTML,Turbo 使其感觉像 SPA,Stimulus 在需要的地方添加少量 JS。
在以下情况下参考这些指南:
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 导航与 Drive | 关键 | drive- |
| 2 | Turbo Frames | 关键 | frame- |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
| 3 | Turbo Streams | 高 | stream- |
| 4 | 广播与实时 | 高 | bcast- |
| 5 | 变形与页面刷新 | 高 | morph- |
| 6 | 性能优化 | 中高 | perf- |
| 7 | Stimulus 模式 | 中高 | stim- |
| 8 | 架构决策 | 中 | arch- |
| 9 | 测试 Hotwire | 中 | test- |
drive-prefetch-links - 启用链接预取以实现即时导航drive-form-submissions - 使用 Turbo Drive 处理表单提交drive-visit-actions - 使用访问操作控制历史记录drive-cache-control - 为预览页面配置 Turbo 缓存drive-selective-disable - 在不兼容的页面上禁用 Turbo Drivedrive-progress-bar - 自定义 Turbo 进度条drive-confirm-dialog - 对破坏性操作使用 data-turbo-confirmdrive-error-recovery - 优雅地处理 Turbo 导航和获取错误frame-lazy-loading - 延迟加载 Frame 直到进入视口frame-scope-navigation - 将导航限定在 Frames 内frame-src-navigation - 使用 src 获取动态 Frame 内容frame-break-out - 处理重定向时的 Frame 跳出frame-promote-visits - 将 Frame 导航提升为页面访问frame-dom-id - 使用 dom_id 进行 Frame 标识frame-empty-state - 提供有意义的 Frame 加载状态stream-progressive-enhance - 始终为 Streams 提供 HTML 后备方案stream-action-selection - 为 DOM 操作选择合适的 Stream 动作stream-multi-target - 使用 targets 进行多元素更新stream-http-delivery - 通过 HTTP 传递 Streams 以响应表单stream-websocket-source - 在 body 中连接 WebSocket 源stream-custom-actions - 为复杂的 DOM 更新注册自定义 Stream 动作bcast-model-broadcasts - 使用 broadcasts_refreshes 处理简单的模型更新bcast-debounce-n1 - 对广播进行防抖处理以防止 N+1 广播风暴bcast-scope-streams - 将广播流限定到账户或用户bcast-refresh-over-replace - 优先使用广播刷新而非细粒度的 Stream 更新bcast-avoid-view-logic-in-models - 避免在模型中放置广播逻辑bcast-signed-stream-names - 使用签名的流名称以确保安全bcast-reconnect-handling - 处理 WebSocket 断开连接和重连morph-enable-page-refresh - 为页面刷新启用变形morph-permanent-elements - 将有状态的元素标记为永久性morph-scroll-preservation - 在变形期间保持滚动位置morph-stimulus-reconnect - 处理变形后 Stimulus 控制器的重新连接morph-frame-refresh - 在用于添加内容的 Frames 上使用 refresh='morph'morph-vs-streams - 选择变形而非复杂的 Stream 编排perf-optimistic-ui - 在服务器确认前实现乐观 UI 更新perf-batch-streams - 将多个 Stream 更新批量处理为单个响应perf-frame-caching - 使用片段缓存缓存 Turbo Frame 响应perf-prefetch-strategic - 在开销大的端点上禁用预取perf-memory-leak-prevention - 清理订阅和事件监听器stim-outlets-communication - 使用 outlets 进行跨控制器通信stim-values-reactive-state - 使用 Values API 实现响应式控制器状态stim-action-descriptors - 使用声明式动作描述符而非 addEventListenerstim-small-reusable-controllers - 保持 Stimulus 控制器小巧且可重用arch-progressive-enhancement - 遵循渐进增强层次结构arch-frame-vs-stream-decision - 使用 Frames 进行限定导航,使用 Streams 进行多目标更新arch-importmap-management - 使用 import maps 固定 JavaScript 依赖项arch-avoid-client-state - 将状态保留在服务器端,而非客户端arch-stimulus-boundaries - 仅将 Stimulus 用于客户端行为test-system-test-async - 在系统测试中等待 Turbo 更新test-stream-assertions - 在集成测试中使用 Turbo Stream 测试助手test-broadcast-assertions - 使用 Turbo 测试助手断言广播test-frame-navigation - 使用限定范围的断言测试 Frame 导航test-websocket-timing - 在系统测试中处理 WebSocket 连接时序阅读各个参考文件以获取详细解释和代码示例:
| 文件 | 描述 |
|---|---|
| references/_sections.md | 类别定义和排序 |
| assets/templates/_template.md | 新规则模板 |
| metadata.json | 版本和参考信息 |
每周安装量
53
仓库
GitHub 星标数
86
首次出现
2026年2月12日
安全审计
安装于
codex50
github-copilot48
opencode48
gemini-cli48
kimi-cli45
amp44
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.
Reference these guidelines when:
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Navigation & Drive | CRITICAL | drive- |
| 2 | Turbo Frames | CRITICAL | frame- |
| 3 | Turbo Streams | HIGH | stream- |
| 4 | Broadcasting & Real-Time | HIGH | bcast- |
| 5 | Morphing & Page Refresh | HIGH | morph- |
| 6 | Performance Optimization | MEDIUM-HIGH | perf- |
| 7 | Stimulus Patterns | MEDIUM-HIGH | stim- |
| 8 | Architecture Decisions | MEDIUM | arch- |
| 9 | Testing Hotwire | MEDIUM | test- |
drive-prefetch-links - Enable link prefetching for instant navigationdrive-form-submissions - Use Turbo Drive for form submissionsdrive-visit-actions - Control history with visit actionsdrive-cache-control - Configure Turbo cache for preview pagesdrive-selective-disable - Disable Turbo Drive on incompatible pagesframe-lazy-loading - Defer frame loading until viewport entryframe-scope-navigation - Scope navigation within framesframe-src-navigation - Use src for dynamic frame contentframe-break-out - Handle frame breakout for redirectsframe-promote-visits - Promote frame navigation to page visitsframe-dom-id - Use dom_id for frame identificationstream-progressive-enhance - Always provide HTML fallback for streamsstream-action-selection - Choose the right stream action for DOM mutationsstream-multi-target - Use targets for multi-element updatesstream-http-delivery - Deliver streams via HTTP for form responsesstream-websocket-source - Connect WebSocket sources in the bodybcast-model-broadcasts - Use broadcasts_refreshes for simple model updatesbcast-debounce-n1 - Debounce broadcasts to prevent N+1 broadcast stormsbcast-scope-streams - Scope broadcast streams to accounts or usersbcast-refresh-over-replace - Prefer broadcast refresh over granular stream updatesbcast-avoid-view-logic-in-models - Keep broadcasting logic out of modelsmorph-enable-page-refresh - Enable morphing for page refreshesmorph-permanent-elements - Mark stateful elements as permanentmorph-scroll-preservation - Preserve scroll position during morphingmorph-stimulus-reconnect - Handle Stimulus controller reconnection after morphmorph-frame-refresh - Use refresh='morph' on frames for additive contentperf-optimistic-ui - Implement optimistic UI updates before server confirmationperf-batch-streams - Batch multiple stream updates into single responsesperf-frame-caching - Cache Turbo Frame responses with fragment cachingperf-prefetch-strategic - Disable prefetch on expensive endpointsperf-memory-leak-prevention - Clean up subscriptions and event listenersstim-outlets-communication - Use outlets for cross-controller communicationstim-values-reactive-state - Use Values API for reactive controller statestim-action-descriptors - Use declarative action descriptors over addEventListenerstim-small-reusable-controllers - Keep Stimulus controllers small and reusablearch-progressive-enhancement - Follow the progressive enhancement hierarchyarch-frame-vs-stream-decision - Use frames for scoped navigation, streams for multi-target updatesarch-importmap-management - Pin JavaScript dependencies with import mapsarch-avoid-client-state - Keep state on the server, not the clientarch-stimulus-boundaries - Use Stimulus only for client-side behaviortest-system-test-async - Wait for Turbo updates in system teststest-stream-assertions - Use Turbo Stream test helpers in integration teststest-broadcast-assertions - Assert broadcasts with Turbo test helperstest-frame-navigation - Test frame navigation with scoped assertionstest-websocket-timing - Handle WebSocket connection timing in system testsRead individual reference files for detailed explanations and code examples:
| File | Description |
|---|---|
| references/_sections.md | Category definitions and ordering |
| assets/templates/_template.md | Template for new rules |
| metadata.json | Version and reference information |
Weekly Installs
53
Repository
GitHub Stars
86
First Seen
Feb 12, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
codex50
github-copilot48
opencode48
gemini-cli48
kimi-cli45
amp44
Android 整洁架构指南:模块化设计、依赖注入与数据层实现
1,600 周安装
Git管理最佳实践指南:分支策略、提交规范与工作流全解析
72 周安装
code-style-validator:基于AST的代码风格验证与自动修复工具,提升代码质量
72 周安装
SQLMap数据库渗透测试指南:自动化SQL注入检测与利用方法
72 周安装
Superhuman UI 设计规范:AI 驱动的界面构建指南与设计系统
72 周安装
iOS MapKit API 参考指南:SwiftUI Map (iOS 17+) 与 MKMapView 完整对比与使用教程
78 周安装
iOS设计系统最佳实践:SwiftUI 6.2 Airbnb风格指南,含50条架构与治理规则
74 周安装
drive-progress-bardrive-confirm-dialog - Use data-turbo-confirm for destructive actionsdrive-error-recovery - Handle Turbo navigation and fetch errors gracefullyframe-empty-state - Provide meaningful frame loading statesstream-custom-actionsbcast-signed-stream-namesbcast-reconnect-handling - Handle WebSocket disconnection and reconnectionmorph-vs-streams