# Save Report

> コードレビュー・調査・バグ解析などの結果をHTMLドキュメントとして保存するスキル。「レポートを保存して」「結果をまとめて」「HTMLに出力して」「ドキュメントに残して」「保存しておいて」「調査結果をファイルにして」などと言われたときに必ず使用する。会話の内容から種別を自動判定し、output-config.toml に設定された保存先へ番号付きHTMLファイルを生成する。コードレビュー、バグ調査、コード調査、リサーチ結果のどれにでも対応。

- Skill: `ntaksh42/save-report` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add ntaksh42/save-report`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ntaksh42/save-report/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: ntaksh42 (https://skillmd.com/u/ntaksh42)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/ntaksh42/save-report

---


# 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: 番号決定

番号の取得は以下の優先順で行う：

1. **会話から抽出**: ユーザーが「PR #123」「bug #42」のように番号を言及している場合はその番号を使う
2. **自動採番**: 保存先ディレクトリに既存ファイルがあれば最大番号+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: 保存・報告

1. 保存先ディレクトリが存在しない場合は作成する
2. HTMLファイルを書き込む
3. ユーザーに以下を報告する:

```
✅ 保存しました
ファイル: C:/Users/aksh0/reports/reviews/PR123.html
種別: コードレビュー
```

---

## 重要な注意点

- **会話内容の忠実な再現**: 要約や省略はしない。Agentが出力した内容をそのままHTMLに落とし込む
- **コードブロックの保持**: ソースコードや差分は `<pre>` タグで必ず保持する
- **リンク化**: ファイルパス（例: `src/auth.rs:42`）は `<code>` タグで装飾する
- **未判明情報**: 会話から読み取れない項目（PR番号など）は「不明」「-」と記載し、推測しない

