save-report
会話中でAgentが出力したレビュー・調査・バグ解析などの回答を、見やすいHTMLドキュメントとしてまとめて保存する。
ワークフロー
1. 種別判定 → 2. 設定読み込み → 3. 番号決定 → 4. HTML生成 → 5. 保存・報告
Step 1: 種別判定
会話の内容とユーザーの発言から、以下のいずれかに分類する。
| 種別キー | ファイル名プレフィックス | 色テーマ | 対象 |
|----------|------------------------|----------|------|
| review | PR | 青 (#1d4ed8) | コードレビュー、PRレビュー |
| bug | bug | 赤 (#dc2626) | バグ調査、不具合解析 |
| investigation | investigation | 紫 (#7c3aed) | コード調査、動作調査 |
| research | research | シアン (#0891b2) | 技術調査、リサーチ |
| security | security | オレンジ (#ea580c) | セキュリティ監査 |
判定できない場合は investigation をデフォルトとする。
Step 2: 設定読み込み
~/.claude/skills/save-report/output-config.toml を読む。
output.base_dir: 保存先のルートディレクトリoutput.subdirs.<種別キー>: サブディレクトリ名output.prefixes.<種別キー>: ファイル名プレフィックス
保存先 = base_dir / subdirs[種別] / ファイル名
Step 3: 番号決定
番号の取得は以下の優先順で行う:
- 会話から抽出: ユーザーが「PR #123」「bug #42」のように番号を言及している場合はその番号を使う
- 自動採番: 保存先ディレクトリに既存ファイルがあれば最大番号+1、なければ
001から開始
番号は3桁ゼロ埋め(例: 001, 042, 123)。
最終的なファイル名: {prefix}{番号}.html(例: PR123.html, bug001.html)
Step 4: HTML生成
templates/base.html をベースに、種別ごとの設定を適用してHTMLを組み立てる。
色テーマの適用
| 変数 | review | bug | investigation | research | security |
|------|--------|-----|---------------|----------|----------|
| ACCENT_COLOR | #1d4ed8 | #dc2626 | #7c3aed | #0891b2 | #ea580c |
| ACCENT_LIGHT | #dbeafe | #fee2e2 | #ede9fe | #cffafe | #ffedd5 |
プレースホルダー置換
base.html の以下を置換する:
| プレースホルダー | 内容 |
|----------------|------|
| {{TITLE}} | ドキュメントタイトル(例: PR123 コードレビュー結果) |
| {{ACCENT_COLOR}} | 種別カラー |
| {{ACCENT_LIGHT}} | 薄いアクセントカラー |
| {{BADGE_LABEL}} | バッジテキスト(例: CODE REVIEW) |
| {{SUBTITLE}} | 対象の説明(ブランチ名、調査対象など) |
| {{DATE}} | 今日の日付(YYYY-MM-DD) |
| {{DOC_ID}} | ファイル名(例: PR123) |
| {{SUMMARY_CARDS}} | サマリーカードHTML |
| {{MAIN_CONTENT}} | 本文セクションHTML |
種別ごとのセクション構成
review(コードレビュー):
- 📋 レビュー概要
- 🔴 重大な指摘(テーブル: 場所 / 問題 / 推奨対応)
- 🟡 改善提案(テーブル: 場所 / 内容 / 優先度)
- ✅ 良い点
- 📝 まとめ・次のアクション
サマリーカード: 対象PR/ブランチ / 指摘件数(重大/軽微の内訳) / 総合評価
bug(バグ調査):
- 🐛 バグの概要・再現方法
- 📊 調査結果・ログ
- 🧩 根本原因
- 🔧 修正方針(テーブル: 対応内容 / 優先度 / 備考)
- 📝 まとめ
サマリーカード: バグID / ステータス / 影響範囲
investigation(コード調査):
templates/investigation.htmlのセクション構成に従う- 🔍 調査の背景・目的 / 📊 調査結果 / 🧩 原因分析 / 💡 推奨対応 / 📝 まとめ
サマリーカード: 調査対象 / ステータス / 影響範囲
research(リサーチ):
- 🎯 調査目的 / 📚 調査結果 / ⚖️ 比較・評価 / 💡 結論・推奨 / 📝 参考情報
サマリーカード: 調査テーマ / 調査対象数 / 推奨
security(セキュリティ):
- 🛡️ 監査概要 / 🔴 脆弱性(テーブル: CVE/種別 / 深刻度 / 対応) / 🟡 リスク / ✅ 問題なし / 📝 まとめ
サマリーカード: 監査対象 / 脆弱性件数 / 最高深刻度
HTMLの品質基準
- 日本語フォント:
'Segoe UI', 'Meiryo', sans-serif - コードは
<pre>または<code>タグで囲む - テーブルの行が多い場合は最大15行まで表示し、それ以上は折りたたみ(
<details>) - ファイルは完全なHTMLとして自己完結させる(外部CDN不使用)
Step 5: 保存・報告
- 保存先ディレクトリが存在しない場合は作成する
- HTMLファイルを書き込む
- ユーザーに以下を報告する:
✅ 保存しました
ファイル: C:/Users/aksh0/reports/reviews/PR123.html
種別: コードレビュー
重要な注意点
- 会話内容の忠実な再現: 要約や省略はしない。Agentが出力した内容をそのままHTMLに落とし込む
- コードブロックの保持: ソースコードや差分は
<pre>タグで必ず保持する - リンク化: ファイルパス(例:
src/auth.rs:42)は<code>タグで装飾する - 未判明情報: 会話から読み取れない項目(PR番号など)は「不明」「-」と記載し、推測しない