mcpField
I
implement-hotwire

implement-hotwire

github.com/igmarinDevelopment2839 installsUpdated 4w ago
Repository

About implement-hotwire

implement-hotwire is a skill for building Rails frontends with progressive enhancement. It guides developers to start with plain HTML, then add Turbo and Stimulus only where needed, with checks for behavior when JavaScript is unavailable.

Key features

  1. 01HTML-first progressive enhancement
  2. 02Turbo Frame and Stream selection
  3. 03Stimulus layering guidance
  4. 04JavaScript-disabled verification
  5. 05DOM and server contract reporting

Use cases

  1. 01Building partial page updates in Rails
  2. 02Adding server-broadcast UI changes
  3. 03Introducing client behavior beyond Turbo
  4. 04Checking forms and navigation without JavaScript

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/igmarin/rails-agent-skills --skill implement-hotwire

After installing, type/implement-hotwirein Claude Code to confirm it loaded.

Bundled filesEXAMPLES.mdreferences/workflow.md

Details

From the project README

Implement Hotwire

Build modern Rails frontends with Hotwire using progressive enhancement.

Quick Reference

NeedHotwire choice
Replace part of a page after a link/formTurbo Frame
Broadcast server-side changesTurbo Stream
Client-only behavior beyond TurboStimulus controller
Full page navigationNormal Rails navigation, not a frame

HARD-GATE

ALWAYS start with HTML-only, enhance with Hotwire progressively
NEVER use Turbo Frames for full page navigation
ALWAYS test without JavaScript first

Core Process

  1. Build plain HTML — implement the feature with standard Rails forms and links, no Hotwire.
  2. Identify update regions — wrap partial-update areas in turbo_frame_tag. Validate: confirm <turbo-frame> appears in the DOM with the correct id.
  3. Add Turbo Frames / Streams — scope frame navigation or broadcast via ActionCable. Validate: confirm frame requests return text/vnd.turbo-stream.html in DevTools Network tab; for ActionCable, verify the subscription appears in the Action Cable log.
  4. Layer Stimulus — attach controllers only where JavaScript behaviour is needed beyond Turbo. Validate: confirm application.getControllerForElementAndIdentifier(el, 'name') returns the controller instance in the browser console.
  5. Verify degraded mode — disable JavaScript in browser DevTools (or run rails test:system with the Capybara :rack_test driver) and confirm all hold without JS: forms submit, links navigate, data persists after reload.

Code Examples

Turbo Frame
<%= turbo_frame_tag "post_#{@post.id}" do %>
  <h1><%= @post.title %></h1>
  <%= link_to "Edit", edit_post_path(@post) %>
<% end %>
Turbo Stream
<%= turbo_stream.append "posts", partial: "post", locals: { post: @post } %>
Stimulus Controller
import { Controller } from "@hotwired/stimulus"

export default class extends Controller {
  static targets = ["name"]
  greet() { alert(`Hello ${this.nameTarget.value}!`) }
}

Register in app/javascript/controllers/index.js:

import GreetController from "./greet_controller"
application.register("greet", GreetController)

Output Style

When implementing Hotwire, your output MUST include:

  1. Progressive baseline — how the feature works with plain HTML before enhancement.
  2. Chosen primitive — Turbo Frame, Turbo Stream, Stimulus, or combination, and why.
  3. DOM contract — frame IDs, stream targets, Stimulus controller names, targets, values, and actions.
  4. Server contract — controller response formats, broadcast triggers, partial names, and ActionCable channel/log checks when used.
  5. Verification — degraded-mode checklist from Core Process step 5, plus system/browser checks for frame, stream, or Stimulus behavior.
  6. Language — English unless explicitly requested otherwise.

Extended Resources (Progressive Disclosure)

Load these files only when their specific content is needed:

  • EXAMPLES.md — Use when you need full worked examples of Turbo Frames, Streams, and Stimulus patterns
  • references/workflow.md — Use when you need the step-by-step Hotwire implementation workflow and decision tree

Integration

SkillWhen to chain
write-testsFor system specs and failing interaction coverage
apply-stack-conventionsFor Rails + Hotwire + Tailwind stack alignment
code-reviewAfter the UI behavior and degraded mode are verified

Comments

Markdown supported