--- name: query version: 1.0.0 description: | Answer questions using the brain's knowledge with 3-layer search, synthesis, and citation propagation. Use when the user asks a question, wants a lookup, or needs information from the brain. triggers: - "what do we know about" - "tell me about" - "who is" - "what happened" - "search for" - "look up" - "background on" - "notes on" - "who knows who" - "relationship between" - "connections" - "graph query" tools: - recall - search - query - get_page - list_pages - get_backlinks - traverse_graph - get_timeline mutating: false --- # Query Skill Answer questions using the brain's knowledge with 3-layer search and synthesis. > **Memory verbs (MEMORY_VERBS v1, gbrain ≥ 0.43).** When connected to a brain > over MCP, prefer the seven frozen memory verbs for memory work — they carry > provenance, evidence, and a server-enforced token budget: > - **`recall(query | entity, budget_tokens)`** — the budget-packed memory read. > Use it instead of bare `search` for "what do we know that we SAVED about X". > - **`entity(name)`** — a zero-LLM person/company/project card (aliases, > last-touched, open threads, top edges). Use it instead of `get_page` + > `get_backlinks` when you just need the card. > - **`synthesize(question)`** — the explicitly-expensive cross-page answer; the > heavy version of `query`. Reach for it only when the answer must combine > evidence across pages. > Fall back to `search`/`query`/`get_page` when the verbs aren't on the surface > (pre-0.43 servers; `--surface full` includes the verbs alongside every other > op). See `docs/protocol/MEMORY_VERBS_v1.md`. ## Contract This skill guarantees: - Every answer is grounded in brain content (no hallucination) - Every claim has a citation tracing back to a specific page slug - Gaps are flagged explicitly ("the brain doesn't have information on X") - Source precedence is respected (user statements > compiled truth > timeline > external) - Conflicting sources are noted with both citations ## Phases 1. **Decompose the question** into search strategies: - Keyword search for specific names, dates, terms - Semantic query for conceptual questions - Structured queries (list by type, backlinks) for relational questions 2. **Execute searches:** - Cheap-hybrid search gbrain for exact tokens / known names (search) - Full-hybrid search gbrain with multi-query expansion for concept questions (query) - List pages in gbrain by type or check backlinks for structural queries 3. **Read top results.** Read the top 3-5 pages from gbrain to get full context. 4. **Synthesize answer** with citations. Every claim traces back to a specific page slug. 5. **Flag gaps.** If the brain doesn't have info, say "the brain doesn't have information on X" rather than hallucinating. ## Anti-Patterns - Answering from general knowledge when the brain has relevant content - Hallucinating facts not in the brain - Silently picking one source when sources conflict - Loading full pages when search chunks are sufficient - Ignoring source precedence (user statements are highest authority) ## Output Format Answers should include: - Direct response to the question - Citations: "According to [Source: people/jane-doe, compiled truth]..." - Gap flags: "The brain doesn't have information on X" - Conflict notes when sources disagree ## Quality Rules - Never hallucinate. Only answer from brain content. - Cite sources: "According to concepts/do-things-that-dont-scale..." - Flag stale results: if a search result shows [STALE], note that the info may be outdated - For "who" questions, use backlinks and typed links to find connections - For "what happened" questions, use timeline entries - For "what do we know" questions, read compiled_truth directly ## Token-Budget Awareness Search returns **chunks**, not full pages. Read the excerpts first before deciding whether to load a full page. For a question about saved **page evidence** with a tight budget, explicitly choose `recall` with `budget_policy: "query_first"`. It gives the existing ranked page results first use of the budget, then packs recent/filtered facts into what remains. This is an opt-in packing choice, not a new relevance model: an irrelevant page can displace a useful fact. Keep entity-first, session/event-filtered and fact-focused questions on their existing facts-first route. Do not change `context_pack` or existing third-party calls. ```bash gbrain recall --query 'zebra telescope' --budget-tokens 75 --budget-policy query_first --json ``` Equivalent MCP request: ```json {"name":"recall","arguments":{"query":"zebra telescope","budget_tokens":75,"budget_policy":"query_first"}} ``` **Say to your agent:** “Recall the saved notes about the zebra telescope using a 75-token estimated budget and query-first packing. Cite the returned evidence; if the first page cannot fit, tell me rather than treating that as missing memory.” Use the resolved brain and source as usual; the option does not widen permissions. `budget_packing` reports the effective policy and per-arm candidate/kept/dropped/used counts. Costs estimate `ceil(fact.length/4)` or `ceil(title.length/4) + ceil(chunk.length/4)`, not exact tokenizer or JSON-envelope size. Packing never skips an oversized prefix item or truncates it; multiple required pages may still not fit. With no nonblank query or no positive finite budget, the operation keeps legacy behavior. An eligible positive budget below one token returns empty arms. See the protocol for fractional-budget compatibility. This guidance and advertised tool schemas do not prove native-harness adoption. Confirm an observed query-first call in a fresh harness conversation before claiming activation; otherwise report adoption as unverified. - `gbrain search` / `gbrain query` return ranked chunks with context snippets. These are often enough to answer the question directly. - Only use `gbrain get ` to load the full page when a chunk confirms the page is relevant and you need more context (e.g., compiled truth, timeline). - **"Tell me about X"** -- get the full page (the user wants the complete picture). - **"Did anyone mention Y?"** -- search results are enough (the user wants a yes/no with evidence). ### Source precedence When multiple sources provide conflicting information, follow this precedence: 1. **User's direct statements** (highest authority -- what the user told you directly) 2. **Compiled truth** (the brain's synthesized, cited understanding) 3. **Timeline entries** (raw evidence, reverse-chronological) 4. **External sources** (web search, API enrichment -- lowest authority) When sources conflict, note the contradiction with both citations. Don't silently pick one. ## Citation in Answers When referencing brain pages in your answer, propagate inline citations: - Cite the page: "According to [Source: people/jane-doe, compiled truth]..." - When brain pages have inline `[Source: ...]` citations, propagate them so the user can trace facts to their origin - When you synthesize across multiple pages, cite all sources ## Graph Traversal (v0.10.1+) For relationship questions ("who knows who at X?", "connections between A and B", "who works at Acme?", "who attended the standup?"), use the graph layer instead of full-text search: - `gbrain graph-query --type --depth N --direction in|out|both` - Available link types: `attended`, `works_at`, `invested_in`, `founded`, `advises`, `mentions`, `source` - `--direction in` answers "who points to X?" (e.g., who works at company X) - `--direction out` answers "what does X point to?" (default) - `--depth N` controls multi-hop traversal (default 5) Examples: - "Who works at Acme?" → `gbrain graph-query companies/acme --type works_at --direction in` - "Who attended Demo Day W26?" → `gbrain graph-query meetings/demo-day-w26 --type attended --direction out` - "What companies has Emily advised?" → `gbrain graph-query people/emily --type advises --direction out` - "Who has Alice met (via meetings)?" → `gbrain graph-query people/alice --type attended --depth 2` Combine with `gbrain query` for queries that need BOTH semantic similarity AND graph structure. Search results are ranked with a small backlink boost so well- connected entities surface higher. ## Search Quality Awareness If search results seem off (wrong results, missing known pages, irrelevant hits): - Run `gbrain doctor --json` to check index health - Check embedding coverage -- partial embeddings degrade hybrid search - Compare keyword search (`gbrain search`) vs hybrid search (`gbrain query`) for the same query to isolate whether the issue is embedding-related - Report search quality issues in the maintain workflow (see maintain skill) ## Tools Used - Keyword search gbrain (search) - Hybrid search gbrain (query) - Read a page from gbrain (get_page) - List pages in gbrain with filters (list_pages) - Check backlinks in gbrain (get_backlinks) - Traverse the link graph in gbrain (traverse_graph) - View timeline entries in gbrain (get_timeline)