Ahtesham-Latif/Tie-Breaker-App

Azure AI と React を搭載した決定論的 AI 意思決定エンジン。構造化マトリックス、SWOT プロファイル、状況認識に基づく判定を生成し、あらゆる A vs B のジレンマを解決します。

Tie-Breaker-App とは?

このスキル(Tie-Breaker-App)は、Azure AI Foundry と React を組み合わせた決定論的な AI 意思決定エンジンです。ユーザーが提示する「A vs B」のジレンマに対して、構造化された比較マトリックス、SWOT 分析、そしてコンテキストを考慮した最終判定を自動生成します。Node.js バックエンドと React/Vite フロントエンドで構成され、Azure App Service (Linux) に安全にデプロイされることを前提としています。特に、Managed Identity を用いたパスワードレス認証、GitHub Actions による CI/CD パイプライン、環境変数の適切な分割管理(フロントエンドはビルド時、バックエンドはランタイム)が特徴的です。デプロイ時の注意点として、ビルドエンジンの競合を避けるために GitHub Actions で完全にビルドし、node_modules を含めたアーティファクトを Azure にアップロードする必要があります。

対応~Claude Code✓Codex CLI~Cursor
npx skills add Ahtesham-Latif/Tie-Breaker-App

Installed? Explore more 生産性&コラボレーション skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Azure App Service へのデプロイ (Node.js)

このスキルでは、Node.js アプリケーションを Azure App Service (Linux) にデプロイし、Managed Identity を使用して Azure AI Foundry エージェントに安全に接続するための、ベストプラクティスに沿った完璧な手順を説明します。

1. クラウドインフラストラクチャのセットアップ

  • App Service プラン: 本番環境では必ず専用のティア(例:Basic B1)を選択してください。Free (F1) ティアには厳格な1日60分のCPUクォータがあり、アプリケーションが強制シャットダウンされます(結果として 403 Stopped エラーが発生します)。

2. 認証と Managed Identity (パスワードレス)

  1. コード: Node.js バックエンドで @azure/identity の DefaultAzureCredential を使用します。
  2. ID を有効化: Azure App Service ポータルで、Settings > Identity に移動し、System assigned を有効にします。
  3. IAM アクセス許可: 対象の Azure AI プロジェクトで、Access control (IAM) に移動し、App Service の Managed Identity に Azure AI Developer ロールを割り当てます。 (注: Cognitive Services OpenAI User では Azure Foundry Orchestration Agents には不十分です)。

3. 環境変数 (フロントエンド vs バックエンドの落とし穴)

GitHub Actions でフルスタックアプリ (React/Vite + Node.js) をデプロイする場合、環境変数は論理的に分割する必要があります。

フロントエンド (Vite)

  • VITE_ プレフィックスが付いた変数 (例: Supabase キー) は、ビルド時に静的な HTML/JS に埋め込まれます。
  • 設定場所: これらは GitHub Secrets に保存し、.github/workflows ファイル内の npm run build ステップの env: ブロックで明示的にマッピングする必要があります。
  • 危険: Azure にのみ設定し GitHub Actions に設定しない場合、Vite は空の変数でフロントエンドをビルドします。

バックエンド (Node.js)

  • 実行中の server.js ファイルは、環境変数をクラウドコンテナからランタイムで読み取ります。
  • 設定場所: 変数 (例: Azure AI エンドポイント、バックエンド Supabase キー) は、Azure ポータルの Settings > Environment variables で直接設定します。
  • 危険: Azure App Service のバックエンドは GitHub Actions のシークレットを継承しません。Azure ポータルで手動で設定する必要があります。
  • 重要: 変数は Node.js プロセスの起動時に一度だけメモリに読み込まれます。変数を追加または変更した場合は、App Service の概要ページで明示的に Restart をクリックする必要があります。
  • Azure Load Balancer を信頼するには(express-rate-limit に必要)、Express アプリに app.set('trust proxy', 1); を追加してください。

4. GitHub Actions CI/CD パイプライン

最も安全なデプロイ戦略は、ビルドエンジンの競合 (GitHub と Azure Oryx) を避けることです。GitHub にビルドとパッケージ化を100%任せましょう。

ワークフローのベストプラクティス:

  1. GitHub で npm install とフロントエンドのビルド (npm run build) を実行します。
  2. GitHub は、コンパイルされた出力 (dist)、バックエンドファイル (server.js)、そして重要な node_modules フォルダを含むアーティファクトをアップロードします。
    • 理由: node_modules を省略すると、Azure の Oryx エンジンが npm run build を実行してアプリをビルドしようとしますが、生のソースファイル (index.html) がアップロードされていないためクラッシュします。
  3. GitHub Secret として保存された発行プロファイルと共に azure/webapps-deploy@v3 を使用します。

関連スキル