expo-ios-hig-verify について
Expo(React Native)プロジェクト向けの読み取り専用静的チェッカーで、expo-ios-higルールへの違反候補を検出します。重大度、ファイルと行の位置を報告し、ルールの説明へリンクするため、iOS UI変更のレビューに利用できます。
主な機能
- 01Expoプロジェクトの静的チェック
- 02重大度別の問題分類
- 03ファイルと行番号の表示
- 04ルール説明へのリンク
- 05テキストとJSONのレポート
- 06警告も失敗扱いにする厳格モード
活用シーン
- 01マージ前のiOS UI変更の確認
- 02新規生成した画面の監査
- 03Expoアプリのネイティブらしさの問題確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill expo-ios-hig-verifyインストール後、Claude Code で/expo-ios-hig-verifyを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
config.jsongotchas.mdmetadata.jsonreferences/workflow.mdscripts/verify-hig.sh詳細
Expo iOS HIG 検証ツール
Expo(React Native)プロジェクトを読み取り専用で静的チェックし、expo-ios-hig のルール違反を検出します。検出結果は重大度別にまとめられ、file:line 形式の場所と、修正方法を説明するルールへのリンクが表示されます。expo-ios-hig のリファレンススキルに対する自動チェックツールです。このスキルがルールを解説し、このツールがルールへの準拠状況を確認します。
使用するタイミング
次のような場合に、このスキルを実行してください。
- ユーザーが HIG 準拠やネイティブらしさについて、Expo アプリのチェック、lint、監査、レビューを求めたとき
- Expo の iOS UI 変更をマージまたはリリースする前に、品質ゲートとして使用するとき
- 新しい画面をひな形から作成した後、ネイティブな状態を保てているか確認するとき
- Expo アプリが「Web のラッパーのように感じる」または「Android のように感じる」理由を調査するとき
読み取り専用のため、対象プロジェクトを変更することはありません。監視なしで実行しても安全です。
ワークフローの概要
verify-hig.sh [project-dir]
1. Resolve search roots (app/ src/ components/ by default, or config.json)
2. Run static checks — one per detectable expo-ios-hig rule (rg, or grep fallback)
3. Aggregate findings: severity, rule, message, file:line
4. Print grouped report (ERRORS then ADVISORIES) with a link to each rule
5. Exit 0 if clean, 1 if any ERROR (with --strict, advisories fail too)
実行方法:
bash scripts/verify-hig.sh /path/to/expo-app # text report
bash scripts/verify-hig.sh /path/to/expo-app --strict # advisories also fail
bash scripts/verify-hig.sh /path/to/expo-app --json # machine-readable
チェック項目
ERROR は精度の高いチェックです(インポートやリテラル値の一致を検出し、誤検出は少なめです)。ADVISORY は確認を推奨するヒューリスティックです。--strict を指定しない限り、実行結果を失敗にはしません。
| 重大度 | ルール | 検出内容 |
|---|---|---|
| ERROR | native-avoid-material-ui | react-native-paper、@react-native-material/*、@rneui/*、react-native-elements のインポート |
| ERROR | nav-native-stack | @react-navigation/stack / createStackNavigator |
| ERROR | touch-gesture-handler-thread | PanResponder |
| ERROR | touch-pressable-feedback | TouchableWithoutFeedback |
| ERROR | acc-dynamic-type | allowFontScaling={false} |
| ERROR | motion-ui-thread-animation | useNativeDriver: false |
| ADVISORY | nav-native-tabs | createBottomTabNavigator(JS タブバー) |
| ADVISORY | visual-semantic-colors | color:/backgroundColor:/borderColor:/tintColor: に指定されたハードコードの 16 進カラーコード |
| ADVISORY | visual-system-font | カスタムの fontFamily: |
| ADVISORY | system-status-bar | ハードコードされた StatusBar style="dark"/"light" |
| ADVISORY | motion-virtualized-lists | <ScrollView> と .map( の両方を使用しているファイル |
各検出項目から、説明と修正方法を記載した expo-ios-hig/references/{rule}.md(パスは config.json で設定可能)にリンクします。
セットアップ
config.json は任意です。適切なデフォルト値が適用されます。プロジェクトに合わせて、初回使用時に上書きしてください。
search_roots— スキャンするソースディレクトリ(スペース区切り。デフォルトはapp src components)skill_rules_dir— レポート内のexpo-ios-higルールファイルへのリンクに使用するパス(デフォルトは../expo-ios-hig/references)
jq がインストールされている場合、スクリプトは config.json から設定を読み込みます。そうでない場合はデフォルト値を使用します。利用可能な場合は rg(ripgrep)を使い、ない場合は grep にフォールバックします。必須の依存関係はありません。
使用方法
- Expo プロジェクトのルートディレクトリを対象に
scripts/verify-hig.shを実行します。 - 重大度別にまとめられたレポートを確認します。検出項目の修正方法を見るには、リンク先のルールファイルを開きます。
- リリース前に ERROR は必ず修正してください。ADVISORY も確認してください(意図的な例外も含まれます)。
- チェックを追加するには、
run_checks()にcheck ERROR|ADVISORY <rule> "<message>" "<regex>"の行を追加します。references/workflow.md を参照してください。
関連スキル
expo-ios-hig— この検証ツールがチェックするルールです。すべての検出項目からこのスキルにリンクします。expo-ios-screen-scaffolder— これらのチェックに通る画面を、最初から生成します。