Pm Assumption Rigor Audit logo

Pm Assumption Rigor Audit

Organization
Uxcel-Lab
pm-assumption-rigor-audit

Run a structured rigor audit on how a team validated (or plans to validate) its assumptions — for a discovery plan, experiment, test, or any "we validated it" claim. Produces a severity-rated issue list with concrete fixes — catches testing the comfortable assumption instead of the riskiest, untestable phrasing, method fidelity mismatched to decision risk, stated intent mistaken for behavior, success criteria set after the fact, goalpost-moving, and underpowered evidence. Use when reviewing a validation/discovery approach or as the validation step after generating an assumption-test plan.

Overview

PublisherUxcel-Lab
Repositoryproduct-skills
Skill namepm-assumption-rigor-audit
Stars
35
Forks
8
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 Uxcel-Lab on GitHub. Read the source before you install it.

Installation

Install the Pm Assumption Rigor Audit 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/Uxcel-Lab/product-skills/tree/main/pm/audits/assumption-rigor
  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/Uxcel-Lab/product-skills.git /tmp/product-skills
mkdir -p .claude/skills
cp -r /tmp/product-skills/pm/audits/assumption-rigor .claude/skills/pm-assumption-rigor-audit
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Pm Assumption Rigor Audit 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 Pm Assumption Rigor Audit 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 Pm Assumption Rigor Audit 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.

Assumption Rigor Audit Skill

What this skill changes vs. default behavior

By default, Claude accepts validation at face value — "we ran a survey and users liked it, so it's validated" passes without challenge. It rarely asks whether the riskiest assumption was the one tested, whether the method was strong enough for the decision it's meant to support, whether "would you use this?" answers were mistaken for evidence, whether success was defined before the test, or whether the sample was big enough to mean anything. This audit forces four things: every finding names the violated principle; the decision the test is meant to support is the unit of judgment (rigor scales to what's at stake); evidence claims are tested for signal vs. noise; and findings come severity-rated by decision damage with a concrete fix.

This is an evaluative skill: it auto-runs whenever a validation plan, experiment, discovery approach, or a "we validated…" claim is being reviewed — and as the validation step after pm-assumption-testing produces a test plan.

Scope discipline. When invoked directly (the user named this audit), review only this concern — don't pull in sibling audits. It runs alongside other lenses only when the pm-product-review orchestrator or a generative skill calls it under docs/orchestration-policy.md, where it sits in the always-relevant PM lens — auto-runs. Explicit scope always wins.


The framework — what to check and what a violation looks like

1. The riskiest assumption was tested — not the comfortable one

Assumptions should be mapped on importance × certainty; the high-importance / low-certainty ones (the leap-of-faith beliefs) carry the risk and get tested first. Testing everything indiscriminately, or testing what's easy, is wasted motion.

Flag when: the load-bearing assumption ("users will pay for this," "this is even a problem") is never named or never tested while easy/safe ones are; "we're testing everything" with no prioritization; the idea was tested but the beliefs the idea depends on weren't.

  • ❌ Building a food-delivery app and surveying "do you like healthy meals?" (everyone says yes) while never testing "will users pay a premium" or "will they pick curated over à la carte."
  • ✅ Assumptions mapped; the highest-importance/lowest-certainty one ("users will pay 20% more for curated healthy meals") is tested first.

2. The assumption is phrased as a falsifiable, specific statement

A testable assumption uses the hypothesis format — "We believe [change] for [user] will result in [outcome]; we'll know we're right when [metric] changes by [amount]" — phrased positively (what users will do) and specifically, so it has a real fail condition.

Flag when: vague beliefs ("users will like it," "this will improve engagement") with no metric or threshold; negative phrasing ("users won't churn" — harder to test than what they will do); an idea ("shorten checkout") presented as if it were a testable assumption.

  • ❌ "Users will find onboarding intuitive."
  • ✅ "We believe streamlined onboarding for new users will raise activation; right when ≥80% complete it in under 2 minutes."

3. Method fidelity matched to the decision's risk (the truth curve)

Pick the cheapest, fastest method that answers the question — and no cheaper. Low-fidelity (surveys, interviews, paper prototypes) tests the problem; medium (clickable mockups, landing/painted-door, concierge/Wizard-of-Oz) tests the solution; high (live beta, A/B in production, full build) tests viability and scale. The judgment call is "enough certainty to make this decision," not "most rigorous possible."

Flag when: building production code to answer a question a prototype or painted-door test would have settled (over-investment); or a big, expensive, hard-to-reverse bet justified by a one-day landing-page test or a hallway survey (under-powered for the stakes); a method that structurally can't answer the question asked (a click-through test used to claim the feature satisfies the need).

  • ❌ Six engineer-weeks building a feature to "see if anyone wants it."
  • ✅ A painted-door test measures click-through first; code follows only once demand is real.

4. Behavior over stated intent

Asking "would you use this?" or "would you pay $20?" produces false positives — people want to be helpful. Trust past behavior over hypothetical future intent (the Mom Test: ask about their life and specific past episodes, not your idea).

Flag when: desirability or willingness-to-pay is "validated" purely on hypothetical interview/survey answers; the test asked users to predict their own future behavior or to design the solution; stated preference is treated as equivalent to a real action (a purchase, a click, a sign-up).

  • ❌ "8 of 10 interviewees said they'd definitely use it → validated."
  • ✅ "Tell me about the last time you faced this" + a painted-door click-through measuring real reach-for-it behavior.

5. Success criteria were defined before the test

The team must agree what result would prove the assumption right before running the test — a specific, measurable threshold.

Flag when: no pass/fail threshold was set in advance; "success" is described only after results are in; the metric exists but the target doesn't ("we'll see how sign-ups go").

  • ❌ Run the landing page, then decide 30 sign-ups "feels like enough."
  • ✅ "Success = ≥10% of visitors pre-order," agreed before launch.

6. Results read as evidence, not wishful thinking

Stick to the pre-set criteria; don't move the goalposts. Respect the data basics — sample size (n=10 finds usability bugs but says nothing about conversion/preference across an audience), duration (a one-day test catches atypical traffic), and statistical significance for comparisons. Distinguish a pattern (repeated across sources) from an anecdote (the single loudest voice), and cross-check qualitative against quantitative — agreement is a green light, conflict is a signal to run another test, not to pick the convenient one.

Flag when: "60% vs. our 70% target — close enough"; conversion/preference claims from a handful of users; a one-day or tiny-window result generalized; a single loud customer/exec request driving the call; quant says one thing, qual another, and the team proceeds anyway; confirmation-biased reading of ambiguous data.

  • ❌ "Only 55% completed it but the feedback was positive, so we'll ship."
  • ✅ "55% missed the 70% bar → we revise and re-test; we don't reinterpret the bar."

7. Disconfirming results actually change the plan

Testing is a learning opportunity, and invalidation is valuable — it saves a wrong build. A disproven assumption must change a decision (revise, pivot, or drop), and the result is documented (assumption, method, criteria, finding, next step). A test run only to rubber-stamp a decision already made isn't a test.

Flag when: an assumption was disproven but nothing changed; the test was theater for a foregone conclusion; results aren't documented, so the team can't learn or revisit; validation is scheduled after the build as a checkbox rather than early, when it could still change direction.

  • ❌ Usability test fails, ship the original design unchanged "because we're committed."
  • ✅ Failure triggers a documented revision and a re-test before commitment.

Tension note: rigor scales to risk — a small, cheap, reversible decision doesn't need a statistically significant experiment, and demanding one is its own failure. Don't flag a fast low-fi test that's appropriate for a low-stakes call. Flag the mismatch in either direction: heavy method on a trivial decision, or flimsy evidence under a costly, irreversible one.


Severity rating

Rate each finding by decision damage — what acting on this validation, as-is, would cost:

SeverityMeaning
CriticalA load-bearing assumption drives a major or hard-to-reverse investment with no valid test — untested, tested only on stated intent, goalposts moved, or sample far too small to support the claim. The decision is effectively unsupported.
MajorThe right assumption is in view but the evidence is weak for the stakes — wrong-fidelity method, no pre-set success criteria, anecdote- or single-voice-driven, qual/quant conflict ignored.
MinorHygiene that erodes trust in the learning — undocumented results, episodic instead of continuous testing, a secondary assumption left vague.
CosmeticPhrasing polish on an otherwise sound plan; don't pad the report with these.

Overlaps — defer, don't duplicate: whether a success metric is itself valid (vanity, gameable, unfalsifiable) belongs to pm-okr-metric-validity-audit — this audit checks the assumption was tested rigorously, that one checks the metric is worth hitting. Whether the spec document surfaced its assumptions as risks at all belongs to pm-spec-quality-audit — this audit checks the testing method and evidence. Ranking discipline across competing bets belongs to pm-prioritization-rigor-audit.


Output format

## Assumption Rigor Audit — [Plan / Experiment / Claim]
Context: [decision it informs · reversibility/stakes · discovery stage, if known]

### Critical
- [Issue] — what's wrong → fix. (Principle)
### Major
- …
### Minor
- …
### Working well ✓
- …

**Top 3 priorities:** the highest decision-damage fixes.

Always end with the prioritized top issues — a flat list helps no one act.


How to run a good audit

  1. Establish context first — what decision does this validation support, and how costly/reversible is it? Rigor scales to that. A reversible $0 copy tweak and a six-month platform bet are not held to the same bar.
  2. Find the leap-of-faith assumption — name the belief the whole thing rests on, and check whether that is what got tested.
  3. Only flag real costs — an appropriately light test for a low-stakes call is correct, not a deficiency.
  4. Interrogate the evidence, not just the activity — running a test ≠ learning something; check sample, duration, pre-set criteria, and signal vs. anecdote.
  5. Be specific in fixes — name the assumption to test first, the better-fit method, the missing success threshold — not "be more rigorous."
  6. Prioritize, don't enumerate — three decision-damaging findings beat fifteen nitpicks.

Common do/don't patterns

❌ Don't✅ Do
Accept "we tested it and users liked it"Ask which assumption, by what method, against what pre-set bar
Treat the idea as the thing to testTest the beliefs the idea depends on (desirability, viability, feasibility, usability, ethics)
Let the team test the comfortable assumptionCheck the high-importance / low-certainty one was tested first
Pass "would you use this?" as validationRequire past behavior or a real action, not hypothetical intent
Accept conversion claims from n=10Match sample/duration/significance to the claim being made
Allow "close enough" after the factHold the pre-agreed success criteria; shortfall → revise and re-test
Ignore that a disproven assumption changed nothingDisconfirmation must move the decision; document the learning
Re-audit whether the metric itself is any goodDefer metric validity to pm-okr-metric-validity-audit
Demand a rigorous experiment for a tiny reversible callScale rigor to the decision's stakes
Deliver an unranked issue dumpSeverity by decision damage + top-3 priorities

Source lessons (Uxcel)

Frequently asked questions

What does the Pm Assumption Rigor Audit AI skill do?

Run a structured rigor audit on how a team validated (or plans to validate) its assumptions — for a discovery plan, experiment, test, or any "we validated it" claim. Produces a severity-rated issue list with concrete fixes — catches testing the comfortable assumption instead of the riskiest, untestable phrasing, method fidelity mismatched to decision risk, stated intent mistaken for behavior, success criteria set after the fact, goalpost-moving, and underpowered evidence. Use when reviewing a validation/discovery approach or as the validation step after generating an assumption-test plan.

Why use Pm Assumption Rigor Audit on TypingMind?

Because you install it once and use it with any model. Pm Assumption Rigor Audit 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 Pm Assumption Rigor Audit in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/Uxcel-Lab/product-skills/tree/main/pm/audits/assumption-rigor. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Pm Assumption Rigor Audit?

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 Pm Assumption Rigor Audit?

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

Is the Pm Assumption Rigor Audit AI skill free?

Yes. It is published on GitHub by Uxcel-Lab 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 👇