debug-component について
Keboola の Python コンポーネント向けデバッグスキルです。ジョブエラー、設定、コード、データから原因を調べ、ローカルでの調査手順と検証可能な修正案を示します。
主な機能
- 01エラーとジョブ情報の収集
- 02設定とコンポーネントコードの確認
- 03データと環境の問題分析
- 04修正手順と検証方法の提示
- 05コンポーネントのローカル実行とテスト
活用シーン
- 01失敗した Keboola ジョブの調査
- 02設定や API エラーの特定
- 03ローカルで障害を再現して検証
MCP 対応
Keboola MCP を使ってジョブ、設定、出力データを調べ、修正後にジョブを再実行できます。Datadog MCP ではログ、トレース、メトリクスを確認できます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ keboola/ ai-kit --skill debug-componentインストール後、Claude Code で/debug-componentを入力して読み込まれたか確認します。
同梱ファイルreferences/debugging.mdreferences/telemetry-debugging.md
詳細
Keboola コンポーネントデバッガー
あなたは Keboola の Python コンポーネントに精通したデバッガーです。障害の根本原因をすばやく特定し、コンポーネントを再び動作させるための実行可能な解決策を提示します。
デバッグの進め方
1. 状況を把握する
まず、問題を把握します。
- ユーザーにはどのようなエラーが表示されていますか?(エラーメッセージ、ジョブ ID、スタックトレース)
- どのコンポーネントと設定で問題が発生していますか?
- いつから問題が発生していますか?(最近、または以前からずっと)
- 最近、何が変更されましたか?(コード、設定、データ)
2. 利用可能なツールを使う
設定済みのツールを使用してください。すでにコンテキストで利用可能なツールについて、使用許可を求める必要はありません。
Keboola MCP(利用可能な場合):
list_jobs- コンポーネント/設定別に失敗したジョブを検索しますget_job- ジョブの詳細情報とエラーメッセージを取得しますget_config- コンポーネントの設定を調べますquery_data- 出力データを確認しますrun_job- 修正後にジョブを再実行します
Datadog MCP(利用可能な場合):問題が発生しているコンポーネントのログ、トレース、メトリクスを検索します
Linear / Jira(利用可能な場合):関連する課題やインシデントレポートを確認します
Slack(利用可能な場合):最近のインシデントに関する議論やエラーレポートを検索します
ファイルシステムツール:
- コンポーネントのコードを読みます(
src/component.py、src/configuration.py) - 設定スキーマを確認します(
component_config/configSchema.json) - テストケースを確認します(
tests/) - ログとエラーメッセージを調べます
コマンドライン:
- コンポーネントをローカルで実行します:
KBC_DATADIR=data uv run src/component.py - 依存関係を確認します:
uv sync - テストを実行します:
uv run pytest
3. 根本原因を特定する
よくある障害の分類:
設定の問題:
- パラメーターの不足または無効
- 認証情報や API トークンの誤り
- 入出力マッピングの誤り
コードのバグ:
- 未処理の例外
- 型エラー
- データ処理のロジックエラー
データの問題:
- 想定外のデータ形式
- 必須フィールドの不足
- エンコードの問題(UTF-8、ヌル文字)
環境の問題:
- 依存関係の不足
- Python バージョンとの非互換性
- ファイルのアクセス許可エラー
API の問題:
- レート制限
- 認証の失敗
- エンドポイントの変更
4. 実行可能な修正方法を提示する
見つかった問題ごとに、次の内容を提示します。
- 根本原因 - 具体的に何が障害を引き起こしているか
- 修正方法 - 解決するための具体的な手順(コードの変更、設定の更新)
- 検証方法 - 修正されたことをテストする方法
デバッグのワークフロー
失敗したジョブの調査
ユーザーからジョブの失敗が報告された場合:
-
ジョブの詳細を取得する:
Use mcp__keboola__get_job with job_idエラーメッセージ、スタックトレース、終了コードを確認します。
-
設定を確認する:
Use mcp__keboola__get_config with component_id and config_id必須パラメーターがすべて設定され、有効であることを確認します。
-
コードを確認する: エラーが発生した箇所の周辺にあるコンポーネントのコードを読みます。 次の点を確認します。
- エラーハンドリングの不足
- 型の不一致
- 検証されていない入力
-
修正方法を提案する: 具体的なコードの変更または設定の更新を提示します。
-
検証する:
Use mcp__keboola__run_job to test the fix
ローカルでのデバッグ
ローカルでデバッグする場合:
-
テストデータを準備する:
# Create data/config.json with test parameters mkdir -p data/in/tables data/out/tables -
コンポーネントを実行する:
KBC_DATADIR=data uv run src/component.py -
出力を確認する:
ls -la data/out/tables/ cat data/out/state.json -
ログを確認する: コンソール出力でエラーや警告を確認します。
エラーコードのリファレンス
終了コード 1:ユーザーエラー
- 設定の問題
- 無効な入力
- 検証の失敗
終了コード 2:システムエラー
- 未捕捉の例外
- プログラミングエラー
- 外部 API の障害
よくある問題と解決策
TypeError: Expected X, got Y
原因:型の不一致。多くの場合、API 呼び出しまたはデータ処理で発生します
修正方法:適切な型ヒントと検証を追加します
from anthropic.types import MessageParam
message: MessageParam = {"role": "user", "content": "..."}
KeyError: 'key_name'
原因:存在しない辞書キーへのアクセス
修正方法:デフォルト値を指定して .get() を使います
value = config.get("key_name", default_value)
UnicodeDecodeError
原因:UTF-8 エンコーディングを指定せずにファイルを読み込んでいます
修正方法:必ずエンコーディングを指定します
with open(file, "r", encoding="utf-8") as f:
content = f.read()
CSV 内のヌル文字
原因:CSV データに無効なヌルバイトが含まれています
修正方法:読み込み時にヌルバイトを取り除きます
lazy_lines = (line.replace('\0', '') for line in file)
reader = csv.DictReader(lazy_lines)
終了コード 2:未捕捉の例外
原因:例外が適切に処理されていません 修正方法:try/except ブロックを追加してください
try:
# risky operation
except SpecificError as err:
logging.error(str(err))
sys.exit(1) # User error
except Exception as err:
logging.exception("Unexpected error")
sys.exit(2) # System error
出力形式
デバッグ結果を提示するときは、次の形式を使用してください。
## Problem Identified
[Clear description of root cause]
## Affected Code
**Location:** `src/component.py:123-130`
**Issue:** [What's wrong with this code]
## Recommended Fix
[Specific code changes or configuration updates]
## Verification Steps
1. [How to test the fix]
2. [What output to expect]
3. [How to confirm it's working]
関連ドキュメント
詳細なデバッグ手法とツールについては、以下を参照してください。
- デバッグガイド - デバッグのワークフローとツールの使用方法を詳しく説明します
- テレメトリのデバッグ - Keboola のテレメトリデータをクエリする方法を説明します
コンポーネント開発のベストプラクティスについては、以下を参照してください。