Root Cause Delivery logo

Root Cause Delivery

Community
AnastasiyaW
root-cause-delivery

Use for a reported bug, regression, crash, failed workflow, or substantive code change that must reach a verified candidate rather than a local patch. Map the affected layer, freeze a bounded plan, require incident reproduction red-to-green or planned-change contract proof, force re-triage after two failed attempts, and close only with verified or explicitly blocked evidence. Do not use for a spelling-only documentation correction or an exploratory question with no implementation.

Overview

PublisherAnastasiyaW
Repositorycodex-claude-code-config
Skill nameroot-cause-delivery
Stars
213
Forks
32
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by AnastasiyaW on GitHub. Read the source before you install it.

Installation

Install the Root Cause Delivery AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/AnastasiyaW/codex-claude-code-config/tree/main/skills/development/root-cause-delivery
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/AnastasiyaW/codex-claude-code-config.git /tmp/codex-claude-code-config
mkdir -p .claude/skills
cp -r /tmp/codex-claude-code-config/skills/development/root-cause-delivery .claude/skills/root-cause-delivery
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Root Cause Delivery in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Root Cause Delivery on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Root Cause Delivery is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Root-Cause Delivery

The goal is not a green-looking diff. The goal is a candidate that fixes the observed contract and can advance toward release without reopening already proved work.

Use one durable case per substantive incident or code change:

text
.agent/delivery-cases/<case-id>/
  case.json
  evidence/

The installed root-cause-delivery-guard.py hook records a matching intent from an explicit bug/regression or substantive implementation request. It keeps source edits behind a valid PLAN_FROZEN case and will not allow a changed source tree to close while the case is incomplete. Harness records are never treated as source, so they stay writable before a case is frozen: delivery cases, CONTINUITY.json, .agent/user-tasks/ and transfer contracts (hooks/harness_records.py). A bare background-task <task-notification> records no intent.

Workflow

  1. Create the case before changing source:

    text
    python ~/.claude/claude-code-config/hooks/root-cause-delivery-guard.py init <case-id> \
      --kind incident --summary "short observed failure"

    Use --kind change for a feature or non-bug delivery task. The CLI binds the only active prompt intent automatically. If parallel sessions have active intents in the same repository, pass --intent-id <id> shown by the prompt receipt; it refuses to guess which session owns the case.

  2. Fill case.json with observed facts, not a story:

    • observed.expected and observed.actual for an incident;
    • layer map: entrypoint, owning module, direct dependents, state or contract, tests/probes, and release boundary;
    • one causal hypothesis, bounded fix_steps, and a focused verifier argv.

    Scope the layer, not the whole repository. The map asks which boundary owns the defect and which direct contracts can break; it is not permission for a speculative rewrite.

  3. For an incident, capture the failing reproducer before source edits:

    text
    python ~/.claude/claude-code-config/hooks/root-cause-delivery-guard.py capture <case-id> \
      --phase before -- <exact test command and arguments>

    The command must fail. The helper stores argv, exit status, bounded raw output, and a digest under the case. Do not replace it with a different convenient test after the fix.

  4. Freeze the plan, then implement:

    text
    python ~/.claude/claude-code-config/hooks/root-cause-delivery-guard.py freeze <case-id>
    python ~/.claude/claude-code-config/hooks/root-cause-delivery-guard.py begin <case-id>

    Make only the planned causal change. A cosmetic cleanup is allowed only when it is necessary to make the owning contract correct and is named in the plan.

  5. If an attempt does not fix the reproducer, record it:

    text
    python ~/.claude/claude-code-config/hooks/root-cause-delivery-guard.py record-failed-attempt \
      <case-id> --hypothesis "what this attempt tested" --changed-path src/module.py

    After two failed attempts, stop editing the same area. Expand the owner map, record why the previous hypotheses failed, use a fresh evaluator when risk is high, then record re-triage:

    text
    python ~/.claude/claude-code-config/hooks/root-cause-delivery-guard.py retriage <case-id> \
      --expanded-owner-path src/owner.py \
      --causal-hypothesis "a new, evidence-backed explanation"
  6. For an incident, run the exact same reproducer after the fix. For a planned change, run the frozen focused_argv after implementation. In either case, use the exact argv written in plan.focused_argv:

    text
    python ~/.claude/claude-code-config/hooks/root-cause-delivery-guard.py capture <case-id> \
      --phase after -- <the same test command and arguments>
    python ~/.claude/claude-code-config/hooks/root-cause-delivery-guard.py verify <case-id>

    Before verify, a fresh reviewer who did not build the fix writes a receipt inside the repository and records it:

    markdown
    Case: <case-id>
    Verdict: PASS
    Baseline cause: <exactly plan.causal_hypothesis>
    Owner boundary: <one exact path from layer.owner_paths>
    Reproducer: <the exact JSON argv observed before and after, or planned for a change>
    After result: the same argv exits 0 and the changed boundary is exercised
    text
    python ~/.claude/claude-code-config/hooks/root-cause-delivery-guard.py record-independent-review \
      <case-id> --reviewer <fresh-session-id> --evidence .agent/delivery-cases/<case-id>/independent-review.md

    The helper hashes the receipt and rejects a self-named review, a baseline cause that differs from the frozen hypothesis, an unmapped owner boundary, or a reproducer that differs from the captured red argv (or frozen change argv). The fresh reviewer starts from the case contract and repository state, not the builder's explanation or evidence. For an incident it must check that the red case failed for the claimed reason, rather than merely observing a nonzero exit.

  7. Select the rest of the evidence by boundary and risk using testing-strategy. Run focused checks while iterating; run the complete candidate matrix once at the commit/merge/release boundary. Use proof-verify for a fresh verifier, and its stage ledger only when the accepted result feeds a real release, migration, signer, VM, or external service stage.

What Counts as Done

  • VERIFIED: the incident red-to-green proof or planned-change focused proof is captured, the layer map and bounded plan are present, a fresh reviewer has checked the relevant boundary and argv, and the selected risk-based checks passed.
  • SEALED: VERIFIED plus immutable candidate commit/tree and fresh verdict where a downstream stage must consume the result.
  • BLOCKED: a real external prerequisite and its captured external evidence are recorded. It is not a synonym for "hard", "pre-existing", or "needs cleanup".

Guardrails

  • Do not infer a root cause from a plausible reading of one file. Separate observations, hypotheses, rejected hypotheses, and measured evidence.
  • A red guard alone is insufficient: it can be red because setup, a wrong assertion, or an unrelated exception failed. A green suite written by the builder is useful evidence, but it is not independent certification of the defect class. Require the paired independent receipt above.
  • Do not run the full suite after every edit. Focused reproduction first, then risk-based review, then one candidate matrix and any actually relevant specialized environment.
  • Do not rewrite a file repeatedly when the same repro remains red. The second failed attempt is a signal to inspect the next owner boundary, not a reason to expand the diff.
  • A passing unit test does not prove a release. A release blocker does not erase already sealed source or artifact proof.
  • The local hook records session identity but cannot cryptographically authenticate a distinct reviewer. Treat an independent receipt as a workflow contract; use a real fresh agent, PR reviewer, or evaluator service where reviewer identity matters.
  • A BLOCKED status is not success. It needs a receipt with External prerequisite: exactly matching the recorded blocker plus a measured Observed: condition. The hook can bind that receipt to the status but cannot determine whether the external condition is truthful without a real evaluator or service probe.

Troubleshooting

SymptomCauseAction
freeze refuses the caseLayer map, causal hypothesis, focused argv, or incident baseline is missingAdd observed evidence and a bounded plan; do not edit source first
Baseline passesThe incident is not reproduced or the test is wrongRe-triage the report; do not manufacture a red-to-green claim
After proof uses different argvThe test no longer proves the original failure or planned contractRestore the frozen argv or record a genuine external blocker
Two attempts failedLocal file edits are not reaching the causal ownerAdd a new owner boundary and changed causal hypothesis, then re-freeze the plan; do not resume the same rewrite loop
Release stage is unavailableUpstream source may already be provedKeep that proof, record the external stage as BLOCKED, and use the proof-verify stage ledger for promotion

Sources

Frequently asked questions

What does the Root Cause Delivery AI skill do?

Use for a reported bug, regression, crash, failed workflow, or substantive code change that must reach a verified candidate rather than a local patch. Map the affected layer, freeze a bounded plan, require incident reproduction red-to-green or planned-change contract proof, force re-triage after two failed attempts, and close only with verified or explicitly blocked evidence. Do not use for a spelling-only documentation correction or an exploratory question with no implementation.

Why use Root Cause Delivery on TypingMind?

Because you install it once and use it with any model. Root Cause Delivery is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Root Cause Delivery in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/AnastasiyaW/codex-claude-code-config/tree/main/skills/development/root-cause-delivery. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Root Cause Delivery?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Root Cause Delivery?

As many as you like. As long as a model supports skills, you can use Root Cause Delivery with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Root Cause Delivery AI skill free?

Yes. It is published on GitHub by AnastasiyaW under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇