validate について
validate は、OKF バンドルを決定的な適合ルールで検査するスキルです。エラーと警告を報告し、CI 向けの JSON 出力や、検証前の v0.1 バンドル移行にも対応します。
主な機能
- 01決定的なバンドル適合検査
- 02エラーと警告の報告
- 03CI 向け JSON 出力
- 04v0.1 バンドルのインプレース移行
活用シーン
- 01共有前の OKF バンドル検査
- 02CI での適合チェック実行
- 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 で便利です)。