[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6X7PDC3W7KT3D8P8JRSNX5E":3,"skill-same:01M6X7PDC3W7KT3D8P8JRSNX5E":75},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":58,"ownerHtmlUrl":59,"ownerBlogUrl":58,"ownerDescription":60,"updatedAt":61,"install":62,"resources":74},"01M6X7PDC3W7KT3D8P8JRSNX5E","root-cause-frameworks",null,"Use when tracing the root cause of a resolved incident or recurring bug — 5-whys chain, fishbone categorisation, contributing-factors split — even if the user says 'why does this keep breaking?'.","event4u-app\u002Fagent-config","event4u-app","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F199339632?v=4","01M6X5TWBNCQCE1VDKT4E9KF7N","event4u.app","01M6X5TWF4HRM266RG2Q5VVH1X",19,"MIT","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Froot-cause-frameworks\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"root cause frameworks","root cause","root","frameworks","chain","when","high","true","split","keep","professional","contributing","false","incident","bug","use","recurring","why","analysis","tracing","2026-11-10 10:12:30",false,"---\nname: root-cause-frameworks\ndescription: \"Use when tracing the root cause of a resolved incident or recurring bug — 5-whys chain, fishbone categorisation, contributing-factors split — even if the user says 'why does this keep breaking?'.\"\ndomain: quality\nmodel_tier: high\nworkspaces:\n  - engineering\npacks:\n  - analysis-workbench\ntrust:\n  level: professional\n  confidence: medium\ninstall:\n  default: false\n  removable: true\n---\n\n# root-cause-frameworks\n\n> Structured root-cause analysis for resolved incidents and recurring bugs.\n> Sibling of [`systematic-debugging`](..\u002Fsystematic-debugging\u002FSKILL.md) (live\n> reproduction loop) and [`bug-analyzer`](..\u002Fbug-analyzer\u002FSKILL.md) (static\n> call-site analysis) — this skill takes the post-resolution \"why did this\n> happen and how do we stop it recurring?\" view.\n\n## When to use\n\n- A resolved incident needs a structured cause investigation before\n  writing the post-mortem.\n- A bug recurs and the team needs to understand the underlying system\n  condition, not just the symptom.\n- Invoked directly or by [`blameless-post-mortem`](..\u002Fblameless-post-mortem\u002FSKILL.md)\n  to populate the cause section.\n\nDo NOT use when:\n\n- Actively debugging a failing test or unresolved crash — use\n  [`systematic-debugging`](..\u002Fsystematic-debugging\u002FSKILL.md) instead.\n- The goal is to enumerate call-site impact of a change — use\n  [`blast-radius-analyzer`](..\u002Fblast-radius-analyzer\u002FSKILL.md) instead.\n\n## Procedure\n\nWork through the three methods in order; return the best-supported result.\n\n### 1. 5-Whys chain\n\nAsk \"Why did X happen?\" iteratively, attaching **evidence** to each\nlink. Continue until the link is unfalsifiable, evidence runs out, or\nyou reach a systemic condition outside the team's control.\n\nRules:\n\n- Each link must cite at least one piece of evidence (log line, metric,\n  test failure, code path, human observation). Label unverified links\n  explicitly as `[speculative]`.\n- If a link branches into two independent causes, follow both — a\n  branching chain is common and valid.\n- Stop a branch when: (a) the next Why has no available evidence, or\n  (b) the answer is outside the system boundary (e.g. \"the cloud\n  provider had an outage\").\n\n### 2. Fishbone \u002F Ishikawa (if chain stalls or branches widely)\n\nWhen the 5-whys chain stalls before reaching a systemic cause, or\nbranches into more than three independent paths, map contributing\nfactors across six categories:\n\n| Category | Sample questions |\n|---|---|\n| People | Knowledge gap, on-call fatigue, ambiguous ownership? |\n| Process | Missing review step, deploy gate skipped, alert threshold wrong? |\n| Technology | Library version, configuration drift, race condition, hardware limit? |\n| Data | Unexpected input shape, stale cache, missing validation, schema mismatch? |\n| Environment | Infra difference between environments, dependency version skew? |\n| Communication | Unclear spec, siloed knowledge, delayed escalation? |\n\nList each identified factor as a bullet under its category. A factor\nmay appear in more than one category — that is evidence of a systemic\ncoupling worth naming.\n\n### 3. Contributing-factors split\n\nClassify every cause surfaced in steps 1–2 into exactly one bucket:\n\n| Bucket | Definition |\n|---|---|\n| `root` | The condition that, if absent, the incident would not have occurred. |\n| `contributing` | A condition that increased likelihood or severity, but not sufficient alone. |\n| `amplifying` | A condition that made recovery slower or harder once the incident started. |\n| `coincidence` | Present at the time but causally unrelated. |\n\nA well-formed analysis typically has **one** root cause and two to\nfour contributing causes. Multiple `root` entries indicate the chain\nhas not been traced far enough, or that the incident was a genuine\ncompound failure — label it explicitly.\n\n## Output\n\nThe output has three ordered sections:\n\n1. **Why-chain** — numbered chain, each link with evidence (or\n   `[speculative]` flag) and any branch markers.\n2. **Cause taxonomy** — each identified cause labelled\n   `root` \u002F `contributing` \u002F `amplifying` \u002F `coincidence`, with a\n   one-sentence justification.\n3. **Evidence gaps** — explicit list of claims that could not be\n   verified and what evidence would resolve them. An empty list is\n   fine; omitting the section is not.\n\nMay invoke [`systematic-debugging`](..\u002Fsystematic-debugging\u002FSKILL.md) or\n[`bug-analyzer`](..\u002Fbug-analyzer\u002FSKILL.md) mid-procedure to gather\nevidence for a specific hypothesis, then continue the analysis.\n\n## Do NOT\n\n- Do NOT present a `[speculative]` link as confirmed cause.\n- Do NOT collapse multiple contributing factors into a single root\n  cause to produce a cleaner narrative.\n- Do NOT invent evidence — if a log line is needed but unavailable,\n  name the gap.\n- Do NOT reproduce the systematic-debugging reproduce → isolate → fix\n  loop; this skill assumes the bug is already understood or resolved.\n\n## Gotchas\n\n- Single \"root cause\" is often an oversimplification — a compound\n  failure with one root and several contributing causes is the norm,\n  not an edge case.\n- An unfalsifiable why-link (e.g. \"we don't know\") is a stop signal\n  for that branch; do not guess past it.\n- Correlation ≠ causation — require a causal mechanism for every link,\n  not just temporal proximity.\n\n## See also\n\n- [`blameless-post-mortem`](..\u002Fblameless-post-mortem\u002FSKILL.md) — invokes\n  this skill for the cause section.\n- [`systematic-debugging`](..\u002Fsystematic-debugging\u002FSKILL.md) — live\n  reproduction and fix loop.\n- [`bug-analyzer`](..\u002Fbug-analyzer\u002FSKILL.md) — static call-site analysis.\n- [`risk-officer`](..\u002Frisk-officer\u002FSKILL.md) — mitigation framing for\n  corrective actions after the cause is established.\n","# root-cause-frameworks\n\n> Structured root-cause analysis for resolved incidents and recurring bugs.\n> Sibling of [`systematic-debugging`](..\u002Fsystematic-debugging\u002FSKILL.md) (live\n> reproduction loop) and [`bug-analyzer`](..\u002Fbug-analyzer\u002FSKILL.md) (static\n> call-site analysis) — this skill takes the post-resolution \"why did this\n> happen and how do we stop it recurring?\" view.\n\n## When to use\n\n- A resolved incident needs a structured cause investigation before\n  writing the post-mortem.\n- A bug recurs and the team needs to understand the underlying system\n  condition, not just the symptom.\n- Invoked directly or by [`blameless-post-mortem`](..\u002Fblameless-post-mortem\u002FSKILL.md)\n  to populate the cause section.\n\nDo NOT use when:\n\n- Actively debugging a failing test or unresolved crash — use\n  [`systematic-debugging`](..\u002Fsystematic-debugging\u002FSKILL.md) instead.\n- The goal is to enumerate call-site impact of a change — use\n  [`blast-radius-analyzer`](..\u002Fblast-radius-analyzer\u002FSKILL.md) instead.\n\n## Procedure\n\nWork through the three methods in order; return the best-supported result.\n\n### 1. 5-Whys chain\n\nAsk \"Why did X happen?\" iteratively, attaching **evidence** to each\nlink. Continue until the link is unfalsifiable, evidence runs out, or\nyou reach a systemic condition outside the team's control.\n\nRules:\n\n- Each link must cite at least one piece of evidence (log line, metric,\n  test failure, code path, human observation). Label unverified links\n  explicitly as `[speculative]`.\n- If a link branches into two independent causes, follow both — a\n  branching chain is common and valid.\n- Stop a branch when: (a) the next Why has no available evidence, or\n  (b) the answer is outside the system boundary (e.g. \"the cloud\n  provider had an outage\").\n\n### 2. Fishbone \u002F Ishikawa (if chain stalls or branches widely)\n\nWhen the 5-whys chain stalls before reaching a systemic cause, or\nbranches into more than three independent paths, map contributing\nfactors across six categories:\n\n| Category | Sample questions |\n|---|---|\n| People | Knowledge gap, on-call fatigue, ambiguous ownership? |\n| Process | Missing review step, deploy gate skipped, alert threshold wrong? |\n| Technology | Library version, configuration drift, race condition, hardware limit? |\n| Data | Unexpected input shape, stale cache, missing validation, schema mismatch? |\n| Environment | Infra difference between environments, dependency version skew? |\n| Communication | Unclear spec, siloed knowledge, delayed escalation? |\n\nList each identified factor as a bullet under its category. A factor\nmay appear in more than one category — that is evidence of a systemic\ncoupling worth naming.\n\n### 3. Contributing-factors split\n\nClassify every cause surfaced in steps 1–2 into exactly one bucket:\n\n| Bucket | Definition |\n|---|---|\n| `root` | The condition that, if absent, the incident would not have occurred. |\n| `contributing` | A condition that increased likelihood or severity, but not sufficient alone. |\n| `amplifying` | A condition that made recovery slower or harder once the incident started. |\n| `coincidence` | Present at the time but causally unrelated. |\n\nA well-formed analysis typically has **one** root cause and two to\nfour contributing causes. Multiple `root` entries indicate the chain\nhas not been traced far enough, or that the incident was a genuine\ncompound failure — label it explicitly.\n\n## Output\n\nThe output has three ordered sections:\n\n1. **Why-chain** — numbered chain, each link with evidence (or\n   `[speculative]` flag) and any branch markers.\n2. **Cause taxonomy** — each identified cause labelled\n   `root` \u002F `contributing` \u002F `amplifying` \u002F `coincidence`, with a\n   one-sentence justification.\n3. **Evidence gaps** — explicit list of claims that could not be\n   verified and what evidence would resolve them. An empty list is\n   fine; omitting the section is not.\n\nMay invoke [`systematic-debugging`](..\u002Fsystematic-debugging\u002FSKILL.md) or\n[`bug-analyzer`](..\u002Fbug-analyzer\u002FSKILL.md) mid-procedure to gather\nevidence for a specific hypothesis, then continue the analysis.\n\n## Do NOT\n\n- Do NOT present a `[speculative]` link as confirmed cause.\n- Do NOT collapse multiple contributing factors into a single root\n  cause to produce a cleaner narrative.\n- Do NOT invent evidence — if a log line is needed but unavailable,\n  name the gap.\n- Do NOT reproduce the systematic-debugging reproduce → isolate → fix\n  loop; this skill assumes the bug is already understood or resolved.\n\n## Gotchas\n\n- Single \"root cause\" is often an oversimplification — a compound\n  failure with one root and several contributing causes is the norm,\n  not an edge case.\n- An unfalsifiable why-link (e.g. \"we don't know\") is a stop signal\n  for that branch; do not guess past it.\n- Correlation ≠ causation — require a causal mechanism for every link,\n  not just temporal proximity.\n\n## See also\n\n- [`blameless-post-mortem`](..\u002Fblameless-post-mortem\u002FSKILL.md) — invokes\n  this skill for the cause section.\n- [`systematic-debugging`](..\u002Fsystematic-debugging\u002FSKILL.md) — live\n  reproduction and fix loop.\n- [`bug-analyzer`](..\u002Fbug-analyzer\u002FSKILL.md) — static call-site analysis.\n- [`risk-officer`](..\u002Frisk-officer\u002FSKILL.md) — mitigation framing for\n  corrective actions after the cause is established.\n",{"name":5,"packs":44,"trust":46,"domain":48,"install":49,"model_tier":25,"workspaces":51,"description":7},[45],"analysis-workbench",{"level":29,"confidence":47},"medium","quality",{"default":40,"removable":50},true,[52],"engineering","main","12bd765ce1d800501d45dfb8232102793af01290","src\u002Fskills\u002Froot-cause-frameworks",1,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config","https:\u002F\u002Fevent4u.app","https:\u002F\u002Fgithub.com\u002Fevent4u-app","Your events in your hand","2026-11-14 02:29:41",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":50},[64,67,70],{"tool":65,"command":66},"npx","npx skills add event4u-app\u002Fagent-config --skill root-cause-frameworks",{"tool":68,"command":69},"bunx","bunx skills add event4u-app\u002Fagent-config --skill root-cause-frameworks",{"tool":71,"command":72},"pnpm","pnpm dlx skills add event4u-app\u002Fagent-config --skill root-cause-frameworks","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Froot-cause-frameworks\u002FSKILL.md",[],[76,94,107,118,130,140],{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":87,"publishedAt":39},"01M6X84PK96XBPENXH66JCTSD1","unknown-key-fixture","Declares a key the schema does not know.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Fscripts\u002Ffixtures\u002Fbody-portable\u002Funknown-key\u002FSKILL.md",[82],{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[88,89,90,91,92,93],"unknown key fixture","Unknown key","fixture","unknown","schema","package",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":101,"publishedAt":39},"01M6X84HW7NAHZ7GZMQ9RXK1XJ","portable-fixture","Declares only semantics the MCP-lite carrier transports whole.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Fscripts\u002Ffixtures\u002Fbody-portable\u002Fportable\u002FSKILL.md",[100],{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},[90,102,103,104,105,93,106],"portable","portable fixture","engineer","only","MCP",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":114,"publishedAt":39},"01M6X84F29FE0RGGZ1ZTFGZTX2","non-portable-fixture","Declares a runtime semantic the carrier drops.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Fscripts\u002Ffixtures\u002Fbody-portable\u002Fnon-portable\u002FSKILL.md",[113],{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},[103,115,102,90,116,25,117,93],"non portable fixture","semantic","runtime",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":125,"publishedAt":39},"01M6X848F706PT9MDCX75JKJ6B","candidate-zero-width","A candidate whose prose carries an invisible joiner.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-scout-candidates\u002Fzero-width-injection\u002FSKILL.md",[124],{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},[126,127,128,129],"candidate zero width","candidate","ZeRO","prose",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":137,"publishedAt":39},"01M6X841SSC2T31VDF41SA6DG1","candidate-disclosure-suppression","A candidate whose prose tells the agent to withhold from the user.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-scout-candidates\u002Fdisclosure-suppression\u002FSKILL.md",[136],{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},[138,127,129,139],"candidate disclosure suppression","user",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":147,"publishedAt":39},"01M6X83TFS5AGPBPVTQNWP0BB3","candidate-dangerous-frontmatter","A candidate claiming an unscoped tool grant and a permission bypass.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-scout-candidates\u002Fdangerous-frontmatter\u002FSKILL.md",[146],{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},[148,127,149,150,151,152],"candidate dangerous frontmatter","frontmatter","shell","permission","tool"]