rca-report
発生したシステム障害やデータ破損などの事象について、原因究明のための情報収集を支援し、詳細な根本原因分析レポートを再現可能な形で作成することで、再発防止に繋げるSkill。
📜 元の英語説明(参考)
Use when investigating and documenting a production incident, outage, data corruption event, or post-mortem — guides evidence collection during the investigation AND produces a rich, reproducible Root Cause Analysis report. Trigger on phrases like "write an RCA", "post-mortem for X", "document this incident", "what went wrong with...", "the pipeline broke yesterday, help me investigate", or any time the user is debugging a recently-resolved incident and wants a writeup. Also use proactively when the user finishes resolving an incident in-session and the resolution context is fresh — offer to capture it as an RCA before details fade.
🇯🇵 日本人クリエイター向け解説
発生したシステム障害やデータ破損などの事象について、原因究明のための情報収集を支援し、詳細な根本原因分析レポートを再現可能な形で作成することで、再発防止に繋げるSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o rca-report.zip https://jpskill.com/download/23721.zip && unzip -o rca-report.zip && rm rca-report.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/23721.zip -OutFile "$d\rca-report.zip"; Expand-Archive "$d\rca-report.zip" -DestinationPath $d -Force; ri "$d\rca-report.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
rca-report.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
rca-reportフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 3
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
[スキル名] rca-report
RCAレポート
単なる物語ではなく、再現性があり、階層化され、運用上役立つ事後検証を作成します。優れたRCAは、将来のエンジニア(または将来のあなた)がインシデントを理解し、修正が維持されたことを確認し、再発を避けることを可能にします。このスキルは、調査の流れ(インシデントが新鮮なうちに何を収集するか)とレポート自体をカバーしています。
このスキルが適用される場合
- 本番環境でのインシデント、停止、またはニアミスが発生し、文書化が必要な場合
- パイプライン、サービス、またはシステムがサイレントに失敗し、ユーザーがそれを解決したばかりの場合
- ユーザーが事後検証、RCA、またはインシデントの報告書を求めている場合
- 調査中:ユーザーが何かをデバッグしており、証拠が入り次第、その構造化の助けを求めている場合
インシデントがまだ活発に発生しており、ユーザーがその修正の助けを求めているだけの場合は、このスキルをスキップしてください。まず修正し、後で文書化します。
出力場所
レポートは、現在の作業ディレクトリに<topic>-rca-<YYYY-MM-DD>.mdとして保存します。ここで:
<topic>は、障害が発生したシステムの短いケバブケース識別子です(例:debezium、auth-service、kafka-consumer-lag)<YYYY-MM-DD>は、インシデント発生日(発生した日)であり、必ずしも今日ではありません
例:debezium-rca-2026-05-05.md、auth-500s-rca-2026-04-12.md
2段階のワークフロー
フェーズ1 — 調査(証拠収集)
何も書く前に、references/investigation-checklist.mdをユーザーと一緒に確認します。目標は、具体的で再現可能な事実 — タイムスタンプ、バージョン番号、正確なLSN/ID/エラー文字列、コマンド出力 — を、システムの状態がまだ観察可能なうちに確定することです。記憶はすぐに薄れ、ログはローテーションされ、レプリケーションスロットは進みます。今すぐキャプチャし、後で記述します。
ユーザーが「もう修正しました」と言っても、このフェーズをスキップしないでください。修正後の状態の証拠(健全なconfirmed_flush_lsnの進行、Kafkaを流れるテスト行、最新のxlogposからストリーミングしていることを示す新しいコンテナログ)こそが、解決策が実際に維持されたことを証明するものです。その証明こそが、真のRCAを単なる物語から区別するものです。
ユーザーがライブインシデントからのメモ/トランスクリプト/スクロールバックをすでに持っている場合は、質問する前にそれらを最初に掘り下げてください。会話にすでに含まれているものを再入力させないでください。
フェーズ2 — レポートの作成
templates/rca-report.mdを構造的な骨格として使用します。フェーズ1の証拠を使用して、セクションごとに記入します。その後、完了を宣言する前にreferences/quality-rubric.mdに対して検証します。
RCAを実際に良いものにするもの
このスキルがモデルとしているDebezium RCAが機能したのは、以下の要素があったからです。
-
すべての観測可能なイベントに対するUTCタイムスタンプ付きのタイムライン — 「コネクタは約18時間詰まっていた」は物語です。「2026-05-04 09:54:16 Postgresがレプリケーション接続を終了した」は証拠です。常に正確なバージョンを優先してください。
-
システムを完全に識別するインフラストラクチャテーブル — バージョン、ホスト名、ゾーン、コネクタ名、トピック名、スロット名。6ヶ月後にこれを読む人が、曖昧さなく正確なリソースを見つけられるようにします。
-
ユーザー、システム、データ、SLAの各側面における定量化された影響 — 漠然とした影響(「一部の顧客が影響を受けた」)は、深刻度を評価する上で価値がありません。ユーザーに目に見える影響、内部システム劣化、データ整合性ステータス、SLA/財務コストを具体的な数値で記述します。数値が不明な場合は、その側面をスキップするのではなく、明示的にそう述べてください。
-
階層化された根本原因分析 — 何が壊れたかだけでなく:
- 主要な原因(トリガーイベント)
- なぜ健全に見えたのか(障害を隠蔽したもの — これが通常最も価値のある部分です)
- 二次的なメカニズム(ゲート、リトライ、貢献した内部状態)
-
実際の値を含む状態スナップショット — 期待される状態と観測された状態の対比が診断を明確にします。
confirmed_flush_lsn = 1/AD5B16C0 (pre-restore stale value)の隣にpg_current_wal_lsn = 1/ADC4B740 (current)があることで、2行で全体像が語られます。あなたが属するドメイン(キューの深さ、エラー率、バージョン不一致、スキーマドリフト)についても同様の対比をキャプチャしてください。 -
回避策/一時的な緩和策を解決策とは別にキャプチャ — 根本原因が完全に理解される前に、出血を止めた迅速で低リスクなアクション。回避策と解決策は異なる質問に答えます。回避策 = 次回これが発火したときにオンコールが午前3時に何をすべきか。解決策 = 恒久的にケースを閉じるもの。回避策の効果、そのリスク、および適用するためのトリガー条件を文書化します。
-
順序の根拠を含む解決策 — 単に「これらのコマンドを実行した」だけでなく、なぜこの順序なのか。ステップ4がステップ3の後に来る必要があるのは、インメモリの状態のためである場合、そう述べてください。次にこれに遭遇する人は、まず明白な順序を試して失敗するでしょう。明白な順序が機能しない理由を文書化します。
-
システム的なギャップに着地する5つのなぜの連鎖 — 連鎖は、技術的なトリガーではなく、欠落しているガードレール(アラート/レビュー/テスト/知識)で停止する場合にのみ役立ちます。各「なぜ」は異なるメカニズムに絞り込むべきです。隣接するステップ間で同義語がある場合、それは水増しを意味します。最終的な答えは、その下の推奨事項に直接マッピングされるべきです。
-
「機能しなかったこと」セクション — 行き詰まりをキャプチャします。将来のあなたは同じことを試したくなるでしょう。Debezium RCAの「スロットを削除し、オフセットリセットなしでコネクタを再作成する」という項目は貴重です。これは最も直感的な修正であり、サイレントに失敗します。
-
コピー&ペースト可能な診断コマンドブロック — このドメインでの次のインシデントでは、これらの80%が再利用されるでしょう。擬似コードではなく、実行可能なものにしてください。
-
検証証拠 — 修正が維持されたことの証明。エンドツーエンドで流れるテストデータ。スロット遅延の安定化。エラー率のベースラインへの回帰。修正後の状態からの実際の値とともに。
-
緊急度別に分類された推奨事項 — 即時(アラート/監視)、プロセス(ランブック、コミュニケーション)、設定(設定変更)。分類することで、ユーザーは単に「やるべきこと」だけでなく、タイムラインについて考えるようになります。
避けるべきアンチパターン
- 漠然としたタイムライン:「翌朝、私たちは気づいた...」 — いつ?何が「
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
RCA Report
Produce post-mortems that are reproducible, layered, and operationally useful — not just narrative. A good RCA lets a future engineer (or future you) understand the incident, verify the fix held, and avoid repeating it. This skill covers both the investigation flow (what to gather while the incident is fresh) and the report itself.
When this skill applies
- A production incident, outage, or near-miss has occurred and needs documenting
- A pipeline, service, or system silently failed and the user just resolved it
- The user wants a post-mortem, RCA, or incident write-up
- Mid-investigation: the user is debugging something and wants help structuring evidence as it comes in
If the incident is still actively burning and the user just wants help fixing it, skip this skill — fix first, document after.
Output location
Save the report to <topic>-rca-<YYYY-MM-DD>.md in the current working directory, where:
<topic>is a short kebab-case identifier of the failing system (e.g.debezium,auth-service,kafka-consumer-lag)<YYYY-MM-DD>is the incident date (when it occurred), not necessarily today
Example: debezium-rca-2026-05-05.md, auth-500s-rca-2026-04-12.md
The two-phase workflow
Phase 1 — Investigation (gather evidence)
Before writing anything, walk through references/investigation-checklist.md with the user. The goal is to lock in concrete, reproducible facts — timestamps, version numbers, exact LSNs/IDs/error strings, command outputs — while the system state is still observable. Memory degrades fast; logs rotate; replication slots advance. Capture now, write later.
Do not skip this phase even if the user says "I already fixed it" — fixed-state evidence (the healthy confirmed_flush_lsn advancing, the test row flowing through Kafka, the new container log showing "streaming from latest xlogpos") is what proves the resolution actually held. That proof is what separates a real RCA from a story.
If the user already has notes/transcripts/scrollback from the live incident, mine those first before asking questions. Don't make them re-type what's already in the conversation.
Phase 2 — Write the report
Use templates/rca-report.md as the structural skeleton. Fill it section by section using the evidence from Phase 1. Then validate against references/quality-rubric.md before declaring done.
What makes an RCA actually good
The Debezium RCA that this skill is modeled on worked because it had:
-
A timeline with UTC timestamps for every observable event — "the connector was wedged for ~18h" is narrative; "2026-05-04 09:54:16 Postgres terminated replication connection" is evidence. Always prefer the precise version.
-
An infrastructure table that fully identifies the system — versions, hostnames, zones, connector names, topic names, slot names. Someone reading this six months later should be able to find the exact resources without ambiguity.
-
Quantified impact across user, system, data, and SLA dimensions — vague impact ("some customers were affected") is worthless for severity calibration. State user-visible effect, internal system degradation, data integrity status, and SLA / financial cost as concrete numbers. If a number is unknown, say so explicitly rather than skipping the dimension.
-
Layered root cause analysis — not just what broke, but:
- The primary cause (the trigger event)
- Why it appeared healthy (what masked the failure — this is usually the most valuable part)
- Secondary mechanisms (gates, retries, internal state that contributed)
-
State snapshots with actual values — the contrast between expected state and observed state is what makes the diagnosis click.
confirmed_flush_lsn = 1/AD5B16C0 (pre-restore stale value)next topg_current_wal_lsn = 1/ADC4B740 (current)tells the whole story in two lines. Capture similar contrasts for whatever domain you're in (queue depth, error rate, version mismatch, schema drift). -
Workaround / temporary mitigation captured separately from the resolution — the fast, low-risk action that stopped the bleeding before the root cause was fully understood. Workarounds and resolutions answer different questions: workaround = what does on-call do at 3am next time this fires; resolution = what permanently closes the case. Document the workaround's effect, its risks, and the trigger condition for applying it.
-
Resolution with ordering rationale — not just "I ran these commands", but why this order. If step 4 must come after step 3 because of in-memory state, say so. The next person hitting this will try the obvious order first and fail; document why obvious-order doesn't work.
-
A Five Whys chain that lands on a systemic gap — the chain is only useful if it stops at a missing guardrail (alert / review / test / knowledge), not at the technical trigger. Each "why" should narrow on a different mechanism — synonyms across adjacent steps mean you're padding. The final answer should map directly to a Recommendation below it.
-
A "What did NOT work" section — capture the dead ends. Future-you will be tempted to try the same thing. The Debezium RCA's "drop slot + recreate connector without offset reset" entry is gold — it's the most intuitive fix and it silently fails.
-
Diagnostic commands as a copy-paste block — the next incident in this domain will reuse 80% of these. Make them runnable, not pseudocode.
-
Verification evidence — proof the fix held. Test data flowing end-to-end. Slot lag stabilizing. Error rate returning to baseline. With actual values from the post-fix state.
-
Recommendations binned by urgency — Immediate (alerting/monitoring), Process (runbooks, comms), Configuration (settings changes). Bins force the user to think about timeline, not just "stuff to do".
Anti-patterns to avoid
- Vague timelines: "The next morning we noticed..." — when? What did "noticed" actually mean? Who saw what?
- Single-layer root cause: stopping at the trigger event without explaining the masking mechanism. If the system appeared healthy, that masking is the root cause for the duration of the outage.
- Resolution without rationale: a list of commands with no explanation of why this order or why this approach. That's a runbook, not an RCA.
- Hand-wavy recommendations: "improve monitoring" is not actionable. "Alert when
pg_wal_lsn_diff(pg_current_wal_lsn(), confirmed_flush_lsn) > 100MBfor 5+ minutes" is. - Skipping the failed approaches: every dead end you don't document is a trap for the next person.
- No verification: closing the report without proof the fix actually worked. This is how RCAs become folklore.
Workflow
- Confirm the incident is resolved or contained. If still actively firing, defer this skill.
- Mine existing context first. Conversation transcripts, scrollback, prior notes — extract everything you can before asking the user questions.
- Walk the investigation checklist (
references/investigation-checklist.md). Fill gaps by asking targeted questions or running diagnostic commands. Do this even for "small" incidents — the structure forces depth. - Capture state snapshots. If the system is reachable, grab the current healthy state values now (slot lag, queue depth, error rate, etc.) — these go in the verification section. Lose them and you can't prove the fix.
- Draft the report using
templates/rca-report.md. Fill every section; if a section truly doesn't apply, write "N/A — [reason]" rather than deleting it. - Validate against the quality rubric (
references/quality-rubric.md). Fix any rubric failures before presenting. - Save to
<topic>-rca-<YYYY-MM-DD>.mdin CWD. - Show the user the file path and offer to walk through any section. Don't dump the full report into chat unless asked — they'll read the file.
Tone
Match the operator's voice: technical, concise, evidence-led. Lead each section with the answer, then the reasoning. No corporate hedging ("there may have been some impact") — state what happened. No blame language — focus on system gaps, not individuals. The Debezium RCA is the reference; mirror its directness.
同梱ファイル
※ ZIPに含まれるファイル一覧。`SKILL.md` 本体に加え、参考資料・サンプル・スクリプトが入っている場合があります。
- 📄 SKILL.md (9,029 bytes)
- 📎 references/investigation-checklist.md (10,841 bytes)
- 📎 references/quality-rubric.md (7,527 bytes)