Skip to main content

Professional Research

Multi-source research briefs with citations and grading.

Skill metadata​

SourceBundled (installed by default)
Pathskills/research/professional-research
Version1.0.0
AuthorVibeOS
LicenseMIT
Platformslinux, macos, windows
Tagsresearch, citations, analysis, web-search, brief
Related skillsarxiv, academic-literature, source-critique, comparative-analysis, visual-source-extract, blogwatcher, llm-wiki, challenge-gate

Reference: full SKILL.md​

info

The following is the complete skill definition that VibeOS loads when this skill is triggered. This is what the agent sees as instructions when the skill is active.

Professional Research Skill

Produce a cited research brief from multiple sources. Prefer existing tools — web_search, web_extract, browser_navigate / browser_snapshot, execute_code, and (when installed) Perplexity MCP. Do not invent URLs.

When to Use​

  • User asks for a professional brief, due diligence, market/tech scan, or “research X with sources”.
  • Topic needs more than one search hit or one page summary.
  • RU/Cyrillic queries when web.search_backend: yandex (or Yandex is available).

Do not use for:

  • One-shot factual lookup answerable by a single web_search.
  • Pure academic paper hunt → prefer arxiv skill (+ Scholar MCP if installed).
  • GUI desktop work → computer_use / browser skills.

Prerequisites​

  • web_search available (any backend). For RU: Yandex Search (YANDEX_SEARCH_API_KEY + YANDEX_FOLDER_ID).
  • Extract backend for long pages: Firecrawl / Tavily / Exa / Parallel (web_extract), or browser snapshot when summarization would drop fields.
  • Optional: Perplexity MCP (perplexity_research) for expensive deep synth — only when the user wants one-shot synthesis and accepts higher cost.

How to Run​

  1. Decompose the question into 2–5 sub-queries (synonyms, stakeholders, dates).
  2. Run web_search per sub-query (limit 5–10). For RU topics, prefer Yandex.
  3. Deduplicate URLs; keep top candidates.
  4. Score with the helper script (from this skill directory):
python3 scripts/score_sources.py <<'EOF'
{"query":"TOPIC","sources":[{"url":"...","title":"...","snippet":"...","published":"YYYY-MM-DD"}]}
EOF
  1. web_extract the best A/B sources (usually 3–8 URLs). Use browser tools when you need raw structure the extract summarizer might drop.
  2. If browser_navigate returns challenge / bot_detection_warning, follow challenge-gate (avoid → one assist → human → partial). Log challenge.md.
  3. Check contradictions across sources; mark unresolved conflicts.
  4. Write the brief (template below). Every non-obvious claim needs a citation.

Quick Reference​

StepTool / script
Searchweb_search
Score / dedupescripts/score_sources.py
Read pagesweb_extract or browser_snapshot
Deep synth (optional)Perplexity MCP perplexity_research
Tables / statsexecute_code

Procedure​

Source grading (interpret script grades)​

GradeMeaning
APrimary / official / peer-strong + fresh enough
BReputable secondary (major news, strong docs)
CUseful but weaker; corroborate before relying
DLow trust or stale — background only

Signals from the script: primary, news, secondary, fresh, stale, low-trust-host.

Deliverable templates​

Copy from templates/ when the user asks for a specific shape:

TemplateFile
Default research briefinline below
Executive (≤1 page)templates/executive-brief.md
Technical due diligencetemplates/technical-due-diligence.md
Market scantemplates/market-scan.md
Incident / timelinetemplates/incident-timeline.md

Screenshots / scans / clips → load visual-source-extract first, then merge facts.

Offline structural check (no LLM):

python3 scripts/eval_brief.py --brief brief.md --sources sources.json

Brief template (always use)​

# <Topic> — Research Brief

## Question
<one sentence restatement>

## Executive answer
<3–6 sentences; cite inline as [1], [2]>

## Key findings
1. ... [n]
2. ...

## Evidence table
| # | Claim | Source | Grade | Notes |
|---|-------|--------|-------|-------|
| 1 | ... | title + URL | A/B/C | ... |

## Contradictions / gaps
- ...

## Confidence
High | Medium | Low — <why>

## Sources
1. Title — URL (accessed YYYY-MM-DD)
2. ...

## Method
Sub-queries used; backends (e.g. yandex + firecrawl); extract count.

Citation rules​

  • Prefer primary docs, official pages, peer literature, wire services.
  • Never fabricate a URL, quote, date, or statistic.
  • If extract fails, say so and fall back to search snippet + browser, or drop the claim.
  • Mark paywalled / inaccessible sources explicitly (access: blocked_by_challenge or partial in sources.json when a CAPTCHA/bot-wall blocked the page).
  • Never invent quotes or facts from a page still behind a challenge.

Pitfalls​

  • Do not dump raw SERP lists as the answer — synthesize.
  • Do not let web_extract summarization erase numbers you need; re-fetch with browser tools for structured pages.
  • Do not enable Perplexity MCP by default for every query — cost and less control over intermediate sources.
  • Keep prompt-cache safe: do not ask to swap toolsets mid-session; use what is already loaded.
  • Do not spam browser clicks on CAPTCHA; use challenge-gate + clarify.

Verification​

Before finishing:

  • Executive answer has at least two citations.
  • Every Evidence-table row has a real URL you fetched or searched.
  • Contradictions/gaps section is present (even if “none found”).
  • Confidence is stated with a reason.
  • Method lists backends and sub-queries.