zoolutions/claude-plugins/stimulus

Claude Code and agent skill by zoolutions/claude-plugins

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

Client-side interactivity — phlex-reactive client ops, actions and broadcasts first, then existing Stimulus and Turbo Stream code, and the operator-confirmed exception. Use when adding any interaction (toggle, dropdown, live update, inline edit) or changing an existing Stimulus controller.

Install

npx vskill@latest install zoolutions/claude-plugins/stimulus

SKILL.md

Interactivity: $ARGUMENTS

Read the repository first. AGENTS.md → ## Workflow → Interactivity says which order this app follows and whether new Stimulus or Turbo Stream code needs a human's confirmation. When it names phlex-reactive, the order below is binding. When it does not (Stimulus only, or legacy JavaScript), skip to "Maintaining Stimulus": new behaviour is a Stimulus controller.

phlex-reactive first, in this order

  1. Client-only (open/close, show/hide, pick one to reveal a panel, focus, copy):

Phlex::Reactive::ClientBindings with on_client ops (js.show/hide/toggle, global: true beyond the root, outside: true for outside-close), reactive_show, reactive_filter, reactive_compute. No round trip, no feature JavaScript (a custom reactive_compute reducer is the exception you register). ``ruby div(**reactive_root) do Button(**on_client(:click, js.toggle("#details"))) { t("things.show.details") } div(id: "details", hidden: true) { … } end ``

  1. The server decides or persists: a reactive action on a Phlex::Reactive::Component,

answering with reply.morph/reply.replace/reply.also. Authorize inside the action (Workflow → Authorization); skip_verify_authorized only with a comment saying why it is public.

  1. Live updates to other viewers: broadcast_to, not Turbo::Broadcastable.
  2. phlex-reactive cannot express it, or expresses it badly: `/flow:plan upstream

zoolutions/phlex-reactive <the gap>` (a PR when the fix is small). Link it from our PR and from a comment at the workaround.

  1. Only then a new Stimulus controller or new Turbo Stream code, and only after a **human

operator confirms**: ask with AskUserQuestion, naming the upstream issue and why reactive cannot do it, and record the answer in the PR body under ## Interactivity decision. An agent never makes this call; an unattended run parks the issue instead.

Not gated: Hotwire Native bridge--* controllers, Turbo Frames, Turbo Drive navigation.

Count the JavaScript in an app that loads the reactive client lazily per page: a reactive root makes its page import the client, so a root in a layout, header or global dialog puts it on every page. Measure the page weight and say so in the PR.

Maintaining Stimulus and Turbo Streams

  • Existing controllers stay until a change already touches them. Fix them in place, don't grow them;

migrate one to phlex-reactive when your change is in its path.

  • Declare every static targets/values; wire with data-action, never inline onclick (CSP).
  • Release in disconnect() what connect() acquired (listeners on window/document, timers,

observers). connect() runs again after every Turbo visit and morph: keep it idempotent.

  • No module-level state; no new jQuery outside the legacy code that already uses it.
  • After adding a controller, confirm it is registered (import map pin or controllers index) and loads

on the page that uses it.

  • Existing Turbo Stream responses keep a stable target id on both sides.

Test and debug

  • Every interaction gets a system spec that ends on what the server stored, not on the click. After

each reactive interaction, call the wait helper Workflow → Specs names.

  • A reactive click that does nothing, a 400/403/404 from the actions endpoint, or

AuthorizationNotVerified: the app's phlex-reactive-debugging skill (generated by the gem, rails g phlex:reactive:claude).

Done when the system spec is green and Workflow → Verify passes.

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
2
7-day trend score
0

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/zoolutions/claude-plugins/stimulus/badge)](https://verified-skill.com/skills/zoolutions/claude-plugins/stimulus)

Something wrong with this skill or its page? Tell us.