بنقرة واحدة
i-dev-final-check
dev workflow 向けの最終チェック。PR 前に品質ゲート、docs 整合、設計書昇格、Issue 更新をまとめて確認する。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
dev workflow 向けの最終チェック。PR 前に品質ゲート、docs 整合、設計書昇格、Issue 更新をまとめて確認する。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
docs-only workflow 向けの最終チェック。docs 整合と Issue 状態を確認し、PR に進めるか判定する。
docs review の指摘に対応し、ドキュメントのみを修正する。コードやテストは変更しない。
docs-only の変更をレビューし、事実整合性・実装整合性・運用整合性の観点から判定する。
docs-only の更新を行う。コードやテストは変更せず、現行実装・CLI・運用方針との整合を確認しながら docs を修正する。
docs review の指摘が適切に修正されたかを確認する。新規指摘は行わない。
workflow 共通の PR 作成スキル。worktree 解決、未コミット確認、push、uv run kaji pr create のみを担当する。
| description | dev workflow 向けの最終チェック。PR 前に品質ゲート、docs 整合、設計書昇格、Issue 更新をまとめて確認する。 |
| name | i-dev-final-check |
dev workflow の PR 前最終ゲート。 前段で作られた証跡を集約し、必要なら docs 更新や設計書昇格を行ったうえで、PR に進めるか判定する。
| タイミング | このスキルを使用 |
|---|---|
/issue-review-code または /issue-verify-code で Approve 後 | ✅ 必須 |
| dev workflow の PR 作成前 | ✅ 必須 |
ワークフロー内の位置: implement → review-code → i-dev-final-check → i-pr → close
常に注入される変数:
| 変数 | 型 | 説明 |
|---|---|---|
issue_id | str | 正規化済み Issue ID(GitHub 数値または local ID) |
issue_ref | str | 人間可読の Issue 参照(GitHub では #<issue_id>、local では bare ID) |
step_id | str | 現在のステップ ID |
$ARGUMENTS = <issue_id>
コンテキスト変数 issue_id が存在すればそちらを使用。
なければ $ARGUMENTS の第1引数を issue_id として使用。
issue_ref はハーネス経由ではプロンプトに自動注入される(harness 側で provider 別に整形される)。手動実行時は issue_id から導出する: GitHub 数値 ID なら #<issue_id>、local-* 形式なら bare ID(# を付けない)。
docs/README.mduv run kaji issue view [issue_id] --comments
以下の完了報告コメントが存在するか確認する:
| ステップ | 期待するコメント | 必須の内容 |
|---|---|---|
issue-design | 「設計書作成完了」 | 設計書パス、テスト戦略、影響ドキュメント |
issue-review-design | 「設計レビュー結果」 | Approve / Changes Requested 判定 |
issue-fix-design → issue-verify-design | (経由した場合のみ)「修正確認結果」 | Approve 判定 |
issue-implement | 「実装完了報告」 | pytest 出力(S/M/L 結果)、品質チェック結果 |
issue-review-code | 「コードレビュー結果」 | Approve / Changes Requested 判定、独立テスト実行結果 |
issue-fix-code → issue-verify-code | (経由した場合のみ)「修正確認結果」 | Approve 判定 |
fix/verify サイクルの扱い: 実 workflow では
issue-review-*が Changes Requested を返した場合、issue-fix-*→issue-verify-*を経由して再度 Approve を得てから final-check に到達する。 コメント履歴に過去の Changes Requested が残るのは正常な状態であり、最新の判定結果(verify の Approve)を 権威ある判定として採用する。過去の Changes Requested は「解決済みの指摘」として無視してよい。
Issue 本文の ## 完了条件 セクション(チェックボックス形式)を取得し、各条件について:
差し戻しが必要な場合は root-cause に応じて以下を使い分ける。実際にどの status を返せるかは
workflow YAML の final-check.on で決まり、prompt 経由で valid status 一覧が注入される
(詳細は § Verdict 出力 § workflow YAML 互換ルール)。
| root-cause | 例 | 推奨 status(新 YAML) | 互換 status(旧 YAML) |
|---|---|---|---|
| 設計起因 | 設計書の影響ドキュメント評価漏れ / テスト戦略未定義 / 要件解釈の食い違い | BACK_DESIGN | BACK(YAML が BACK のみ valid な場合) |
| 実装起因 | 前段コメント欠落 / 最新判定が Changes Requested のまま / 品質ゲート未通過 / docs 更新漏れ | BACK_IMPLEMENT | BACK(YAML が BACK のみ valid な場合) |
| 完了条件未充足 | 最新の判定結果は Approve だが Issue 完了条件が未充足 | この final-check で対応可能なら RETRY、不可能なら root-cause に応じ BACK_DESIGN / BACK_IMPLEMENT / BACK | 同左 |
root-cause 不明の場合: 自動で
BACK_DESIGN等を default にせず、ABORTを返して運用に escalation する。
本リポジトリは Python 単一スタックのため、以下の 1 本に統一する。
cd [worktree_dir] && source .venv/bin/activate && make check
make check は ruff / format / mypy / pytest を一括で実行する(AGENTS.md の pre-commit 契約と同一)。
特定マーカーや変更タイプ固有の検証が必要な場合は、設計書「テスト戦略」に従い追加実行する:
| 変更タイプ | 追加検証 |
|---|---|
| docs-only | make verify-docs |
| 通常 | 追加なし(make check で十分) |
baseline failure の扱い:
pytest部分は baseline failure を考慮し、 比較キー(nodeid, kind, error_type)が baseline と一致する失敗は除外、 不一致の新規 FAILED/ERROR が 1 件でもあれば NG として扱う。
_shared/promote-design.md の手順に従い、
draft/design/issue-[issue_id]-*.md を恒久ドキュメントへ昇格するか、既存 docs に統合するかを判定する。
判定軸:
docs/adr/ を運用している場合は ADR として記録)Issue 本文のチェックボックスを [x] に更新する。
# 本文を取得
uv run kaji issue view [issue_id] --json body -q '.body' > /tmp/issue-body.md
# チェックボックスを更新(確認済み条件を [x] に変更)
# 例: sed -i 's/- \[ \] 条件A/- [x] 条件A/' /tmp/issue-body.md
# 更新を反映
uv run kaji issue edit [issue_id] --commit --body-file /tmp/issue-body.md
チェックボックスは [ ] のまま残す。コメントで未充足条件と戻し先を明示する。
本文更新は行わない(軽微修正後に再実行するため)。
Step 7(完了条件更新)の後、Step 8(最終チェックコメント)の前に、設計書を Issue 本文の NOTE ブロック直下に添付する。
uv run kaji issue view [issue_id] --json body -q '.body' | grep -q '^## 設計書'
既に ## 設計書 セクションが存在する場合はスキップする(位置の移動はしない)。
| 条件 | 添付対象 |
|---|---|
| Step 6 で恒久 docs へ昇格を実施した | 昇格後の確定版(docs/... 配下) |
| 昇格対象外 | draft/design/ 版 |
Issue 本文を行単位で走査し、以下のルールで挿入位置を決定する:
| ケース | 挿入位置 |
|---|---|
| NOTE ブロックが1つ存在する(標準) | NOTE ブロック終端の次の空行の後 |
| NOTE ブロックが複数存在する | 最初の NOTE ブロック終端の次の空行の後 |
| NOTE ブロックが存在しない(古い Issue) | 本文先頭 |
既に ## 設計書 が別位置に存在する | スキップ(7.5-1 で検出済み) |
NOTE ブロックの終端判定:
> [!NOTE]から始まり、>プレフィックスの連続行が途切れた最初の空行。
昇格済みの場合:
## 設計書
恒久ドキュメントとして昇格済み: `docs/...`
未昇格の場合:
## 設計書
<details>
<summary>クリックして展開</summary>
(設計書全文)
</details>
# 本文を取得
BODY=$(uv run kaji issue view [issue_id] --json body -q '.body')
# NOTE ブロック終端位置を検出し、その次の空行の後に挿入
# new_body = body[:insert_at] + 設計書セクション + body[insert_at:]
uv run kaji issue edit [issue_id] --commit --body-file /tmp/issue-body-updated.md
本文サイズ上限超過等で uv run kaji issue edit に失敗した場合:
## 設計書 セクションとコメントへのリンクのみを追記するuv run kaji issue comment [issue_id] --commit --body-file - <<'EOF'
## 最終チェック結果
### 前段証跡の確認
| ステップ | コメント有無 | 最新判定 |
|----------|------------|---------|
| issue-design | ✅ | 設計書作成済み |
| issue-review-design | ✅ | Approve |
| (fix-design → verify-design) | (経由した場合) | (Approve) |
| issue-implement | ✅ | テスト全件 PASSED(または baseline 一致) |
| issue-review-code | ✅ | Approve |
| (fix-code → verify-code) | (経由した場合) | (Approve) |
### 完了条件の充足状態
| 条件 | 充足 | 確認元 |
|------|------|--------|
| (条件1) | ✅ / ❌ | (どのステップ/コメントで確認) |
| (条件2) | ✅ / ❌ | (どのステップ/コメントで確認) |
### 品質ゲート
| ゲート | 結果 | 備考 |
|--------|------|------|
| `make check` | PASS / FAIL | ruff / format / mypy / pytest 一括 |
| 変更タイプ固有検証 | PASS / FAIL / N/A | 例: `make verify-docs` |
### docs 整合
- 設計書昇格: 実施 (`docs/...`) / 不要
- docs 更新: 実施 / 不要
### Issue 本文更新
- チェックボックス更新: 実施 / 不要
- 設計書添付: 実施 / スキップ(既存) / フォールバック(コメント投稿)
### 判定
PASS / RETRY / BACK_DESIGN / BACK_IMPLEMENT / BACK
EOF
後方互換: 旧 workflow YAML が
BACKのみを valid とする場合はBACKを返す。詳細は § Verdict 出力 § workflow YAML 互換ルール。
---VERDICT---
status: PASS
reason: |
dev workflow の最終チェックを完了し、PR に進める状態を確認した
evidence: |
前段証跡を集約し、全完了条件の充足を確認した。Issue 本文のチェックボックスを更新済み
suggestion: |
---END_VERDICT---
| status | 条件 |
|---|---|
| PASS | 全完了条件が充足し、Issue 本文更新済み |
| RETRY | final-check 文脈で閉じる軽微修正が必要 |
| BACK_DESIGN | 設計起因の不足(影響ドキュメント評価漏れ / テスト戦略未定義 / 要件解釈の食い違い 等)。design に戻す。final-check.on に BACK_DESIGN が定義されている YAML でのみ使用 |
| BACK_IMPLEMENT | 実装起因の不足(前段コメント欠落 / 品質ゲート未通過 / docs 更新漏れ 等)。implement に戻す。final-check.on に BACK_IMPLEMENT が定義されている YAML でのみ使用 |
| BACK | 旧 YAML(BACK のみ valid)における差し戻し。後方互換のため残置。未充足条件と戻し先を suggestion に明示 |
| ABORT | 重大な前提不整合 |
BACK_DESIGN/BACK_IMPLEMENT/BACK/ABORTはいずれもsuggestionフィールド必須。harness 側が空 suggestion を parse error として弾く。
i-dev-final-check は複数 workflow から呼ばれるため、skill 側は prompt 経由で注入される
valid status 一覧(workflow YAML の final-check.on キーから導出される)を
権威ある情報源として扱う。prompt が「使ってよい」と言った status のみ返すことで多 workflow
互換性が成立する。
呼び出された workflow の final-check.on キー | skill が返すべき status |
|---|---|
BACK_DESIGN と BACK_IMPLEMENT の両方が定義(例: dev.yaml) | root-cause を判定して BACK_DESIGN / BACK_IMPLEMENT を使い分け。無印 BACK は使わない |
BACK のみが定義(旧構成の YAML) | 従来通り BACK を返す(root-cause 判定結果に関わらず YAML 制約に従う) |
BACK 系が一切未定義(例: dev-local.yaml) | BACK 系を返さない。RETRY(軽微修正)または ABORT(重大な前提不整合)で表現 |
BACK_DESIGN のみ / BACK_IMPLEMENT のみ定義 | 想定外構成。ABORT を返し、運用に workflow YAML の見直しを促す |
prompt と skill 出力に不整合が生じた場合(valid status に無い status を返した場合)、harness 側でエラーとして弾かれる。skill 側はあくまで prompt 内 valid status のみ返す。