htmx について
HTMX 2.x と 4.x の実装を支援するリファレンススキルです。属性、リクエスト、レスポンスの差し替え、イベント、UI パターン別に情報を案内します。
主な機能
- 01HTMX 2.x と 4.x のガイド
- 02実装領域別のリファレンス
- 03HTML フラグメント応答の指針
- 04バージョンごとの動作差分
- 05パターンと拡張機能の参照
活用シーン
- 01ページ要素に HTMX の動作を追加
- 02リクエストのトリガーとパラメーターを設定
- 03応答先と差し替え方法を選択
- 04検索、モーダル、無限スクロールを構築
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ damusix/ skills --skill htmxインストール後、Claude Code で/htmxを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.tessl-plugin/plugin.jsonreferences/attributes.mdevents-api.mdextensions.mdgotchas.mdpatterns.mdREFERENCE.mdrequests.mdswapping.md詳細
HTMX
HTMX の実装と統合には、このスキルを使用してください。htmx 2.x(現在の安定版)と htmx 4.x(ベータ版)を対象としています。リファレンスファイルには、[htmx 4]、[htmx 4 change]、[htmx 4 removed] の注意書きが付いています。タスクに必要なリファレンスファイルのみを読んでください。
クイックスタート
- タスクの領域を特定します(属性、リクエスト、スワップ、イベント、パターン)。
references/から該当するファイルを開きます。- HTML を中心とした、ハイパーメディア駆動のパターンを使用して実装します。
- サーバーのレスポンスが JSON ではなく HTML フラグメントを返すことを確認します。
GET でコンテンツを読み込むボタンの最小限の例:
<button hx-get="/contacts" hx-target="#results" hx-swap="innerHTML">
Load Contacts
</button>
<div id="results"></div>
サーバーのエンドポイント(/contacts)は、JSON ではなく HTML フラグメントを返す必要があります:
<ul>
<li>Alice</li>
<li>Bob</li>
</ul>
デフォルトのスワップは innerHTML です。レスポンスによってターゲットの子要素が置き換えられます。ターゲット要素自体を置き換えるには、hx-swap="outerHTML" を使用します。
重要なルール
- HTML レスポンス - HTMX はサーバーからの JSON ではなく、HTML レスポンスを想定します
- 属性の継承 - (v2)ほとんどの属性は子要素に継承されます。停止するには
hx-disinheritまたはunsetを使用します。(v4)継承は明示的です。継承を有効にするには:inheritedサフィックスを使用します。どちらのバージョンでも継承されない属性:hx-trigger、hx-on*、hx-swap-oob、hx-preserve、hx-history-elt、hx-validate - デフォルトのスワップは innerHTML - 意図したスワップ方法であることを必ず確認します
- フォーム値は自動的に含まれる - GET 以外のリクエストには、最も近い親フォームの値が自動的に含まれます
- プログレッシブエンハンスメント -
hx-boost="true"を使用します。JS がなくてもページが動作する必要があります - ユーザーコンテンツをエスケープする - XSS を防ぐため、ユーザーが提供したすべてのコンテンツをサーバー側でエスケープします。ユーザー生成コンテンツを表示する領域は
hx-disableで囲み、挿入された属性が HTMX に処理されないようにします - CSS のライフサイクルクラス - HTMX はリクエスト中に CSS クラスを追加・削除します。トランジションやインジケーターに使用します
- data-prefix に対応 - HTML のバリデーションに準拠するため、すべての
hx-*属性はdata-hx-*としても記述できます - HTTP 286 でポーリングを停止する - サーバーがステータス
286を返すと、everyまたはload delayによるポーリングが停止します。条件付きのクライアント側ロジックではなく、ポーリングの終了には必ず 286 を使用します - エラースワップ - (v2)デフォルトでは 2xx 以外のレスポンスはスワップされません。有効にするには
htmx:beforeSwapリスナーを追加します。(v4)204/304 を除くすべてのレスポンスがデフォルトでスワップされます。コードごとに制御するにはhx-statusを使用します - HX-Trigger ヘッダーで疎結合にする - サーバーのレスポンスで DOM 要素の ID をハードコードする代わりに、
HX-Triggerレスポンスヘッダーを使用してクライアント側イベントを発火します - サーバー側で HTMX リクエストを検出する -
HX-Requestヘッダーを確認し、HTMX リクエストには HTML フラグメントを、ブラウザーからの直接リクエストには完全なページを返します。キャッシュにはVary: HX-Requestを設定します
リファレンスマップ
- すべての
hx-*属性、値、修飾子:references/attributes.md - トリガー、ヘッダー、パラメーター、CSRF、キャッシュ、CORS:
references/requests.md - スワップ方法、ターゲット、OOB スワップ、モーフィング、ビューのトランジション:
references/swapping.md - イベント、JS API、設定、拡張機能、デバッグ:
references/events-api.md - 一般的な UI パターンと例:
references/patterns.md - 公式拡張機能(WS、SSE、Idiomorph、response-targets、head-support、preload、hx-live、hx-prompt):
references/extensions.md - 注意点、落とし穴、実践的なガイダンス:
references/gotchas.md - ファイル間のインデックスとルーティング:
references/REFERENCE.md
タスクの振り分け
- 要素に HTMX の動作を追加する →
references/attributes.md - リクエストを発行する方法やタイミングを設定する →
references/requests.md - レスポンスの描画先や描画方法を制御する →
references/swapping.md - イベント、JavaScript との連携、設定を扱う →
references/events-api.md - よく使われる UI パターン(検索、無限スクロール、モーダルなど)を構築する →
references/patterns.md - WebSockets、SSE、モーフィング、プリロード、レスポンスのターゲティング、head のマージを使用する →
references/extensions.md - よくある落とし穴、アクセシビリティ、エラー処理、アーキテクチャ上の判断を扱う →
references/gotchas.md - 横断的な懸念事項やアーキテクチャ →
references/REFERENCE.md、次にドメイン固有のファイル
コメント
Markdown 対応