Consult a different model for orthogonal reasoning on a consequential decision, especially when confident. Discovers whichever model CLI is installed rather than assuming a vendor. Use when the user says "second opinion", "cross-model", "ask another model", "stress-test this", "what am I missing", "red-team this decision", or before committing to an architecture, a schema, a security boundary, or anything hard to reverse. Do NOT use for reversible local decisions, for questions with one verif...
Installs into .claude/skills of the current project.
Are you the author of Cross Model?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/gufranco-cross-model)
---
name: cross-model
description: Consult a different model for orthogonal reasoning on a consequential decision, especially when confident. Discovers whichever model CLI is installed rather than assuming a vendor. Use when the user says "second opinion", "cross-model", "ask another model", "stress-test this", "what am I missing", "red-team this decision", or before committing to an architecture, a schema, a security boundary, or anything hard to reverse. Do NOT use for reversible local decisions, for questions with one verifiable answer (read the source instead), or for routine implementation.
argument-hint: "/cross-model [expand|stress] <the decision, with context>"
allowed-tools: "Read, Grep, Glob, Bash"
user-invocable: true
---
Different training data, different tuning, different sampling. The blindspots do not line up. That non-overlap is the entire product; agreement is a bonus, not the goal.
Invoking this is a mark of rigor, not an admission of uncertainty. It means the decision was taken seriously enough to generate friction against it.
## The Key Inversion
Consult **when the decision is consequential and you are confident.** Confidence is exactly where a blindspot hides, because there is nothing prompting a second look. A decision that already feels shaky gets scrutiny for free.
The corollary: adversarial coverage from the same model shares its blindspots by construction. A subagent that reviews your reasoning is running the same priors that produced it. That is worth doing and it is not this.
## When To Invoke
Consequential, regardless of confidence:
- An architecture choice before committing, especially a public interface, a data model, or a service boundary.
- A security-sensitive surface: authentication, tenant isolation, payment handling, anything reachable by an untrusted caller.
- A schema change or migration, which is hard to reverse.
- Concurrency: locking, idempotency, distributed coordination, anything where the failure is a race.
- A decision that constrains future options more than it looks like it does.
Moments where a second perspective pays for itself:
- Before committing to a direction, never after the investment is sunk.
- When it feels obvious.
- When the need is to expand options rather than pick among the ones already listed.
- In a problem space where training coverage is plausibly thin.
Skip it when the decision is reversible in the next commit with no migration and no coordination, when nothing downstream depends on it, or when the answer is a fact that reading the source settles. Reading the source is cheaper and definitive; see the anti-hallucination table in [the global instructions](../../CLAUDE.md).
## Two Modes
| Mode | Timing | Ask |
|---|---|---|
| `expand` | Before a candidate exists | "What approaches am I not considering? Give tradeoff profiles, then a principled recommendation." |
| `stress` | After a candidate exists | "Here is the design. What would make it wrong? Findings first, be adversarial." |
Default to `expand` when no direction is chosen yet, `stress` when one is. Blocked rather than deciding is still a valid reason to invoke; shift the framing from "expand my options" to "here is exactly where I am stuck and what I have ruled out."
## Discovering the Consultant
Never hardcode a vendor or a script path. Resolve what is actually installed, and say which one was used in the report.
```bash
for c in codex gemini llm aichat mods ollama; do
command -v "$c" >/dev/null 2>&1 && echo "available: $c"
done
```
Then invoke it in its own idiom. Check `--help` before composing the call rather than guessing flags, per the external-tools rule in [the global instructions](../../CLAUDE.md). Prefer the highest reasoning setting the tool offers; this is a low-frequency, high-stakes call, so latency does not matter.
When nothing is installed, say so plainly and offer the nearest substitute: an adversarial same-model pass with an explicitly assigned opposing stance, labeled as same-model so its weaker independence is visible. Do not silently degrade to that and present it as a cross-model result.
## Composing the Prompt
Tight, with the intent stated. Four parts:
1. **Context**: the constraints that actually bind, the scale, what is already fixed and not up for debate.
2. **The artifact**: the code, the schema, the design, verbatim.
3. **The ask**: expand, evaluate, or synthesize.
4. **The output shape**: name it, or the reply arrives in a form that is hard to use.
Useful shapes to request: `tradeoff profiles + principled recommendation`, `findings first`, `threat model + mitigations`, `step plan with verification`.
Two prompt rules that raise quality measurably:
- **Prefer disconfirmation.** "What would make this wrong?" outperforms "Is this right?" The second invites agreement.
- **Ask for file paths and verification steps.** A claim that names where to check is a claim you can falsify, which suppresses confident invention.
**Never paste secrets, credentials, tokens, or personal data.** This leaves the machine and goes to a third party. Redact or summarize, per [`security.md`](../../rules/security.md) and [`privacy-defaults.md`](../../rules/privacy-defaults.md). The same obligation as any external publication applies: sending content to an external service publishes it.
## Reading the Response
The response is a **relay, not a source**. Every specific it carries, a file path, a line, an API name, a version, a benchmark number, is re-verified against the primary source before it enters your work. See [`relay-not-source.md`](../../rules/relay-not-source.md). Another model's citation is exactly as likely to be a well-formed wrong coordinate as any other relay, and it arrives with more apparent authority.
| Outcome | What it means |
|---|---|
| Agreement | Real signal for calibration, and not proof. Both models may share a blindspot inherited from similar training. On a genuinely high-stakes call, ask what neither of you would see |
| Divergence | Usually the most valuable result. It marks a non-obvious tradeoff, an unexamined assumption, or an edge case one of you missed |
| It looks wrong to you | Articulate **why** before dismissing it. If the flaw cannot be stated clearly, that inability is the finding, and your confidence was the blindspot |
**Synthesize, do not select.** The best outcome is usually a third answer neither model proposed, built from what each contributed. Picking a winner throws away the part that made the friction worth generating.
Do not rush to resolve disagreement. Sit with it in proportion to the stakes. For a lower-consequence call, take a direction and move; consensus was never the goal.
## Multi-Turn
Most tools support resuming a session. Three rounds is a productive shape: evaluate the framework, drill into the specific area that surfaced, then ask for a synthesis paste-ready for the actual artifact.
Capture the session identifier before truncating output. Piping through `tail` commonly cuts the header that carries it, which forecloses returning to that thread later.
## Reporting Back
State four things, briefly:
- Which model was consulted, and that it was a different model.
- What it added that was not already on the table.
- Where it diverged, and how the divergence was resolved.
- What was re-verified against a primary source before being used.
Never present its output as your own analysis, and never present it as authoritative. It is one more perspective that has been checked, per [`ai-guardrails.md`](../../rules/ai-guardrails.md).
## Related
- [`/spike`](../spike/SKILL.md) answers a design question by building a throwaway artifact. Use it when the question is empirical rather than a matter of judgment.
- [`/interview-me`](../interview-me/SKILL.md) sharpens an underspecified request before it is worth consulting anyone about.
- [`/review`](../review/SKILL.md) and the red-team agent give same-model adversarial coverage, which composes with this rather than replacing it.
- [`/plan`](../plan/SKILL.md) records the resulting decision. A consultation that changed the direction belongs in the decision record with what changed it.