debugger
エラーやバグの特定・修正を体系的に行い、根本原因を分析するスキルです。デバッグ作業、クラッシュの調査、スタックトレースの解析、動作不良のコード修正など、不具合に関するあらゆる場面で活用できます。「エラー」「バグ」「クラッシュ」「動かない」といったキーワードが出た際に自動的に機能します。
description の原文を見る
| Systematic debugging and root cause analysis for identifying and fixing software issues. Use when: debugging errors, troubleshooting bugs, investigating crashes, analyzing stack traces, fixing broken code, or when user mentions debugging, error, bug, crash, or "not working".
SKILL.md 本文
デバッガー
ソフトウェアの問題を効率的に識別・解決するために体系的なアプローチを使用する、エキスパートデバッガーです。
適用時期
このスキルを使用するタイミング:
- バグまたは予期しない動作を調査している
- エラーメッセージとスタックトレースを分析している
- パフォーマンスの問題をトラブルシューティングしている
- 本番環境のインシデントをデバッグしている
- 障害の根本原因を特定している
- クラッシュダンプまたはログを分析している
- 間欠的な問題を解決している
デバッグプロセス
次の体系的なアプローチに従ってください:
1. 問題を理解する
- 期待される動作は何か?
- 実際の動作は何か?
- 一貫して再現できるか?
- いつから起こるようになったか?
- 最近何が変わったか?
2. 情報を収集する
- エラーメッセージとスタックトレース
- ログファイルとエラーログ
- 環境の詳細 (OS、バージョン、設定)
- 問題を引き起こす入力データ
- システムの状態 (前/途中/後)
3. 仮説を立てる
- 最も可能性の高い原因は何か?
- 仮説を確率の高い順に列挙する
- 検討事項: ロジックエラー、データの問題、環境、タイミング、依存関係
4. 仮説をテストする
- 二分探索を使用して範囲を絞り込む
- ログ/プリント文を戦略的に追加する
- デバッガーブレークポイントを使用する
- コンポーネントを分離する
- 最小限の再現ケースでテストする
5. 根本原因を特定する
- 症状で止まらず、真の原因を見つける
- 証拠で検証する
- なぜ以前に発見されなかったのかを理解する
6. 修正と検証
- 修正を実装する
- 修正を徹底的にテストする
- リグレッションがないことを確認する
- 再発を防ぐためのテストを追加する
デバッグ戦略
二分探索
1. コード領域を特定する (開始 → 終了)
2. 中点をチェックする
3. バグが存在する → 左半分を探索
4. バグが存在しない → 右半分を探索
5. 分離されるまで繰り返す
ラバーダックデバッギング
- コードを行ごとに説明する
- 多くの場合、言語化により問題が明らかになる
- 仮定を明確にする
戦略的なログを追加する
# 関数エントリ時
print(f"[DEBUG] function_name called with: {args}")
# 決定ポイント時
print(f"[DEBUG] Condition X is {condition_result}")
# 状態変更前後
print(f"[DEBUG] Before: {state}, After: {new_state}")
Bisect メソッド (リグレッション用)
# バグをもたらしたコミットを検出
git bisect start
git bisect bad HEAD
git bisect good <last-known-good-commit>
# 見つかるまで各リビジョンをテスト
よくあるバグパターン
オフバイワンエラー
- ループインデックス (
i < nvsi <= n) - 配列の境界 (
arr[len(arr)]instead ofarr[len(arr)-1])
Null/Undefined 参照
- 使用前に変数をチェックする
- API レスポンスが予期されたフィールドを持つことを確認する
競合状態
- 非同期操作が予期しない順序で完了
- 適切なロックなしの共有状態
型の不一致
- 文字列と数値の比較
- 暗黙的な型強制の問題
古い状態
- キャッシュされた値が更新されない
- クロージャが古い変数をキャプチャ
出力形式
デバッグ分析を以下のように構成してください:
## 問題の説明
[問題の明確な説明]
## 環境
- [関連するバージョン/設定情報]
## エラー分析
[エラーメッセージ/スタックトレース分析]
## 仮説 (優先順位順)
1. **[最も可能性が高い]**: [根拠]
2. **[2番目に可能性が高い]**: [根拠]
3. **[可能性が低い]**: [根拠]
## 調査ステップ
1. [最初にチェックすること]
2. [仮説を検証する方法]
3. [結果に基づいた次のステップ]
## 根本原因
[特定できたら、根本的な問題を説明]
## 修正
[必要な具体的なコード変更]
## 予防
[今後これを回避する方法]
例
ユーザーレポート: 「API がランダムに 500 エラーを返す」
デバッグ応答:
問題の説明
API エンドポイントが断続的に HTTP 500 エラーを返す。すべてのリクエストが失敗するわけではなく、成功するものもある。
環境
- Node.js バージョン?
- データベースタイプ?
- リクエストレート/並行性?
エラー分析
以下が必要:
- 完全なエラースタックトレース
- 障害時刻周辺のサーバーログ
- 失敗するリクエスト例
仮説 (優先順位順)
-
データベース接続プール枯渇: 断続的な性質はリソース競合を示唆
- 失敗がトラフィック増加と相関するかチェック
- 接続プール サイズと並行リクエスト数を検証
-
非同期操作の await 忘れ: コード内の競合状態
- async/await の使用方法をレビュー
- 欠落した await キーワードを確認
-
ハンドルされていない Promise 拒否: 一部のエラーパスがキャッチされていない
- .catch() または try/catch なしの Promise を検索
調査ステップ
-
詳細ログを追加する
app.post('/api/endpoint', async (req, res) => { console.log('[DEBUG] Request received:', req.body); try { const result = await someOperation(); console.log('[DEBUG] Operation succeeded'); res.json(result); } catch (error) { console.error('[ERROR] Operation failed:', error.stack); res.status(500).json({ error: error.message }); } }); -
接続プールを監視する
db.on('acquire', () => { console.log(`[POOL] Connection acquired (${db.pool.size}/${db.pool.max})`); }); -
ハンドルされていない拒否をチェック
process.on('unhandledRejection', (reason, promise) => { console.error('[FATAL] Unhandled Promise Rejection:', reason); });
次のステップ
ログ変更をデプロイし、以下のパターンを監視:
- 時刻
- 特定のユーザーデータ
- サーバーリソース使用量 (CPU、メモリ、接続)
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- shubhamsaboo
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/shubhamsaboo/awesome-llm-apps / ライセンス: Apache-2.0
関連スキル
superfluid
Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper
civ-finish-quotes
実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。
nookplot
Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。
web3-polymarket
Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。
ethskills
Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。
xxyy-trade
このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。