A Claude Marketplace Plugin comprising a set of Claude Code slash commands that examine and sharpen a concept from six critical angles. Point them at a decision, a proposal, a research write-up, a page of raw notes, or a pasted paragraph of text; six lenses run in parallel or individually and synthesize an actionable verdict.
Live at probe.md.
Authored by Dan Schmitz (github.com/@ds1) & Claude.
Each lens is an independent agent asking a different critical question. The lens
prompts live once, in agents/; the commands parse arguments and launch them,
so a full run and a single-lens run apply identical prompts.
| Command | Purpose |
|---|---|
/probe:go |
Full analysis - launches 6 parallel agents and synthesizes findings |
/probe:clarify |
Clarify thinking and trace origin of ideas |
/probe:assume |
Challenge hidden assumptions |
/probe:evidence |
Examine evidence quality and sources |
/probe:pov |
Explore alternative viewpoints |
/probe:implications |
Trace implications and consequences |
/probe:meta |
Question the question itself |
/probe:synth |
Synthesize existing evaluation files |
Pick one path. Both provide the same /probe:* commands; installing both gives you
duplicates.
This repo is a Claude Code plugin marketplace. Inside Claude Code, run:
/plugin marketplace add ds1/probe
/plugin install probe@schmitz
You get versioned, updatable commands, invoked as /probe:go,
/probe:assume, and so on. To update later, run /plugin and update when a new
version is published.
Copies the command files into ~/.claude/commands/probe/ (invoked the same way:
/probe:go, /probe:clarify, etc.) and the lens agents into ~/.claude/agents/.
macOS / Linux / WSL / Git Bash:
curl -fsSL https://raw.githubusercontent.com/ds1/probe/master/install.sh | bashWindows PowerShell:
irm https://raw.githubusercontent.com/ds1/probe/master/install.ps1 | iexgit clone https://github.com/ds1/probe.git
cd probe
./install.sh # macOS / Linux / WSL / Git Bash
# or on Windows: .\install.ps1Global (all projects):
mkdir -p ~/.claude/commands/probe ~/.claude/agents
cp probe/commands/*.md ~/.claude/commands/probe/
cp probe/agents/*.md ~/.claude/agents/New-Item -ItemType Directory -Force $env:USERPROFILE\.claude\commands\probe, $env:USERPROFILE\.claude\agents
Copy-Item probe\commands\*.md $env:USERPROFILE\.claude\commands\probe\
Copy-Item probe\agents\*.md $env:USERPROFILE\.claude\agents\Or project-level, so the commands ship with a specific repo:
mkdir -p YOUR_PROJECT_ROOT/.claude/commands/probe YOUR_PROJECT_ROOT/.claude/agents
cp probe/commands/*.md YOUR_PROJECT_ROOT/.claude/commands/probe/
cp probe/agents/*.md YOUR_PROJECT_ROOT/.claude/agents/Run all six lenses in parallel:
/probe:go path/to/input.md ./output-directory
/probe:go "path with spaces/input.md" --out ./output-directory
/probe:go Here is an idea I have been kicking around... --out ./output-directory
The input is a file path or pasted text. The output directory is optional and
defaults to ./probe-output/; give it as a second argument after a file path, or
with --out <dir> anywhere (the only way to set it for pasted text). Quote paths
that contain spaces.
This will:
- Launch 6 specialized analysis agents in parallel
- Each agent writes its evaluation to the output directory
- Create a synthesis document consolidating all findings
Output files:
probe-clarify-thinking.mdprobe-challenge-assumptions.mdprobe-evidence-basis.mdprobe-alternative-viewpoints.mdprobe-implications-consequences.mdprobe-question-the-question.mdprobe-synthesis.md(consolidated findings)
Run a specific type of analysis:
/probe:clarify path/to/input.md # Clarify thinking
/probe:assume path/to/input.md # Challenge assumptions
/probe:evidence path/to/input.md # Examine evidence
/probe:pov path/to/input.md # Alternative viewpoints
/probe:implications path/to/input.md # Trace consequences
/probe:meta path/to/input.md # Question the question
With no output directory the evaluation is returned in the conversation. Add one
(--out ./dir, or a second argument after a file path) and the lens writes its
canonical file, probe-<lens>.md, there instead.
Run any lenses you want with the same output directory, then consolidate:
/probe:assume path/to/input.md --out ./output-directory
/probe:evidence path/to/input.md --out ./output-directory
/probe:synth ./output-directory
The synthesis works from whichever lens files are present. Missing lenses are named in the synthesis, not invented.
"What do you mean by...?" / "What is the source of this idea?"
- Identifies key claims needing clarification
- Questions definitions and terminology
- Traces origin of conclusions
- Examines reasoning chains
- Highlights ambiguities
"What are you assuming here?" / "What if you were wrong?"
- Identifies hidden assumptions
- Questions foundational premises
- Challenges comparison methodology
- Tests robustness of conclusions
"What evidence supports this?" / "What would disprove this?"
- Audits sources for bias and reliability
- Identifies unsupported assertions
- Evaluates evidence quality
- Assesses completeness
"What is the counter-argument?" / "Who would disagree?"
- Presents strongest counter-arguments
- Identifies unrepresented perspectives
- Explores internal contradictions
- Steel-mans rejected options
"What follows from this?" / "What are the long-term effects?"
- Traces first and second-order implications
- Identifies unintended consequences
- Explores consequences of being wrong
- Maps downstream effects
"Is this the right question?" / "What question should we ask instead?"
- Examines the framing
- Challenges scope and timing
- Identifies questions not asked
- Proposes alternative framing
The synthesis consolidates findings into an actionable format:
- Executive Summary - Bottom-line assessment
- Critical Findings Table - Key insight from each evaluation
- Evidence Quality Assessment - Source reliability and gaps
- Assumption Risk Matrix - What happens if assumptions are wrong
- Unexplored Alternatives - Options not considered
- Hidden Costs & Consequences - Unaddressed implications
- The Meta-Question - Is the document asking the right question?
- Validate Before Proceeding - Checklist of what to check, measure, or decide first
- Questions for the People Who Decide - Addressed to the roles the input actually implies; omitted when the author is the only decider
- Final Verdict - Ready to act on, ready with named conditions, or not ready
The template is a maximum, not a quota. The synthesis matches the register of the input: a page of raw notes gets a different synthesis than a board memo.
- Technical proposals - Evaluate architecture decisions
- Business cases - Challenge ROI assumptions
- Research papers - Assess evidence quality
- Strategy documents - Explore alternatives
- RFCs/ADRs - Rigorous review before adoption
- Vendor evaluations - Identify bias and gaps
See examples/ for a complete run against a realistic decision doc
(a proposal to adopt a paid feature-flag SaaS). It includes the
input, all six lens outputs,
and the synthesis, so you can see exactly
what the probe produces, and what it catches, before running your own.
The six lenses are the engine. The real power is running them as a disciplined loop around a decision you are about to lock. docs/methodology.md covers:
- When to probe - schema/money/audit changes, cross-system contracts, dependency locks; and when to skip (anything reversible in under a day).
- Scan for an existing decision first - if a prior ADR already owns the ground, your write-up is an amendment, not a peer.
- Ground the agents in the code - when a doc cites function names or constants, tell each agent to verify against the actual code. This catches code-fact bugs that reasoning-from-prose misses (a real probe caught a doc claiming a
3 * Xmultiplier where the code used4 * X). - Read the synthesis cold - write your concessions and pushback before touching the original, then respond once with a unified summary.
- After the probe - when to write a v2, when to escalate a thin result, and the spirit-conflict scan for shape-similar prior decisions.
The premise: a probe is cheap next to the cost of locking a wrong architectural choice and only discovering it after you have built on top of it.
- Claude Code CLI
- Something to analyze: a file path (markdown, text, or other readable format) or pasted text
MIT License - See LICENSE file.
Contributions welcome. Feel free to:
- Add new lenses (an agent in
agents/plus a thin command incommands/that launches it) - Improve existing prompts (edit the agent; the commands carry no lens text)
- Share interesting use cases
When releasing, bump the version in both .claude-plugin/plugin.json and
.claude-plugin/marketplace.json (they must match; /plugin updates key off the
marketplace version) and add a CHANGELOG entry.
Rooted in a long tradition of examining ideas by asking what they assume, what supports them, and what they leave out.