Install any skill in seconds. Free to start, no credit card required.
Get Started Free →BigQuery/Snowflake接続、EDA、可視化、Marimoノートブック作成を行うサブエージェント。 データ分析関連の4つのルール(data_analysis, visualization, notebook, marimo_variable_naming)を統合。 「データ分析して」「BigQueryに接続」「EDAを実行」「Marimoで分析」等のリクエストで発動。
.claude/skills/minicoohei-data-analyst/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | 97% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 51% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 114% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 57% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 67% | 0% |
BigQuery/Snowflake接続、EDA、可視化、Marimoノートブック作成を専用コンテキストで実行するサブエージェント。
> Draft: Marimo変数の補助Lintスクリプトは未収録。変数名の重複は手動で確認する。
データ分析処理をメインエージェントのコンテキストから分離し:
このサブエージェントは以下の4つのルールの内容を内包しています:
data_analysis.mdc - データ分析の基本原則visualization.mdc - 可視化の品質基準notebook.mdc - Marimo Notebook利用ルールmarimo_variable_naming.mdc - Marimo変数命名ルールdata/
├── raw/ # 元データ(上書き禁止)
├── intermediate/ # 中間処理データ
├── feature/ # 特徴量データ
└── output/ # 最終出力命名規則: {source}__{target}__{granularity}__{date}.parquet 例: bq__sales__daily__2025-03-01.parquet
ydata-profiling) やAutoViz (autoviz) を活用| ルール | 説明 | |--------|------| | 意味のあるラベル | index番号使用禁止、ユーザー名/日付/カテゴリ名を使用 | | 適切なグラフタイプ | 棒グラフ(比較)、折れ線(時系列)、ヒートマップ(2次元)| | 日本語ラベル | 専門知識なしで理解できるように | | 数値ラベル表示 | 棒の上に「1,791件」等を表示 | | タイトル/軸ラベル/凡例 | 必須 | | 高解像度 | 300 DPI以上 |
| データ | 推奨グラフ | |--------|----------| | カテゴリ比較 | 棒グラフ | | 時系列 | 折れ線グラフ | | 2次元データ | ヒートマップ | | 内訳 | 積み上げグラフ | | 長いラベル | 横棒グラフ |
pythonimport matplotlib matplotlib.use('Agg') # GUIなしで動作 import matplotlib.pyplot as plt # 日本語フォント設定 plt.rcParams['font.family'] = 'Hiragino Sans'
pythonfrom tqdm import tqdm # 時間のかかる処理には必ず進捗表示 for item in tqdm(items, desc="処理中", unit="item"): process(item) time.sleep(0.5)
sqlWITH deduplicated AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY post.xPostId ORDER BY _PARTITIONTIME DESC) as row_num FROM `project.dataset.table` WHERE _PARTITIONTIME IS NOT NULL ) SELECT * FROM deduplicated WHERE row_num = 1
Marimoでは変数の再定義が禁止。異なるセル間で同じ変数名を使用するとエラー。
| セルの目的 | 推奨接尾辞 | 例 | |----------|---------|---| | データ取得 | _fetch, _load | df_fetch, result_load | | 前処理 | _prep, _clean | data_prep, values_clean | | 統計分析 | _stat, _calc | mean_stat, corr_calc | | 可視化(静的) | _static, _plot | fig_static, ax_plot | | 可視化(動的) | _dyn, _inter | net_dyn, chart_inter | | モデル学習 | _train, _fit | model_train, scaler_fit | | 評価 | _eval, _test | score_eval, pred_test |
python# ✅ 良い例(セルごとに固有の接尾辞) @app.cell def _(data): fig_overview, axes_overview = plt.subplots(2, 2) for idx_ov, ax_ov in enumerate(axes_overview.flatten()): ax_ov.plot(data[idx_ov]) return fig_overview, axes_overview @app.cell def _(data): fig_detail, axes_detail = plt.subplots(3, 3) return fig_detail, axes_detail
編集前後に各セルのトップレベル変数名を見直し、同じ名前を複数セルで再定義していないことを確認する。重複する場合は、セルの役割が分かる固有の接尾辞を付ける。
bash# 設定プロファイル一覧 gcloud config configurations list # プロファイル切り替え gcloud config configurations activate <profile_name> # 認証 gcloud auth application-default login
| プロファイル名 | プロジェクトID | 用途 | |---------------|---------------|------| | default | - | デフォルト環境 | | my-profile | my-gcp-project | 本番データ分析 | | my-dev | my-dev-project | 開発分析 |
メインエージェントは以下のパターンでこのサブエージェントを呼び出す:
pythonTask( subagent_type="generalPurpose", model="fast", description="Data analysis", prompt=""" このスキルを読んで実行してください: skills/data-analyst/SKILL.md タスク: {ユーザーの指示} データソース: {BigQuery / Snowflake / CSV等} 分析目的: {EDA / 可視化 / レポート作成等} 分析結果のサマリーを返却してください。 """ )
yamlstatus: success analysis_type: EDA data_source: BigQuery (my-dev-project) summary: total_rows: 150000 columns: 25 date_range: "2025-01-01 ~ 2025-12-31" key_findings: - "日別投稿数は平均1,200件/日" - "ピーク時間帯は12:00-13:00" - "週末は平日比30%減少" visualizations: - path: reports/daily_posts.png description: "日別投稿数推移" - path: reports/hourly_heatmap.png description: "時間帯別ヒートマップ" notebook: path: notebooks/eda_analysis.py status: "作成完了"
txtmarimo>=0.5.0 pandas>=2.0.0 plotly>=5.0.0 matplotlib>=3.7.0 google-cloud-bigquery>=3.0.0 ydata-profiling>=4.0.0 tqdm>=4.65.0
| エラー | 解決方法 | |--------|---------| | GCP認証エラー | gcloud auth application-default login を実行 | | BigQueryテーブルが見つからない | gcloud config configurations list でプロファイルを確認し適切なものに切り替え | | Marimo変数再定義エラー | 各セルのトップレベル変数を見直し、重複名に固有の接尾辞を付ける |
data/output/ または reports/ に保存されているBigQuery/Snowflake接続、EDA(探索的データ分析)、可視化、Marimoノートブック作成を専用コンテキストで実行するサブエージェントスキルです。データ分析・可視化・Notebook作成の4つのルールを統合し、分析結果のサマリーのみを返却します。
上記「サブエージェント呼び出しパターン」および「GCP認証」セクションを参照。基本的な実行例:
bash# Marimo ノートブックで分析を開始 marimo edit notebooks/eda_analysis.py
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 16,814 | 13,215 | -21% | 1 | 1 | 0% | 3,644 | 4,778 | +31% | 0 | 0 | — |
case-02 | fail→fail | 21,951 | 31,624 | +44% | 1 | 1 | 0% | 5,004 | 8,619 | +72% | 0 | 0 | — |
case-03 | fail→fail | 18,194 | 15,941 | -12% | 1 | 1 | 0% | 3,593 | 5,776 | +61% | 0 | 0 | — |
case-04 | fail→fail | 13,368 | 12,572 | -6% | 1 | 1 | 0% | 2,438 | 5,176 | +112% | 0 | 0 | — |
case-05 | pass→pass | 12,354 | 7,344 | -41% | 1 | 1 | 0% | 2,223 | 3,684 | +66% | 0 | 0 | — |
case-06 | fail→pass | 9,414 | 5,551 | -41% | 1 | 1 | 0% | 1,687 | 3,331 | +97% | 0 | 0 | — |
case-07 | fail→pass | 15,501 | 8,982 | -42% | 1 | 1 | 0% | 2,633 | 3,972 | +51% | 0 | 0 | — |
case-08 | fail→pass | 9,705 | 5,627 | -42% | 1 | 1 | 0% | 1,569 | 3,350 | +114% | 0 | 0 | — |
case-09 | fail→pass | 12,247 | 5,295 | -57% | 1 | 1 | 0% | 2,131 | 3,351 | +57% | 0 | 0 | — |
case-10 | fail→pass | 13,150 | 7,455 | -43% | 1 | 1 | 0% | 2,153 | 3,586 | +67% | 0 | 0 | — |
case-11 | pass→pass | 11,199 | 7,079 | -37% | 1 | 1 | 0% | 1,992 | 3,724 | +87% | 0 | 0 | — |
case-12 | pass→pass | 16,027 | 7,189 | -55% | 1 | 1 | 0% | 2,481 | 3,517 | +42% | 0 | 0 | — |
case-13 | pass→pass | 12,236 | 3,256 | -73% | 1 | 1 | 0% | 1,966 | 2,858 | +45% | 0 | 0 | — |
case-14 | pass→pass | 14,985 | 8,004 | -47% | 1 | 1 | 0% | 2,375 | 3,676 | +55% | 0 | 0 | — |
case-15 | pass→pass | 11,060 | 2,833 | -74% | 1 | 1 | 0% | 1,980 | 2,767 | +40% | 0 | 0 | — |
case-16 | fail→pass | 11,740 | 4,756 | -59% | 1 | 1 | 0% | 1,852 | 3,157 | +70% | 0 | 0 | — |
case-17 | pass→pass | 16,701 | 11,700 | -30% | 1 | 1 | 0% | 2,514 | 4,216 | +68% | 0 | 0 | — |
case-18 | pass→pass | 11,554 | 5,635 | -51% | 1 | 1 | 0% | 1,876 | 3,288 | +75% | 0 | 0 | — |
case-19 | fail→pass | 12,735 | 3,186 | -75% | 1 | 1 | 0% | 2,108 | 3,049 | +45% | 0 | 0 | — |
case-20 | pass→pass | 22,173 | 18,780 | -15% | 1 | 1 | 0% | 3,901 | 5,625 | +44% | 0 | 0 | — |
case-21 | pass→pass | 15,858 | 13,303 | -16% | 1 | 1 | 0% | 3,005 | 4,876 | +62% | 0 | 0 | — |
case-22 | pass→pass | 14,843 | 12,573 | -15% | 1 | 1 | 0% | 2,873 | 4,963 | +73% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +32 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.