mcpField
M
mobile

mobile

github.com/alphaonedev開発52 回インストール
リポジトリ

mobile について

OpenClawのモバイルアプリ開発スキルです。ネイティブとクロスプラットフォームの選定、アプリストアのガイドライン確認、モバイルUXの評価に対応し、プラットフォーム別コード例をCLIまたはAPIから利用できます。

主な機能

  1. 01ネイティブとクロスプラットフォームの比較
  2. 02アプリストアガイドラインの確認
  3. 03モバイルUX原則の評価
  4. 04プラットフォーム別コード例の生成
  5. 05CLIまたはREST APIでの利用

活用シーン

  1. 01新規モバイルプロジェクトの方式選定
  2. 02ストア申請前のアプリ確認
  3. 03レイアウトのモバイル操作性評価
  4. 04デプロイパイプラインへのガイドライン検査追加

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill mobile

インストール後、Claude Code で/mobileを入力して読み込まれたか確認します。

詳細

モバイル

目的

このスキルは、ネイティブ(例:iOS 向けの Swift、Android 向けの Kotlin)とクロスプラットフォーム(例:React Native、Flutter)のアプローチを評価し、アプリストアのガイドライン(例:Apple の App Store 審査ガイドライン、Google Play ポリシー)への準拠を確認し、タッチ操作に適したデザインやレスポンシブレイアウトなどのモバイル UX の原則を適用することで、OpenClaw によるモバイルアプリ開発を支援します。

使用するタイミング

新しいモバイルプロジェクトを開始するとき、既存のアプリをリファクタリングするとき、またはプラットフォーム向けに最適化するときにこのスキルを使用します。たとえば、パフォーマンスが重要なアプリではネイティブを、開発を迅速化するにはクロスプラットフォームを選ぶかどうかを判断する場合に使用します。UX の監査を行う設計段階や、却下を避けるためにアプリの提出準備をする際にも適用してください。

主な機能

  • ネイティブとクロスプラットフォームのトレードオフを分析します:アプリサイズや起動速度などの指標を使って、ビルド時間、メンテナンス、パフォーマンスを比較します。
  • アプリストアのガイドラインへの準拠を検証します:自動スキャンを通じて、データプライバシーへの準拠(例:GDPR への適合)やアプリ内購入のルールなどの問題を確認します。
  • モバイル UX の原則を適用します:iOS ではボタンのサイズを 44x44 ピクセルより大きくする、Android では Material Design のコンポーネントを使用するなど、レイアウトに関する推奨事項を生成します。
  • コードを生成します:Android Manifest での権限処理や SwiftUI ビューなど、プラットフォーム固有の機能に関するコードスニペットを出力します。
  • ツールと連携します:リアルタイムのガイドライン更新情報を得るために、外部 API に問い合わせます。たとえば、非公式のスクレイパーを使って Apple のガイドラインを取得できます(本番環境での使用は推奨されません)。

使用パターン

OpenClaw の CLI または API から、スキル ID をコマンドの先頭に付けてこのスキルを呼び出します。例:openclaw mobile [subcommand]。プラットフォームやプロジェクトの種類など、必須パラメーターを必ず渡してください。選択を行う場合は、対話モードを使ってユーザーからのフィードバックに基づき入力を調整します。例:出力を他のスキルに渡して連鎖させ、「テスト」スキルと組み合わせて UX テストを自動化します。非同期処理は、レスポンスのステータスコードを確認して処理してください。

主なコマンド/API

簡単なタスクには OpenClaw CLI を、プログラムからのアクセスには REST API を使用します。認証には、環境変数として $OPENCLAW_API_KEY を設定する必要があります。

  • CLI コマンド:openclaw mobile decide --platform ios --type native-vs-cross --factors performance,cost

    • 出力:長所と短所を含む JSON。例:{"native": "パフォーマンスは向上しますが、コストが高くなります", "cross": "コードベースを共有できますが、UI に一貫性がなくなる可能性があります"}。
    • コードスニペット:
      response = subprocess.run(['openclaw', 'mobile', 'decide', '--platform', 'android', '--type', 'cross'], capture_output=True)
      print(response.stdout.decode())
      
  • CLI コマンド:openclaw mobile validate --app-path /path/to/app --store apple

    • フラグ:ガイドラインの確認には --store(apple/google)を、ローカルファイルの分析には --app-path を指定します。
    • コードスニペット:
      import os
      os.system('openclaw mobile validate --app-path ./myapp --store google')
      # 広告への準拠などのポリシーを確認し、合格すると終了コード 0 を返します
      
  • API エンドポイント:POST /api/v1/skills/mobile/decide

    • ボディ:{"platform": "ios", "type": "ux-principles", "query": "button sizing"} のような JSON
    • レスポンス:200 OK とデータ。例:{"recommendation": "ボタンには .frame(width: 50, height: 50) を使用してください"}。
    • コードスニペット:
      import requests
      headers = {'Authorization': f'Bearer {os.environ.get("OPENCLAW_API_KEY")}'}
      response = requests.post('https://api.openclaw.ai/api/v1/skills/mobile/decide', json={"platform": "android"}, headers=headers)
      print(response.json()['advice'])
      
  • 設定形式:カスタムプロファイルには YAML を使用します。例:

    mobile:
      defaultPlatform: android
      uxRules:
        minButtonSize: 48
    

    次のコマンドで読み込みます:openclaw mobile config --file path/to/config.yaml。

統合に関する注意事項

ビルドスクリプトや IDE 拡張機能で OpenClaw の呼び出しをラップして統合します。たとえば、CI/CD パイプラインでは、デプロイ前に openclaw mobile validate のようなステップを追加します。VS Code を使用する場合は、OpenClaw 拡張機能をインストールし、キーボードショートカットを割り当てます。API 統合では、シークレット管理を使用して $OPENCLAW_API_KEY が安全に設定されていることを確認します。応答をキャッシュしてレート制限に対処します。OpenClaw は 100 requests/min を適用するため、指数バックオフによるリトライロジックを実装してください。

エラー処理

一般的なエラーには、$OPENCLAW_API_KEY が設定されていないか無効な場合に発生する認証失敗(HTTP 401)があります。環境変数を確認してキーを再生成し、修正してください。サポートされていないプラットフォームなど、入力が無効な場合は詳細を含む HTTP 400 が返されます。エラー JSON を解析し、修正を促してください。iOS ガイドラインとの不一致など、プラットフォーム固有の問題では、{"code": "APP_STORE_101", "message": "Privacy policy missing"} のような構造化エラーが返されます。スクリプトでは try-except ブロックを使用してください。

try:
    result = requests.post(url, headers=headers)
    result.raise_for_status()
except requests.exceptions.HTTPError as e:
    print(f"Error: {e.response.json()['message']}. Retrying...")

デバッグのため、エラーは常にタイムスタンプとともに記録し、API がダウンした場合はデフォルトの動作にフォールバックしてください。

グラフの関係

  • 関連先:「ios」スキル(iOS 固有の実装を表す子ノード)
  • 関連先:「android」スキル(Android の最適化を表す兄弟ノード)
  • 接続先:「ux-design」クラスター(共通の UX 原則を表す親ノード)
  • ガイドラインを参照するための外部リソース「app-store」へのリンク

コメント