一键导入
rca
Root Cause Analyzer — prove the real cause of a failure by finding its
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Root Cause Analyzer — prove the real cause of a failure by finding its
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Cut a Flowpad release — bump the version (patch by default; minor/major on request), build the wheel (UI baked in), publish to PyPI, tag + push to GitHub, and validate the install. Then, if the electron/ directory changed since the previous release, trigger the desktop build. Use when asked to deploy/release Flowpad, publish to PyPI, or cut a new version (including a new minor like 0.3.0).
toplog — topic-tracing assistant for debugging. `run` activates the right trace topics for a given issue (in code or tests) so RCA has better traceability; `scan` reconciles the topics referenced in code against the topic catalog; `learn` consolidates post-RCA findings (enrich a topic, add a new one with its trace points, or retire a stale one). Use when debugging a hard failure and you want richer logs before or alongside RCA, when adding or auditing toplog topics, or after proving a root cause to capture the traceability that helped. Also triggers on "turn on tracing for X", "what topics cover Y", "add a toplog topic", or "audit toplog topics".
Skill quality lens — review a skill against skill-writing best practices,
Find a product online within a location and price range, verify availability and shipping, and report the findings.
Analyze an agentic execution from its session transcript and produce
Where to find the on-disk logs for Flowpad — the local backend instances (Alice / Bob), the Electron desktop app (shell / monitor / server), and the local hub. Use when you need to read backend or desktop logs to debug the running processes instead of asking the user to copy-paste console output.
| id | ccaf9012-abc8-4413-9c81-38d5d31018d3 |
| name | rca |
| description | Root Cause Analyzer — prove the real cause of a failure by finding its |
| tags | |
| eval | false |
| version | 138 |
Find why something fails, prove it, and stop. No guessing, no estimating, no "this should fix it." A cause you cannot toggle is a hypothesis, not a root cause.
no arg / default → RCA mode
test → Test mode — assumes a root cause is already proven this session. If none is,
run RCA mode first, or ask the user to point at the known cause.
No fluff. Every claim is backed by observed evidence — error text, stack trace, a log line, or a reproduced run. If you haven't seen it, you don't know it.
Reproduce first. Get the failure to happen on demand before theorizing.
Trace backward. From where the symptom surfaces, follow the wrong state / invalid data upstream to the original trigger. Do not stop at the layer where the error is thrown.
Fastest credible path to cause — but the cause is not accepted until proven.
Proof = the on/off switch. Name the single lever — a flag, variable, code line, config, input, or memory — such that:
changing it makes the bug disappear, and
reverting it makes the bug come back. Demonstrate both directions. One direction is a coincidence; both is a root cause.
Report inline and stop. No file or memory artifact. The report is exactly two parts, in this order — nothing else:
│ ▼ connectors.
Pin the proven on/off switch into the chart (the code line / flag, and the before/after
observation that toggled it — e.g. [proven: force=true → row created → search hits]).Template:
SYMPTOM
<what the user observes>
│
▼
<next upstream link>
│
▼
<the proven switch> [proven: <toggle> → bug gone / reverting → bug back]
│
▼
EXPECTED FIX
<the change that removes the cause>
Core (one-liner): <logical cause → effect>.
Never mask the symptom. A slow / locked / flaky / 5xx failure is the bug to root-cause. Do not raise or add any timeout, retry, sleep, backoff, or poll budget to ride past it — that hides the bug instead of finding its switch.
Run autonomously. Do NOT ask the user anything — no interface approval, no "is this OK?", no clarifying questions, no progress check-ins. Just write the test, run it, and come back only when you have hit one of the three terminal outcomes below. The user invoked test mode because a root cause is already proven this session — act on it.
IMPOSSIBLE outcome (see below) — return immediately; do not start an RCA and do not ask the
user to point at one.funit for the mechanics, but its interaction gates do NOT apply here — this
mode overrides funit's "TDD-approve the interface" and "flag >1s" steps. Pick the interface
yourself and write it. Still honor funit's craft rules (fast pytest / vitest, real entities,
minimal elegant interface).monkeypatch/mock/stub/fake of the component under test, no hand-forcing the broken state
(e.g. deleting the row the bug is supposed to strand), no injected exception standing in for a
real fault. If the failure only happens on an abnormal event (crash, restart, commit-failure,
disconnect, OOM), reproduce that event for real — SIGKILL a real subprocess mid-operation,
make the real resource fail (read-only fs, closed connection), drive the real I/O/process
lifecycle. A mock proves your model of the bug, not the bug. If a faithful reproduction is
genuinely impossible without mocking, that is the IMPOSSIBLE outcome — STOP and ask the user
for approval to mock before writing it; do not decide unilaterally.Return with exactly one terminal outcome — and nothing in between:
FOUND — a failing test exists that reproduces the bug for the right reason. Report its
path, the test name, and the failing assertion/error output. (Do not implement the fix unless
separately asked.)
NOT FOUND — you wrote a faithful test at the narrowest reproducing layer and it
passes, i.e. the code does not actually exhibit the bug there. Report the test, that it
passes, and what that implies (the proven switch may not manifest at this layer, or the bug is
elsewhere).
IMPOSSIBLE — no proven root cause exists this session, or the bug genuinely cannot be
captured without a slower/heavier (e.g. e2e) harness than is warranted. Report why, and what
layer it would take.
A green test is necessary, not sufficient. A test reproduces a layer; it can pass while the original failure still happens, because the switch you toggled was a proxy or only one of several causes. So before claiming a root cause is fixed, you must drive the fix through the original scenario — not just the test — and toggle it both directions there:
Use a backend-recorded ground-truth signal where you can (a git commit landing, a row written, a log line) rather than a UI/idle heuristic — screenshot "still loading" / network-idle waits lie when the app holds persistent connections. Verify the surface actually reached the failing code (e.g. the editor really mounted) before trusting an absence-of-symptom as success.
If step 2 fails — test green but the original scenario still reproduces — you have NOT found the root cause. Declare RCA rejection and: