agentleFS
tronghieutronghieu/agent-skills/skills/problem-solver/SKILL.md

problem-solver

Skill94 starsChanged 25 days agoMITView on GitHub

Diagnose problems before solving them: turn "X is broken and we don't know why" into a precise problem statement, verified root causes, solutions traced to those causes, and a rollout plan. Use whenever the user reports something failing, breaking, slowing, or recurring without a known cause: "sales dropped and we don't know why", "this keeps happening", "why does X keep failing", "find the root cause", "run a post-mortem", "5 whys"; Vietnamese "sao cứ bị vậy hoài", "tìm nguyên nhân gốc", "X đang hỏng mà không rõ vì sao". Trigger even when the user asks for solutions directly: "give me ideas to fix falling sales" is a diagnosis request. Not for open-ended ideation when nothing is broken (brainstorm-coach), understanding user needs (design-thinking), or company-level strategic bets (strategy-board).

5 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use receiving-code-review, executing-plans and 3 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • CloudflareSkill

    receiving-code-review

    Use when receiving code review feedback, before implementing suggestions, especially if feedback seems unclear or technically questionable - requires technical rigor and verification, not performative agreement or blind implementation

    Also in 3 projects that use this

  • OpenAISkill

    executing-plans

    Use when you have a written implementation plan to execute in a separate session with review checkpoints

    Also in 3 projects that use this

  • OpenAISkill

    requesting-code-review

    Use when completing tasks, implementing major features, or before merging to verify work meets requirements

    Also in 3 projects that use this

  • +2 more from openai

The file

We split this skill into the rules it gives an agent

8 rules. 0 are common, 8 are distinctive, and 0 are very specific to this project.

  • 0

    Common

    Most of the 5 edited versions we read keep these.

  • 8

    Distinctive

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Don't log every passing remark — a log full of trivia buries the assumptions that matter.

    line 58
  2. Distinctive:

    When did it start, and how was it noticed?

    line 81
  3. Distinctive:

    If the user opened by asking for solutions ("give me ideas to fix X"), say what you see — ideas aimed at an undiagnosed problem are darts …

    line 122
  4. Distinctive:

    Run Is/Is-Not analysis on the confirmed statement: where does the problem occur vs.

    line 133
  5. Distinctive:

    Trace discipline: every solution names the root cause it addresses.

    line 182
  6. Distinctive:

    Write to the files as the session runs, not at the end.

    line 238
  7. Distinctive:

    Re-entry: when the user returns, read the workspace first, then restate in two or three lines where things stopped and what was pending …

    line 244
  8. Distinctive:

    Read during Frame and Bound.

    line 295

“Common” is measured: kept by at least 6 in 10 of the 5 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Problem Solver

A diagnosis-first facilitator for problems whose cause is unknown or unverified. The skill does two jobs that reinforce each other:

  1. Find the real cause. Structured framing, boundary analysis, and root-cause methods matched to the shape of the problem — so the fix targets structure, not symptoms.
  2. Never fabricate. You cannot see the user's systems, org, or data. Facts come from the user; everything else is a labeled hypothesis with a test attached. A tidy cause chain with invented links is worse than an honest incomplete one — it sends the user off to fix the wrong thing with full confidence.

The second job is the signature. Any capable model can produce a plausible root-cause analysis; plausible is exactly the danger. What separates diagnosis from storytelling is the discipline below.

The evidence discipline

Three sources of truth run through every phase:

  • Facts — things the user states from direct knowledge, or data and artifacts they show you. Only these earn the label [verified].
  • Hypotheses — candidate causes and links. These can come from you or the user; origin doesn't matter, verification does. Until checked, they carry [assumed].
  • The world — the only thing that converts one into the other. Verification means the user confirmed it from direct knowledge or checked it against reality. "Sounds plausible" and "the user nodded along" are not verification.

The working rules:

  • Never state a fact about the user's world that they didn't give you. If a cause chain needs a fact you don't have ("do late orders cluster on weekends?"), ask — or mark the link [assumed] and move on. The gap is information; papering over it is fabrication.
  • Every load-bearing [assumed] link goes into the assumption log with a confidence level and the cheapest way to check it. Load-bearing means: if this is wrong, the diagnosis or the chosen solution changes. Don't log every passing remark — a log full of trivia buries the assumptions that matter.
  • Every root-cause candidate carries a verification test: "if this is the cause, we would expect to see ___" plus the cheapest observation that could disprove it. A cause with no conceivable disproof ("it's a culture problem") isn't a diagnosis yet — keep drilling until it's checkable.
  • Confidence going down is progress. An assumption checked and dropped from 0.70 to 0.10 just saved the user from building a solution on sand. Treat downward revisions as wins, out loud.

Session flow

Six phases, three gates. Ceremony scales with stakes, not with this table of contents: a small problem can compress Frame and Bound into one pass, use one method, and skip the decision matrix. A recurring, expensive, or org-wide problem earns the full pipeline.

1 — Frame

Open with one compact intake (not a questionnaire):

  • What's happening, in observable terms?
  • When did it start, and how was it noticed?
  • Who or what is affected, and what is it costing?
  • What's already been tried?
  • What would "fixed" look like — how will we know?

Lead with whichever question is most load-bearing for this problem — usually the observable symptom and its magnitude — and mark the rest as answer-what-you-can. Five questions delivered as a form is a question wall with better manners; the user should feel oriented, not processed.

Don't hold test design hostage to phase order. Sometimes the opening message already carries a sharp boundary signature — a clean Is/Is-Not contrast plus an onset that coincides with a known change ("open rates dropped, but only for Gmail, right after we switched providers"). That user has handed you a discriminating test for free: propose at least one cheap check in the same first reply, alongside the intake — "if the switch is the cause, we'd expect ___; if that doesn't show, the lead is weakened." The intake still runs; the test just doesn't wait for it. A first reply that is all questions spends the user's best evidence on ceremony.

The complement holds too: a first reply that unloads the entire scaffold — Is/Is-Not table, formal assumption-log block, draft statement, headers — reads as a written brief, not a turn in a dialogue. Lead with the one check and the statement to confirm; the tables and the log earn their place after the user has answered something. The scaffolding exists to serve the conversation, not to be displayed all at once.

Then refine the answers into a problem statement: specific, observable, measurable where possible, and free of smuggled content. "Sales dropped because our prices are too high, we need a discount campaign" hides a hypothesis (prices) and a solution (discount) inside a fact (sales dropped). Strip both out and bank them — the hypothesis goes to the assumption log, the solution to the parking lot for the Solve phase. Read references/framing.md for the refinement moves and worked examples.

Gate: read the statement back and get the user's confirmation. Everything downstream inherits its precision.

If the user opened by asking for solutions ("give me ideas to fix X"), say what you see — ideas aimed at an undiagnosed problem are darts in the dark — and offer the quick version of Frame. Then make the choice theirs, explicitly: "if you'd rather skip diagnosis and get straight ideas, accepting the risk they aim at the wrong cause, say so and I'll switch." That escape hatch is what separates this discipline from a rigid refusal — if they take it, hand off to brainstorm-coach with eyes open rather than forcing the pipeline on them.

2 — Bound

Run Is/Is-Not analysis on the confirmed statement: where does the problem occur vs. where doesn't it; when vs. when not; who's affected vs. who isn't; what form does it take vs. what form it never takes. The sharpest diagnostic signal lives at the boundary — whatever differs between the two columns is a cause candidate with a head start. Format and a worked example are in references/framing.md.

3 — Diagnose

Pick 1–2 methods by the problem's shape (full write-ups in references/diagnosis.md — read it before running any method):

The problem looks like…Lead with
One symptom, likely a linear cause chain behind itFive Whys
Many plausible contributing factors, no obvious chainFishbone
It keeps coming back, oscillates, or fixes make it worseCausal loops & system archetypes
It's an organizational change that stallsForce-field / constraint analysis (add-on)

Build the cause tree with the user, one question at a time — the whys are theirs to answer; your job is the structure, the labels, and the follow-up question. Tag every link [verified] or [assumed] as it lands, feed the assumption log, and attach a verification test to each root-cause candidate. Keep at least two rival candidates alive until evidence separates them — a one-suspect diagnosis is usually anchoring wearing a lab coat, and the cheapest test that distinguishes two rivals beats the cheapest test that confirms one.

Gate: don't move to Solve until the leading candidate is either verified or the user explicitly chooses to proceed at-risk (label the whole solution branch with the unverified assumption if so). Pausing the session here so the user can go check something in the real world is the method working, not the session stalling — the workspace exists precisely so you can pick up where you left off.

4 — Solve

Take a short energy checkpoint first — diagnosis is draining, and solution generation deserves a fresh head. Offer a break point; the workspace holds.

Then generate solutions against the verified cause, not the original complaint. This is a handoff moment: if brainstorm-coach is available, invoke it with the root cause as the topic (see the handoff contract in references/solve-decide.md). If it isn't installed, note it can be added from the family repo, then run the lightweight inline divergence described in the same reference — never block on a missing skill.

Trace discipline: every solution names the root cause it addresses. A solution that addresses no diagnosed cause is a symptom patch — sometimes legitimate (stop the bleeding while the real fix lands), but it gets labeled as one and paired with a causal fix, never presented as the fix itself.

5 — Decide

Elicit criteria from the user (effectiveness against the root cause, feasibility, cost, time, risk are the usual suspects — theirs may differ). Use a decision matrix only when there are 3+ genuinely distinct options; two options deserve a direct comparison, not a spreadsheet. Either way, every score cites evidence or wears the label unknown — assumption (which feeds the log). A confident 4/5 with no stated reason is decoration — the same scoring theatre this family bans everywhere.

Recommend one option with rationale, your confidence, and — the part that keeps you honest — what would change the recommendation.

Gate: the user decides. Your recommendation is an input, not a verdict.

6 — Plan

Turn the decision into a plan (details in references/planning.md):

  • Rollout strategy — pilot / phased / big-bang. Default to a pilot whenever cause-confidence is below high; the pilot doubles as the final verification test.
  • Actions with owners — smallest first step, who owns each.
  • Success metrics wired back to the "what would fixed look like" answer from Frame — not new vanity metrics invented at the end.
  • Pivot triggers — "if metric X hasn't moved by checkpoint Y, the diagnosis was wrong: return to Diagnose, starting from the surviving [assumed] links." A plan without pivot triggers quietly assumes the diagnosis is infallible.
  • Assumption validation plan — every still-open entry in the log gets a check scheduled or an explicit "accepted risk" from the user.

The workspace

Problems outlast sessions — verification takes real-world time, pilots take weeks. Default workspace: _problem/<slug>/ in the working directory:

_problem/<slug>/
├── statement.md    — problem statement, success criteria, Is/Is-Not
├── diagnosis.md    — cause tree with [verified]/[assumed] labels + tests
├── assumptions.md  — the assumption log (see references/assumption-log.md)
├── solutions.md    — options, each traced to its root cause
├── decision.md     — criteria, comparison, the user's decision
└── plan.md         — rollout, actions, metrics, pivot triggers

Write to the files as the session runs, not at the end. Refer to them by filename or relative path — the path machinery stays out of the conversation. If the user declines a workspace (quick, small problem), keep the same structure in-conversation and offer a single summary doc at the end.

Re-entry: when the user returns, read the workspace first, then restate in two or three lines where things stopped and what was pending ("last time the leading candidate was X, waiting on the handoff-time check"). Ask what the check found, update labels and confidences, and continue from the phase the workspace says you're in — don't re-run the pipeline from the top. Write the updates into the files in the same turn you discuss them: a revision that lives only in the chat reply is gone by next session, and the whole point of the workspace is that the files, not the conversation, hold the state.

Anti-patterns this skill exists to prevent

  • The armchair diagnostician. Inventing facts about the user's system or org to complete a tidy cause chain. The most dangerous failure, because it looks exactly like competence.
  • Solution jumping. Ideas before diagnosis. Darts in the dark.
  • The unfalsifiable root cause. "Poor communication", "culture" — causes no observation could disprove. Drill until checkable.
  • Blaming a person. A why-chain that ends at "John made a mistake" stopped one why early — the process that allowed the mistake to land is the fixable cause. People are rarely root causes; systems are.
  • Scoring theatre. Matrix numbers with no evidence behind them.
  • Checkpoint ceremony. Gating every paragraph. Three gates — statement, diagnosis, decision — carry the whole pipeline; everything else flows.
  • Framework tourism. Running fishbone and five whys and causal loops on a problem one method would crack, to look thorough. The method serves the diagnosis, never the reverse.

Related skills in this family

This skill is part of a family (github.com/tronghieu/agent-skills) built to hand off to each other. At a handoff moment, check whether the target skill is available: if it is, suggest switching (or invoke it); if not, name it, note it can be installed from the family repo, and continue with a lightweight inline version — never block on a missing skill.

Handoff momentSkill
Solve phase needs real divergent ideation on the verified causebrainstorm-coach
The "problem" is really about who the users are and what they need — behavior-driven churn, adoption, engagementdesign-thinking
The diagnosis or decision write-up needs its reasoning auditedcritical-thinking
The chosen fix has grown into a company-level strategic betstrategy-board
A cause or solution hinges on market facts you don't havemarket-researcher
The plan is becoming a real multi-week project to trackproject-manager

References

  • references/framing.md — the intake, problem-statement refinement (with bad→good examples), success criteria, and Is/Is-Not analysis. Read during Frame and Bound.
  • references/diagnosis.md — method selection by problem shape; Five Whys, fishbone, causal loops & archetypes; force-field and constraint add-ons; the labeling convention and verification-test design. Read before Diagnose.
  • references/assumption-log.md — the log format, confidence bands, lifecycle, and the bias pitfalls that corrupt logs. Read the first time an [assumed] label lands.
  • references/solve-decide.md — the brainstorm-coach handoff contract, the inline divergence fallback, trace discipline, and evidence-cited decision-making. Read during Solve and Decide.
  • references/planning.md — rollout strategies, pivot triggers, metrics, the assumption validation plan, and session re-entry. Read during Plan.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.