원클릭으로
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 のみ返す。