---
name: challenge
description: "Stress-tests a claim against the operator's own graph. Retrieves nodes that contradict or qualify the claim and presents the strongest counter-case. Run when the operator types `/challenge <claim>` or says 'challenge my assumption that X', 'find evidence against X', 'what contradicts X in my notes'. Never fabricates a counter-case — if no adversarial nodes surface, reports that explicitly."
---

# Challenge

Invoked by the admin agent directly.

This skill retrieves nodes from the operator's graph that contradict or qualify a given claim. It presents the strongest counter-case the graph can support. It reads only — it never writes.

## When to run

Run when the operator wants to stress-test an assertion against their own stored knowledge: `/challenge <claim>`, "challenge my assumption that X", "find evidence against X in my graph", "what contradicts X". Do not run as a routine check; run only when the operator has a specific claim to examine.

## Method

Issue `memory-search` with two query phrasings:

1. The claim verbatim.
2. A contra-framing: "evidence against `<claim>`", "limitations of `<claim>`", "counterexample to `<claim>`".

Parameters: `limit=10, expandHops=1`.

From the returned node set, select the nodes whose content most directly contradicts or qualifies the claim — nodes that assert the opposite, name exceptions, or add significant caveats. Rank them by how strongly they challenge the claim. Present each with its node ID and fusion score.

If no adversarial nodes surface (all returned nodes support the claim), report that explicitly: "No contradicting nodes found in your graph for this claim." Do not fabricate a counter-case.

## Output

Present counter-nodes as a ranked list:

```
## Strongest counter-evidence found

1. [Node title or excerpt] (ID: `<elementId>`, score: `<fusionScore>`)
   Why it challenges the claim: [one sentence]

2. ...
```

If no counter-evidence exists:
```
No nodes found in your graph that contradict or qualify this claim.
```

## Observability

Emit one log line on invocation:
```
[memory-thinking] skill=challenge nodeIds=[<id1>,<id2>,...] fusionScores=[<s1>,<s2>,...] elapsedMs=<N>
```

`nodeIds` and `fusionScores` list only the nodes presented as counter-evidence (not all retrieved nodes). If no counter-evidence was found, `nodeIds=[]` and `fusionScores=[]`.
