Help us improve
Share bugs, ideas, or general feedback.
From akb-wiki
Answers questions from an AKB vault by decomposing the query, searching via hybrid/graph methods, and synthesizing cited answers with gap/conflict/staleness flags. Read-only.
npx claudepluginhub dnotitia/akb --plugin akb-wikiHow this skill is triggered — by the user, by Claude, or both
Slash command
/akb-wiki:akb-query {question} --vault {name}{question} --vault {name}This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Answer **one question** from the target AKB vault. Decompose the question, search the vault with the strategy that fits, ground the answer in the documents found — honoring AKB's compiled-truth-over-timeline precedence — and synthesize a cited answer. Brain-first: the vault is the source of truth, not the model's prior knowledge.
Searches an Obsidian vault for past decisions, troubleshooting history, and project knowledge when the user asks about previous work or how something was done. Supports keyword, type-aware, and catalog search.
Search, read, write, update, delete, and move files in the Kept conversation vault using grep_vault, list_vault, read_file, and other tools. Use for past conversations, notes, and organization.
Share bugs, ideas, or general feedback.
Answer one question from the target AKB vault. Decompose the question, search the vault with the strategy that fits, ground the answer in the documents found — honoring AKB's compiled-truth-over-timeline precedence — and synthesize a cited answer. Brain-first: the vault is the source of truth, not the model's prior knowledge.
Workflow classification. LLM-wiki Query workflow — the read half only (à la gbrain's query, mutating: false). This skill never writes: no akb_put / akb_update, no promote-to-page. Promoting valuable answers into new pages, consolidation, and dream-cycle maintenance are the external maintenance layer's job over the same vault, not this skill's.
Scope boundaries:
akb_grep — that verb's replace= mode rewrites matching documents, so it is not read-only; exact-term lookup goes through akb_search, whose hybrid index already includes a keyword/BM25 component.)[doc-uri, section] — not a sentence-level source./akb-query {question} --vault {vault_name} [--collection {path}] [--type {type}] [--since DATE] [--period D1~D2]
{question} (required, positional) — a natural-language question. Phrase it as you would ask a person; hybrid search rewards natural phrasing over keyword soup.--vault (required) — target AKB vault name.--collection {path} (optional) — scope the search to one collection when the question clearly belongs to it.--type {type} (optional) — scope to a document type (decision, reference, task, …) when the question implies one.--since DATE (optional, ISO YYYY-MM-DD) — add a freshness axis: cross-check hits against recent vault activity and flag stale ones; surface relevant recent changes.--period D1~D2 (optional, ISO dates) — same as --since but bounded to the inclusive range. If both are given, --period wins.If neither --since nor --period is provided, the freshness axis is skipped entirely.
--vault {name} provided.Parse --vault. Hard-fail if missing: --vault {name} required. Capture {question} and optional flags.
Classify the question into one or more search strategies — a single question may need several:
| Question shape | Strategy | Verb |
|---|---|---|
| Conceptual / open-ended ("how does…", "tell me about…", "why…") or exact terms (names, versions, IDs, error strings, code) | hybrid | akb_search |
| Relational ("what depends on X", "what implements Y", "how is A connected to B") | graph | akb_relations / akb_graph |
Pick the minimum set that covers the question. Most questions are hybrid — akb_search is vector + keyword/BM25, so it handles both conceptual phrasing and exact tokens; pass the exact token as the query when the question pins one. Reach for graph only when the question asks about links between documents.
Issue every selected strategy in a single parallel tool-use block — they are independent. Run only the strategies Phase 1 chose. Exception: when the relational strategy is selected but no anchor URI is known yet, that strategy is not independent — run the hybrid search first to find the anchor, then issue akb_relations / akb_graph in a follow-up block. Never call them with a guessed URI.
akb_search(query="{question}", vault="{vault_name}", limit=10). For an exact token, pass the token itself as the query — the hybrid index matches it on the keyword/BM25 side. Add collection= / type= from the flags or when the question clearly implies one. Add tags=[…] only if the question names specific tags.akb_relations(uri="{anchor_uri}", direction=…, type=…) for direction- and type-filtered edges (single-hop). For a multi-hop neighborhood, akb_graph(uri="{anchor_uri}", depth=…) (BFS; no direction filter — it returns all edges at each level). If the anchor is not yet known, find it with a hybrid search first.--since / --period was given: akb_activity(vault="{vault_name}", since="{start_date}", limit=20). For --period D1~D2, pass since=D1 and drop entries after D2 in Phase 3.Dedup the combined hits by document URI before Phase 3.
For the top 3–5 deduped hits, read enough to answer — cheapest read first:
akb_drill_down(uri="{uri}", mode="outline") to see the document's structure.akb_drill_down(uri, section="…") — that is the document's current best understanding. Treat the timeline (bottom) section as supporting evidence, not the headline.akb_get(uri) only when you need the full document.akb_provenance(uri) when the question is about authorship or recency ("who decided…", "when was…") — document-level who/when.Source precedence when documents conflict (highest authority first):
Staleness — if a freshness axis was requested, cross-check each hit against akb_activity: mark a hit [stale] when it has not changed within the window, and drop activity entries past a --period upper bound.
Write a direct answer to the question, grounded in what Phase 3 read:
[doc-uri, section]. When a claim rests on several documents, cite all of them.vault "{vault_name}"에 X에 대한 정보가 없습니다) instead of answering from general knowledge. Offer to broaden the search or browse the vault.[stale] markers next to claims drawn from stale documents.Response shape:
## {question}
{Direct answer in prose, with inline citations: "According to [research/vector-index, compiled truth], …"}
{If sources conflict: a short "Conflicting sources" note citing both.}
{If a freshness axis was requested and recent changes are relevant:}
### Recent changes ({period label})
- [{doc_uri}] {title} — updated {updated_at}
{If the vault is silent on part of the question:}
### Gaps
- The vault has no information on {X}.
---
*{N} documents consulted in vault "{vault_name}"*
Render {period label} as since YYYY-MM-DD or YYYY-MM-DD~YYYY-MM-DD.
| Situation | Response |
|---|---|
| AKB MCP not accessible | AKB MCP server not accessible. Check your MCP configuration. |
--vault not passed | --vault {name} required. |
| Vault not found | Vault "{vault_name}" not found. Create with mcp__akb__akb_create_vault first. |
| No hits across every strategy | Flag the gap explicitly, then offer to broaden terms, drop --collection/--type, or browse with akb_browse. |
| Relational anchor URI unknown | Find the anchor with a hybrid search first; if none is found, answer from hybrid hits and note the missing anchor. |
akb_activity fails | Drop the freshness axis only; answer from the search hits and note the skipped staleness check. |
--since / --period value is not ISO | Ask the user to restate the date (YYYY-MM-DD) before running. |
akb_browse to explore vault structure when a search returns nothing and you are unsure what exists.--since / --period is for — it adds the staleness axis hybrid search alone misses.