kb-setup — bring up the project knowledge base
@blackbelt-technology/pi-dashboard-kb builds a zero-token, local SQLite/FTS5
index over this project's markdown so kb-search can retrieve before answering.
This SKILL does the one-time bring-up. Retrieval is pull (the agent calls
kb); nothing is auto-injected.
When to Use
- User asks to set up / init / configure the knowledge base.
- No
.pi/dashboard/knowledge_base.jsonexists yet and the project has docs. - User wants to add a doc source (local dir, npm package docs, git handbook).
Procedure
- Detect existing config. Check
.pi/dashboard/knowledge_base.json(project) and~/.pi/dashboard/knowledge_base.json(global). Runkb configto see the resolved layering. If a project config already exists and is healthy, skip to step 5 (smoke search) unless the user wants changes. - Choose scope + sources. Ask (if unclear) whether to write project or
global config. Pick
sources[]:- local doc dir:
{ "kind": "filesystem", "ref": "docs", "priority": 10 }(higher priority = preferred when the same content appears in two roots) - AGENTS.md / CLAUDE.md: covered by
indexAgentsFiles: true(default on) - source-tree
*.md: covered byincludeSourceMarkdown: true(default on) - remote sources (npm/git/https) require trust-on-first-use — defer unless the user explicitly asks; remote resolvers land in a later phase.
- local doc dir:
- Scaffold.
kb init [--global] [--source <ref>]... [--dry-run]. Review the--dry-runoutput with the user, then run for real.kb initrefuses to clobber an existing config without--force, and gitignores thedbPath. - Index.
kb index→ reports files scanned / changed / chunks. First run is the cold index; later runs are incremental (mtime → sha256). - Smoke search.
kb search "<a real term from the docs>" --limit 5and confirm ranked{path, headingPath, score, snippet}come back. If empty, checkkb configshows the rightsourcesand that the dir has.mdfiles. - Point the user at the
kb-searchSKILL for everyday retrieval.
Pitfalls
- Do NOT overwrite an existing config without confirming — use
--forceonly after the user agrees. dbPathmust be gitignored;kb initdoes this for project configs. For a customdbPathoutside the project, add the gitignore entry yourself.- No
sources[]→kb indexexits 2. Always seed at least one filesystem source.
Verification
kb configprintsorigin,dbAbsPath, and the resolvedsourceslist.kb indexreportsN files … M chunksandstore.counts()JSON.kb search "<term>"returns ranked hits with snippets.