$npx -y skills add anthropics/knowledge-work-plugins --skill search-strategyQuery decomposition and multi-source search orchestration. Breaks natural language questions into targeted searches per source, translates queries into source-specific syntax, ranks results by relevance, and handles ambiguity and fallback strategies.
| 1 | # Search Strategy |
| 2 | |
| 3 | > If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md). |
| 4 | |
| 5 | The core intelligence behind enterprise search. Transforms a single natural language question into parallel, source-specific searches and produces ranked, deduplicated results. |
| 6 | |
| 7 | ## The Goal |
| 8 | |
| 9 | Turn this: |
| 10 | ``` |
| 11 | "What did we decide about the API migration timeline?" |
| 12 | ``` |
| 13 | |
| 14 | Into targeted searches across every connected source: |
| 15 | ``` |
| 16 | ~~chat: "API migration timeline decision" (semantic) + "API migration" in:#engineering after:2025-01-01 |
| 17 | ~~knowledge base: semantic search "API migration timeline decision" |
| 18 | ~~project tracker: text search "API migration" in relevant workspace |
| 19 | ``` |
| 20 | |
| 21 | Then synthesize the results into a single coherent answer. |
| 22 | |
| 23 | ## Query Decomposition |
| 24 | |
| 25 | ### Step 1: Identify Query Type |
| 26 | |
| 27 | Classify the user's question to determine search strategy: |
| 28 | |
| 29 | | Query Type | Example | Strategy | |
| 30 | |-----------|---------|----------| |
| 31 | | **Decision** | "What did we decide about X?" | Prioritize conversations (~~chat, email), look for conclusion signals | |
| 32 | | **Status** | "What's the status of Project Y?" | Prioritize recent activity, task trackers, status updates | |
| 33 | | **Document** | "Where's the spec for Z?" | Prioritize Drive, wiki, shared docs | |
| 34 | | **Person** | "Who's working on X?" | Search task assignments, message authors, doc collaborators | |
| 35 | | **Factual** | "What's our policy on X?" | Prioritize wiki, official docs, then confirmatory conversations | |
| 36 | | **Temporal** | "When did X happen?" | Search with broad date range, look for timestamps | |
| 37 | | **Exploratory** | "What do we know about X?" | Broad search across all sources, synthesize | |
| 38 | |
| 39 | ### Step 2: Extract Search Components |
| 40 | |
| 41 | From the query, extract: |
| 42 | |
| 43 | - **Keywords**: Core terms that must appear in results |
| 44 | - **Entities**: People, projects, teams, tools (use memory system if available) |
| 45 | - **Intent signals**: Decision words, status words, temporal markers |
| 46 | - **Constraints**: Time ranges, source hints, author filters |
| 47 | - **Negations**: Things to exclude |
| 48 | |
| 49 | ### Step 3: Generate Sub-Queries Per Source |
| 50 | |
| 51 | For each available source, create one or more targeted queries: |
| 52 | |
| 53 | **Prefer semantic search** for: |
| 54 | - Conceptual questions ("What do we think about...") |
| 55 | - Questions where exact keywords are unknown |
| 56 | - Exploratory queries |
| 57 | |
| 58 | **Prefer keyword search** for: |
| 59 | - Known terms, project names, acronyms |
| 60 | - Exact phrases the user quoted |
| 61 | - Filter-heavy queries (from:, in:, after:) |
| 62 | |
| 63 | **Generate multiple query variants** when the topic might be referred to differently: |
| 64 | ``` |
| 65 | User: "Kubernetes setup" |
| 66 | Queries: "Kubernetes", "k8s", "cluster", "container orchestration" |
| 67 | ``` |
| 68 | |
| 69 | ## Source-Specific Query Translation |
| 70 | |
| 71 | ### ~~chat |
| 72 | |
| 73 | **Semantic search** (natural language questions): |
| 74 | ``` |
| 75 | query: "What is the status of project aurora?" |
| 76 | ``` |
| 77 | |
| 78 | **Keyword search:** |
| 79 | ``` |
| 80 | query: "project aurora status update" |
| 81 | query: "aurora in:#engineering after:2025-01-15" |
| 82 | query: "from:<@UserID> aurora" |
| 83 | ``` |
| 84 | |
| 85 | **Filter mapping:** |
| 86 | | Enterprise filter | ~~chat syntax | |
| 87 | |------------------|--------------| |
| 88 | | `from:sarah` | `from:sarah` or `from:<@USERID>` | |
| 89 | | `in:engineering` | `in:engineering` | |
| 90 | | `after:2025-01-01` | `after:2025-01-01` | |
| 91 | | `before:2025-02-01` | `before:2025-02-01` | |
| 92 | | `type:thread` | `is:thread` | |
| 93 | | `type:file` | `has:file` | |
| 94 | |
| 95 | ### ~~knowledge base (Wiki) |
| 96 | |
| 97 | **Semantic search** — Use for conceptual queries: |
| 98 | ``` |
| 99 | descriptive_query: "API migration timeline and decision rationale" |
| 100 | ``` |
| 101 | |
| 102 | **Keyword search** — Use for exact terms: |
| 103 | ``` |
| 104 | query: "API migration" |
| 105 | query: "\"API migration timeline\"" (exact phrase) |
| 106 | ``` |
| 107 | |
| 108 | ### ~~project tracker |
| 109 | |
| 110 | **Task search:** |
| 111 | ``` |
| 112 | text: "API migration" |
| 113 | workspace: [workspace_id] |
| 114 | completed: false (for status queries) |
| 115 | assignee_any: "me" (for "my tasks" queries) |
| 116 | ``` |
| 117 | |
| 118 | **Filter mapping:** |
| 119 | | Enterprise filter | ~~project tracker parameter | |
| 120 | |------------------|----------------| |
| 121 | | `from:sarah` | `assignee_any` or `created_by_any` | |
| 122 | | `after:2025-01-01` | `modified_on_after: "2025-01-01"` | |
| 123 | | `type:milestone` | `resource_subtype: "milestone"` | |
| 124 | |
| 125 | ## Result Ranking |
| 126 | |
| 127 | ### Relevance Scoring |
| 128 | |
| 129 | Score each result on these factors (weighted by query type): |
| 130 | |
| 131 | | Factor | Weight (Decision) | Weight (Status) | Weight (Document) | Weight (Factual) | |
| 132 | |--------|-------------------|------------------|--------------------|-------------------| |
| 133 | | Keyword match | 0.3 | 0.2 | 0.4 | 0.3 | |
| 134 | | Freshness | 0.3 | 0.4 | 0.2 | 0.1 | |
| 135 | | Authority | 0.2 | 0.1 | 0.3 | 0.4 | |
| 136 | | Completeness | 0.2 | 0.3 | 0.1 | 0.2 | |
| 137 | |
| 138 | ### Authority Hierarchy |
| 139 | |
| 140 | Depends on query type: |
| 141 | |
| 142 | **For factual/policy questions:** |
| 143 | ``` |
| 144 | Wiki/Official docs > Shared documents > Email announcements > Chat messages |
| 145 | ``` |
| 146 | |
| 147 | **For "what happened" / decision questions:** |
| 148 | ``` |