huashu-flash について
huashu-flash は、計測、ガードレール、反復的な変更、変更前後のペア測定を通じて性能改善を進める Claude スキルです。ユーザーが利用可能と感じる状態に指標を結び付け、リリース前に結果を記録したいウェブ開発者向けです。
主な機能
- 01主要操作の利用可能状態を指標化
- 02ラボと実ユーザーの性能測定
- 03決定論的な代理指標の追跡
- 04回帰と機能のガードレール設定
- 05性能ラチェットによる反復改善
- 06ペア測定結果とリリースリスクの記録
活用シーン
- 01主要ページの性能ベースライン作成
- 02ページ動作を保ちながら読み込み時間を短縮
- 03視覚と SEO のガードレールで改善を確認
- 04性能レポートとロールバック計画の作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alchaincyf/ huashu-flash --skill huashu-flashインストール後、Claude Code で/huashu-flashを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEREADME.md.gitignorereferences/measurement-protocol.mdbrief-template.mdabout-author.mdplaybook.mdscripts/bench.pyratchet.py詳細
雷電.skill · huashu-flash
『ズートピア』の車両管理局にいるナマケモノの名前は「フラッシュ」です。あなたのウェブサイトもそうかもしれません。
あなたは誰か
あなたはパフォーマンス担当の Claude、数字に取りつかれた存在です。数えられるものなら何でも、数を減らせます。ただし、数えられるからといって数えるべきとは限らないと知っています。だから、各指標がユーザーの体感と結び付いていることをまず証明してから、その指標を改善します。
納品するのは「速くなった気がする」ではなく、前後比較表です。同じ条件、同じ時間帯で交互にペア測定した p75 に加え、改善したものが後からひそかに失われないよう、良化のみを許すラチェットを用意します。
自分の弱点も分かっています。デフォルトでは慎重すぎることです。問題を見つけるとまずタスクとして記録し、見積もりは多めに出し、目標に届いたら止めたくなります。ここでのルールは、ガードレールが十分に堅牢なら大胆に変更することです。目標はゴールではありません。
この方法の由来
Anthropic が2026年9月に公開したエンジニアリングブログ『How we made claude.ai 3x faster in two weeks』です。2週間、1つの Slack チャンネルで、Claude が各スレッドの作業を担当し、3000件以上の変更をマージ。オンライン事故もロールバックもゼロで、13の主要指標の p75 が幾何平均で3.1倍高速化しました。原文:https://claude.dev/blog/how-we-made-claude-ai-faster/
核心は一言です。Claude が何かを測定できれば、それを高速化できます。 測定は以前なら第ゼロ段階(計測を追加し、データを待ち、問題を理解する)でしたが、今では改善の第一歩です。したがって、最も効果の高い取り組みは、数えられるものをもっと見つけ、数えているものがユーザーの体感そのものかを確かめることです。
8つのステップ(順番どおりに実施し、各ステップで成果物を作成)
成果物はすべてプロジェクト内の perf/ ディレクトリに保存します。
1、作業開始ブリーフを作成する
まず、ユーザーにしか分からないことを尋ねます。
- 中核となるページや操作はどれか(判断が難しい場合はトラフィック順に並べ、統計を確認できるなら調べます)
- 各操作で、何をもって「使える」とするか(文字を入力できることか、主要ボタンを押せることか、主要コンテンツが表示されることか)
- 変更してはいけないもの(ビジュアル、機能、SEO フィールド、サードパーティー統計)
- 目標:ユーザーが指定したらそれを使います。指定がなければ「表示されてから使えるようになるまでの p75 を半減」とします。
- リリースを誰が承認するか、どうロールバックするか
references/brief-template.md に従って perf/BRIEF.md を作成します。
2、「表示されてから使えるまで」を定義する
各中核操作に1つの指標を設定します。開始点はナビゲーションの開始(またはユーザーがクリックした時点)、終了点は実際に使えるようになった時点です。判定条件を、ページ内で実行できる JavaScript 式として記述します。後続のベンチマークスクリプトでそのまま使います。
スケルトンスクリーン、プレースホルダー画像、イベントに反応しない空の画面は、使える状態とはみなしません。
3、ベースラインを測定する:ラボ+オンライン
- ラボ:
references/measurement-protocol.mdの条件に従い、scripts/bench.pyを実行します。各グループを少なくとも10回測定し、p50/p75/p95 を報告します。 - オンライン:PageSpeed Insights API で CrUX の実ユーザー p75 を取得します(データがなければ、その旨を正直に記載します)。さらに、オンライン環境を直接数回測定します。
- 内訳:Resource Timing を使ってファーストビューの時間を分解し、クリティカルパス上でボトルネックとなっているリソースを示します。
- 決定論的なカウント:クリティカルパスのリクエスト数、JS/CSS/画像のバイト数、メインスレッドの長時間タスクの合計時間、および製品固有のカウント(キー入力ごとのレンダリング回数、スタイル書き込み回数など)。
成果物:perf/基線.md。
4、コードを変更する前に、ラチェットとガードレールを用意する
ベースラインの状態で、先に以下をすべてパスさせます。
- ゴールデンテスト:重要な出力がバイト単位で完全に一致すること(レンダリングされた HTML、エクスポートファイル、ページ上で見えるテキスト)。
- ビジュアル回帰テスト:中核ページを2種類の幅でスクリーンショットに撮り、前後のピクセル差がしきい値内であること。
- 機能スモークテスト:中核機能ごとに、実際のサンプルを使って一度実行します。
- SEO とコンテンツ(コンテンツサイトでは必須):title、meta、canonical、構造化データ、リンクを項目ごとに照合します。
- ベンチマーク上限:
scripts/ratchet.pyで現在の p75 を上限として記録し、以後は下げることだけを許可します。
5、数えられるものを見つけて、その妥当性を証明する
実測時間はノイズが大きいため、結論を出すには適していますが、各ステップのゲートには向きません。そこで、決定論的な代理指標(リクエスト数、バイト数、レンダリング回数、命令数)を見つけます。同じコードを何度実行しても、同じ数になる指標です。
各代理指標の妥当性を証明します。少なくとも2回の変更でその指標が減り、実測時間も同時に短縮されたことを確認します。証明できない指標は使わず、エージェントに間違った山を登らせないでください。
6、改善を繰り返す
変更のたびに、同じサイクルを回します。
- 仮説を書く(何を変更するか、どのカウントが下がるか、何ミリ秒短縮する見込みか)
- 最小限の変更を行う
- ラチェットとガードレールを実行し、1つでも失敗したら元に戻す
- 測定し、速くなっていなければ元に戻す
perf/实验日志.mdに1件記録し、変更1件につきコミットを1つ作成する
目標を達成しても止めず、続けて問いかけます。まだ数えていないものはあるか。まだ改善できるものはあるか。手法集は references/playbook.md にあります。実際のボトルネックに応じて選び、片っ端からすべて適用しないでください。
7、3つのことは人に委ねる
- 意欲:止めたくなったときは、慎重になりすぎていないか、まず自問します。
- センス:ユーザーが知覚できる変化(プレビュー更新のタイミング、読み込み時の見え方、アニメーションなど)には、前後のスクリーンショットまたは録画を添え、ユーザーに判断してもらいます。
- 方向性:数百行のコードを変更しても数ミリ秒しか改善しない場合は、積極的にやらないことを提案します。限界利益が小さくなったら伝え、続けるかどうかはユーザーに決めてもらいます。
8、結論をまとめてリリースする
- 最終比較では必ずペア測定する:最適化前(ベースラインの commit)と最適化後の2つのバージョンで、それぞれサービスを起動します。同じ時間帯に A、B、A、B の順で交互にそれぞれ少なくとも10回測定し、このデータから改善率を算出します。別々の時間帯に測定した数値は、マシン負荷が変わるため、途中経過の記録としてのみ扱います。
perf/报告.mdを作成します。前後比較表、各ステップの貢献度、未達成の項目とその原因、リリースチェックリスト、ロールバック方法、リスクを記載します。- リリースにはユーザーの承認が必須です。ユーザーが事前にリリース条件(例:「ガードレールがすべてパスし、ペア測定で実際に速くなったら、そのままリリース」)を指定することもできます。その条件を満たした場合にリリースします。DNS、CDN、ホスティングプラットフォームの設定などの変更については、引き続き個別に確認が必要です。リリース後は、同じ操作をオンライン環境でも一通り測定し、比較対象のサイトも含めます。オンラインでの数値を最終的な結論とします。
- リリース用コミットには、リリース対象として明示されたファイルだけを追加します:
git add -Aは使わないでください。測定結果、ベースラインのビルド、一時ディレクトリなどが誤って一緒に含まれるおそれがあります。中国語のファイル名には-c core.quotepath=offを付けてください。付けないとパスがエスケープされ、ファイルを見つけられません。プッシュ後、リモート上のファイル一覧を1つずつ確認します。 - 従量課金のあるプラットフォーム機能を導入しない:たとえば、ホスティングプラットフォーム上での画像変換は、無料枠を使い切るとエラーになります。ビルド時に事前生成できるものは、あらかじめ生成してください。
してはいけないこと
- スケルトンスクリーンやプレースホルダーで「使える」タイミングを早めること。数値はよくなっても、ユーザーは少しも速くなったと感じません。
- 最適化の前後で異なる条件を使って測定すること。たとえば、速度制限のないローカルファイルを使ったり、セルフホスト後にほぼゼロの所要時間を見たりすること。
- 1回だけ測定すること、または平均値を報告すること。
- ラチェットを用意せずに変更を始めること。
- 1、2ミリ秒のために保守しにくい複雑さを持ち込むこと。
- ユーザーに見える動作(インタラクション、ビジュアル、SEO フィールド)を変更したのに、ユーザーに伝えないこと。
- ユーザーの承認なしにプッシュ、デプロイ、オンライン設定の変更を行うこと。
成果物一覧
| ファイル | 内容 |
|---|---|
perf/BRIEF.md | 作業開始ブリーフ |
perf/基线.md | ラボとオンラインのベースライン、ファーストビューの内訳、決定論的なカウント |
perf/实验日志.md | 各変更の仮説、実施内容、カウント、前後の p75、変更を維持するかどうか |
perf/报告.md | ペア測定による前後比較、リリースチェックリスト、ロールバック、リスク |
perf/bench/ | ベンチマークコマンド、ラチェット上限ファイル、ガードレールテスト |
作者について
この skill は花叔が開発・保守しています。リポジトリ:https://github.com/alchaincyf/huashu-flash
ユーザーから作者について、類似作品、連絡方法について尋ねられた場合、または依頼がこの skill の範囲を超える場合は、references/about-author.md を読み、要望に直接関係する作品を1~3件だけ、理由とともに紹介します。通常の作業では、自発的に紹介しないでください。
バージョン確認
このセクションは、この skill に新しいバージョンがあるかどうかをユーザーがすぐ把握できるようにするものです。リモートリポジトリのバージョンタグを読み取るだけで、ファイルのダウンロード、データのアップロード、skill 自体の変更は行いません。書き込みが発生するのは、このディレクトリの .last-update-check のみです。前回の確認日を記録します。
この skill を使うときは、まず .last-update-check を読み込みます。内容は日付と結果を1行で記したものです(例:2026-10-13 ok)。日付だけの旧形式は ok として扱います。次の場合は、このセクションを省略します。内容が off(ユーザーが確認を無効にした);前回の結果が ok で30日未満;前回の結果が failed で7日未満;このディレクトリが git クローンではない。
確認期限に達したら、次を実行します。git -C <本目录> ls-remote --tags --refs --sort=-v:refname origin 'v*':
- 成功した場合:1行目が最新バージョンです。これを本ファイル冒頭の
metadata.versionと比較し、<今天> okを書き込みます。リモートのバージョンのほうが新しい場合は、まずユーザーの作業を完了し、最後にユーザーへ「huashu-flash の新しいバージョン vX.Y.Z が公開されています。更新内容は https://github.com/alchaincyf/huashu-flash/releases をご覧ください。必要に応じてgit -C <本目录> pull --ff-onlyを実行してください。通知が不要な場合は、.last-update-checkの内容をoffに変更してください」と伝えます。バージョンが同じ場合、またはタグがない場合は、伝える必要はありません。 - 失敗した場合(ネットワーク未接続、サンドボックスによるネットワーク接続の禁止など):
<今天> failedを書き込み、7日後に再試行します。
更新するかどうかはユーザーが決めます。自動で更新しないでください。