mcpField
C
component-validator

component-validator

github.com/datexテスト・品質92 回インストール
リポジトリ

component-validator について

component-validatorは、Datex Studioのコンポーネントファイル1つを、型別の作成規則と共通規約に照らして検査する読み取り専用スキルです。ファイルの拡張子に応じて規則を選び、編集や書き換えを行わず、重要度別の指摘事項を返します。

主な機能

  1. 01コンポーネントの拡張子に応じた規則選択
  2. 02型別規則と共通規約の適用
  3. 03ブロッカー、警告、軽微な指摘の報告
  4. 04ファイル1つを編集せずに監査
  5. 05専用バリデーターが適切な場合の提示

活用シーン

  1. 01ブランチへのアップサート前のコンポーネント監査
  2. 02マージ前の作成スキルの出力確認
  3. 03規約やコンポーネント固有ルールへの違反の特定
  4. 04grid-validatorやschema-explorerを使う場面の判断

インストール

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

$npx skills add https://github.com/datex/skills --skill component-validator

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

同梱ファイル

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

evals/
evals.json
evals/files/
capture_shipment_notes_form-form.json
format_lookup_label_flow-flow.json
release_wave_batch_action-footprintFlow.json
update_task_priority_action-footprintFlow.json
scripts/
INSTALL.md
validate-component.py

詳細

コンポーネントバリデーター

Datex Studio のコンポーネントファイルを 1 つ監査し、種類ごとの作成ルールに照らして検証します。作成スキルがコンポーネントの作成または変更を終えた後、変更をブランチにアップサートする前に実施する、最後の読み取り専用ゲートです。このスキルは汎用ディスパッチャーです。コンポーネントファイルを読み込み、ファイルの接尾辞に基づいて該当する作成スキルの参照ドキュメントを選び、そのドキュメントのチェックリストを実行します。構造化された確認事項リスト(ブロッカー/警告/軽微な指摘)を返します。書き換えは行いません。

こちらも参照してください: grid-validator — グリッドファイル(*-grid.json)には、汎用ディスパッチャーでは検出できない注意点がいくつかあります(エンベロープと本文の形状、テキスト表示の型強制、5 か所の不変条件)。グリッドには grid-validator を優先し、利用できない場合はこのスキルを代替として使用してください。

こちらも参照してください: component-wiring-check — コンポーネント間参照の契約(あるコンポーネントが別のコンポーネントを参照する場合)を確認します。このバリデーターは単一ファイルを単独で監査するため、1 つのファイル内で確認できる明らかな配線のずれ(例:inParams を反映していない configParameters ブロック)は指摘しますが、外部参照をたどることはありません。

CAC に関する注意: Custom Angular Component(configurationTypeId: 36、manifest.json と app.<ref>.component.ts があり、//#region __COMPONENT_TYPES__/__COMPONENT_BODY__ を含む dxs ng 作業フォルダー)は、単一ファイルの JSON 本文ではないため、このスキルの接尾辞ディスパッチは適用されません。代わりに、custom-angular-component-creator 独自の事前チェックリストに従って監査してください。

参照資料

  • ../datex-studio-conventions/file-format.md — configurationTypeId の表、1 行の最小化済み JSON のルール、TypeScript 式のエンコード
  • ../datex-studio-conventions/naming-conventions.md — 接尾辞の表、referenceName とファイル名の規則、snake_case と camelCase の使い分け
  • ../datex-studio-conventions/defaults.md — accessModifier の既定値、description の最大文字数、既定のパッケージルール
  • 作成スキルの参照ドキュメント(このバリデーターがディスパッチするルールブック。下記のサブエージェントブロックにある接尾辞の表を参照)

依存関係

  • 作成スキル(action-creator、function-creator、grid-creator、hub-creator、form-creator、editor-creator、selector-creator、storage-creator、type-definition-creator、backend-test-creator、datasource-creator) — 各スキルの references/<type>.md ドキュメントが、このバリデーターがファイルの接尾辞に基づいてディスパッチするルールブックです。これらを更新すると、このバリデーターは新しいルールを自動的に適用します。
  • custom-angular-component-creator スキル — CAC(configurationTypeId: 36)の作業フォルダーは接尾辞によるディスパッチの対象外です(下記のサブエージェント表の CAC 行を参照)。このバリデーターは代わりに、そのスキル独自の事前チェックリストをルールブックとして参照します。
  • datex-studio-conventions スキル — 接尾辞にかかわらずすべてのコンポーネントに適用される、汎用的な横断ルール(ファイル形式、命名、既定値)。
  • datex-studio-shared/datex-studio-runtime スキル — 種類ごとのルールドキュメントで参照される、ブランチ設定の基本要素とプラットフォームランタイムのグローバル。
  • tailoring-overlay スキル — ファイルがベースコンポーネントではなく調整済みオーバーレイの場合に適用する、オーバーレイ固有のシャドーマーカールール。
  • component-wiring-check スキル — 親がさらに調査したい配線のずれが確認事項リストに現れた場合に実行する、コンポーネント間監査。

ワークフロー

通常、このスキルは作成スキルが作成ループの最後に呼び出すか、ユーザーが「マージ前にこのファイルを監査して」と直接呼び出します。呼び出しは Task ツールのサブエージェントディスパッチで行います。下記の ## Sub-agent セクションにあるプロンプトテンプレートを、対象ファイルのパスとともにサブエージェントへ渡してください。

呼び出し(オーケストレーター側)
  1. 対象の本体を特定する — 親が作成または変更したコンポーネントです。ブランチが信頼できる情報源であるため、対象は次のいずれかです。(a)作成スキルが dxs configuration upsert を実行しようとしている、ステージング済みのスクラッチ body.json(プッシュ前に監査します)、または(b)ブランチから新たに取得したファイル — dxs source explore config <referenceName> --branch <id>、または dxs configuration get <type> <id> -b <id> -O envelope.json && jq .json envelope.json > body.json。永続的なローカル src/ コピーを、信頼できる情報源であるかのように監査してはいけません。その単一のスクラッチ/取得済み JSON ファイルのパスをサブエージェントに渡します。
  2. サブエージェントに処理を依頼する — ## Sub-agent セクションのプロンプトテンプレートを使用して、Task ツールを実行します。サブエージェントは Read、Grep、Glob にアクセスできますが、編集はできません。
  3. 修正項目リストを適用する — サブエージェントは、重大度ごとに分類した Markdown の修正項目リストを返します。各項目は次のように扱います。
    • ブロッカー — アップサート前に必ず修正します。修正は該当する作成スキルに依頼します。
    • 警告 — 内容を確認し、対応を判断します。意図的な場合もあります。サブエージェントが意図を決めつけることはありません。
    • 軽微な指摘 — 任意で対応します。親がすでにその箇所に手を入れている場合を除き、後回しにします。
  4. 修正後に再検証する — ブロッカーを修正した場合は、バリデーターを再実行します。バリデーターの実行コストは低く(ルール文書に対する Read 1 回と Grep 1 回)、プッシュ前の最後の手順として実行してください。
スコープの遵守(バリデーターの契約)
  • バリデーターは読み取りのみを行い、編集はしません。修正は親が担当します。
  • バリデーターは修正項目リストを返し、書き換えた内容は返しません。
  • バリデーターは1 つのファイルを監査し、コンポーネント間の参照を追跡しません(それは component-wiring-check の担当です)。
  • バリデーターは生の OData スキーマ文書を読み込みません。ライブスキーマに基づくエンティティ/プロパティの検証が必要なデータソースの場合、バリデーターは親に schema-explorer を別途実行するよう推奨します。
  • バリデーターは意図を推測しません。ルール違反が意図的な可能性がある場合は、ブロッカーではなく、注記を添えた警告として指摘します。

サブエージェント

以下のプロンプトテンプレートは、オーケストレーターが Task ツールのサブエージェントに処理を依頼する際に渡すものです。サブエージェントは読み取り専用です(Read、Grep、Glob)。


Datex Studio コンポーネントファイル 1 つを、その型の作成ルールに照らして検証します。ファイルは編集しません。修正項目リストを返します。

ワークフロー
  1. ファイルの拡張子からコンポーネントの種類を特定し、対応するルールドキュメントを読み込みます。 作成スキルの references/<type>.md が主要な情報源です。横断的な規約ドキュメントも常に対象に含めます。

    拡張子主要なルールの参照先(作成スキル)
    *-footprintFlow.json(アクション)../action-creator/references/actions.md
    *-flow.json(関数)../function-creator/references/functions.md
    *-grid.json代わりに grid-validator を使用してください — この汎用ディスパッチャーにはない、グリッド固有の注意点が含まれています。grid-validator を利用できない場合に限り、../grid-creator/references/grids.md を参照してください。
    *-form.json../form-creator/references/forms.md
    *-editor.json../editor-creator/references/editors.md
    *-hub.json../hub-creator/references/hubs.md
    *-storage.json../storage-creator/references/storage.md
    *-selector.json../selector-creator/references/selectors.md
    *-customType.json../type-definition-creator/references/type-definitions.md
    *-backendTest.json../backend-test-creator/references/backend-tests.md
    *-datasource.json../datasource-creator/references/odata-datasources.md(本体の構造がフローベースの場合は flow-datasources.md も)
    *-footprintDatasource.json../datasource-creator/references/odata-datasources.md、../datasource-creator/references/flow-datasources.md
    CAC 作業フォルダー(manifest.json + //#region __COMPONENT_TYPES__/__COMPONENT_BODY__ を含む app.<ref>.component.ts)、configurationTypeId: 36このファイル拡張子による振り分けは適用されません — CAC は単一の JSON 本体ではありません。拡張子に対応したルールドキュメントではなく、../custom-angular-component-creator/SKILL.md の Pre-Flight Checklist と ../custom-angular-component-creator/references/custom-angular-components.md に従って監査してください。

    拡張子が表のどれにも一致しない場合は、Cannot validate: unknown component suffix '<suffix>'. Supported: <list>. と返して終了します。ファイルがテーラードオーバーレイとして認識された場合は、../tailoring-overlay/ のルールも読み込みます。

  2. 対象の本体をすべて読み込みます。 単一ファイルを Read で一度読み込みます。これは親がアップサート用に用意したスクラッチ JSON(またはブランチから jq .json で取得したもの)であり、使い捨ての一時ファイルです。永続的な信頼できる情報源のコピーではありません。最小化された JSON エンベロープをチェックリストに照らして監査します。

  3. 対応するルールドキュメントの Pre-Flight Checklist セクションを読みます。 これがルールブックです。記憶からルールを再構成せず、文書化された内容を適用してください。

  4. チェックリストを項目ごとに確認します。 問題ごとに以下を記録します。

    • 重大度 — blocker(実行時の暗黙的な失敗、インポートエラー、明確なルール違反)、warning(影響するかどうか不明な乖離や不整合)、nit(スタイル、命名、任意の整理)。
    • ルール — 該当するチェックリスト項目。
    • 場所 — <filename>:<line> または JSON パス(例:inParams[0].objectTypeDef)。
    • 根拠 — 短い引用または説明。
  5. 種類固有のチェックリストに記載がなくても、横断的な共通の失敗要因を必ず確認します。 これらは ../datex-studio-conventions/universal-checklist.md にまとめられています。その項目を確認してください(説明は 100 文字以下、accessModifier が設定されていること、referenceName と stem が一致すること、1 行の最小化された JSON、configurationTypeId が正しいこと、新しい inParams/outParams の ID が snake_case であること、新規作成の場合は id: 0)。テーラードオーバーレイファイルには、../tailoring-overlay/ のシャドーマーカールールも適用されます。

  6. 報告します。 重大度ごとにまとめた短い Markdown の指摘リストを返します。各項目は 1〜2 行にしてください。前置き、書き換え、1 行の指摘を超えるコード提案は不要です。問題がない場合は No issues found. と返します。

スコープの厳守
  • 読み取ります。編集はしません。
  • 指摘事項のリストを返します。書き直しはしません。
  • コンポーネント間の参照は追跡しません。それは component-wiring-check の担当です。単一ファイルから明らかな配線の問題(例:configParameters ブロックがファイル自身の inParams と一致しない)が見つかった場合は、警告として指摘し、親に委ねてください。
  • 生の OData スキーマドキュメントは読み込みません。コンポーネントがデータソースで、エンティティ/プロパティの検証が必要な場合は、親に schema-explorer スキルを別途実行するよう勧めてください。
  • 意図を推測しません。ルール違反が意図的である可能性がある場合は、ブロッカーではなく注記付きの警告として指摘してください。
  • ジェネレーターの出力は、リファレンスのひな形より優先されます。値が dxs … generate コマンドから生成され、ドキュメント化されたひな形と異なる場合、ルールドキュメントに具体的な失敗(インポート/検証エラー、コード生成の破損)が明記されている場合に限り、ブロッカーとして報告してください。それ以外の場合は、不一致を軽微な指摘として記録し、値はそのままにしてください。
出力形式
## Blockers
- [`description`] is `null` (defaults.md requires non-empty).
- [`inParams[3].objectType`] references `Allocations.i_unknown_type` — type file not present in the package.

## Warnings
- [`outParams[0].id` = "alertList"] camelCase; new params should be snake_case.

## Nits
- [`title`] equals `referenceName`; a human-readable title is more discoverable in Datex Studio listings.

空の項目は省略してください。3 つの項目がすべて空の場合は、No issues found. を返してください。

バンドルされた保存ゲートフック(任意)

scripts/validate-component.py は Claude Code の PostToolUse フックで、ハーネスレベルで最も基本的な 2 つのチェック(有効な JSON であること、description が存在し 100 文字以下であること)を強制し、スキルが実行される前に不適切な保存をブロックします。scripts/INSTALL.md の手順に従ってインストールしてください。このフックは最低限のチェックであり、このスキルによる監査の代替ではありません。

コメント