$ hotwire-codex-skills

8 skills · web · iOS · Android · Rails 8 · Turbo 8

The hard parts of Hotwire, handled.

A Claude Code skillset for building interactive, server-driven Rails apps with Turbo, Stimulus, and Hotwire Native — one codebase, shipped to web, iOS, and Android.

claude · turbo-streams-patterns

$ claude "live room messages — members only"

· skill: turbo-streams-patterns

· authorized channel + signed stream name

· broadcasts wired to dom_id targets

$ scripts/lint_turbo_streams.sh app/

✓ no unauthorized streams · wiring clean

0 findings · exit 0

The eight skills

Each is a SKILL.md + a code-grounded reference + templates + a runnable checker. Verified clean on real code and against a synthetic break.

hotwire-native-bridge
Strada-style bridge components across web + iOS + Android.
generator (3 halves) · contract linter
rails-8-upgrade
Rails 7 → 8, and the intermittent LazyRouteSet route-test flake.
pre-flight audit · flake detector + fix
turbo-morphing
Turbo 8 page refreshes / broadcasts_refreshes without losing browser state.
decision guide · morph-readiness checker
turbo-frames-patterns
Frames, outside-link/form drivers, lazy panels — no dead navigation or duplicate ids.
patterns guide · dangling-target + dup-id linter
hotwire-native-path-config
Native screen presentation + nav wiring, with iOS↔Android drift detection.
1.x starter · schema/footgun validator
rails-token-auth
One auth across web + Action Cable + native — no gem.
secure templates · 6-point security audit
turbo-streams-patterns
Live updates, custom actions, private broadcasts — without eavesdropping.
authorized-channel templates · wiring linter
stimulus-patterns
Controllers that connect, don't leak after navigation, and stay registered.
annotated templates · cleanup/registration linter
Full catalog
Browse every skill, template, and checker on GitHub →

What the checkers catch

The failures that pass tests, render fine, and silently do the wrong thing.

eavesdropping
A channel that streams without authorizing — anyone can subscribe.
dropped payload
A bridge field silently lost between web and native.
dangling frame
A link targets a frame id nothing defines — navigation goes nowhere.
duplicate ids
A literal frame id in a collection partial.
route-test flake
The Rails 8 LazyRouteSet draw_test_routes intermittent failure.
user enumeration
find_by + authenticate leaking which accounts exist.
leaky controllers
A Stimulus connect() with no disconnect() cleanup.
global morph
A layout-wide morph that resets stateful widgets.
plaintext tokens
Auth tokens stored unhashed, or a plain cookie.

Honest about limits: the checkers are heuristic text scans, not parsers — each says so in its output. A clean run is a gate, not a proof. Review custom logic.

Read the book first

The Rails and Hotwire Codex

by Ayush Newatia

These skills are a companion to — not a replacement for — the book. It teaches you to build Piazza, a neighbourhood-marketplace app, across web, iOS, and Android with Ruby on Rails and Hotwire: authentication from scratch, Turbo, Turbo Native, Stimulus, Action Cable, full-text search, and more. Everything here assumes you understand what the code does and why — the book is where that understanding comes from.

The book targets Rails 7.1; this toolkit carries the same app forward to Rails 8, Turbo 8, and Hotwire Native 1.x.

Install & use

As a Claude Code plugin

Add the marketplace, then install — the 8 skills register automatically.

/plugin marketplace add davidteren/hotwire-codex-skills
/plugin install hotwire-codex-skills@hotwire-codex-skills-marketplace

Or symlink a single skill: ln -s "$PWD"/skills/<name> ~/.claude/skills/

As a standalone tool

The checkers run without Claude — point one at any Rails app. Exit non-zero on findings (CI-friendly).

skills/rails-token-auth/scripts/audit_token_auth.sh path/to/app
skills/stimulus-patterns/scripts/lint_stimulus.sh    path/to/app

Pure bash + ruby — nothing a Rails machine doesn't already have.

Acknowledgements

All credit for the underlying material goes to Ayush Newatia, author of The Rails and Hotwire Codex. The Piazza app, its architecture, and the cross-platform approach these skills encode are his work — this toolkit only distils and extends that into runnable, agent-usable form. Ayush kindly gave permission to publish it. If these skills are useful to you, the right thanks is to buy the book and read it.

This project is an independent, community effort. It is not an official product of the book or its author, and reuses none of the book's text or source code. The Piazza implementation repos are private out of respect for the author's copyright.