Communityコーディング&開発github.com

daniloduuarte/verify-saas

コード変更が何かを壊していないか検証します。完全モードでは型チェック、リンター、ビルド、テストを実行し、保存されたベースラインと比較します(新たなエラーと既存の負債を区別し、新しいルート、依存関係、マイグレーションを警告、特にセキュリティ関連のキーワードを含むマイグレーションを強調表示)。クイックモード(--quick)は変更されたファイルに対して型チェックとリンター、テストのみを実行します。適切なタイミングで使用してください(「いつ実行するか」を参照)。コミット、プッシュ、デプロイの前に必須です。

verify-saas とは?

このスキルは、SaaS アプリケーションのコード変更が既存の機能を壊していないかを自動検証するツールです。完全モードでは型チェック、リンター、ビルド、テストを実行し、事前に保存されたベースライン(前回の正常状態)と比較することで、「新たなエラー」と「以前からの技術的負債」を明確に区別します。新しいルート、依存関係の追加・変更、特にセキュリティ関連キーワードを含むデータベースマイグレーションも検出し、警告を表示します。クイックモード(--quick)は変更ファイルのみを対象に型チェック、リンター、テストを実行するため、作業途中の軽い確認に適しています。Claude Code などの AI エージェント向けに設計されており、ユーザーがプロジェクト固有の設定(コマンド、マイグレーションディレクトリ、警告キーワード)を `verify-saas.config.json` でカスタマイズできます。ベースラインファイル(verify-saas.baseline.json)はプロジェクトにコミットすることで、チーム間やセッションを越えた一貫した検証を実現します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/daniloduuarte/verify-saas/tree/HEAD/verify-saas

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

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

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

ドキュメント

いつ実行するか(判定ルール)

状況に応じて適切に実行し、反射的に実行しないでください。状況に応じたレベルを選択します:

状況実行内容
ドキュメント、メモ、コメント、計画、仕様のみの変更何もしない。 不要だったと伝える。
作業中:編集の合間、修正ラウンド、「型を壊したかも?」クイック: node .claude/skills/verify-saas/driver.mjs --quick(または、変更された型が1つだけの場合は型チェックコマンドのみ)
各タスクまたは論理的なまとまりの終了時、コミット前完全モード、1回
git push、デプロイ、メインブランチへのマージ前完全モード、必須。 最後の完全モードの実行が対象のコミットを正確にカバーしている場合は繰り返さない。
新しいマイグレーション、package.jsonの変更、ビルド設定、アクセス/認証ルールの変更完全モード(構造変更のリスクがあるため)
git pull 後、または他の人の作業をマージした後完全モード(ベースラインを再設定)

絶対に行わないこと:

  • 変更がないのに続けて2回実行すること;
  • 最初の実行結果を読む前に2回目の実行を開始すること;
  • 同じディレクトリで他のビルドやテストと並行して実行すること;
  • ライブ調整の途中で完全モードを実行すること(コミットの指示を待つこと)。

常に行うこと:

  • テストが本番環境ではなくテスト用のデータベース/環境を指していることを確認する(READMEの注意を参照);
  • 実行する前に自分の diff を読み直す:不要なインポートやプロパティ名の間違いは、実行して検出するのではなく、読んで見つける;
  • 終了コードだけでなく、レポート全体を読む。

実行方法

プロジェクトルートで:

node .claude/skills/verify-saas/driver.mjs            # 完全モード
node .claude/skills/verify-saas/driver.mjs --quick    # クイックモード、ベースラインは更新しない
node .claude/skills/verify-saas/driver.mjs --baseline # 現在の状態を「正常」として再取得

プロジェクト固有の設定(コマンド、ディレクトリ、警告キーワード、有効/無効のステップ)はすべてプロジェクトルートの verify-saas.config.json に記述します。このファイルがない場合、Next.js + TypeScript + npm のデフォルト設定が使用されます。

終了コード:0 = 悪化なし;1 = 何かが悪化した、またはすでに壊れていたものがある(型、ビルド、テスト)。

初回使用:プロジェクトへの適応(このドキュメントを読んでいるエージェント向け)

ユーザーがスキルをインストールしたばかりで、自分のSaaSに適応するよう依頼した場合、以下の順序で実行してください:

  1. プロジェクトを読む(package.json または同等のファイル、マイグレーションディレクトリ、テストの実行方法)そして verify-saas.config.json を調整する:型、リンター、ビルド、テストのコマンド、structure.migrationsDir、alertKeywords。プロジェクトにない機能は "enabled": false で無効にする。
  2. ユーザーに、ビジネス上壊してはいけないことを尋ねる(重複した予約がないスケジュール、在庫がマイナスにならない、残高の一致、企業Aが企業Bのデータを見られない、支払いが二重に受領されて1回だけ計上されないなど)。ルールを自分で考えず、ユーザーと確認し、docs/exemplos-por-nicho.md をモデルとしてテストを書く。
  3. テスト環境を確認する。 本番環境に対してテストを実行してはならない。テスト用のデータベースや環境がない場合は、停止してユーザーに警告する。
  4. その後 node .claude/skills/verify-saas/driver.mjs --baseline を実行し、レポートを表示し、すでに壊れているもの(負債)と合格したものを指摘する。
  5. 調整内容と、書かれたテストをユーザーが確認する必要があることを伝える。

レポートの読み方

順番に:

  1. 型:合格/不合格、ベースラインとのエラー数の比較。
  2. リンター:単なる件数ではなく、指紋(ファイル:行:列:ルール)で比較。「以前5エラー、以後5エラー」でも、5つの異なるエラーが隠れている可能性がある。以前からの負債は決してあなたの責任ではない;新しいものだけがカウントされる。
  3. ビルド:合格/不合格、ルート一覧(設定されている場合)。
  4. テスト:ベースラインとの比較で合格/不合格。
  5. 構造:新しい依存関係、削除された依存関係、バージョン変更;新しいマイグレーション、警告キーワード(セキュリティ/権限)を含む場合は警告付きで表示。

記号:✗ 退行(修正が必要)、✓ 改善、= 変更なし、ℹ 情報、⚠ 意図的なものか確認が必要。

出力後、完全モードは現在の状態でベースラインを上書きします。そのため、再実行する前に退行を修正してください。そうしないと、2回目の実行ではそのエラーが「以前からの負債」として扱われます。

ベストプラクティス

  • ベースライン(verify-saas.baseline.json)はプロジェクトにコミットすること。これにより、セッション間やマシン間で「前回からの比較」が機能します。
  • プロジェクトで初めて使用する場合:正常な状態で --baseline を実行します。
  • マイグレーションはファイル名のみで比較されます。スキルはSQLを適用したり検証したりしません;新しいマイグレーションが現れたこと、およびセキュリティに関連する変更があるかどうかを通知するだけです。
  • スキルは依存関係のインストールを行いません(npm install は検証だけで実行すべきアクションよりも大きな操作です)。
  • レポートに「新しい」問題が表示され、自分が原因でない場合、前回の実行以降にリポジトリが変更されたかどうかを確認してください(git log -3 --oneline)。
  • 本当の保護は自分で書くテストから得られます(docs/exemplos-por-nicho.md を参照)。スキルはそれらが実行されること、および何かが変更されたときに通知することを保証するだけです。

関連スキル