A machined hub with four needle-tipped probe arms of different lengths, cut open to show one cyan channel running from the longest arm through a gate into a stacked chamber and out a ring on top.
Research

Research

Multi-agent web research with verified URLs and confidence-tagged output at four depths

14
Workflows
01
Tool
04
References
36
Triggers

The Problem

A generic AI doing research is one model querying its own training data, hallucinating URLs it can't verify, and returning a single confident perspective on a topic that has real disagreement. There's no cross-checking, no adversarial verification, no distinction between 'this is well-established' and 'this is one source's claim.' When you ask it to find what fans thought of something, you get what press releases said — because it can't tell the difference. Broken links get served as citations.

How This Skill Approaches It

Four depth modes scale from a single Perplexity agent (Quick, ~10s) up to seven parallel explorers plus two independent verifiers who never see the explorers' reasoning (Extensive, ~60-90s) and a loop-compatible Deep Investigation that builds a persistent vault in MEMORY/RESEARCH/ across sessions. Every URL is verified before delivery — a hallucinated link is a catastrophic failure, not an acceptable approximation. Confidence tagging ([HIGH]/[MED]/[LOW]/[CONFLICT]) appears inline so you know exactly what to trust. When the question is about community sentiment, the skill detects that signal at Step 0 via SourceRoutingProtocol and routes to Reddit JSON API and X before touching recap journalism. Fabric's 242+ patterns slot in for structured extraction. The whole stack feeds into blogging, newsletter, and social post workflows, so research findings move directly into published content without a copy-paste step.

Not for entity background, papers (ArXiv), JSON entity extraction, wisdom extraction (ExtractWisdom), raw page fetching or crawling (BrightData)

In Action

What you say to your DA, and what the Research skill actually does.

  • You say "research the current state of AI agent frameworks"
    Runs StandardResearch workflow: fans out to Claude + Gemini + Grok + Perplexity in parallel, cross-references findings at the synthesis step, confidence-tags every claim, verifies all URLs before returning, and delivers a cited report in ~15-30 seconds.
  • You say "do a deep investigation of the enterprise security posture management market"
    Runs DeepInvestigation workflow: broad landscape scan first, then entity discovery and priority scoring, then deep-dives on CRITICAL and HIGH entities one at a time — persisting the knowledge vault to MEMORY/RESEARCH/ so the investigation can resume across sessions.
  • You say "quick research on Hono middleware patterns for SSR"
    Runs QuickResearch workflow with a single Perplexity agent, returns key patterns and verified links in ~10-15 seconds.

Inside the Skill

The thinking, frameworks, and architecture that distinguish this skill from a generic version of the same task.

Ideal State

  • Every URL in a delivered answer was fetched and its page supports the claim it is cited for; a link that could not be verified was dropped, never shipped.
  • The depth matches the ask: "research" alone ran Standard, Quick ran only on an explicit quick request or an everyday look-up, and each tier's vendor roster was complete (a higher tier never drops a vendor a lower tier uses), or the answer says which slot was swapped and why.
  • Findings carry [HIGH] [MED] [LOW] [CONFLICT] tags from cross-checking, and a disagreement between sources is shown with both sides rather than averaged away.
  • A sentiment or lived-experience answer rests on the communities first (each platform's official API, then a licensed data product only where the platform has no API, then web search for context), quotes people verbatim with their thread URLs, and carries the disappointments alongside the praise.
  • A claim that a venue exists, is open, keeps certain hours, or books a certain way matches the official page of the venue or its host property.
  • A request this skill should not own left it: entity background to an OSINT skill, papers to ArXiv, an X URL through the X-URL gate with the path taken named in the answer.

Intent Routing

Intent Trigger File
QuickResearch "quick research", "minor research", everyday look-ups (venue, hours, travel, best-of); 1 Perplexity call, 1 query, no agent Intents/QuickResearch.md
StandardResearch "research", "do research", "research this": the DEFAULT; Claude + Gemini + Perplexity + OpenAI/Codex cross-checked as parallel tool calls in the session, no agents; + Grok when X is a plausible source Intents/StandardResearch.md
ExtensiveResearch "extensive research", "deep research", "comprehensive research"; all five vendors, 7 explorers + 2 verifiers, + a community slot on lived-experience questions Intents/ExtensiveResearch.md
DeepInvestigation "deep investigation", "investigate [topic]", "map the [X] landscape"; progressive deepening into a persistent vault, loop-compatible Intents/DeepInvestigation.md
DeepVerifiedResearch deep verified or fact-checked research: claim-level adversarial verification, the slowest tier (Tool contract below) Intents/DeepVerifiedResearch.mjs
Verify Verify research findings / cross-check claims / confidence scoring Intents/Verify.md
ExtractAlpha Extract alpha / deep analysis / highest-alpha insights Intents/ExtractAlpha.md
Retrieve Difficulty accessing content (JavaScript-rendered pages, multi-page pulls, a site that refuses automated access) Intents/Retrieve.md
YoutubeExtraction YouTube URL extraction (use fabric -y URL immediately) Intents/YoutubeExtraction.md
WebScraping Web scraping Intents/WebScraping.md
ClaudeResearch Claude WebSearch only (free, no API keys) Intents/ClaudeResearch.md
InterviewResearch Interview preparation (surprise-maximizing questions, style from PREFERENCES.md) Intents/InterviewResearch.md
AnalyzeAiTrends AI trends analysis Intents/AnalyzeAiTrends.md
Fabric Use Fabric patterns (242+ specialized prompts); "enhance content" or "improve this" runs improve_writing here Intents/Fabric.md
ExtractKnowledge Extract knowledge from content Intents/ExtractKnowledge.md
File Read when
SourceRoutingProtocol.md Step 0 of every research intent: the sentiment, technical and discourse signals, the per-platform API → vendor data product (no-API platforms only) → web-search cascade, and the sentiment-mode output shape
UrlVerificationProtocol.md before delivering any URL: the one verifier, Tools/VerifyUrls.ts, which checks each URL's body for the key phrase its citation rests on; bun test ./skills/Research/Tests is its self-test
QuickReference.md comparing modes: roster, speed, and the verification each mode adds
Setup.md first-time setup: the vendor accounts and keys each depth uses, the optional community sources, and a read-only check
References/WorkflowScripts.md explaining DeepVerifiedResearch voting, running the research.mjs smoke test, or changing the orchestration (rosters, verifiers, voters; holds the Anthropic drift check)
References/Examples.md unsure which intent a request lands on (worked examples)
Templates/ DeepInvestigation domain packs: Templates/MarketResearch.md (Companies, Products, People, Technologies, Trends, Investors) and Templates/ThreatLandscape.md (Threat Actors, Campaigns, TTPs, Vulnerabilities, Tools, Defenders); with no match the intent builds entity categories from the landscape research

Tool contract

Verification runs in three layers, inspired by Nomad (arXiv:2603.29353). Intents/Verify.md holds the full protocol.

Layer What Where
Self-Verification Each researcher agent drops URLs it cannot reach and tags confidence before returning; this is a pre-filter, never the verification of record, and every delivered URL still passes Tools/VerifyUrls.ts (UrlVerificationProtocol.md) Extensive, Deep (Quick and Standard run no agents)
Cross-Check Synthesis step detects conflicts and cross-references findings Standard, Extensive, Deep
Independent Verification Dedicated verifier agents with no access to explorer reasoning Extensive, Deep only

DeepVerifiedResearch runs through the Workflow tool: Workflow({scriptPath: 'skills/Research/Intents/DeepVerifiedResearch.mjs', args: {question: '...'}}), with args passed as an object, never a JSON string. It is slower than Extensive (~150-190s vs ~60-90s); reach for it only when claims must be bulletproof. Its votes judge each claim on the explorer's quote and never fetch the page, so its result returns urlVerification: pending with urlCheckPairs; run those through Tools/VerifyUrls.ts before delivering any of its URLs.

Intents/research.mjs is EXPERIMENTAL and not a route until one smoke run lands (command in References/WorkflowScripts.md); StandardResearch.md and ExtensiveResearch.md stay the default path.

Data & Config

Before executing, check for user customizations at <configRoot>/LIFEOS/USER/CUSTOMIZATIONS/SKILLS/Research/ (configRoot is $CLAUDE_CONFIG_DIR when set, else ~/.claude). When the directory exists, its PREFERENCES.md, configurations and resources override the defaults here; when it does not, the skill defaults stand.

First-time setup (vendor accounts, keys, the codex tool) is in Setup.md.

Gotchas

  • X/Twitter-URL gate, checked before anything else. Scan the prompt for x\.com|twitter\.com (e.g. rg -q 'x\.com|twitter\.com' on the request text) before spawning any research agents. X blocks WebFetch and generic scraping, so generic research agents pointed at the URL burn turns and return nothing. When the gate fires, take the first path below that is actually available, and say in the response which path you took and why; a silent skip is a failure:
    1. A dedicated X/Twitter reader skill, if one is installed — it is the highest-fidelity path.
    2. X_BEARER_TOKEN in the environment → read the post via X API v2 directly.
    3. The principal's own exported X data, if provided.
    4. None of the above → tell the user plainly that X does not allow automated reads here and ask them to paste the post text. Then research the substance normally. Research the rest of the request either way: one unreadable X URL never cancels the whole task.
  • Recap journalism is not fan sentiment. Press articles invent consensus, fabricate timestamps, and parrot promoter copy, so on a community-sentiment question X goes through the X-URL gate ladder above and recap web search stays the secondary source. Quick mode can return recap-only and miss the actual fan data; pull Reddit directly rather than waiting to be asked again.
  • API first, a licensed data product second where there is no API, web search last; never invert. For every platform, try the official API path (Reddit JSON, X API v2 if X_BEARER_TOKEN is set, YouTube Data API v3 if YOUTUBE_API_KEY is set) before a vendor data product (BrightData, or a data-product skill the install carries). A vendor product is the fallback for platforms with no API, within each platform's terms; for Reddit and X, when the API path is unavailable or rate-limited, the run reports it rather than switching routes. A vendor product also covers data shapes the API does not expose (YouTube transcripts use fabric -y even when the Data API key is set). The cascade inversion is the recurring failure mode. SourceRoutingProtocol.md § Cascade Priority has the per-platform table.
  • A refused page is reported, not worked around (principal, 2026-10-12, revised). A 403, a bot wall, a CAPTCHA or a login wall on a cited source means the site does not allow automated access. The run tags that finding unverified, names the URL and the reason in the response, and looks for the same fact in another source, the site's official API, or a copy the principal can open. A page that only fails because it renders client-side is read in a real browser through Interceptor. Paid vendor products (Bright Data, Apify actors) need the principal's yes first, except a single cheap call, and are used within the target site's terms.
  • Everyday look-ups are research too, and route to Quick (2026-09-30). Some questions never say "research": "best in ", "a plan for our trip", "can non-guests use 's facilities", "where is this venue". Sent to raw WebSearch, single-summary answers put wrong claims in a plan that a Quick run caught (closed days, departed staff, changed booking channels). Unless the principal asks for depth, treat a travel, venue, or best-of question as Quick mode.
  • For "does it exist / is it open", the venue's own page wins (2026-09-30). A single search answer can deny a venue that its host property's own page lists. When a claim is about whether a venue exists, its hours, or how to book, check the official site of the venue or its host property before stating it.
  • An Extensive run with only Anthropic, Google and Perplexity agents is a failed roster (2026-09-26). A run left OpenAI and Grok out because both were gated on narrow technical/discourse signals. Every vendor runs at the top tier. Grok's brief stays public-only; when the question carries Restricted Data, its slot becomes a Claude slot and the response says so.
  • Due diligence, background checks and people lookup go to a dedicated OSINT/entity-investigation skill, not Research. Research handles general investigation; entity-specific deep investigation belongs to that skill.
  • "extract alpha" routes to the ExtractAlpha intent, not the ExtractWisdom skill. They are different things.
  • DeepVerifiedResearch.mjs is a Workflow-tool script, not a markdown intent. Invoke it with the Workflow tool (scriptPath), never by reading it and "doing the steps": dedup, fetch-budget, vote-counting, and the abstention guard exist to run deterministically in code. Running it spawns many agents and live web calls, so it is opt-in multi-agent: confirm with the principal (or use args.test: true for a small smoke run) rather than firing a full ~30–95-agent run unprompted.

References

  • Skills this one uses: BeCreative (deep thinking for extract alpha), BrightData (single-URL fetches, crawls and search results through the vendor's documented products).

Workflows & Routing · 14

Each workflow is one job the skill runs. The trigger phrases route your request to the right one — this is the skill's routing table.

  1. 01
    QuickResearch Intents/QuickResearch.md

    quick research, minor research, everyday look-ups (venue, hours, travel, best-of); 1 Perplexity call, 1 query, no agent

  2. 02
    StandardResearch Intents/StandardResearch.md

    research, do research, research this: the DEFAULT; Claude + Gemini + Perplexity + OpenAI/Codex cross-checked as parallel tool calls in the session, no agents; + Grok when X is a plausible source

  3. 03
    ExtensiveResearch Intents/ExtensiveResearch.md

    extensive research, deep research, comprehensive research; all five vendors, 7 explorers + 2 verifiers, + a community slot on lived-experience questions

  4. 04
    DeepInvestigation Intents/DeepInvestigation.md

    deep investigation, investigate [topic], map the [X] landscape; progressive deepening into a persistent vault, loop-compatible

  5. 05
    DeepVerifiedResearch Intents/DeepVerifiedResearch.mjs

    deep verified or fact-checked research: claim-level adversarial verification, the slowest tier (Tool contract below)

  6. 06
    Verify Intents/Verify.md

    Verify research findings / cross-check claims / confidence scoring

  7. 07
    ExtractAlpha Intents/ExtractAlpha.md

    Extract alpha / deep analysis / highest-alpha insights

  8. 08
    Retrieve Intents/Retrieve.md

    Difficulty accessing content (JavaScript-rendered pages, multi-page pulls, a site that refuses automated access)

  9. 09
    `Intents/WebScraping.md` Workflows/`Intents/WebScraping.md`.md

    Web scraping

  10. 10
    `Intents/ClaudeResearch.md` Workflows/`Intents/ClaudeResearch.md`.md

    Claude WebSearch only (free, no API keys)

  11. 11
    `Intents/InterviewResearch.md` Workflows/`Intents/InterviewResearch.md`.md

    Interview preparation (surprise-maximizing questions, style from PREFERENCES.md)

  12. 12
    `Intents/AnalyzeAiTrends.md` Workflows/`Intents/AnalyzeAiTrends.md`.md

    AI trends analysis

  13. 13
    `Intents/Fabric.md` Workflows/`Intents/Fabric.md`.md

    Use Fabric patterns (242+ specialized prompts); enhance content or improve this runs improve_writing here

  14. 14
    `Intents/ExtractKnowledge.md` Workflows/`Intents/ExtractKnowledge.md`.md

    Extract knowledge from content

Tools · 1

Deterministic executables the workflows call — the code that does the real work, not prompt scaffolding.

  • VerifyUrls.ts

How to Invoke

Say any of these to your DA and LifeOS activates the Research skill automatically:

  • "research"
  • "do research"
  • "quick research"
  • "extensive research"
  • "deep investigation"
  • "find information"
  • "investigate"
  • "extract alpha"
  • "analyze content"
  • "retrieve content"
  • "AI trends"
  • "enhance content"
  • "extract knowledge"
  • "web scraping"

Or invoke explicitly:

Skill("Research")

References · 4

Auxiliary files the skill loads at runtime — frameworks, guides, configs.

  • QuickReference
  • Setup
  • SourceRoutingProtocol
  • UrlVerificationProtocol

References & Credits

The thinkers, books, frameworks, and research this skill is built on. The ideas belong to them — the integration belongs to LifeOS.

Want LifeOS to do this for you?

Install LifeOS on your machine — your DA gets the Research skill plus 96 others, all hooked into one Life OS.