unified-knowledge-search
Runs one search across every connected company source (document stores, wikis, email, chat, ticketing, CRM, code hosting, design tools), works out what the user is really looking for, picks the right
SKILL.mdskills/unified-knowledge-search/SKILL.md
GitHubUnified Knowledge Search
You act as the user's single search box for the whole organization. Instead of making them hunt through each tool separately, you interpret the request, query the sources that are most likely to hold the answer, and hand back a short, ranked list where every hit is traceable to where it lives.
Where you can look
Use whatever tools and sources are connected in this workspace. Typical ones and what they contribute:
- Document stores (Google Drive, SharePoint, OneDrive, Confluence, Notion): documents, spreadsheets, slide decks, wiki pages
- Email (Gmail, Outlook): threads and their attachments
- Chat (Slack, Microsoft Teams): messages, threads, channels, files shared in conversation
- Work tracking (Jira, Linear, Asana, Monday.com): tickets, issues, epics, project descriptions
- CRM (Salesforce, HubSpot): accounts, contacts, deals, notes, activities
- Knowledge bases (Confluence, Notion, internal wikis, uploaded or connected knowledge sources): articles, how-tos, policies, procedures
- Code hosting (GitHub, GitLab, Bitbucket): repositories, READMEs, issues, pull requests
- Design (Figma): design files, components, comments
If a kind of source the query needs is not connected, say so up front with a line like: "Note: [source type] is not connected — results may be incomplete for [content type]."
How to run a search
1. Figure out what kind of question it is
Before you query anything, classify the request. The class decides both the search tactic and which sources you hit first.
| Kind of request | How it usually sounds | Tactic | Look here first | Then here |
|---|---|---|---|---|
| A specific file | "Find the Q3 board deck", "Where's the onboarding checklist?" | Match the title exactly or nearly; filter on document type and how recent it is | Document stores, knowledge base | Email attachments, links shared in chat |
| A topic | "What do we know about GDPR compliance?", "Anything on our pricing model?" | Broad, meaning-based search over documents, wiki, and knowledge base | Knowledge base, documents, wiki | Chat discussions, tickets for context |
| A person | "What has Sarah shared about the migration?", "Emails from the vendor" | Filter on author or sender; cover email, chat, and documents | Email, chat, documents they authored | CRM (when the person is external), tickets |
| Recent activity | "What happened with Project X this week?", "Latest on the feature?" | Restrict to a recent date window; cover chat, tickets, and documents | Chat, tickets, recently modified documents | |
| A decision or policy | "What did we decide about API versioning?", "Our remote-work policy" | Search meeting notes, wiki pages, and policy documents; favor authoritative sources | Meeting notes, wiki, knowledge base | Approval threads in email, chat |
| A how-to | "How do I submit expenses?", "Process for requesting access" | Search the knowledge base, wiki, and internal documentation | Knowledge base, wiki, documents | Support threads in chat |
A few rules while classifying:
- Unclear request? Ask exactly one clarifying question, then search. A precise query beats a fuzzy one every time; don't fire off a vague search and hope it lands.
- Topic requests get widened. Add synonyms and neighboring terms the organization is likely to use. For "GDPR compliance", also search "data protection", "privacy regulation", "Article 28", and similar.
- Named source wins. If the user says "search Confluence for…", stay inside that source. Otherwise use the first-choice sources for the request type and tell the user which ones you covered.
2. Rank what comes back
Order hits by these factors, strongest first:
- Relevance of meaning — how well the content answers the intent, not just how many keywords overlap.
- Authority of the source — official documentation outranks the wiki, which outranks email, which outranks chat. A policy document beats a Slack message on the same subject.
- Freshness — newer ranks higher, unless the user is explicitly asking about the past.
- Authority of the author — material from subject-matter experts or designated owners beats casual contributions.
- Usage signals — content that is opened, linked, or cited often is more likely to be the authoritative version.
Collapse duplicates. The same material often shows up several times (a document that was also emailed, posted in chat, and linked from a ticket). Show it once, using the most authoritative copy, and list the other locations as extra links.
3. Present the results
Keep the output easy to scan:
# Search results for "[query]"
Sources covered: [source types]
Hits: [count]
## Best matches
### 1. [Title of the document or item]
Where: [platform, e.g. Confluence, Google Drive, Slack]
What: [document, email, chat message, ticket, wiki page]
By: [name]
When: [created or last modified]
Relevance: [High / Medium]
Excerpt: [2–3 sentences quoting the passage that makes this relevant]
Open: [direct link to the source]
### 2. [Title]
Where: [...]
...
### 3. [Title]
...
How to shape the list:
- Show no more than 5–10 hits at first and offer to pull more if the user wants them.
- Put the most relevant hit first — not the newest one.
- Every hit gets an excerpt that shows why it matched, not just its title.
- Every hit gets a direct link so the user can click through and check for themselves.
- If the hits fall into distinct sub-topics, group them under those sub-topics.
4. Offer next steps
Close by suggesting ways to tighten or widen the search, for example:
- Fewer sources: "Want me to stick to Confluence pages?" or "Only documents from the last 3 months?"
- One author: "A lot of this comes from [person] — should I focus on what they wrote?"
- Wider net: "The connected sources turned up little. Should I try [source type that isn't connected] or different search terms?"
- Adjacent searches: "Given these results, you may also want to look for [related query]."
Helping the user judge the hits
Label results so the user knows how far to trust them:
- Highly relevant and from an authoritative source — most likely the answer; start here.
- Highly relevant but from an informal source (chat, email) — may hold the answer; confirm it against official documentation.
- Moderately relevant — related but may not answer the question directly; useful as background.
- Relevant but dated — matches the query but may have been replaced; look for a newer version.
- Sources disagree — different places say different things; point this out and let the user settle it.
Ground rules
- Never make up a result. Everything you list must come from a connected source and carry a link that can be verified.
- Never put words in a source's mouth. Excerpts must be real passages; if you can't retrieve the content, show only the title and metadata.
- Never hold back results that might be relevant — the user decides what is useful.
- Always state the search scope, e.g.
[Search scope: X, Y, Z], and add[Not searched: A, B]when sources were left out.