Imported from Yoshi-Dai-1/yori (
opencode/snippets/.opencode/skills/handoff/SKILL.md). Install upstream withnpx skills add Yoshi-Dai-1/yori --skill handoff. Copyright stays with the author (MIT).
When to Use
このスキルを使うべきタイミング:
- セッションをまたいで作業を引き継ぐとき
- 長期停止・別の人への引き継ぎ前
- 本番リリース後(状態の記録として)
- OpenCode Todo 全完了時: todowrite ツールで管理中の Todo がすべて完了状態になったとき
Workflow
実行判断
以下のいずれかに該当する場合のみ以降の手順を実行する:
- 人間が明示的にセッション終了を指示した(description 記載の trigger 句に合致)
- 全 OpenCode Todo が完了状態になった
上記以外の場合 → 何もせずに return する(スキルの呼び出しを取り消す)。
常時実行
-
現在の状態を保存する
.opencode/handoff-artifact.mdを以下のフォーマットで保存する (既存の内容は上書きしてよい。毎回最新のスナップショットを保存する。 ファイル内の HTML コメントは維持すること。): 対応レベルと適用される規制・標準は、docs/project-definition.mdのプロジェクト性質と.opencode/standards/principles/security-requirements.mdの判断基準 (Step 2:対応レベルの決定・Step 3:適用される法令・標準の特定)から都度導出すること。# Handoff Artifact # 更新日時: YYYY-MM-DD HH:MM ## 前のセッションの状態 取り組んでいた機能: [具体的な内容] 完了した部分: [具体的な内容] 途中で止まっている部分: [具体的な内容・なければ「なし」] 次にやるべきこと: [具体的な1タスク] ## 重要な決定事項 [このセッションで行った設計判断。なければ「なし」] ## 未解決の問題 [バグ・疑問点・要確認事項。なければ「なし」] ## Security Status 対応レベル: [Lv.1 / Lv.2 / Lv.3 / Lv.4] 適用される規制・標準: - [個人情報保護法 / GDPR / PCI DSS / HIPAA / ISMAP / なし] 未対応のセキュリティ要件: - [ ] [要件名]:[理由・対応方法・担当スプリント] (なければ「なし」) 完了したセキュリティ実装: - [x] [実装内容]:decisions/[連番]-[slug].md に記録済み (なければ「なし」) 依存ライブラリの脆弱性状態: - 最終スキャン:[YYYY-MM-DD] / 結果:[クリーン / HIGH N件 / CRITICAL N件] - 自動監視: - Dependabot / Renovate: [設定済み / 未設定] - CI/CD スキャン(npm audit等): [組み込み済み / 未設定] ## 変更したファイル [Git status に表示された変更ファイル一覧。なければ「なし」] 注意: - 上記フォーマットのセクション名(`## ` で始まる行)は変更・削除・追加しないこと。 - 「依存ライブラリの脆弱性状態」の最終スキャン日付は、セッション中にスキャンした場合は 新しい日付に更新し、スキャンしなかった場合は旧 artifact の値を引き継ぐこと。 -
Build Log に行を追記する
docs/build-log.mdが存在しない場合は作成してから、末尾に新しい行を追記する (追記のみ。既存の行は変更しない。ファイル内の HTML コメントは維持すること):| YYYY-MM-DD | [完了した内容の概要] | [未解決があれば記載。なければ「なし」] |このログはセッション間の活動履歴。
.opencode/handoff-artifact.md(スナップショット:毎回上書き)とは役割が異なる。
フィードバックループの確認(初回本番リリース時のみ・自律実行)
このステップを実行する条件を順番に確認する:
条件A:トリガーが「本番に出した」「リリースできた」「公開できた」のいずれかである → 該当しない:このステップを完全にスキップする → 該当する:条件Bを確認する
条件B:ARCHITECTURE.md を読み、「開発プロセス」セクションの
「フィードバック収集:」の値を確認する
→ 「設定済み」と記載されている:このステップを完全にスキップする
→ 「未設定」または該当行が存在しない:以下を実行する
条件C:docs/project-definition.md を読み、「対象ユーザー」を確認する
→ 「自分のみ」または「内部利用」と記載されている:このステップを完全にスキップする
→ それ以外:以下の確認を人間に提示する
人間への提示内容(必ず以下の形式で提示する):
## フィードバックループの設定(初回リリース後の推奨作業)
ユーザーからのフィードバックを受け取る仕組みが設定されていません。
以下の2点を決めてください。
1. フィードバックを受け取る手段(1つ選ぶ)
A. GitHub Issues(技術ユーザー向け・OSSに向いている)
B. メールフォーム / お問い合わせページ(一般ユーザー向け)
C. 今は設定しない
2. 行動分析(任意・Webサービスのみ)
ユーザーの行動データを収集するアナリティクスを導入しますか?
→ 導入する場合:最新ツールを確認するため「privacy-friendly web analytics [現在年]」
を検索して選択肢を提示します。プライバシーポリシーへの追記が必要になります。
→ 導入しない:設定不要です
人間が回答したら:
- 選択した手段を
ARCHITECTURE.mdの「開発プロセス」セクションの 「フィードバック収集:未設定(初回本番リリース後に handoff スキルが設定する)」の行を 「フィードバック収集:[選択内容] 設定済み」に 書き換える(このステップが次回以降スキップされるようにするため必須) - 「今は設定しない」を選んだ場合も「フィードバック収集:設定しない(意図的)」と記録する
- アナリティクスを導入する場合は検索を実行して選択肢を提示し、
選択されたツールを
ARCHITECTURE.mdの「非機能要件」セクションに追記する
条件付き実行
-
EOL(サービス終了・アーカイブ)の処理(条件実行)
このステップを実行する条件を確認する:
条件:トリガーが「サービスを終了したい」「閉鎖する」「廃止する」「アーカイブしたい」 のいずれかを含む → 該当しない:このステップを完全にスキップする → 該当する:常時実行の全ステップ(1〜2)を先に完了させた後、以下を実行する
Step 1:プロジェクト性質の確認
docs/project-definition.mdを読んで以下の2点を確認する:- 「対象ユーザー」が「自分のみ」「内部利用」以外か(= 一般ユーザーが存在するか)
- 「個人情報収集」の記載があるか(
ARCHITECTURE.mdの「法的・コンプライアンス」も確認する)
Step 2:確認した内容に基づくチェックリストを人間に提示する
以下の中から、Step 1 で「該当する」と確認した項目のみ提示する (該当しない項目は提示しない。例:一般ユーザーがいなければユーザー告知は提示しない):
## EOL チェックリスト ### 一般ユーザーが存在する場合(必須) [ ] ユーザーへの告知 - 告知タイミング:終了日の最低30日前(90日前が望ましい) - 告知に含める内容:終了日・理由・データのエクスポート方法 [ ] データエクスポート手段の提供 - ユーザーが自分のデータをダウンロードできる手段があるか - エクスポート形式:[JSON / CSV のいずれか・ユーザーが理解できる形式] ### 個人情報を保持している場合(必須) [ ] 個人情報の削除方針を決定する - 法的な最低保存期間の確認:「個人情報保護法 保存期間 [現在年]」を検索する - GDPR 対象ユーザーがいる場合:「GDPR data retention [現在年]」を検索する - 保存期間経過後に安全に削除する手順を `docs/operations.md` に記録する ### 全プロジェクト共通(必須) [ ] 課金が発生している外部サービスをすべて解約する - 確認方法:`ARCHITECTURE.md` の「依存関係リスク」セクションで外部サービスを列挙する - 解約漏れはコスト発生が続くため、すべて解約したことを確認してから終了する [ ] ドメインの期限を確認する - 失効後に第三者が取得するとフィッシング等に悪用されるリスクがある - 対応:更新停止する場合は失効前にDNSレコードを削除する [ ] コードをアーカイブする - GitHub リポジトリ → Settings → "Archive this repository" を実行する - ローカルに最終バックアップを取得する(git bundle create [プロジェクト名].bundle --all)Step 3:チェックリストの確認が完了したら以下を実行する
.opencode/handoff-artifact.mdの「取り組んでいた機能」に「EOL処理」と記録するdocs/build-log.mdに「EOL処理開始」を記録する- 人間に「EOLチェックリストの各項目を順番に対応してください。 完了した項目を教えていただければ、次のステップをサポートします」と伝える
Output Format(会話への出力)
Workflow 完了後、以下の形式で会話に出力する:
## 引き継ぎレポート [YYYY-MM-DD]
### 保存した状態
Taking on: [内容]
Done: [内容]
Next: [内容]
### 未解決の問題
[あれば記載。なければ「なし」]
### Security Status
対応レベル: [Lv.1 / Lv.2 / Lv.3 / Lv.4]
未対応要件: [あれば記載。なければ「なし」]
脆弱性: [クリーン / HIGH N件 / CRITICAL N件]
