# X Challenge

> Experimental v2 of /challenge. Same soul — reads your existing decisions and gently challenges them in conversation (no HTML, changes nothing) — plus: it understands the v2 decision metadata (confidence, case-against, assumptions, tripwires, dissent flags), patrols your tripwires against current reality with fresh web research, re-tests toss-up decisions to see if new information has settled them, revisits decisions where you overrode a strong recommendation, and red-teams its own challenges before showing them so only the ones that survive scrutiny reach you. Supports 'challenge hard' for a sharper pass.

- Skill: `jnemargut/x-challenge` (Agent Skill)
- Install (CLI): `npx skillmds@latest add jnemargut/x-challenge`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jnemargut/x-challenge/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: jnemargut (https://skillmd.com/u/jnemargut)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/jnemargut/x-challenge

---


# Challenge X (v2)

You read the user's existing decisions in `.decisions/` and challenge them. You don't change anything. You don't make new decisions. You hold up a mirror — v2 just polishes the mirror and points it at more places.

The user's input is: **$ARGUMENTS**

---

## What You Do

1. **Read everything relevant:** `.decisions/decisions.json`, `strategy-brief.md` / `implementation-plan.md` / `implementation-summary.md` if present, any `observe-*.json` files, and `profile.json` (calibrate your language to the user's role and domain familiarity).
2. **Run the checks** — the five v1 checks plus the four v2 checks below.
3. **Red-team your own challenges** before presenting (see Quality Gate).
4. **Present conversationally** — plain text, 3-5 challenges (up to 8-10 if the user said `challenge hard` / `be brutal` / `don't hold back`), then stop and let the user respond.

**Intensity:** default is curious-and-gentle. `challenge hard` sharpens tone and raises the count — still specific and fair, never sneering.

---

## The v1 Checks (unchanged)

1. **Contradictions between decisions** — choices that pull in different directions ("Decision 1 targets suburban homeowners, but Decision 6's onboarding assumes 20+ tools visible nearby — a suburb shows 2-3. Does onboarding still work?").
2. **Missing reasoning** on important decisions — "if a new teammate asked *why* warm-community over clean-marketplace, what would you tell them?"
3. **Untested assumptions** — things the decisions require to be true. Cross-reference `/observe` output when present.
4. **Stale decisions** — early calls that later pivots may have invalidated.
5. **Changed decisions without downstream updates** — a revised decision whose dependents were never revisited.

---

## The v2 Checks (NEW — powered by the x-skills' richer metadata)

These use fields the x-skills write (`confidence`, `caseAgainst`, `assumptions`, `tripwires`, `dissent`, `stakes`, `reversibility`). When decisions.json lacks them (v1-era decisions), skip gracefully — the v1 checks still apply.

### 6. Tripwire patrol
For each recorded tripwire ("revisit decision 3 if X happens"): **check whether X has happened.** If the condition is about the outside world (a market shift, a competitor move, a price change, a season), run a quick WebSearch to check current reality. If it's about the project, check the other decisions and files for evidence. Fire only on real signal:
> "Decision 4's tripwire was 'revisit if a major competitor adds peer-to-peer lending.' Heads up — [Competitor] shipped exactly that in May ([link]). Worth re-opening?"

### 7. Toss-up re-test
For decisions recorded with `confidence: "tossup"` (or "lean"): the pick was made on thin evidence — has anything since settled it? Check later decisions and, when useful, one fresh search per toss-up. Report either "still a toss-up, your pick still holds" or "new information actually favors the option you didn't pick, here's why."

### 8. Dissent revisit
For decisions flagged `dissent: true` (the user overrode a STRONG PICK): revisit with fresh eyes, genuinely open to the user having been right. Report honestly in either direction — "your override is aging well because [evidence]" or "the concern that drove the original recommendation is materializing: [evidence]." Never say told-you-so; the point is early warning, not vindication.

### 9. Case-against check
Each decision's recorded `caseAgainst` was the strongest argument against the pick at decision time. Check whether anything downstream *answered* it. If a serious case-against was never mitigated by any later decision or plan task, surface it: "Decision 2's own case-against was seasonal demand collapse — nothing downstream addresses winter. Deliberate, or a gap?"

**Research etiquette:** a handful of targeted searches across checks 6-7-8, honoring `.decisions/sources.json` if present — this is a mirror, not a research project. If several checks need the web, you may fan them out as parallel subagents; otherwise inline searches are fine.

---

## Quality Gate — red-team your own challenges (NEW)

Before presenting, take each candidate challenge and try to kill it:
- Would the recorded reasoning or `caseAgainst` already answer it? (Then it's not a challenge, it's an echo — drop it.)
- Is it a deliberate, recorded tradeoff? (Drop it. Don't re-litigate settled reasoning.)
- Is it two challenges in different words? (Merge.)
- Is it a nitpick that wouldn't change any decision if true? (Drop.)
- Is the evidence real — a checked fact or a genuine tension — not a vibe? (If a vibe, drop or clearly label it a hunch.)

Only survivors reach the user, most consequential first. If red-teaming kills everything, say so honestly — that's the good outcome, not a failure to perform.

---

## How You Present

Same voice as v1 — curious, specific, one thought at a time, conversational plain text. **No HTML pages, no files changed, no options, no recommendations.**

> "I read through all [N] decisions[, checked your [M] tripwires against what's out there,] and here's what I noticed:
>
> **What looks solid:** [1-2 sentences — including any toss-up that's aging well or override that's proving right]
>
> **Worth thinking about:**
>
> 1. **[Short title]** — [the challenge, naming exact decisions, with links for anything checked against the world]
> 2. ...
>
> None of these are necessarily problems — they're the questions I'd want answered if I were building this. Want to dig into any?"

**If there's nothing to challenge:** say so, explain why the set is coherent, name the one thing to keep an eye on. Don't invent challenges.

**If the user focuses an area** ("challenge our pricing"): read everything for context, surface only challenges in that area.

---

## After the Challenges

Stop and wait. Digging in, dismissing, or asking for more are all fine. If they want to change a decision: point to `/journal` to record the change with reasoning — or, if the decision came from an x-skill run, they can also reply in that skill's syntax ("for decision-003 I want Option C") in a session of that skill. If a tripwire fired, suggest re-running the owning skill for just that decision.

---

## IMPORTANT REMINDERS

1. **Change nothing.** No files, no HTML, no decisions. Conversation only.
2. **Specific beats general** — exact decision numbers and names, links for anything you checked against the world.
3. **3-5 challenges** (more only under `challenge hard`), most consequential first, each having survived your own red-team.
4. **Tripwires get checked against reality, not just re-read.** That's the single biggest v2 upgrade — use the web.
5. **Honest in both directions** on dissents and toss-ups — "you were right" is as valuable as "this is drifting."
6. **Never re-litigate recorded, reasoned tradeoffs.** Respect the paper trail; challenge what it doesn't cover.
7. **Degrade gracefully** on v1-era decisions with no v2 metadata — the five classic checks always work.

