ultra-research
Skill4 starsChanged 6 months agoMITView on GitHub
Dual-model deep research with adversarial cross-audit. Claude and Codex each run their own deep-research skill independently on the same question, then each audits the OTHER's citations (claim-support: PASS/WEAK/FAIL → trust-score + verdict), and Codex synthesizes one trust-weighted final report with a disagreement ledger. All 5 notes (2 reports, 2 audits, 1 final) + an index land in a persistent Obsidian-style vault; the main session returns a concise bullet summary. Use for high-stakes questions, when the user wants dual-model / cross-verified research, or when a prior deep-research run came back mixed / unreliable. For ordinary research, use claudex:deep-research instead.
2 other projects use a version of this.
Adopted by
Most recently taken up by
- hint-shu/deep-researchtheir own version, first seen Apr 17, 2026
- hAcKlyc/MyAgents_skillstheir own version, first seen Feb 20, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- hAcKlyc/MyAgents_skills★ 59same name
- hint-shu/deep-research★ 4same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository5 other files it gives its agents.
- buildSkill
- deep-researchSkill
- emailSkill
- setupSkill
- thinkSkill
The file
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 3 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 22
Prefer plain claudex:deep-research by default.
- Distinctive: line 30
Never block mid-run after this point.
- Very specific: line 49
Claude (inline): run claudex:deep-research yourself on the same refined question.
- Very specific: line 67
If the post-loop ready check fails → DEGRADED branch A (below).
- Very specific: line 93
If the post-loop ready check fails → DEGRADED branch B.
- Very specific: line 110
If the post-loop ready check fails → DEGRADED branch C.
- Distinctive: line 128
A — no Codex report: do NOT fake adversarial merit.
- Distinctive: line 147
Always deliver a labeled result.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
ultra-research
$SKILL_DIR is this skill's directory. The Python helper is scripts/vault.py;
prompts are in prompts/. Read each prompt when you reach its stage.
When to use (routing)
Prefer plain claudex:deep-research by default. Use ultra-research only when: the
question is high-stakes (policy/financial/factual gravity); the user explicitly
asks for dual-model or cross-verified research; or a prior deep-research run on the
topic returned mixed/unreliable citation integrity.
Setup
- Disambiguate like deep-research: if the question is underspecified, ask 2–3 clarifying questions, then proceed; else state one interpretation and proceed. Never block mid-run after this point.
- Resolve paths and the run id:
VAULT="$(python3 "$SKILL_DIR/scripts/vault.py" vaultpath)" REFINED_QUESTION="$(cat <<'EOF'
<refined question>
EOF
)"
RUN="$(python3 "$SKILL_DIR/scripts/vault.py" runid --date "$(date +%F)" --question "$REFINED_QUESTION")"
RUNDIR="$VAULT/$RUN"
mkdir -p "$RUNDIR"
```
The question must be passed as one safely quoted shell argument; do not inline it
inside double quotes where embedded quotes can break the command.Stage 1 — independent research (parallel)
- Codex (background): dispatch
Agent(subagent_type: codex:codex-rescue)with the text ofprompts/codex-research.md, placeholders filled, including--writeand the absolute target$RUNDIR/20-report-codex.md. Prefer background. - Claude (inline): run
claudex:deep-researchyourself on the same refined question. When it finishes, write its verified report to$RUNDIR/10-report-claude.mdwith the report frontmatter (author-model: claude,note-type: report,degraded: false,tags: [ultra-research, report]). - Join: poll for the Codex file until ready or the deadline. Resolve the
per-stage timeout via the helper (handles scalar or object
codexTimeoutMs):
If the post-loop# Stage-1 research default: 20 min (1,200,000 ms) unless config overrides it. DEADLINE=$(( $(date +%s%3N) + $(python3 "$SKILL_DIR/scripts/vault.py" timeout --stage research) )) until python3 "$SKILL_DIR/scripts/vault.py" ready "$RUNDIR/20-report-codex.md"; do [ "$(date +%s%3N)" -ge "$DEADLINE" ] && break sleep 10 done if ! python3 "$SKILL_DIR/scripts/vault.py" ready "$RUNDIR/20-report-codex.md"; then # Execute DEGRADED branch A. fireadycheck fails → DEGRADED branch A (below).
Stage 2 — adversarial cross-audit (parallel)
Each report is audited by the OTHER model; auditors are blind to each other.
- Codex audits Claude (background): dispatch
codex:codex-rescue--writewith theprompts/audit.mdcontract + the absolute path$RUNDIR/10-report-claude.md, writing$RUNDIR/30-audit-of-claude-by-codex.md(author-model: codex,audited-report-model: claude). - Claude audits Codex (inline
Task): dispatch aTask(general-purpose) subagent and explicitly instruct it to useWebFetchfor every cited URL. Give it theprompts/audit.mdcontract assembled inline and the path$RUNDIR/20-report-codex.md; it writes$RUNDIR/31-audit-of-codex-by-claude.md(author-model: claude,audited-report-model: codex). Joined by the subagent's return. - Join Codex audit: recompute the deadline from a fresh clock read and the
Stage-2 audit timeout (default 10 min):
If the post-loopDEADLINE=$(( $(date +%s%3N) + $(python3 "$SKILL_DIR/scripts/vault.py" timeout --stage audit) )) until python3 "$SKILL_DIR/scripts/vault.py" ready "$RUNDIR/30-audit-of-claude-by-codex.md"; do [ "$(date +%s%3N)" -ge "$DEADLINE" ] && break sleep 10 done if ! python3 "$SKILL_DIR/scripts/vault.py" ready "$RUNDIR/30-audit-of-claude-by-codex.md"; then # Execute DEGRADED branch B. fireadycheck fails → DEGRADED branch B.
Stage 3 — trust-weighted final synthesis
Dispatch codex:codex-rescue --write with prompts/final-synthesis.md, the four
absolute paths filled in. It writes $RUNDIR/90-final-report.md and prints a bullet
summary to stdout.
- Poll with a freshly recomputed Stage-3 synthesis timeout (default 10 min):
If the post-loopDEADLINE=$(( $(date +%s%3N) + $(python3 "$SKILL_DIR/scripts/vault.py" timeout --stage synthesis) )) until python3 "$SKILL_DIR/scripts/vault.py" ready "$RUNDIR/90-final-report.md"; do [ "$(date +%s%3N)" -ge "$DEADLINE" ] && break sleep 10 done if ! python3 "$SKILL_DIR/scripts/vault.py" ready "$RUNDIR/90-final-report.md"; then # Execute DEGRADED branch C. fireadycheck fails → DEGRADED branch C. - The file is canonical; the rescue stdout is display-only.
Index + present
- Assemble
$RUNDIR/00-index.mdfromprompts/index.md. Read audit verdicts for the status table with:python3 "$SKILL_DIR/scripts/vault.py" get "$RUNDIR/30-audit-of-claude-by-codex.md" trust-verdict python3 "$SKILL_DIR/scripts/vault.py" get "$RUNDIR/30-audit-of-claude-by-codex.md" trust-score python3 "$SKILL_DIR/scripts/vault.py" get "$RUNDIR/31-audit-of-codex-by-claude.md" trust-verdict python3 "$SKILL_DIR/scripts/vault.py" get "$RUNDIR/31-audit-of-codex-by-claude.md" trust-score - Present to the user: the bullet summary, the two trust-verdicts, and the vault
path
$RUNDIR.
Degraded branches (never hard-fail; always label)
Degraded notes get degraded: true in frontmatter AND a first-line banner:
> **⚠️ DEGRADED — single-model run; adversarial cross-audit merit absent.**
- A — no Codex report: do NOT fake adversarial merit. Base the final on Claude's
deep-research report (already deterministically verified). Optionally attach a
Claude self-audit ONLY if labeled
self-audit — NOT adversarial; equivalent to plain deep-research integrity. Write a degraded90-final-report.mdand a degraded00-index.md. - B — Codex audit failed: Claude audits Codex's report normally (adversarial in
that direction) AND self-audits its own report under the explicit
self-audit — NOT adversarial; equivalent to plain deep-research integritylabel; proceed to Stage 3; mark the run partially degraded. - C — Codex synthesis failed: Claude writes
90-final-report.mdfrom the four inputs using the Stage-3 merge algorithm; set bothauthor-model: claudeandsynthesized-by: claude. Not full DEGRADED (all four inputs exist) — just note the synthesis fallback.
Hard rules
- Each side's own deterministic citation verification still runs inside its own report; the cross-audit is an ADDITIONAL adversarial layer.
- An auditor never audits its own report (except the explicitly-labelled degraded self-audit, which never counts as adversarial merit).
- The
90-final-report.mdfile — not any stdout — is the canonical final report. - Always deliver a labeled result; never stop to ask permission mid-run.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

