vibe-security
AIコーディングアシスタントが「バイブコーディング」で生成したコードに潜むセキュリティ脆弱性を自動検出します。APIキーの露出、アクセス制御の不備(Supabase RLSやFirebaseルール)、認証バリデーションの欠如、クライアントサイドの信頼問題、決済フローの脆弱性などをチェックします。セキュリティに関する質問、コードレビューの依頼、認証・決済・データベース・APIキー・ユーザーデータを扱うコードの作成・確認時、または「このコードは安全?」「脆弱性を調べて」「ハックされる?」といった発言があった際に自動的に機能します。
description の原文を見る
Audits codebases for common security vulnerabilities that AI coding assistants introduce in "vibe-coded" applications. Checks for exposed API keys, broken access control (Supabase RLS, Firebase rules), missing auth validation, client-side trust issues, insecure payment flows, and more. Use this skill whenever the user asks about security, wants a code review, mentions "vibe coding", or when you're writing or reviewing code that handles authentication, payments, database access, API keys, secrets, or user data — even if they don't explicitly mention security. Also trigger when the user says things like "is this safe?", "check my code", "audit this", "review for vulnerabilities", or "can someone hack this?".
SKILL.md 本文
AI コード生成によって一般的に導入されるセキュリティ脆弱性を監査します。これらの問題は「vibe-coded」アプリ(AI支援により迅速に構築されたが、セキュリティの基本がスキップされたプロジェクト)に蔓延しています。
AI アシスタントはこれらのパターンを一貫して間違えており、実際の侵害、盗まれた API キー、および枯渇した請求アカウントにつながります。このスキルは、これらの間違いが本番環境に展開される前に捕捉するために存在します。
コア原則
クライアントを信頼してはいけません。すべての価格、ユーザーID、役割、サブスクリプションステータス、フィーチャーフラグ、およびレート制限カウンターは、サーバーサイドで検証または実装される必要があります。ブラウザ、モバイルバンドル、またはリクエストボディにのみ存在する場合、攻撃者がそれを制御します。
監査プロセス
コードベースを体系的に検査します。各ステップについて、コードベースがその技術またはパターンを使用している場合にのみ関連参照ファイルを読み込みます。関連のないステップはスキップしてください。
-
シークレットと環境変数 — ハードコードされた API キー、トークン、または認証情報をスキャンします。クライアント側の環境変数プレフィックス(
NEXT_PUBLIC_、VITE_、EXPO_PUBLIC_)を介して公開されたシークレットをチェックします。.envが.gitignoreに含まれていることを確認します。references/secrets-and-env.mdを参照してください。 -
データベースアクセス制御 — Supabase RLS ポリシー、Firebase Security Rules、または Convex 認証ガードをチェックします。これは vibe-coded アプリの重大な脆弱性の #1 の原因です。
references/database-security.mdを参照してください。 -
認証と認可 — JWT 処理、ミドルウェア認証、Server Action 保護、およびセッション管理を検証します。
references/authentication.mdを参照してください。 -
レート制限と悪用防止 — 認証エンドポイント、AI 呼び出し、および高コストの操作にレート制限があることを確認します。レート制限カウンターが改ざんできないことを確認します。
references/rate-limiting.mdを参照してください。 -
支払いセキュリティ — クライアント側の価格操作、ウェブフック署名検証、およびサブスクリプションステータス検証をチェックします。
references/payments.mdを参照してください。 -
モバイルセキュリティ — 安全なトークンストレージ、バックエンドプロキシを介した API キー保護、およびディープリンク検証を検証します。
references/mobile.mdを参照してください。 -
AI / LLM 統合 — 公開された AI API キー、欠落した使用制限、プロンプトインジェクションベクトル、および安全でない出力レンダリングをチェックします。
references/ai-integration.mdを参照してください。 -
デプロイメント構成 — 本番環境設定、セキュリティヘッダー、ソースマップの公開、および環境の分離を検証します。
references/deployment.mdを参照してください。 -
データアクセスとInput Validation — SQL インジェクション、ORM の誤用、および欠落した入力検証をチェックします。
references/data-access.mdを参照してください。
部分的なレビューを行っているか、特定の領域でコードを生成している場合は、関連する参照ファイルのみを読み込みます。
コア指示
- 本物のセキュリティ問題のみを報告します。スタイルやセキュリティ以外の懸念について細かく指摘しないでください。
- 複数の問題が存在する場合、悪用可能性と実世界への影響によって優先順位を付けます。
- コードベースが特定の技術(例:Supabase がない)を使用していない場合、そのセクション全体をスキップします。
- 新しいコードを生成する場合、関連する参照ファイルに積極的に相談して、最初から脆弱性の導入を回避します。
- 重大な問題(シークレットの公開、RLS が無効、認証バイパス)を見つけた場合、長いリストに埋もれさせずに、応答の先頭で即座にフラグを立てます。
出力形式
重大度別に結果を整理します:Critical(重大) → High(高) → Medium(中) → Low(低)。
各問題について:
- ファイルと関連行を記述します。
- 脆弱性の名前を付けます。
- 攻撃者が何をできるかを説明します(抽象的なリスクではなく具体的な影響)。
- before/after のコード修正を示します。
問題がない領域はスキップします。優先順位付きサマリーで終了します。
出力例
Critical
lib/supabase.ts:3 — Supabase service_role キーがクライアントバンドルで公開されている
service_role キーはすべての Row-Level Security をバイパスします。誰でもブラウザバンドルから抽出でき、データベースのすべての行を読み取り、変更、または削除できます。
// Before
const supabase = createClient(url, process.env.NEXT_PUBLIC_SUPABASE_SERVICE_KEY!)
// After — クライアント側では anon キーを使用します。service_role はサーバーサイドコードのみに属します
const supabase = createClient(url, process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!)
High
app/api/checkout/route.ts:15 — クライアントリクエストボディから取得した価格
攻撃者はリクエストを修正することで、任意の価格($0.01 を含む)を設定できます。価格はサーバーサイドで検索される必要があります。
// Before
const session = await stripe.checkout.sessions.create({
line_items: [{ price_data: { unit_amount: req.body.price } }]
})
// After — サーバーサイドで価格を検索します
const product = await db.products.findUnique({ where: { id: req.body.productId } })
const session = await stripe.checkout.sessions.create({
line_items: [{ price: product.stripePriceId }]
})
サマリー
- Service role キー公開(Critical): 誰でもすべてのデータベースセキュリティをバイパスできます。キーをすぐにローテーションして、サーバーサイドのみに移動します。
- クライアント制御の価格(High): 攻撃者は任意の価格で購入できます。サーバーサイドの価格検索を使用します。
コード生成時
これらのルールは予防的にも適用されます。認証、支払い、データベースアクセス、API キー、またはユーザーデータに触れるコードを記述する前に、関連する参照ファイルに相談して、最初から脆弱性の導入を回避します。予防は検出より優れています。
参照
references/secrets-and-env.md— API キー、トークン、環境変数構成、および.gitignoreルール。references/database-security.md— Supabase RLS、Firebase Security Rules、および Convex 認証パターン。references/authentication.md— JWT 検証、ミドルウェア、Server Actions、およびセッション管理。references/rate-limiting.md— レート制限戦略と悪用防止。references/payments.md— Stripe セキュリティ、ウェブフック検証、および価格検証。references/mobile.md— React Native および Expo セキュリティ:安全なストレージ、API プロキシ、ディープリンク。references/ai-integration.md— LLM API キー保護、使用制限、プロンプトインジェクション、および出力サニタイゼーション。references/deployment.md— 本番環境構成、セキュリティヘッダー、および環境分離。references/data-access.md— SQL インジェクション防止、ORM セーフティ、および入力検証。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- raroque
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/raroque/vibe-security-skill / ライセンス: MIT
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。