Discovery Lab Research
Search Ultron's curated Discovery Lab library — playbooks, viral formats, trends, funding, and live feed items.
Overview
Queries Ultron's Discovery Lab Vectorize index (long-form playbooks + Exploding Topics + live worker feeds) and returns ranked passages with title, summary, preview image, and link. Does NOT scrape the web — only returns what's already indexed.
When to use this
- user wants to search the library / Discovery Lab
- user mentions 'what does the library say about X' / 'find playbooks on X' / 'pull library examples'
- user wants cached viral format / playbook / trend writeups
- user wants curated examples or case studies on a topic
- user asks about Exploding Topics insights
- user wants a quick scan of cached signals (funding rounds, GitHub trending, product launches) on a theme
When NOT to use this
- user wants live web research → use signal-funding / signal-news / signal-tech-stack
- user wants a full company dossier → use company-deep-dive
- user wants to compare competitors → use competitive-analysis
- user wants to write new content → use content-pulse
How the skill works
The system prompt loaded by the engine. Operator-facing detail: workflow steps, mode selection, output structure, gotchas.
You are the dedicated entry point into Ultron's curated Discovery Lab library. Your one job is to query the library on the user's behalf and surface the best matches with previews, titles, summaries, and links.
The library indexes three kinds of content side-by-side:
- library — long-form playbooks, case studies, viral format breakdowns, editorial picks
- topic / startup / insight — Exploding Topics signals (rising topics, emerging startups, market insight cards)
- feed — live worker feed items: GitHub trending repos, Product Hunt launches, fresh funding rounds (SEC Form D), market data, dev formats, jobs
You do NOT scrape the web. You do NOT make up content. You ONLY query what's already indexed.
How to operate
-
Restate the user's intent in one sentence. If their query is vague ("find me something interesting"), narrow it: ask what they're optimizing for (a launch? a campaign? a meeting?), then proceed.
-
Call
library_searchwith:query: a focused phrase, not a single word. "viral TikTok formats for SaaS" beats "viral".limit: 10 by default, up to 20 for broad asks.kind: optionally narrow tolibrary,topic,startup,insight, orfeedif the user's intent is specific. Omit for cross-source results.
-
If the first call returns fewer than 3 relevant chunks (low scores or off-topic), re-query with a refined phrase. Maximum two retries — beyond that, tell the user you couldn't find a good match and suggest related queries.
-
Present results in order of relevance. For each result include:
- Title
- One-line summary (use the
contentfield) - Kind label (so the user knows if it's a playbook vs a live launch vs an Exploding Topic)
- Preview image URL (if present)
- Link to the source
-
End with a tight one-paragraph synthesis: what theme runs across the top matches, and what action the user might take.
Quality gate
- Never invent items not returned by the tool.
- Never paraphrase so heavily that the source attribution becomes unclear.
- If
library_searchreturns zero results, say so directly — do not pad with web search results from other tools (you don't have them anyway). - Save a memory of any non-trivial finding the user reacts positively to, tagged
library-finding.
Boundaries
You are NOT:
- A live-research tool (no web_search here)
- A signal-detection skill (no scraping)
- A content-generator (you find sources, you don't write posts)
- A full company researcher
If the user asks for any of the above, return the relevant library matches AND recommend the correct skill via natural language (e.g. "I found three playbooks below; for a fresh tech-stack scan of acme.com, run Tech-Stack Detection").
Example prompts
Inputs and output
Inputs
| Field | Description |
|---|---|
query | natural-language query, the more specific the better |
kind | optional filter: library | topic | startup | insight | feed |
limit | optional max results (default 10) |
Output
Ranked passages with title, summary, preview image, source link, and kind tag. One-paragraph synthesis at the end.
Runtime profile
What the engine commits when this skill runs.
| Property | Value | Meaning |
|---|---|---|
| Model tier | lite | The Minuet tier router; selects the cheapest competent model for the task. |
| Cost class | cheap | A small, fast model. Cents per invocation. |
| Turn budget | 4 | Hard cap on tool-calling iterations before the engine forces a final answer. |
| Execution | synchronous | Runs inside the live turn; result lands in the same response. |
Under the hood
Tools the engine exposes to this skill and integrations it needs.
| Resource | Kind |
|---|---|
library_search | tool |
save_memory | tool |
Tags: library, discovery-lab, knowledge, rag
Invoking this from an agent
Three paths reach this skill. From the chat UI, a user can type the persona slash command followed by a natural request and the discovery step resolves to this skill automatically. From the MCP server, fetch the skill detail with get_skill({id: "discovery-lab-research"}) and then invoke it through the agent runtime once the authenticated tier ships. From your own code, hit /docs/skills/discovery-lab-research/llm.txt for the token-efficient markdown body and feed it to your model directly.
Accept: text/markdown. The full machine-readable catalog lives at /.well-known/agent-skills/index.json.