Challenge
Challenge, push back, play devil's advocate on AI output. Use when: challenge this, are you sure, push back, prove it, what if you're wrong, devil's advocate, stress test, poke holes, second opinion, sanity check, too confident, really?, question this decision. Subcommands: anchor (committed too fast), verify (facts wrong?), framing (wrong problem?), deep (full devil's advocate in separate context).
npx skills add github:pantheon-org/tekhne --skill software-engineering--challengeApply structured provocation patterns to force reconsideration of current work.
Target: $ARGUMENTS
⚠️ AskUserQuestion Guard
CRITICAL: After EVERY AskUserQuestion call, check if answers are empty/blank. Known host-tool bug: outside Plan Mode, AskUserQuestion silently returns empty answers without showing UI.
If answers are empty: DO NOT proceed with assumptions. Instead:
- Output: “⚠️ Questions didn’t display (known host-tool bug outside Plan Mode).”
- Present the options as a numbered text list and ask user to reply with their choice number.
- WAIT for user reply before continuing.
Dispatch
Parse first word of $ARGUMENTS as subcommand:
| Subcommand | Error Type | Protocol |
|---|---|---|
anchor |
Premature commitment / anchoring bias | Read references/protocols/anchor.md → execute |
verify |
Factual errors / hallucination | Read references/protocols/verify.md → execute |
framing |
Wrong problem / framing errors | Read references/protocols/framing.md → execute |
deep |
High stakes — all 9 patterns in fresh context | Spawn devil-advocate sub-agent via Agent |
No-Subcommand Fallback
If no subcommand detected:
AskUserQuestion: “What are you worried about with the current AI response?”
- A) Anchoring bias — AI committed too early to one approach
- B) Factual accuracy — claims may be wrong or hallucinated
- C) Wrong framing — solving the wrong problem
- D) High stakes — want all 9 patterns in fresh context (Devil’s Advocate)
→ Dispatch to matching subcommand based on answer.
Deep Subcommand
Spawn via Agent tool a devil’s advocate sub-agent with:
- prompt: target description + relevant file paths to read
- The agent runs ALL 9 patterns (anchor: Gatekeeper, Reset, Alt Approaches, Pre-mortem · verify: Proof Demand, CoVe, Fact Check List · framing: Socratic, Steelman) comprehensively in fresh context
- DO NOT pass parent conversation reasoning — fresh context is the point
Thinking Transparency (applies to all subcommands)
For every finding, make reasoning explicit:
- Observation: What specifically in the target triggered this finding
- Technique family: Which challenge family (anchor/verify/framing) and named pattern (e.g., Gatekeeper, CoVe, Steelman) — cite mechanism from
references/reference.mdpattern catalog - Reasoning: Why this observation matters — what cognitive bias or error it reveals
- Confidence: How certain is this finding (High/Medium/Low) and what evidence supports that rating
Output
All subcommands produce a Challenge Report (structured, not prose).
See references/reference.md for report format and pattern catalog.
When to Use
- An AI assistant or team member has proposed a solution without exploring alternatives — use
anchorto surface premature commitment. - Output contains specific facts, citations, or confident numerical claims that have not been verified — use
verifyto stress-test accuracy. - The stated problem feels mis-framed or the scope is suspiciously narrow — use
framingto question whether the right problem is being solved. - A proposal carries high organisational or technical risk (irreversible change, security boundary, large refactor) — use
deepto run all nine patterns in a clean context. - A decision is about to be committed to (PR merged, ticket closed, design doc signed off) and no one has played devil’s advocate yet.
When Not to Use
- The proposal is already in production and rollback is not possible — retrospective challenges generate friction without actionable outcomes; use a post-mortem instead.
- The work is exploratory or speculative and the author has explicitly labelled it a spike — early challenges can kill useful divergent thinking before it matures.
- A prior challenge session has already been run on the same target with the same subcommand and no new evidence has emerged.
- The requester is looking for encouragement or morale support, not critical analysis — misapplying challenge to emotional contexts causes harm.
- Time budget is under five minutes and the stakes are low — the protocol overhead exceeds the value; a quick gut-check comment is sufficient.
Anti-Patterns
- NEVER challenge without the anchor protocol first — Unconstrained challenges devolve into unproductive debate. Why: The anchor establishes shared facts before disagreement; without it, participants argue from different baselines.
- NEVER challenge the person, only the proposal — Personal challenges trigger defensiveness and shut down learning. Why: The goal is to stress-test the idea, not the author; role-separate the proposal from the proposer explicitly.
- NEVER issue a challenge without proposing an alternative — Pure objections without alternatives leave teams stuck. Why: A challenge that can’t be resolved produces friction, not insight; offer a “what if instead…” path.
- NEVER run
deepon a trivial or low-stakes target — All nine patterns applied to a minor decision wastes cognitive bandwidth. Why:deepis calibrated for high-stakes irreversible choices; applying it broadly devalues the signal and desensitises the team. - NEVER suppress or soften findings to avoid conflict — Diluted challenge output is worse than no challenge at all. Why: The entire value of this skill is honest, evidence-backed pushback; hedging findings defeats the purpose and misleads decision-makers.
Usage Examples
Challenging a proposed architecture decision:
# Proposal: "Use a monorepo for all 40 services"
# Skill applies anchor: "What problem does this solve? What is the current pain?"
# Skill applies framing: "What alternatives were considered? What are the failure modes?"
# Skill applies verify: "Can we test this with 3 services first?"
Challenging an implementation shortcut:
# Proposal: "Just hardcode the config values for the demo"
# Skill challenges: "What is the rollback path? When does this become permanent?"
# Output: Structured challenge with anchor + alternative approach
Running a full devil’s advocate review before a design doc is signed off:
# Target: architecture decision record for event-sourcing migration
# Invoke: /challenge deep path/to/adr.md
# Skill spawns a sub-agent with all 9 patterns (anchor x4, verify x3, framing x2)
# Output: Challenge Report with confidence ratings and ranked findings
References
- Reference — pattern catalog (9 patterns), when-to-use guide, and Challenge Report format
- Anchor Protocol — Gatekeeper, Reset, Alternative Approaches, Pre-mortem execution steps and output template
- Framing Protocol — Socratic and Steelman execution steps and output template
- Verify Protocol — Proof Demand, CoVe, Fact Check List execution steps and output template
Explicit NEVER/WHY/consequence triplets with side-by-side bad/good examples. Generic warnings score low — concrete failure modes with real impact (security, correctness, performance) score high.
Runtime validation via eval scenarios proving the skill actually changes agent behaviour. Requires evals/ directory, instructions.json, ≥3 scenarios, and ≥80% instruction coverage in summary.json.
Appropriate rigidity for the skill type: strict rules for critical/security skills, balanced steps for process skills, flexible options for tool skills. Mismatched calibration (too rigid or too loose) reduces score.
Expert-only knowledge the AI couldn't derive on its own — domain-specific patterns, production gotchas, decision frameworks, and non-obvious tool behaviour. High scores mean <5% redundancy with what the model already knows.
A clear philosophy plus numbered step-by-step workflows with explicit entry/exit points. Should answer: what is the core principle, how to execute it, and when (and when not) to apply it.
Rich activation keywords and trigger scenarios in the description so the skill fires when needed. Best descriptions read like an exhaustive list of the tasks and concepts that should invoke this skill.
Copy-paste-ready code, complete runnable examples, real file paths and commands. Pseudocode and abstract descriptions score low — concrete, executable content scores high.
SKILL.md as a <100-line navigation hub pointing to focused references/ files. Content should be lazy-loaded on demand, not front-loaded. Includes actionable 'When to Use' conditions per reference.
Proper frontmatter, single-task focus, activation keywords, and cross-harness portability. Skills must work across 40+ agentic harnesses without hardcoded paths or agent-specific references.
Expert-only knowledge the AI couldn't derive on its own — domain-specific patterns, production gotchas, decision frameworks, and non-obvious tool behaviour. High scores mean <5% redundancy with what the model already knows.
A clear philosophy plus numbered step-by-step workflows with explicit entry/exit points. Should answer: what is the core principle, how to execute it, and when (and when not) to apply it.
Explicit NEVER/WHY/consequence triplets with side-by-side bad/good examples. Generic warnings score low — concrete failure modes with real impact (security, correctness, performance) score high.
Proper frontmatter, single-task focus, activation keywords, and cross-harness portability. Skills must work across 40+ agentic harnesses without hardcoded paths or agent-specific references.
SKILL.md as a <100-line navigation hub pointing to focused references/ files. Content should be lazy-loaded on demand, not front-loaded. Includes actionable 'When to Use' conditions per reference.
Appropriate rigidity for the skill type: strict rules for critical/security skills, balanced steps for process skills, flexible options for tool skills. Mismatched calibration (too rigid or too loose) reduces score.
Rich activation keywords and trigger scenarios in the description so the skill fires when needed. Best descriptions read like an exhaustive list of the tasks and concepts that should invoke this skill.
Copy-paste-ready code, complete runnable examples, real file paths and commands. Pseudocode and abstract descriptions score low — concrete, executable content scores high.
Runtime validation via eval scenarios proving the skill actually changes agent behaviour. Requires evals/ directory, instructions.json, ≥3 scenarios, and ≥80% instruction coverage in summary.json.
No eval scenarios available.
Challenge — Reference
Pattern Catalog (v1: 8 patterns)
| # | Pattern | Subcommand | Error Type | Source | Mechanism |
|---|---|---|---|---|---|
| 1 | Gatekeeper | anchor | Premature commitment | Florian WP01 §4.5 | Demand explicit pass/fail criteria for the decision BEFORE accepting it. Ask: “What must be true for this to be correct?” then check which criteria remain unverified. Blocks premature acceptance. |
| 2 | Reset | anchor | Premature commitment | Florian WP01 §4.5 | Discard the current solution entirely. Re-read ONLY the original problem. Generate a fresh answer from first principles. Compare with original — divergences reveal anchoring. |
| 3 | Alternative Approaches | anchor | Premature commitment | White et al. 2023 (Vanderbilt) | Force generation of ≥2 genuine alternatives (different mechanisms, not strawmen). For each: “Why was this NOT chosen?” — if no reason exists, the original wasn’t properly evaluated. |
| 4 | Pre-mortem | anchor | Premature commitment | Klein 2007; EMNLP 2024 (Wang) | Assume the decision was implemented and FAILED. Generate 3 failure scenarios (most likely, second-order, black swan). For each: identify early warning signs and mitigation actions available NOW. |
| 5 | Proof Demand | verify | Factual errors | Florian WP01 §4.5 | Extract every factual claim. For each, classify: ✅ Sourced (citation exists), ⚠️ Unsourced (stated as fact without evidence), ❌ Contradicted (evidence disagrees). Flag ⚠️/❌ as untrustworthy until verified. |
| 6 | CoVe | verify | Factual errors | Dhuliawala et al. 2023 (Meta) | 4-step Chain-of-Verification: (1) state the claim, (2) write specific verification questions, (3) answer each question INDEPENDENTLY without looking at the original claim, (4) compare independent answers to original — discrepancies = errors. |
| 7 | Fact Check List | verify | Factual errors | White et al. 2023 (Vanderbilt) | Decompose response into atomic checkable assertions (one fact per line). Rate confidence: High/Medium/Low/Unknown. For Low/Unknown: write a concrete verification action (search query, doc to read, test to run). Priority-order by impact × uncertainty. |
| 8 | Socratic | framing | Framing errors | Chang 2023 | 6-stage questioning: (1) Definition — what do key terms actually mean? (2) Elenchus — is the definition consistent with usage? (3) Dialectic — what’s the opposite position? (4) Maieutics — what’s the real goal, stripped of framing? (5) Generalization — local issue or systemic pattern? (6) Counterfactual — if the problem didn’t exist, what changes? |
| 9 | Steelman | framing | Framing errors | Rationalist tradition | Build the STRONGEST possible counter-argument to the current framing (opposite of strawman). Use best available evidence for the counter-position. Assume it’s correct — what would that imply? Stress-test: “What must be true for the steelman to be wrong?” If no clear answer, the framing is weak. |
When-To-Use Guide
| Symptom | Error Type | Subcommand |
|---|---|---|
| AI picked one solution without exploring options | Anchoring bias | /challenge anchor |
| AI committed to approach too quickly | Premature commitment | /challenge anchor |
| Specific facts, numbers, or claims feel uncertain | Factual error | /challenge verify |
| AI cited something that can’t be verified | Hallucination | /challenge verify |
| The answer is correct but might be solving the wrong problem | Framing error | /challenge framing |
| The question itself seems wrong | Wrong problem | /challenge framing |
| High-stakes decision, want genuine debiasing in fresh context | All error types | /challenge deep |
Challenge Report Format
All subcommand outputs MUST follow this structure:
## Challenge Report: [Pattern(s) Applied]
**Target**: [what was challenged]
**Error type**: [anchoring | factual | framing | high-stakes]
### Technique Selection
- **Family**: [anchor (premature commitment) | verify (factual errors) | framing (wrong problem)]
- **Patterns applied**: [named patterns, e.g., Gatekeeper, Pre-mortem, CoVe]
- **Why these patterns**: [what about the target triggered this selection — specific observations]
- **Patterns considered but skipped**: [and why, or "none — full protocol applied"]
### Findings
[Pattern-specific structured output — see protocol files.
For each finding include: Observation → Technique (family + pattern) → Reasoning → Confidence]
### Verdict
- **Assessment**: [Decision holds / Needs revision / Needs rejection]
- **Confidence**: [High / Medium / Low]
- **What would flip this**: [specific evidence or condition that would change the verdict]
- **Strongest counter to this verdict**: [steelman the opposite conclusion]
### Recommended Action
[Proceed as-is | Proceed with modifications: X | Reconsider: Y]
Sources
- Florian WP01 §4.5 — Gatekeeper, Proof Demand, Reset (practitioner patterns)
- White et al. 2023 — Vanderbilt Prompt Pattern Catalog (arxiv.org/abs/2302.11382)
- Dhuliawala et al. 2023 — Chain-of-Verification (CoVe), Meta AI (arxiv.org/abs/2309.11495)
- Wang et al. 2024 — Devil’s Advocate, EMNLP (arxiv.org/abs/2405.16334)
- Chang 2023 — Socratic Method prompting (arxiv.org/abs/2303.08769)
- Klein 2007 — Pre-mortem analysis (Harvard Business Review)