このドキュメントでは、まずユーザーが checkpoint をどのように使用するかを説明し、その後に詳細な技術仕様を記載します。
checkpoint は、実行中のページ検査、フロー検証、および自動化された品質ゲート(検問)に使用されます。
適したシナリオ:
- 重要な送信フロー
- 検収前のページおよびインタラクションのチェック
- UI、フロー、インターフェース、および最終結果の自動確認が必要な変更(change)
主な役割:
- 自動化されたチェックの実行
- ゲート結果の生成
- チェックが合格するまで
verify / archive / finalizeをブロックする
AI 対話方式:
OSpec を使用して Checkpoint プラグインを有効化してください。
スキル方式:
$ospec を使用して Checkpoint プラグインを有効化してください。
コマンドライン:
ospec plugins enable checkpoint . --base-url http://127.0.0.1:3000有効化の契約:
- デフォルトの内蔵 Checkpoint / Playwright runner を有効化する場合、OSpec は対象プロジェクトに
playwright、pixelmatch、pngjsを自動インストールします - AI チャットや AI アシスタント経由で「Checkpoint プラグインを有効にする」と依頼した場合、この自動インストールは有効化フローの必須部分です
- 依存関係のインストールに失敗した場合、
enable checkpointは失敗しなければならず、中途半端な有効化状態を残してはいけません - プラグインを無効化しても
.skillrc.plugins.checkpointをオフにするだけで、これらのプロジェクト依存関係はアンインストールしません
checkpoint を有効にした後、少なくとも以下の項目を補完する必要があります:
base_url- 自動インストールされた依存関係が対象プロジェクトに入っていることの確認
routes.yamlflows.yaml- ログイン状態またはログインスクリプト
- 起動コマンドと準備完了チェック(プロジェクトに直接アクセスできない場合)
checkpoint を初めて有効にする際は、必ず --base-url を指定する必要があります。
このアドレスは、自動化チェックが実際にアクセスするアプリケーションのアドレスです。例:
http://127.0.0.1:3000http://localhost:4173
デフォルトの内蔵 runner は、対象プロジェクト側で以下の依存関係を必要とします:
playwrightpixelmatchpngjs
これらは今後 OSpec 本体パッケージには同梱されず、Checkpoint 有効化時に対象プロジェクトへ自動インストールされます。
これは次を意味します:
- メインパッケージを軽量に保てる
- 実際に Checkpoint を使うプロジェクトだけが依存コストを負担する
- AI チャットで「Checkpoint を有効化する」ときは、設定を書くだけでなくインストール完了まで実行する必要がある
- 後で Checkpoint を無効化しても、これらの依存関係は自動削除しない
.ospec/plugins/checkpoint/routes.yaml に以下を明記します:
- どのページをチェックするか
- 各ページで使用するビューポート
- 対応するベースラインスクリーンショットまたはデザインベースライン
- 無視する領域
- ページ上の重要なテキストや UI 要件
.ospec/plugins/checkpoint/flows.yaml に以下を明記します:
- 重要なフローの開始点
- 中間ステップ
- アサーション(期待される結果)が必要なインターフェース
- アサーションが必要なビジネス上の最終状態
フローがログインに依存している場合、少なくとも以下のいずれかを準備する必要があります:
.ospec/plugins/checkpoint/auth/storage-state.json.ospec/plugins/checkpoint/auth/login.jsのようなログインスクリプト
ログイン状態がないと、自動化チェック時に多くの実際のフローが失敗します。
プロジェクトが「自然に実行されている」状態でない場合は、.skillrc.plugins.checkpoint.runtime に以下を補完します:
startupreadinessshutdown
一般的な方法:
docker compose up -dで起動- ヘルスチェック URL でサービスが準備完了になるまで待機
- 実行後に環境を停止
有効化後、プロジェクト内に Checkpoint 関連の以下の項目が表示されます:
.skillrc.plugins.checkpoint.ospec/plugins/checkpoint/routes.yaml.ospec/plugins/checkpoint/flows.yaml.ospec/plugins/checkpoint/baselines/.ospec/plugins/checkpoint/auth/.ospec/plugins/checkpoint/cache/
特定の change に紐づく実行結果は以下に保存されます:
changes/active/<change>/artifacts/checkpoint/
- プロジェクトの初期化:
ospec init . - Checkpoint を有効化:
ospec plugins enable checkpoint . --base-url <url> - 対象プロジェクトに
playwright、pixelmatch、pngjsが自動インストールされたことを確認 routes.yaml、flows.yaml、ログイン状態、および実行環境を設定- 診断を実行:
ospec plugins doctor checkpoint . - 自動検証が必要な change を作成
- チェックを実行:
ospec plugins run checkpoint <change-path> - チェック合格後、
ospec verifyとospec finalizeを実行
以下の変更(change)に対して Checkpoint を有効化またはトリガーすることを推奨します:
ui_changepage_designfeature_flowapi_changebackend_changeintegration_change
文言の修正のみやドキュメントのみの変更の場合、通常 Checkpoint は不要です。
このドキュメントは、OSpec における checkpoint プラグインの目標、実行規約、および実装の境界を定義し、その後の議論や段階的な実装において制約が失われないようにします。
以降に記載される以下の名称:
Checkpoint プラグインcheckpoint 仕様Playwright Auto-Review プラグイン
は、明示的に変更されない限り、このドキュメントを指します。
stitch はデザイン成果物とデザインレビューゲートを扱いますが、実際のプロジェクトではアーカイブ前に別の種類の自動化されたゲートが必要です:
- ページがデザインと一致しているか?
- レイアウト、改行、重なり、フォント、色、コントラストなどの UI 問題はないか?
- 機能フローは実行可能か?
- フロントエンドとバックエンドのデータは一致しているか?
これらの機能は、デザインの生成や手動承認ではなく、実行時の自動チェックに属するため、stitch には含まれません。
そのため、stitch と対になるプラグインとして以下を導入します:
checkpoint
checkpoint は、変更をアーカイブする前に自動チェックを実行します。有効化されたすべてのチェックが合格した場合のみ、アーカイブが許可されます。
実装に関する確定事項:
checkpointとstitchは対等なプラグインであり、checkpointはstitchの配下ではありません。checkpointのデフォルトの実行エンジン(executor)はPlaywrightですが、プラグインの意味論は実行エンジン名に縛られません。- 初めて有効化する際は
base_urlが必須です。 - デフォルトの内蔵 runner で
checkpointを有効化する場合、対象プロジェクトにplaywright、pixelmatch、pngjsを自動インストールしなければなりません。 - AI チャットや AI 支援フローで「Checkpoint プラグインを有効化する」と言う場合、この依存関係インストールも有効化の一部です。完了していなければ有効化成功とはみなしません。
checkpointを無効化しても、以前にプロジェクトへインストールされた依存関係はアンインストールしません。- 現在は 1 つの
base_urlのみをサポートし、マルチ環境の切り替えは行いません。 checkpointは自動化されたゲートプラグインであり、approve / rejectのような手動承認コマンドは導入しません。- プロジェクトで
stitchが有効になっており、現在の change でstitch_design_reviewが有効な場合、checkpointは優先的に Stitch がエクスポートしたデザインベースラインを再利用します。 stitchが無効な場合、checkpointはリポジトリ内のベースラインスクリーンショットとテキスト要件をデザインチェックのベースラインとして使用します。- プロジェクトにローカル起動機能がない可能性があるため、
checkpointはカスタムの起動コマンドをサポートする必要があります。docker composeが利用可能な場合、それを使用してテスト環境を起動することを推奨します。 - ログイン状態はサポートされる標準機能であり、デフォルトで
storageStateまたはカスタムのログインスクリプトを使用します。 - データの正確性チェックは、Playwright のページ/インターフェースアサーションと、カスタムのバックエンド最終状態アサーションコマンドの 2 つの部分で構成されます。
checkpointは change フラグに基づいて特定の機能(capability)のみを有効にすることを許可し、すべての変更でフルセットのチェックを行う必要はありません。- 推奨される実装順序は、まず
ui_reviewを、その後にflow_checkを実施することです。
plugin は拡張機能の提供元を指します。本プラグイン名は以下に固定されます:
checkpoint
checkpoint は 2 つの機能に分割されます:
ui_reviewflow_check
checkpoint は、ワークフローに 2 つのオプションステップを追加します:
checkpoint_ui_reviewcheckpoint_flow_check
plugin workspace は、プロジェクトレベルで再利用可能な、単一の change に依存しないプラグイン作業ディレクトリを指します。checkpoint の作業ディレクトリは以下に固定されます:
.ospec/plugins/checkpoint/
gate artifact は、verify / archive / finalize ゲート判定に使用されるマシンリーダブルな結果を指します。checkpoint のメインゲートファイルは以下に固定されます:
changes/active/<change>/artifacts/checkpoint/gate.json
ここでの目標は、一度に完全なテストプラットフォームを構築することではなく、アーカイブ前の自動化されたゲートを実行できるようにすることです:
- プロジェクトは
checkpointプラグインを有効化できる。 - 新しい change は、フラグに基づいて
checkpoint_ui_reviewとcheckpoint_flow_checkを有効化できる。 - プラグインは対象プロジェクトを起動または接続し、
base_urlに基づいて Playwright フローを実行できる。 ui_reviewは、Stitch のエクスポートまたはリポジトリのベースラインスクリーンショットに基づいてページチェックを実行できる。flow_checkは、重要なフロー、インターフェースアサーション、およびカスタムバックエンドアサーションを実行できる。verify / archive / finalizeは、gate.jsonに基づいてフローをブロックできる。stitchが同時に有効な場合、checkpointの合格時に Stitch の承認ステータスを自動的に同期できる。
以下の内容は現在の対象範囲に含まれません:
- マルチ環境マトリックス実行。
- 汎用データベースドライバーまたはデータベース直接接続アダプター層。
- 汎用レコーダーまたはフルリプレイプラットフォーム。
- 完全なビジュアル AI スコアリングプラットフォーム。
- すべてのビジネスフレームワークに対する一括ビルトイン対応。
- 手動承認 UI または手動注釈システム。
すべてのプラグインは、今後以下の 3 層ディレクトリモデルを採用します:
- プロジェクトレベル設定:
.skillrc.plugins.<plugin> - プロジェクトレベル作業ディレクトリ:
.ospec/plugins/<plugin>/ - change レベル成果物ディレクトリ:
changes/active/<change>/artifacts/<plugin>/
したがって、checkpoint は以下を採用します:
.skillrc.plugins.checkpoint.ospec/plugins/checkpoint/changes/active/<change>/artifacts/checkpoint/
推奨構造:
.ospec/plugins/checkpoint/
routes.yaml
flows.yaml
baselines/
auth/
README.md
login.example.js
cache/
routes.yaml: ページ検査対象、ルート、ビューポート、ベースラインソース、無視領域、テキスト要件。flows.yaml: フローのエントリポイント、ステップ、インターフェースアサーション、カスタムバックエンドアサーションコマンド。baselines/: リポジトリ内のベースラインスクリーンショット。auth/: ログイン状態ファイル、認証スクリプトテンプレート、および手順(例:storage-state.json,login.example.js)。cache/: 一時的なキャッシュ、中間エクスポート結果。
推奨構造:
changes/active/<change>/artifacts/checkpoint/
gate.json
result.json
summary.md
screenshots/
diffs/
traces/
gate.json: アーカイブゲート判定のエントリポイント。result.json: 生の構造化結果。summary.md: 人間が読むための概要。screenshots/: 実際のスクリーンショット。diffs/: ビジュアルの差分画像。traces/: Playwright のトレース、HAR、ログなど。
プロジェクトで stitch と checkpoint の両方が有効であり、現在の change で stitch_design_review と checkpoint_ui_review の両方が有効な場合、以下のルールに従います:
checkpoint_ui_reviewは、Stitch がエクスポートしたルート/テーマのベースラインを優先的に読み込みます。- Stitch が比較可能なスクリーンショットをエクスポートしていない場合、
checkpoint_ui_reviewはデザイン整合性チェックの完了を宣言できません。 checkpoint_ui_reviewが合格し、stitch_integration.auto_pass_stitch_review = trueの場合、checkpointはartifacts/stitch/approval.jsonをapprovedに自動的に同期できます。checkpoint_ui_reviewが失敗した場合、Stitch の承認は自動的に付与されません。
これは、stitch がデザイン成果物と構造のゲートを担当し、checkpoint が実行時のページ整合性と自動フローのゲートを担当することを意味します。
{
"plugin": "checkpoint",
"status": "passed",
"blocking": true,
"executed_at": "2026-03-29T08:00:00Z",
"steps": {
"checkpoint_ui_review": {
"status": "passed",
"issues": []
},
"checkpoint_flow_check": {
"status": "passed",
"issues": []
}
},
"stitch_sync": {
"attempted": true,
"status": "approved"
},
"issues": []
}pendingpassedfailed
ospec plugins status [path]ospec plugins enable checkpoint [path] --base-url <url>ospec plugins disable checkpoint [path]ospec plugins doctor checkpoint [path]ospec plugins run checkpoint <change-path>
注意:
enable checkpointではbase_urlが必須です- 内蔵 runner を使う
enable checkpointは、対象プロジェクトへplaywright、pixelmatch、pngjsを自動インストールしなければなりません - AI チャット経由の有効化では、その自動インストール完了までが有効化処理です
disable checkpointはプロジェクト依存関係をアンインストールしませんcheckpointは自動ゲートであるため、approveやrejectコマンドは提供しません
いずれかの checkpoint ステップが有効な場合、以下のチェックが追加されます:
artifacts/checkpoint/gate.jsonが存在する。gate.json.statusがpassedである。- 有効化された各
checkpointステップがpassedである。 - リンクされている場合、Stitch 承認が同期されている。
いずれかの checkpoint ステップが有効で、blocking = true の場合:
gate.json.status != passedの場合、アーカイブがブロックされます。- 有効化されたステップが失敗したか、重要な問題が残っている場合、アーカイブがブロックされます。
- フェーズ 1: スキーマとプロジェクトレベルの作業ディレクトリ:
.skillrc.plugins.checkpointと.ospec/plugins/checkpoint/のディレクトリ構造を定義します。 - フェーズ 2:
ui_reviewゲート: Playwright のページチェックとゲート結果の実装を行います。 - フェーズ 3: Stitch との連携:
checkpoint_ui_reviewと Stitch の承認同期を実装します。 - フェーズ 4:
flow_checkゲート: 重要なフローとアサーションを実装します。
checkpoint を実装する際は、このドキュメントで範囲を確認してください。逸脱が必要な場合は、まずドキュメントを更新してください。これにより、checkpoint が stitch と明確な境界を持つ、独立した自動ゲートプラグインとして維持されます。