mcpField
V
validate

validate

github.com/scaccogattoテスト・品質433931 回インストール1 日前に更新
リポジトリ

validate について

validate は、OKF バンドルを決定的な適合ルールで検査するスキルです。エラーと警告を報告し、CI 向けの JSON 出力や、検証前の v0.1 バンドル移行にも対応します。

主な機能

  1. 01決定的なバンドル適合検査
  2. 02エラーと警告の報告
  3. 03CI 向け JSON 出力
  4. 04v0.1 バンドルのインプレース移行

活用シーン

  1. 01共有前の OKF バンドル検査
  2. 02CI での適合チェック実行
  3. 03v0.1 バンドルから v0.2 への移行

インストール

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

$npx skills add https://github.com/scaccogatto/okf-skills --skill validate

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

同梱ファイルscripts/okf_validate.py

詳細

OKF バンドルを検証する

対象のバンドルに対して、決定論的な適合性チェッカーを実行します。パスが指定されていない場合は、プロジェクトの .okf/ ディレクトリを既定で使用します。

uv run "${CLAUDE_SKILL_DIR}/scripts/okf_validate.py" $ARGUMENTS

uv が利用できない場合は、次を代わりに実行します。

python3 -m pip install --quiet pyyaml && \
python3 "${CLAUDE_SKILL_DIR}/scripts/okf_validate.py" $ARGUMENTS

${CLAUDE_SKILL_DIR} は、このスキルが okf プラグインの一部として実行される場合も、単独でインストールされた場合(例:npx skills add 経由)も適切に解決されるため、チェッカーは常にスキルと同じ場所にあります。

結果の解釈:

  • ERROR → §11 の重大な適合性違反です(解析可能なフロントマターがない、type がないまたは空である、あるいはチェッカーが UTF-8 として読み取れないファイル)。バンドルは不適合です。該当するものをすべて修正してください。

予約されているのは index.md と log.md のみです。§11.1 では、ツリー内の他のすべての .md が概念として扱われ、規約ファイルも含まれます。バンドルの隣に置かれた AGENTS.md または README.md は、type(Document が適切です)を含むフロントマターが付くまでは ERROR になります。これが修正方法です。スキップリストを設けると、チェッカーが適合しなくなります。ナレッジではないファイルは、バンドルのルートより上に移動してください。

  • warn → ソフトなガイダンスです(推奨フィールドがない、ログの日付が ISO 形式ではない、クロスリンクが壊れている、不正な v0.2 ファミリー、出典を示さない脚注、§7 の形式に合わないアクター、runtime がない Attested Computation、解決先が存在しない計算パス、予約ファイル内のフロントマター(§8、§9)、余分なキーを含む、または異なる okf_version を宣言するルートの index.md(§12))。処理を妨げることはありません。特に、壊れたリンクは仕様で明示的に許容されています(§6.1)。簡単に修正できる場合は対応してください。

他よりも注意すべき警告がひとつあります。Human:dana や human/dana のように、§7 の形式に近いものの一致しないケースです。§5.3 では、信頼階層の判定に正確な小文字の human: プレフィックスが使われるため、人が確認したにもかかわらず、その概念が機械による確認として扱われてしまいます。見つけたらすぐに修正してください。

v0.1 バンドルも検証できます。旧形式の timestamp や # Citations セクションは、エラーではなく、v0.2 での置き換え先(generated.at、sources)を示す警告として報告されます(§13.1)。--strict を指定すると、これらの警告でも実行は失敗します。これは移行を促すためのもので、移行には --migrate を使います。

v0.1 バンドルの移行

--migrate は検証前にバンドルをその場で書き換えます。このスキルで唯一の読み取り専用ではないモードなので、ユーザーから移行を依頼されていないバンドルに対して実行する前に、変更対象を説明してください。処理はテキストベースで(コメント、キーの順序、引用符は保持されます)、何度実行しても結果は変わりません。

uv run "${CLAUDE_SKILL_DIR}/scripts/okf_validate.py" .okf --migrate --strict

timestamp を generated: { by: process:okf-migrate, at } に移し、# Citations リストを sources に移して、okf_version を更新します。ユーザーに念押ししておくべき制限がふたつあります。v0.2 より前のコンテンツでは generated.by を復元できないため、process: アクターが使われます(§5.3 に従い、概念は正しく unverified のままです)。また、クレームごとの [^id] による帰属情報は v0.1 では記録されていなかったため、移動されるのはソースリストのみです。

終了コード

エラーがひとつでもある場合、または警告が上限を超えた場合は、ゼロ以外の値を返します。 --strict は警告を許可せず、--max-warnings N は N 件まで許可し、既定ではすべての警告を許可します。 機械可読な出力を得るには --json を追加します(CI で便利です)。

コメント