ドキュメント&知識ベース · coffeefuelbump/csv-data-summarizer-claude-skill

csv-data-summarizer

Pythonとpandasを使用してCSVファイルを分析し、要約統計量を生成し、迅速な可視化プロットを作成します。

L4 高権限 · 段階的認可と監査V1 コミット固定コマンド実行依存関係インストールファイル書き込みDual-pass Audit
Author coffeefuelbumpGitHub coffeefuelbump/csv-data-summarizer-claude-skill ↗Stars 465License 仓库内无 LICENSE 文件(git ls-tree 无 LICENSE);README 自述 'MIT License - feel free to use this skill for personal or commercial projects!',GitHub API license=nullCommit 9b3affd270
管理レベルは Skill の能力と推奨統制措置を示すものであり、品質や安全性の認証、利用可否の判定ではありません。使用の可否はユーザーおよび管理者が決定します。Agent 環境によって制約が異なるため、自動保護を仮定しないでください。第三者製 Skill の著作権は原著作者に帰属し、利用リスクは利用者が負います。

1仕組みと動作原理

全機能は182行のpandas関数 `summarize_csv(file_path)` に集約されています。CSVの読み込み → 列型に応じた固定分岐 → 文字列レポートの構築を行い、処理中に `plt.savefig` で**カレントワーキングディレクトリ**へ直接グラフ画像を出力します。

analyze.py
def summarize_csv(file_path): """ Comprehensively analyzes a CSV file and generates multiple visualizations. Args: file_path (str): Path to the CSV file Returns: str: Formatted comprehensive analysis of the dataset """ df = pd.read_csv(file_path)
レポートは段階的に追加される文字列配列(数十箇所の `summary.append(...)`)で構築され、末尾で `return "\n".join(summary)` されます。グラフファイル名とレポート文章はハードコードされた定数です(correlation_heatmap.png / time_series_analysis.png / distributions.png / categorical_distributions.png)。

分岐基準は業務・データの意味論ではなく、列型および列名の一部文字列に完全に基づいています。数値列は統計と相関、object列は値の出現頻度、列名に 'date' または 'time' を含む場合のみ時系列分析を実行します。

analyze.py
date_cols = [c for c in df.columns if 'date' in c.lower() or 'time' in c.lower()]
対応コード:`numeric_cols = df.select_dtypes(include='number').columns.tolist()`、`categorical_cols = df.select_dtypes(include=['object']).columns.tolist()`、および名前に 'id' を含む列の除外(`categorical_cols = [c for c in categorical_cols if 'id' not in c.lower()]`)。

レポートの内容と順序は固定です:データ概要(行・列数/列名)→ 各列のdtype → 欠損値統計 → 数値のdescribe → 相関行列 → カテゴリ値Top 10 → 時系列区間 → 生成済みグラフ一覧。

analyze.py
summary.append("📊 DATA OVERVIEW")
欠損値部分は列ごとに行数と割合を表示し(`Missing values: {missing:,} ({missing_pct:.2f}% of total data)`)、欠損がない場合は `✓ No missing values - dataset is complete!` と出力します。

可視化は4種類の条件付きグラフで構成されます:相関ヒートマップ(数値列≥2)、時系列折れ線グラフ(日付列かつ数値列が存在する場合、最大3系列)、数値分布ヒストグラム(2x2グリッド、最大4列)、カテゴリ横棒グラフ(2x2グリッド、最大4列)。

analyze.py
plt.savefig('correlation_heatmap.png', dpi=150) plt.close() charts_created.append('correlation_heatmap.png')
すべて相対パスへの `plt.savefig(...)` と `plt.close()` で統一されています。件数上限はスライスで固定されています(テキスト内の `categorical_cols[:5]`、`value_counts.head(10)`、`numeric_cols[:3]/[:4]`)。

「ユーザーに質問しないこと」が最優先の厳格な行動要件として定義されています。SKILL.mdでは全大文字の段落ですべての質問や選択肢の提示を禁止し、初回で完全な分析を実行して一括納品することを要求しています。

SKILL.md
**DO NOT ASK THE USER WHAT THEY WANT TO DO WITH THE DATA.** **DO NOT OFFER OPTIONS OR CHOICES.**
同段落には禁止フレーズ('What would you like me to do with this data?'、'Here are some common options:' 等)や禁止行動(選択肢の提示、ユーザーの指示待ち、不完全な分析の提供)が列挙されています。これは「対話ゼロ」によって分析アシスタント特有の過剰な確認を排除するという、本スキルの明確な製品思想です。

トリガーとなるコンテキストが明示されており(CSVのアップロード/参照、summarize/analyze/visualizeの要求、データ構造や品質の確認要求)、欠損値や日付列の検出ルールも規定されています。

SKILL.md
Claude should use this Skill whenever the user: - Uploads or references a CSV file - Asks to summarize, analyze, or visualize tabular data
呼び出し方法は「The Skill provides a Python function summarize_csv(file_path)」と記載されており、ホストであるClaudeがコードを記述・実行してこの関数を呼び出す形式をとっています(analyze.py 自身のCLIサブコマンドではなく、`__main__` で任意のパス引数を1つ受け取り、デフォルトは 'resources/sample.csv')。

配布形式は Claude.ai Skills へのアップロード用ZIPパッケージであり、リポジトリ側にも同一のソースコードが保持されています。ZIP内のファイルはリポジトリのワークスペースとバイト単位で一致しています(検証済み)。

README.md
2. Go to [Claude.ai](https://claude.ai) → Settings → Capabilities → Skills 3. Upload the zip file 4. Enable the skill
検証結果:ZIP内の analyze.py / SKILL.md / requirements.txt のSHA-256ハッシュはリポジトリ内の同名ファイルと完全一致(verification.second_pass 参照)。ZIPには SKILL.md、analyze.py、requirements.txt、resources/{sample.csv,README.md} が含まれ、ワークスペースの構成から examples/ を除いたものと一致しています。

2コア機能

011回の呼び出しで完全なデータヘルスチェックレポートを生成:行・列数、各列の型、欠損値分布、数値記述統計、相関行列
02条件に応じたグラフの自動描画(相関ヒートマップ/時系列折れ線/数値分布ヒストグラム/カテゴリTop-N棒グラフ)
03カテゴリ列の頻度分析(最初の5つのカテゴリ列、各列のTop 10値および構成比)
04日付列の自動認識と期間統計(列名に 'date' または 'time' を含むかで判定)
05データ品質評価の一環としての列単位の欠損値特定(件数+割合)
06ホスト環境から独立して単体実行可能(analyze.py に `__main__` が含まれ、デフォルトで resources/sample.csv を実行)
07対話ゼロの実行規律:質問の禁止、選択肢提示の禁止、全量結果の一括返却を強制

3外部依存関係

KindDependency / Endpoint
packagepandas
packagematplotlib
packageseaborn
network无:脚本不发起任何网络请求(无 URL 取数、无遥测、无外部 API);仓库内 URL 仅出现在 README/resources 的徽章与社区链接中

4推奨統制措置と判定根拠

安全運用のための推奨統制措置
Agent 向け
段階的・都度認可、サンドボックス推奨
管理者向け
承認フロー、ロールバック可能、全履歴監査
判定根拠(ファイルパスと抜粋)
  • scripts/: ローカルスクリプトまたはコマンドの実行: python analyze.py [csv_path](デフォルトは resources/sample.csv)
  • scripts/ 或 SKILL.md: 外部言語パッケージ依存関係の動的インストール宣言
  • 本地工作目录: ファイルの読み書きおよび成果物の出力: **カレントワーキングディレクトリ**直下に固定ファイル名でPNGを出力:correlation_heatmap.png、time_series_analysis.png、dis
監査ノート: 統一判定基準に基づく評価:本スキルは「ローカル専用ツール/ローカルファイル読み書き」に分類されます。pandas/matplotlib/seabornを用いてローカルで統計処理と描画を行い、外部通信、クレデンシャル読み取り、サブプロセス呼び出し、任意コード実行面は存在しません。依存関係も公式PyPIパッケージのみです。グリーン区分とならない理由は、Pythonスクリプトを実行すること、作業ディレクトリに固定ファイル名で画像を書き出すこと(同名ファイルの上書きリスク)、および3つの外部ライブラリのインストールを必要とする点にあります。情報流出やクレデンシャルのリスクはゼロであり、イエローやオレンジの判定基準には達しません。

5二重目の独立検証

  • [ok] 『无网络外发/无凭证读取』结论 — analyze.py imports 仅 pandas/matplotlib.pyplot/seaborn/pathlib;全仓(排除 .git)关键词扫描 requests|urllib|socket|http|subprocess|os.system|getenv|os.environ 零命中;URL 仅出现在 README/resources/README 的徽章与社区链接。
  • [discrepancy] 日期列判据与文档不符(实测) — SKILL.md Notes 写 'Automatically detects date columns (columns containing \'date\' in name)',实际代码是 "'date' in c.lower() or 'time' in c.lower()"。实测在仓库自带演示集上命中 **customer_lifetime_value**('life**time**' 含 'time'),随后 pd.to_datetime 把 2400 一类整数按纳秒解释成 1970 年,输出 'Date range: 1970-01-01 … to 1970-01-01 …'、'Span: 0 days',并据此画出无意义的时间序列图(实测 pandas 3.0.5;该行为与 pandas 2.x 一致:to_datetime(int) 亦按纳秒)。即 README 宣称该演示集『Perfect for showcasing time-series analysis』,实际触发的是误判列。
  • [discrepancy] 『自适应/智能识别行业数据类型』的能力声明 — SKILL.md 列出 Sales/E-commerce、Customer、Financial、Operational、Survey 五类数据的『相应分析』,README 写 'Automatically detects data type (sales, customer, financial, survey, etc.) and applies relevant analysis';但 analyze.py 没有任何行业或语义分类代码,全部行为由 dtype 与列名子串决定(number→describe/corr/hist,object→value_counts/barh,含 date|time→区间)。属**能力夸大**:它确实会因列构成不同而产出不同报告,但没有『识别数据类型』这一步。
  • [discrepancy] Notes『Generates visualizations only when date columns are present』 — 实际仅 time_series_analysis.png 需要日期列;distributions.png 只需数值列、categorical_distributions.png 只需分类列、correlation_heatmap.png 只需 ≥2 数值列。该句把条件说得比实现更严,属文档描述偏差(本身不影响使用)。
  • [discrepancy] SKILL.md『Files』清单与仓库实际文件 — SKILL.md 只列 analyze.py、requirements.txt、resources/sample.csv、resources/README.md;仓库另有 examples/showcase_financial_pl_data.csv(README 重点宣传的演示集)与 csv-data-summarizer.zip(分发包)。清单不完整。
  • [ok] 分发包与源码一致性 — zip 内 analyze.py(sha256 fa217db952541d59…)、SKILL.md(1599338ac2db52ba…)、requirements.txt(3787888dbf39eb94…)与工作区同名文件哈希完全相同;zip 结构为 SKILL.md/analyze.py/requirements.txt/resources/{sample.csv,README.md}。
  • [ok] 依赖声明三重一致 — SKILL.md frontmatter metadata(python>=3.8, pandas>=2.0.0, matplotlib>=3.7.0, seaborn>=0.12.0)与 requirements.txt 三行、README Technical Details 段逐项吻合;实际运行时三项库均被 import(seaborn 用于 heatmap,matplotlib 用于绘图)。
  • [ok] 写盘行为与覆盖风险 — 四处 plt.savefig 全部使用相对文件名(correlation_heatmap.png / time_series_analysis.png / distributions.png / categorical_distributions.png)+ dpi=150 + plt.close();不创建目录、不检查同名文件、不接受输出路径参数——已在 file_writes 与 risks 记入。

6結論

  • 導入障壁ゼロ:CSVを対話にドラッグするだけで完全なレポートと複数グラフが得られ、質問への回答が不要—分析系アシスタント最大の摩擦を解消。
  • 極めてシンプルで可読性・改造性が高い実装:単一ファイル182行・抽象レイヤーなし。pandasを扱える開発者なら数分で独自のドメイン計算やグラフ変更が可能(resources/README に変更方法も記載)。
  • 安定的で整ったレポート構造:規模/型/欠損値/記述統計/相関/カテゴリ頻度/期間/グラフ一覧の8セクションが固定順序で並び、目視での確認やプログラムによる抽出が容易。
  • 抑制された条件付き出力:データが要件を満たす場合のみ対応するグラフを描画(日付がなければ時系列を描かない、複数数値列がなければヒートマップを描かない)し、不要な画像の生成を防止。
  • 完全ローカル実行、外部送信・クレデンシャル不要:顧客情報や財務データを含む機密スプレッドシートの処理に適応(データが端末外に出ない)。
  • 最適な用途: 適しているケース:初めて扱うCSVの概要(列名、型、欠損値、規模感、初期的な相関や分布)を素早く把握したい日常業務;「アップロードするだけで即座にレポートが欲しい」非技術者ユーザー;顧客・財務などの機密表データを外部送信せずローカルで処理したいユーザー;単一ファイルで改造しやすい最小限のテンプレートをベースに独自分析スクリプトを構築したい開発者。
    不向きな用途: 適していないケース:特定業界に特化した業務分析を求めるシナリオ(業務ロジックは含まれず自前拡張が必要);厳密な統計的推論・因果推論や外れ値検定が必要な場面(記述統計のみで検定や免責表記は行わない);巨大データセットやストリーミングデータ(チャンク分割を行わず全量をメモリ展開);固定ファイル名の上書きを避けたい、または出力パスを厳密に制御したい自動化パイプライン;多言語文字セットや複数文字コードに対する堅牢性が求められる環境(pd.read_csv のデフォルトエンコーディング前提のまま未処理)。
    Install Agent-Ready
    ① Verified Mirror 2026-09-15
    Option A · Direct DownloadDownload csv-data-summarizer.tar.gz
    sha256: 812ec659a4b533a8…
    Option B · Copy Guide for Agent
    install.json
    Agent はこの JSON ガイドから自動的にダウンロードして検証します。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit 9b3affd270.