mcpField
I
infrahub-auditing-repo

infrahub-auditing-repo

github.com/opsmillテスト・品質27152 回インストール2 日前に更新
リポジトリ

infrahub-auditing-repo について

Infrahub リポジトリを読み取り専用で監査するスキルです。デプロイ前の確認、既存プロジェクトへの参加、リファクタリング後の点検に使えます。スキーマ、オブジェクト、Python コンポーネント、設定、相互参照を検証し、重要度別の Markdown レポートを作成します。

主な機能

  1. 01プロジェクト構成と設定の調査
  2. 02スキーマとオブジェクトの検査
  3. 03Python コンポーネントと登録の検証
  4. 04コンポーネント間参照の照合
  5. 05重要度別監査レポートの作成
  6. 06レポートファイルのみを書き込み

活用シーン

  1. 01Infrahub デプロイ前のリポジトリ確認
  2. 02既存 Infrahub プロジェクトへの参加
  3. 03リファクタリング後の回帰検出
  4. 04スキーマ読み込みやパイプライン障害の調査

インストール

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

$npx skills add https://github.com/opsmill/infrahub-skills --skill infrahub-auditing-repo

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

audit-procedure.md
examples.md
rules/
_sections.md
_template.md
artifact-target-inheritance.md
audit-cites-all-reference-sites.md
audit-is-read-only.md
audit-verifies-proposed-syntax.md
deployment-readiness.md
objects-format.md
practices-schema.md
practices-watch-dependencies.md
python-classes.md
registration-completeness.md
schema-display-labels-deprecated.md
schema-file-object-misuse.md
schema-naming.md
schema-relationships.md
structure-infrahub-yml.md
xref-query-names.md
yagni-custom-domain-primitives-instead-of-builtin.md
yagni-denormalized-vs-indirect-relationship.md
yagni-duplicate-shape-not-extracted-to-generic.md
yagni-generator-hardcoding-data.md
yagni-generator-query-shape-too-broad.md
yagni-generator-that-should-be-template.md
yagni-imperative-allocation-vs-resource-pool.md
yagni-missing-inverse-forces-python-filter.md
yagni-profile-over-default.md
yagni-python-transform-that-could-be-jinja2.md

詳細

Infrahub Repo Auditor

概要

infrahub-skills プラグインのすべてのルールとベストプラクティスに照らして、Infrahub リポジトリを包括的に監査します。スキーマ、オブジェクト、チェック、ジェネレーター、トランスフォーム、メニュー、.infrahub.yml 設定、およびデプロイ準備状況を網羅する構造化されたレポートを生成します。

この監査は読み取り専用です。 書き込むファイルは、自身のレポートである AUDIT_REPORT.md ただ 1 つだけです。作業ツリーやインデックス内のそれ以外のものは一切変更されず、監査自身の副作用を元に戻す場合も含めて、それらに対して破壊的な git コマンドが実行されることはありません。監査は、コミットされていない作業を保持するツリーでこそ最も有用であり、それはまさに書き込みを元に戻せないツリーです。

rules/audit-is-read-only.md には、正規のリストが記載されています。どの git コマンドが禁止されているか、そしてどの git コマンドがツリーに触れずに別のリビジョンを読み取るかです。Phase 1 の前に、このファイルと手順の Phase 0 をお読みください。Bash ツールは読み取り専用の調査のために付与されており、状態を変更するためではありません。Write はレポートファイル専用に付与されています。

プロジェクトコンテキスト

プロジェクト構造: !find . -maxdepth 2 -type f \( -name "*.yml" -o -name "*.yaml" -o -name "*.py" -o -name "*.gql" -o -name "*.j2" \) 2>/dev/null | head -40

Infrahub 設定: !cat .infrahub.yml 2>/dev/null || echo "No .infrahub.yml found"

使用する場面

  • リポジトリを Infrahub にデプロイする前
  • 既存の Infrahub プロジェクトにオンボーディングするとき
  • 大規模なリファクタリングの後に、リグレッションを検出するため
  • 開発ワークフローにおける定期的な品質ゲートとして
  • スキーマの読み込み、オブジェクト同期、またはパイプラインの障害をトラブルシューティングするとき

仕組み

呼び出されると、監査ツールは次のことを行います:

  1. プロジェクト構造を検出します (.infrahub.yml、スキーマ、オブジェクト、チェック、 ジェネレーター、トランスフォーム、メニュー)
  2. 各コンポーネントを infrahub-skills プラグインで 定義されたルールに照らして検証します
  3. コンポーネント間を相互参照します(例: クエリ名が Python ファイルと .infrahub.yml の間で一致するか)
  4. 重要度別に整理された検出事項を含む Markdown レポートを生成します

これらのステップをまとめる段階的な手順は audit-procedure.md にあります — 監査を実行するときはそのファイルをお読みください。これは Phase 0(他のすべてのフェーズが従う読み取り専用の制約)で始まり、 その後 9 つのフェーズ(プロジェクト構造 → スキーマ → オブジェクト → Python コンポーネント → 相互参照 → 登録 → ベストプラクティス → デプロイ → YAGNI / 修正コスト)と、最終レポートで使用される 検出事項ごとの重要度レベルを定義しています。

最初の検出事項を出力する前に、 rules/audit-cites-all-reference-sites.md と rules/audit-verifies-proposed-syntax.md をお読みください。検出事項は、どのように検証されたかを述べるか、 検証できなかった場合は verified_against でその旨を述べます — 重要度を下げることで済ませてはならず、重要度はルールに属します。 検出事項は、変更を求めるすべての参照箇所を列挙し、提案する フィルター、フィールド、または設定キーを、公開されているドキュメント ではなく監査対象のバージョンに照らして解決します。どちらもすべての フェーズに適用され、どちらも検出事項の形式にフィールドを追加します。

Phase 7 が .infrahub.yml に到達したときは、watch ブロックを 判断する前に rules/practices-watch-dependencies.md をお読みください。欠落したキー、不完全なリスト、および追跡されて いないファイルを指定するエントリは、いずれもサイレントに失敗し、 キーは提案する前に監査対象のバージョンに照らして確認する必要が あります。

監査カテゴリ

優先度カテゴリチェック内容
CRITICAL行動規範監査はレポート以外を何も書き込まず、すべての指摘はその根拠となる証拠を開示します。これは監査者を制約するものであり、リポジトリを制約するものではありません
CRITICALプロジェクト構造.infrahub.yml が存在し、パスが有効であること
CRITICALスキーマ検証命名、リレーションシップ、非推奨フィールド
CRITICALオブジェクト検証YAML 構造、値の型、参照
CRITICALPython コンポーネントクラスの継承、必須メソッド
HIGH相互参照クエリ名の一致、ターゲットグループ
HIGHリレーションシップ双方向 ID、カーディナリティ
HIGH登録すべてのファイルが登録され、孤立したファイルがないこと
MEDIUMベストプラクティスhuman_friendly_id、display_label、watch 依存関係
MEDIUM–LOWYAGNI / 修正コストスキーマ、GraphQL、Jinja2、または組み込みの IPAM/VLAN で実現できることを Python で行っている場合、非正規化されたデータ、抽出されていない重複形状、マーケットプレイスが出荷しているのに一から手作りされたドメイン全体。重要度は修正コストのはしごに沿って決まります。ステップ 1〜3 は MEDIUM、ステップ 4〜7 は LOW
MEDIUMデプロイGit ステータス、ブートストラップの配置
LOWパターンとスタイルコード構成、命名

監査の実行

Claude に次のように伝えてください: 「Audit this Infrahub repo」 または 「Run the Infrahub repo auditor」

監査者は現在の作業ディレクトリをスキャンし、 audit-procedure.md で定義されたフェーズを順にたどり、 以下で説明するレポートを生成します。

レポート形式

レポートはプロジェクトルートの AUDIT_REPORT.md に次の構造で書き込まれます:

# Infrahub Repository Audit Report

## Summary

- Total findings: N
- Critical: N | High: N | Medium: N | Low: N | Info: N
- Working tree at audit time: clean | N uncommitted files
- Tree modified by this audit: no | yes, listing paths
  (the report file itself does not count)

## Project Structure

...

## Schema Audit

...

## Object Data Audit

...

## Checks Audit

...

## Generators Audit

...

## Transforms Audit

...

## Menus Audit

...

## Cross-Reference Integrity

...

## Deployment Readiness

...

## YAGNI / Cost-to-Fix Findings

Findings sorted by `ladder_step` ascending (cheapest
fix first), then by file path. Each entry names the
rule, the ladder step, the file:line, and the
suggested replacement (schema feature, GraphQL query,
Jinja2 template, `Builtin*`/`Ipam*` inheritance, or
inverse relationship declaration).

A finding also renders the evidence it carries: a
**Sites** line listing every reference the fix must
touch, a **Verified against** line naming what the
proposed syntax was resolved against, and, on a
generic-extraction finding, a **Feasibility** verdict.

...

監査ルールリファレンス

監査者はすべてのスキルのルールをチェックします:

ルールと手順

  • audit-procedure.md — すべての監査実行を 駆動する、フェーズ 0 の制約と 9 フェーズのウォークスルー
  • rules/ — 各フェーズから参照される 詳細な監査ルール定義
  • examples.md — 監査レポートの サンプルと指摘パターン

コメント