| name | excel-generation |
| description | 既存ドキュメントまたはコードベースからExcelファイルを生成します。Cron処理、API仕様、データベース設計、機能仕様などのドキュメントをExcel形式で作成・変換するときに使用。ビジネス文書スタイル(敬語・物語的)、技術仕様書スタイル(構造化・詳細)、ハイブリッドスタイル(両方の長所)の3つから選択可能。 |
| allowed-tools | Read, Glob, Grep, Write, Bash, TodoWrite, mcp__serena__*, mcp__sequential-thinking__* |
Excel ドキュメント生成 Skill
📋 概要
既存のMarkdownドキュメントまたはコードベースから、Excel形式のドキュメントを生成します。
対応ドキュメント:
- Cron処理仕様
- API仕様書
- データベース設計書
- 機能仕様書
- システム設計書
3つのスタイル:
- A型(ビジネス文書): 敬語表現、物語的、経営層・非技術者向け
- B型(技術仕様書): 簡潔表現、構造化、技術者・開発者向け
- H型(ハイブリッド): A型の敬語 + B型の構造化
⚠️ 【重要】必須事項
このSkillを実行する際の絶対ルール
-
Step 1(スタイル選択)とStep 2(体裁確認)は必須
- ユーザーから引数が渡されていても、必ずこれらの質問を実行すること
- 引数は「ヒント」として扱い、最終確認は必ずユーザーに行う
-
サンプルExcelがある場合は必ず解析
- openpyxlで完全に読み込み、体裁を解析
- 列幅、フォント、色、配置、罫線、行の高さ、シート構成を完全にコピー
- サンプルのスタイル(A/B/H型)を自動判定
-
推測厳禁・省略禁止
- すべての情報はドキュメント/コードベース/サンプルから取得
- 不明点は必ずユーザーに確認
-
質問をスキップしない
- 「引数で指定されているから」という理由で質問を省略しない
- ユーザーの意図を確実に理解するため、必ず質問する
🎯 実行手順
Step 0: 引数の確認(あれば)
ユーザーから引数が渡されている場合:
- 引数の内容を確認し、メモする
- ただし、引数はあくまで「ヒント」であり、Step 1, 2は必ず実行する
- 引数で「技術仕様書スタイル」と書かれていても、Step 1でユーザーに確認する
Step 1: スタイル選択(必須 - 絶対スキップ禁止)
重要: この質問は必ず実行すること。引数があっても省略しない。
ユーザーに以下の質問を表示し、スタイルを選択してもらう:
どのスタイルでExcelファイルを生成しますか?
A) ビジネス文書スタイル
- 敬語表現(「〜様」「〜いたします」)
- 物語的で読みやすい
- 対象: 経営層、管理職、非技術者
B) 技術仕様書スタイル(推奨)
- 簡潔な技術表現
- 構造化された処理内容(テーブル名、カラム名明記)
- 対象: 開発者、技術者
H) ハイブリッドスタイル
- A型の敬語表現 + B型の構造化
- 見やすい改行あり、空行なし
- 対象: 技術・非技術の混成チーム
デフォルト: B(技術仕様書スタイル)
Step 2: 体裁の基準確認(必須 - 絶対スキップ禁止)
重要: この質問は必ず実行すること。引数があっても省略しない。
ユーザーに以下の質問を表示:
Excelファイルの体裁について確認させてください。
1) 既存のサンプルExcelファイルがありますか?
→ ある場合: ファイルパスを教えてください(その体裁に準拠します)
2) 既存サンプルがない場合、デフォルト体裁で作成します:
- タイトル行: 大きめフォント(20pt)
- ヘッダー行: 赤背景、白文字、太字、中央揃え、罫線
- データ行: 罫線付き、左揃え、改行対応
- 列幅: 内容に応じて自動調整
デフォルト体裁でよろしいでしょうか? [Y/n]
サンプルExcelがある場合の処理(必須):
-
サンプルファイルの存在確認
ls -la <サンプルファイルパス>
-
openpyxlでサンプルを解析(Pythonスクリプトを作成・実行)
- すべてのシート名を取得
- 各シートの構造を解析:
- 最大行・最大列
- タイトル行、空行、ヘッダー行の位置
- 列幅(すべての列)
- 行の高さ(すべての行)
- フリーズペイン設定
- 各セルの体裁を解析:
- フォント(名前、サイズ、太字、色)
- 背景色(塗りつぶし)
- 配置(水平、垂直、折り返し)
- 罫線(上下左右)
-
スタイルの自動判定
- セル内容から敬語表現(「〜様」「〜いたします」)を検出 → A型
- 構造化された記述(「:」区切り)を検出 → B型
- 両方を検出 → H型
-
体裁情報を記録
- 解析結果をメモリに保存
- 生成時にこの体裁を完全に再現する
Step 3: ソースの選択
ユーザーに以下の質問を表示:
ドキュメントのソースを選択してください:
1) 既存Markdownドキュメントから生成
→ Markdownファイルのパスを教えてください
2) コードベースから生成(コード解析してドキュメント化)
→ 対象の機能・モジュールを教えてください
3) 既存Excelファイルからスタイル変更のみ
→ Excelファイルのパスを教えてください
Step 4: データ収集と検証
選択されたソースから情報を収集:
Markdownドキュメントの場合:
- ドキュメントを読み込む
- 構造化データを抽出(テーブル、リスト、セクション)
- コードベース検証(ファイル存在、テーブル名など)
コードベースの場合:
- Serena MCPでコード構造を分析
- 関数・クラス・テーブル定義を抽出
- 処理フローを理解
Step 5: Excel生成(スタイル別)
選択されたスタイルに応じてExcelを生成:
A型(ビジネス文書スタイル)
特徴:
- 敬語表現: 「〜様」「〜いたします」「〜ございます」
- 物語的: 「〜を行います。その後、〜を実施します。」
- 画面区分: 機能カテゴリ単位(メール配信、バックアップなど)
例(処理内容セル):
LIL社員様が作成した指導者宛てのメールを一斉送信いたします。
配信ステータスが配信予約で、配信予約時刻がコマンド実行の時刻になったメールが対象となります。
メール送信後はメールの配信ステータスを予約配信完了に変更いたします。
B型(技術仕様書スタイル)
特徴:
- 簡潔表現: 「〜します」「〜を取得」
- 構造化: 改行で処理ステップを明示
- テーブル名・カラム名を明記
- 画面区分: 処理内容を具体的に記載
例(処理内容セル):
LIL社員が作成した指導者宛てのメールを一斉配信します。
配信対象メール取得:mail_detail テーブルから配信予約済みメールを取得
配信先リスト取得:mail_history テーブルから配信先を取得
メール送信処理:各教室の指導者にメール送信
ステータス更新:送信成功(3)、送信失敗(4)、配信完了(2)
送信報告メール:送信結果を事務局にメール送信
H型(ハイブリッドスタイル)
特徴:
- A型の敬語表現 + B型の構造化
- 空行なし、段落内改行あり(見やすさ重視)
- テーブル名を(括弧)内に記載
例(処理内容セル):
LIL社員様が作成した指導者宛てのメールを一斉配信いたします。
配信対象メール取得(mail_detail テーブルから配信予約済みメールを取得)、配信先リスト取得(mail_history テーブルから配信先を取得)、メール送信処理(各教室の指導者にメール送信)、ステータス更新(送信成功: 3、送信失敗: 4、配信完了: 2)、送信報告メール送信。
Step 6: Excel体裁の適用
デフォルト体裁(サンプルExcelがない場合):
-
シート名: ドキュメント名に応じて設定(例: 「内部Cron処理」「API仕様」)
-
タイトル行(Row 2):
- フォント: Meiryo 20pt
- 配置: 左揃え
- 例: 「■内部Cron処理」「■API仕様書」
-
ヘッダー行(Row 4):
- フォント: Meiryo 12pt、太字、白文字
- 背景色: 赤色(#C22114)
- 罫線: 全方向 thin
- 配置: 中央揃え、垂直中央
- 改行対応: wrap_text=True
-
データ行(Row 5以降):
- フォント: Meiryo 12pt
- 罫線: 全方向 thin
- 配置: 左揃え、垂直中央
- 改行対応: wrap_text=True
-
列幅(Cron処理の場合の例):
- SEQ列: 6.33
- 画面区分列: 12.5
- Cron設定列: 66.5
- 実行タイミング列: 18.66
- 処理内容列: 113.33
サンプルExcelがある場合:
- サンプルExcelの体裁を完全に解析
- 列幅、罫線、フォント、色、配置などを完全に再現
Step 7: 検証
生成されたExcelファイルを検証:
- シート構造の確認
- データの完全性確認(推測・省略なし)
- 体裁の確認(罫線、フォント、色、列幅)
- ファイルサイズの確認
📝 使用例
例1: Cron処理ドキュメントを技術仕様書スタイルで生成
ユーザーのリクエスト:
Cron処理のドキュメントをExcel形式で作成して
Skillの動作:
- このリクエストが
description の「Cron処理」とマッチ → Skill起動
- スタイル選択プロンプト表示 → ユーザーが「B」を選択
- 体裁確認プロンプト表示 → ユーザーが既存サンプルのパスを提供
docs/specs/cron-jobs.md を読み込み、構造化データを抽出
- コードベース検証(Cronファイル存在確認)
- サンプルExcelの体裁を解析
- 技術仕様書スタイルでExcel生成
- 検証と完了報告
例2: API仕様書をハイブリッドスタイルで生成
ユーザーのリクエスト:
API仕様書をExcel形式で作成して、技術者と非技術者の両方が読めるようにしたい
Skillの動作:
- 「API仕様」「Excel形式」とマッチ → Skill起動
- スタイル選択 → 「技術者と非技術者の両方」という要件から、ハイブリッド型を推奨
- 体裁確認 → デフォルト体裁で生成
- API仕様のMarkdownまたはコードから情報抽出
- ハイブリッドスタイルでExcel生成
⚠️ 重要な原則
推測厳禁
- データは必ずドキュメントまたはコードベースから取得
- 不明な情報は「※要確認:」と明記
- 推測で記載しない
省略禁止
- データベーステーブルは全カラム記載
... や省略記号は使わない
- すべてのデータを完全に記載
Code as Truth
- コードベースが唯一の真実
- ドキュメントとコードに差分がある場合、コードを正とする
- 必ずコードベース検証を実施
Quality over Speed
- 速さより質を優先
- 一度で完璧なExcelを生成
- 検証を徹底
🛠️ 実装詳細
ファイル構成
Skillは以下のPythonモジュールで構成されます:
.claude/skills/excel-generation/
├── SKILL.md # このファイル(Claude向け仕様)
├── README.md # ユーザー向け説明
├── TEST.md # テスト方法
├── .gitignore # Python関連ファイルを除外
└── scripts/ # 実装スクリプト(トークン効率化)
├── analyze_sample.py # サンプルExcel解析
├── style_converter.py # スタイル変換(A/B/H型)
├── excel_generator.py # Excel生成エンジン
└── main.py # メインエントリーポイント
Claudeによる実行方法
Claudeは、ユーザーから必要な情報(スタイル、サンプルExcelパス、ソースパス)を収集した後、
以下のコマンドをBash toolで実行します:
cd .claude/skills/excel-generation/scripts
python3 main.py \
--source {ソースMarkdownのパス} \
--output {出力Excelのパス} \
--style {A|B|H} \
[--sample {サンプルExcelのパス}]
パラメータ:
--source: ソースMarkdownファイルのパス(必須)
--output: 出力Excelファイルのパス(必須)
--style: スタイル選択 A/B/H(必須)
--sample: サンプルExcelファイルのパス(オプション)
実装されている機能
-
analyze_sample.py: サンプルExcel解析
- 列幅、行の高さ、フォント、色、配置、罫線を完全抽出
- スタイル判定は行わず、純粋に体裁情報のみを取得
-
style_converter.py: スタイル変換
format_business_style(): A型(敬語表現)
format_technical_style(): B型(簡潔表現)
format_hybrid_style(): H型(A型+B型、空行削除)
-
excel_generator.py: Excel生成エンジン
create_excel_with_template(): サンプル体裁を完全再現
create_excel_default(): デフォルト体裁で生成
apply_cell_style(): セルに体裁を適用
-
main.py: メインエントリーポイント
- コマンドライン引数のパース
- Markdown解析とデータ抽出
- スタイル変換の適用
- Excel生成と保存
📌 チェックリスト
Excelファイル生成前に確認:
Excelファイル生成後に確認:
🎓 スタイル別の具体例
A型(ビジネス文書)の例
処理内容セル:
LIL社員様が作成した指導者宛てのメールを一斉送信いたします。
配信ステータスが配信予約で、配信予約時刻がコマンド実行の時刻になったメールが対象となります。
メール送信後はメールの配信ステータスを予約配信完了に変更いたします。
特徴: 敬語、物語的、読みやすい
B型(技術仕様書)の例
処理内容セル:
LIL社員が作成した指導者宛てのメールを一斉配信します。
配信対象メール取得:mail_detail テーブルから配信予約済みメールを取得
配信先リスト取得:mail_history テーブルから配信先を取得
メール送信処理:各教室の指導者にメール送信
ステータス更新:送信成功(3)、送信失敗(4)、配信完了(2)
送信報告メール:送信結果を事務局にメール送信
特徴: 簡潔、構造化、テーブル名明記
H型(ハイブリッド)の例
処理内容セル:
LIL社員様が作成した指導者宛てのメールを一斉配信いたします。
配信対象メール取得(mail_detail テーブルから配信予約済みメールを取得)、配信先リスト取得(mail_history テーブルから配信先を取得)、メール送信処理(各教室の指導者にメール送信)、ステータス更新(送信成功: 3、送信失敗: 4、配信完了: 2)、送信報告メール送信。
特徴: 敬語 + 構造化、空行なし、段落内改行あり
🚀 実装時の注意事項
1. TodoWrite を活用
- やることが決まったら必ずTodoWriteで記録
- 進捗を逐次更新
2. コードベース検証を徹底
- ファイル存在確認
- テーブル名の検証
- 関数・クラス名の検証
3. 推測厳禁・省略禁止
- すべてのデータをソースから取得
... や省略記号を使わない
- 不明点は「※要確認:」と明記
4. 品質優先
- 速さより質を優先
- 一度で完璧なExcelを生成
- 検証を怠らない
📂 出力先
生成されたExcelファイルの配置先:
推奨: docs/specs/ ディレクトリ
- 例:
docs/specs/Cron処理詳細.xlsx
- 例:
docs/specs/API仕様書.xlsx
バックアップ: 必要に応じて docs/specs/_generated_excel/ に配置
🔧 トラブルシューティング
Excelファイルが生成できない
原因1: openpyxlがインストールされていない
pip install openpyxl
原因2: ソースドキュメントが見つからない
- ファイルパスを確認
docs/specs/ 配下を検索
原因3: データ構造が複雑すぎる
- 段階的に生成(まず基本情報、次に詳細)
- ユーザーに確認しながら進める
このSkillは、既存ドキュメントまたはコードベースから高品質なExcelファイルを生成します。
推測厳禁・省略禁止・コードベース検証を徹底し、質を最優先します。