Help us improve
Share bugs, ideas, or general feedback.
From rubyku
Hotwire patterns — Turbo Frames, Turbo Streams, and Stimulus priority order for this plugin frontend
npx claudepluginhub ghozimahdi/gm-claude-plugins --plugin rubykuHow this skill is triggered — by the user, by Claude, or both
Slash command
/rubyku:hotwireThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
1. **Turbo Frames** — partial page updates within a container
Provides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Structures git workflow practices for committing, branching, resolving conflicts, and organizing work across parallel streams. Use when making any code change.
Share bugs, ideas, or general feedback.
fetch() for server communicationpushState/replaceState — Turbo handles URLs<%# Partial page update %>
<%= turbo_frame_tag dom_id(@task) do %>
<div class="p-4">
<h2><%= @task.title %></h2>
<%= link_to "Edit", edit_s_task_path(@task) %>
</div>
<% end %>
<%# Lazy loading %>
<%= turbo_frame_tag "weather", src: weather_path, loading: :lazy do %>
<p>Loading...</p>
<% end %>
<%# Breaking out of frame %>
<%= link_to "Full page", post_path(@post), data: { turbo_frame: "_top" } %>
Seven actions: append, prepend, replace, update, remove, before, after
<%# Controller response (create.turbo_stream.erb) %>
<%= turbo_stream.append "comments", partial: "comments/comment", locals: { comment: @comment } %>
<%= turbo_stream.update "comment_count", "#{@post.comments.count} comments" %>
# Model broadcasting
class Comment < ApplicationRecord
broadcasts_to :post
end
// app/javascript/controllers/toggle_controller.js
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
static targets = ["content"]
toggle() {
this.contentTarget.classList.toggle("hidden")
}
}
app/javascript/controllers/app/javascript/controllers/{namespace}/data-controller="t--renewal-tasks--intention"<%= form_with model: [:s, @task] do |form| %>
<%= form.text_field :title %>
<%= form.submit %> <%# NOT <button type="submit"> %>
<% end %>