thinking-thought-experiment — Claude Code skill: controlled
A skill for when a real test is too rare, large or irreversible: the agent runs one counterfactual with an isolated variable and bounds what the result implies.
npx skills add tjboudreaux/cc-thinking-skills --skill thinking-thought-experiment -a claude-codeWhat thinking-thought-experiment does
The skill enforces a disciplined thought experiment. You name exactly one variable or change, freeze everything else as the control world, and the agent traces the mechanism step by step: what fails, what queues, where a retry fires. Every step has to hang off a known component or policy instead of a hand-wavy collapse.
The output is a record with question, isolated_variable, initial_conditions, consequence_chain, invariants, break_points, implication_bound and discriminating_check. That last field is the cheapest real observation that would confirm or kill the weak link. If such a test becomes available mid-analysis, the skill tells you to stop and run it.
Stop conditions are explicit. More than one free variable without a stated control makes the scenario invalid. A step with no causal link to a known component gets rewritten or dropped. Recommendations the chain does not entail are out of scope. Ordinary debugging you can reproduce, and threat modeling, are not what this is for — those want a real test and a red-team structure.
What it helps with
- reason about behaviour during a region outage you cannot stage
- check an architecture decision before an irreversible commit
- find the first step where a capacity or correctness requirement breaks
- separate conclusions the chain supports from speculation
- pick the cheapest real check for the weakest link
Example prompts for the agent
- run a thought experiment: what happens if one region goes down
- trace the chain to the first capacity failure at 100x load
- what is the cheapest check that would confirm or kill this weak link
How to install thinking-thought-experiment
1Skills CLI (Vercel)
npx skills add tjboudreaux/cc-thinking-skills --skill thinking-thought-experiment -a claude-code2Manually: put the files in place
~/.claude/skills/thinking-thought-experiment/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/thinking-thought-experiment/
1Skills CLI (Vercel)
npx skills add tjboudreaux/cc-thinking-skills --skill thinking-thought-experiment -a codex2Manually: put the files in place
.agents/skills/thinking-thought-experiment/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add tjboudreaux/cc-thinking-skills --skill thinking-thought-experiment -a cursor2Manually: put the files in place
.cursor/skills/thinking-thought-experiment/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install tjboudreaux/cc-thinking-skills thinking-thought-experiment2Manually: put the files in place
.github/skills/thinking-thought-experiment/SKILL.md1Skills CLI (Vercel)
npx skills add tjboudreaux/cc-thinking-skills --skill thinking-thought-experiment -a gemini-cli2Platform CLI
gemini skills install https://github.com/tjboudreaux/cc-thinking-skills --path skills/thinking-thought-experimentManually: put the files in place
.devin/skills/thinking-thought-experiment/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add tjboudreaux/cc-thinking-skills --skill thinking-thought-experiment -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about thinking-thought-experiment
How do I install thinking-thought-experiment in Claude?
Run npx skills add tjboudreaux/cc-thinking-skills --skill thinking-thought-experiment -a claude-code. The skill lands at ~/.claude/skills/thinking-thought-experiment/SKILL.md.
What does thinking-thought-experiment do?
It runs a single counterfactual with one isolated variable and frozen conditions, traces the mechanism step by step, and limits recommendations to what the chain justifies.
When should I not use it?
When a cheap real test exists — a load test, a flag, a query — run that instead. For attack-path work you want a red-team structure, not open-ended scenarios.
Source text
SKILL.md · MIT
--- name: thinking-thought-experiment description: 'When a real test is too rare, large, or irreversible, run a controlled counterfactual: isolate one variable, fix conditions, trace the mechanistic chain, and bound what the result implies.' disable-model-invocation: true --- # Thought Experiment When empiricism is out of reach, run a disciplined counterfactual: one isolated change, fixed conditions, step-by-step mechanism, and a hard bound on implications. ## When to Use - You need behavior under failure, scale, or policy you cannot cheaply trigger or measure (region outage, 100x load, one-way architecture). - A decision is expensive or irreversible and a mental trace can surface break points before commit. - Edge cases are too costly to stage, but a mechanistic chain can still expose missing controls. ## When NOT to Use - A cheap real test exists (load test, flag, query, spike) → run the test; do not substitute imagination. - Adversarial security attack-path work → use red-team structure, not free-form scenarios. - You already know the mechanism and only need a decision under known facts → decide; do not dramatize. - Vague "what if everything" brainstorming without a single isolated variable → tighten or stop. ## Procedure 1. **State the question and isolation.** Name exactly one primary variable or counterfactual change. Freeze all other conditions as the control world. Reject multi-variable "and also" scenarios. 2. **Fix initial conditions.** Specify system state, load, configuration, actors, and what is *not* changed. Write values concrete enough that another agent could replay the setup. 3. **Trace the mechanism step by step.** From t0, record what fails, queues, retries, or adapts next—and why—using known components and policies only. No hand-wavy "then everything collapses"; each step needs a causal link. 4. **Extract invariants and break points.** Note what still holds (invariants) and the first step where the system violates a requirement (capacity, correctness, safety, UX). Mark assumptions that, if false, void the chain. 5. **Bound implications.** Map insights only to actions or checks justified by the chain (limits, guards, monitoring, redesign). Label speculative leaps beyond the isolation as out of bound. 6. **Name a discriminating real check, then stop.** For the weakest link, state the cheapest observation or experiment that would confirm or kill it. Stop after one controlled chain with bounded implications; if a link is cheaply testable now, exit to that test instead of further imagination. ## Output Emit a thought-experiment record: - `question`: what behavior or decision is under test - `isolated_variable`: single change vs control world - `initial_conditions`: frozen state and non-changes - `consequence_chain`: ordered mechanistic steps - `invariants`: what still holds - `break_points`: first requirement failures and critical assumptions - `implication_bound`: actions/checks justified by the chain only - `discriminating_check`: cheapest real observation to confirm or kill the weak link ## Verification - **Isolation check:** more than one free variable without a stated control → invalid; reset. - **Mechanism check:** any step without a causal link to a known component/policy → rewrite or drop. - **Implication bound:** recommendations not entailed by the chain are out of scope. - **Empiricism override:** if a real test became available mid-analysis, stop the thought experiment and test. - **Over-application guard:** do not use this skill for ordinary debugging you can reproduce, or as a substitute for red-team threat modeling. - **Stop:** one isolated counterfactual → full chain → bounded implications + discriminating check; no scenario sprawl.
© tjboudreaux · MIT · tjboudreaux/cc-thinking-skills