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番号など)は「不明」「-」と記載し、推測しない