Communitygithub.com

vibator/vibator

バイブコーディングにガードレールを設定する品質ゲートツール。

vibator とは?

vibatorは、プロジェクトの品質と規律を維持するための品質ゲートツールです。特に「バイブコーディング」(直感的で高速なコーディング)において、意図しない品質低下やルール違反を防ぐガードレールを提供します。このスキルは、vibator.json設定ファイルを正しく構成するためのワークフローを定義しており、CI/CDパイプライン(例:GitHub Actions)や開発者のローカル環境で実行し、ファイルサイズ制限、非推奨APIの使用禁止、コード生成成果物の整合性チェック、i18nロケールの同期確認など、さまざまなルールを適用します。設定はデフォルトからの差分のみ記述し、ルールを弱めて通過させるのではなく、違反を修正することを重視します。共有プリセットの拡張(extends)にも対応し、一貫した品質基準を複数プロジェクトで共有できます。

対応✓Claude Code~Codex CLI~Cursor
npx skills add vibator/vibator

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

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

ドキュメント

vibatorの設定

参考: npx vibator docs configuration で設定形式を、npx vibator docs rules で各ルールのオプションとデフォルト値を確認できます。 このスキルはワークフローであり、それらのドキュメントが契約(契約書)です。

設定は発見タスクです。適切な設定はプロジェクトが実際に何を含むかによって決まります。最初に調査し、次に記述し、最後に実行します。

基本ルール

  • ゲートを通過させるために弱めてはいけません。 ルールを無効にしたり、予算を広げたり、現在失敗しているファイルを除外しても、問題は解決せず隠蔽されるだけです。指摘事項を修正するか、ルールを失敗させたままにしてその旨を伝えてください。唯一の行単位のエスケープは // vibator-ignore: <理由> であり、理由は必須です。
  • デフォルトと異なるものだけを設定してください。 すべてのルールは、設定がまったくなくても、それぞれのデフォルトの重大度で既に実行されます。すべてのデフォルトを再記述する設定は、重要な行を埋もれさせます。
  • include と exclude はルールのデフォルトを置き換えます。 マージはされません。絞り込む前に、引き続き必要なデフォルトをコピーしてください。
  • 実行を成功させるために recommended: false を決して設定しないでください。 これは設定が指定していないすべてのルール(合格しているものを含む)を無効にします。これは意図的な選択を表明するために存在し、その選択は人間の判断です。
  • プロジェクトが拡張している設定ファイルは、あなたが編集するものではありません。 プリセットは複数のプロジェクトで共有される標準を定めています。ローカルで差分を設定するか、人間にプリセットの変更を依頼してください。node_modules 以下のファイルを編集して指摘を黙らせないでください。次のインストールで置き換えられます。

手順

  1. 有効なファイルから開始します。 vibator.json が存在しない場合は、npx vibator init を実行します。これにより、エディタにバリデーションを提供する $schema 行が書き込まれます。次に npx vibator list で、すべてのルールとそのデフォルトが表示されます。独自のルールを記述する前に、プロジェクトが既にプリセットを拡張しているか、拡張可能なプリセット(package.json 内の @scope/quality 形式のパッケージ、または兄弟リポジトリ間で同じ設定が繰り返されているもの)が存在するかを確認してください。拡張することは再記述することよりも優れています。「共有プリセットの上に構築する」を参照してください。

  2. 設定なしで一度実行します: npx vibator --reporter json。これにより、どのルールが合格し、どのルールが失敗し、どのルールがオプション不足でクラッシュしたかが表示されます。診断結果の前に数を読んでください。400件の指摘があるルールは、今日400件すべてを修正するのではなく、決定が必要です(手順6を参照)。

  3. デフォルトでオフのルールに必要なものを発見します。 各ルールは、プロジェクトの知識なしでは動作できないため、オフになっています。以下を探してください:

    • locale-parity: ロケールディレクトリ(locales/、i18n/、public/locales/)を見つけます。レイアウト(ロケールごとに1ディレクトリ layout: "directory-per-locale"、ロケールごとに1ファイル "file-per-locale")と、どのロケールがソースかを確認します。
    • codegen-drift: package.json のスクリプトでジェネレータ(db:generate、openapi、graphql-codegen)を読み取り、各ジェネレータが書き込むパスを見つけます。ジェネレータごとに name、command、paths を持つエントリを1つ設定します。
    • banned-patterns: プロジェクトのレビュー規則(CONTRIBUTING、スタイルドキュメント、繰り返されるレビューコメント)を読み取ります。「決してXをするな」というパターン形のすべてが、組み込みルールと同じくらい注意深く記述された、独自の message、expected、fix を持つエントリになります。
    • no-deprecated-apis: tsconfigをリストします。モノレポでは、チェックする必要のある各プロジェクトを options.projects に指定します。
  4. 既存のプロジェクトドキュメントをルールに結び付けます。 guidelines を使用します。リポジトリに AGENTS.md、CLAUDE.md、またはルールが実施する標準を述べたスタイルドキュメントがある場合は、それをマッピングします:"guidelines": {"AGENTS.md": ["tsdoc-coverage"]}。プロジェクトの標準が、出荷されたガイドラインにコンテキストを追加するのではなく、それを置き換える場合にのみ、ルールごとの docs フィールドを使用します。

  5. 分割された標準には配列形式を使用します。 1つのルールを、異なるグロブとオプションで複数回実行できます:

    "max-file-size": [
      {"include": ["src/**"], "options": {"maxKb": 256}},
      {"include": ["assets/**"], "options": {"maxKb": 4096}}
    ]
    
  6. レガシーコードベースには --changed を使用して段階的に採用し、弱めないでください。 新しい作業はすぐにチェックし(npx vibator --changed、またはCIでプルリクエスト全体の差分に対して --since origin/main)、バックログを減らします。多くの指摘があるルールには、当面 warn を使用します。指摘は表示されたままになり、ブロックはしません。off を「後で」の意味で使用しないでください。

  7. 結果を検証します。 npx vibator を実行して確認します:有効化されたすべてのルールが実行され(クラッシュしたルールは設定バグであり、メッセージに何が欠けていたかが示されます)、残りの指摘は本物であり、オーバーライドしたものについては npx vibator explain <rule> で正しいガイドラインが表示されます。

共有プリセットの上に構築する

extends は . で始まるパス、またはパッケージ指定子を受け取り、それを宣言したファイルを基準に解決されます。後のエントリが前のエントリより優先され、ファイル自身の設定がそれらすべてより優先されます。

{
  "extends": ["@acme/quality/vibator.json"],
  "rules": { "max-file-size": "warn" }
}

マージはBiomeに従うため、そのスタックのユーザーが期待するように動作します。正しく理解すべき2つの結果:

  • ベアな重大度は他のすべてを保持します。 maxKb と include を設定したプリセットの上に "max-file-size": "warn" と書くと、重大度のみが変更されます。予算とグロブは継承されます。それらを再記述する必要はなく、再記述することはプロジェクトがプリセットからサイレントに逸脱する方法です。
  • 配列は置き換え、連結しません。 継承された allow または patterns リストに1つのエントリを追加するには、希望するリスト全体を記述します。これは意図的なものであり、継承されたエントリを削除することを可能にします。

差分のみを記述してください。プリセットがすでに述べていることを繰り返す設定は、それに同意しない設定と区別がつかず、次のプリセット更新はコピーしたフィールドに反映されません。

キュレーションされた選択として構築されたプリセットは "recommended": false を設定し、必要なルールをリストします。そのようなプリセットの下では、名前のないルールは実行されないため、ルールが欠けていると結論付ける前にこれを確認してください。

ガイドラインパスも同様に解決されます:プリセットによって指定された docs と guidelines のエントリはプリセットを基準に解決されるため、指摘はプリセットに同梱されているドキュメントを指します。あなた自身のパスは依然としてプロジェクトルートを基準に解決されます。

重大度ポリシー

  • error: 誤検知がほぼゼロの決定論的ルール。
  • warn: まだ見たことのないコードベースについて間違っている可能性があるルール(env-example-sync はテキストを照合します;prefer-array-methods は配列と Set を区別できません)、および大きなバックログを持つルールの暫定的な採用。
  • off: 適用されないルール(ロケールがなければ locale-parity はありません)のみに使用し、通過するための方法としては決して使用しません。

よくある間違い

  • include を記述してルールのデフォルトの除外(テスト、.d.ts)を失うこと。
  • ベアな重大度がそれらを破棄するという前提で、重大度オーバーライドの横にプリセットのオプションを再記述すること。そうはならず、コピーはプリセットの追跡を停止します。
  • 環境にないサービスやシークレットを必要とするジェネレータで codegen-drift を有効にすること。ルールはコマンドを実際に実行します。
  • すべてのドキュメントを guidelines のすべてのルールにマッピングすること。実際にそのルールの標準を述べているドキュメントのみをマッピングしてください。
  • 失敗している実行を終了するために、指摘を修正する代わりに設定を編集すること。人間がゲートを要求した場合、それを下げるのは人間だけが決定します。

関連スキル