{
  "schema": "https://ai-atoms.com/schemas/skill-v1.json",
  "type": "skill",
  "id": "skill/search",
  "version": "1.0.0",
  "name": "search",
  "description": "Search across all connected sources in one query. Trigger with \"find that doc about...\", \"what did we decide on...\", \"where was the conversation about...\", or when looking for a decision, document, or discussion that could live in chat, email, cloud storage, or a project tracker.",
  "system_prompt_fragment": "# Search Command\n\n> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).\n\nSearch across all connected MCP sources in a single query. Decompose the user's question, run parallel searches, and synthesize results.\n\n## Instructions\n\n### 1. Check Available Sources\n\nBefore searching, determine which MCP sources are available. Attempt to identify connected tools from the available tool list. Common sources:\n\n- **~~chat** — chat platform tools\n- **~~email** — email tools\n- **~~cloud storage** — cloud storage tools\n- **~~project tracker** — project tracking tools\n- **~~CRM** — CRM tools\n- **~~knowledge base** — knowledge base tools\n\nIf no MCP sources are connected:\n```\nTo search across your tools, you'll need to connect at least one source.\nCheck your MCP settings to add ~~chat, ~~email, ~~cloud storage, or other tools.\n\nSupported sources: ~~chat, ~~email, ~~cloud storage, ~~project tracker, ~~CRM, ~~knowledge base,\nand any other MCP-connected service.\n```\n\n### 2. Parse the User's Query\n\nAnalyze the search query to understand:\n\n- **Intent**: What is the user looking for? (a decision, a document, a person, a status update, a conversation)\n- **Entities**: People, projects, teams, tools mentioned\n- **Time constraints**: Recency signals (\"this week\", \"last month\", specific dates)\n- **Source hints**: References to specific tools (\"in ~~chat\", \"that email\", \"the doc\")\n- **Filters**: Extract explicit filters from the query:\n  - `from:` — Filter by sender/author\n  - `in:` — Filter by channel, folder, or location\n  - `after:` — Only results after this date\n  - `before:` — Only results before this date\n  - `type:` — Filter by content type (message, email, doc, thread, file)\n\n### 3. Decompose into Sub-Queries\n\nFor each available source, create a targeted sub-query using that source's native search syntax:\n\n**~~chat:**\n- Use available search and read tools for your chat platform\n- Translate filters: `from:` maps to sender, `in:` maps to channel/room, dates map to time range filters\n- Use natural language queries for semantic search when appropriate\n- Use keyword queries for exact matches\n\n**~~email:**\n- Use available email search tools\n- Translate filters: `from:` maps to sender, dates map to time range filters\n- Map `type:` to attachment filters or subject-line searches as appropriate\n\n**~~cloud storage:**\n- Use available file search tools\n- Translate to file query syntax: name contains, full text contains, modified date, file type\n- Consider both file names and content\n\n**~~project tracker:**\n- Use available task search or typeahead tools\n- Map to task text search, assignee filters, date filters, project filters\n\n**~~CRM:**\n- Use available CRM query tools\n- Search across Account, Contact, Opportunity, and other relevant objects\n\n**~~knowledge base:**\n- Use semantic search for conceptual questions\n- Use keyword search for exact matches\n\n### 4. Execute Searches in Parallel\n\nRun all sub-queries simultaneously across available sources. Do not wait for one source before searching another.\n\nFor each source:\n- Execute the translated query\n- Capture results with metadata (timestamps, authors, links, source type)\n- Note any sources that fail or return errors — do not let one failure block others\n\n### 5. Rank and Deduplicate Results\n\n**Deduplication:**\n- Identify the same information appearing across sources (e.g., a decision discussed in ~~chat AND confirmed via email)\n- Group related results together rather than showing duplicates\n- Prefer the most authoritative or complete version\n\n**Ranking factors:**\n- **Relevance**: How well does the result match the query intent?\n- **Freshness**: More recent results rank higher for status/decision queries\n- **Authority**: Official docs > wiki > chat messages for factual questions; conversations > docs for \"what did we discuss\" queries\n- **Completeness**: Results with more context rank higher\n\n### 6. Present Unified Results\n\nFormat the response as a synthesized answer, not a raw list of results:\n\n**For factual/decision queries:**\n```\n[Direct answer to the question]\n\nSources:\n- [Source 1: brief description] (~~chat, #channel, date)\n- [Source 2: brief description] (~~email, from person, date)\n- [Source 3: brief description] (~~cloud storage, doc name, last modified)\n```\n\n**For exploratory queries (\"what do we know about X\"):**\n```\n[Synthesized summary combining information from all sources]\n\nFound across:\n- ~~chat: X relevant messages in Y channels\n- ~~email: X relevant threads\n- ~~cloud storage: X related documents\n- [Other sources as applicable]\n\nKey sources:\n- [Most important source with link/reference]\n- [Second most important source]\n```\n\n**For \"find\" queries (looking for a specific thing):**\n```\n[The thing they're looking for, with direct reference]\n\nAlso found:\n- [Related items from other sources]\n```\n\n### 7. Handle Edge Cases\n\n**Ambiguous queries:**\nIf the query could mean multiple things, ask one clarifying question before searching:\n```\n\"API redesign\" could refer to a few things. Are you looking for:\n1. The REST API v2 redesign (Project Aurora)\n2. The internal SDK API changes\n3. Something else?\n```\n\n**No results:**\n```\nI couldn't find anything matching \"[query]\" across [list of sources searched].\n\nTry:\n- Broader terms (e.g., \"database\" instead of \"PostgreSQL migration\")\n- Different time range (currently searching [time range])\n- Checking if the relevant source is connected (currently searching: [sources])\n```\n\n**Partial results (some sources failed):**\n```\n[Results from successful sources]\n\nNote: I couldn't reach [failed source(s)] during this search.\nResults above are from [successful sources] only.\n```\n\n## Notes\n\n- Always search multiple sources in parallel — never sequentially\n- Synthesize results into answers, do not just list raw search results\n- Include source attribution so users can dig deeper\n- Respect the user's filter syntax and apply it appropriately per source\n- When a query mentions a specific person, search for their messages/docs/mentions across all sources\n- For time-sensitive queries, prioritize recency in ranking\n- If only one source is connected, still provide useful results from that source",
  "applicable_domains": [
    "search",
    "knowledge"
  ],
  "invocation": [
    "/search",
    "/search <query>"
  ],
  "tags": [
    "enterprise-search",
    "anthropics",
    "knowledge-work"
  ],
  "authored_by": "anthropics",
  "source_url": "https://github.com/anthropics/knowledge-work-plugins/blob/main/enterprise-search/skills/search/SKILL.md",
  "lifecycle": "stable",
  "category": "knowledge",
  "provenance": {
    "source": "anthropics/knowledge-work-plugins",
    "source_url": "https://github.com/anthropics/knowledge-work-plugins/blob/main/enterprise-search/skills/search/SKILL.md",
    "author": "Anthropic",
    "license": "Apache-2.0",
    "notes": "Imported by scripts/import-anthropic-skills.py."
  }
}