{"slug":"vaultr-index-knowledge","title":"vaultr-index-knowledge","summary":"Builds and refreshes domain-based index files for the Vaultr knowledge base. Use this skill whenever the user wants to build, rebuild, refresh, or update the knowledge index, create domain indexes, organize knowledge by domain, or index the knowledge base. Triggers on phrases lik","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-25T17:49:26.233937Z","repo":{"url":"https://github.com/skoowoo/vaultr-notes","stars":88,"forks":2,"license":"Apache-2.0","updatedAt":"2026-09-25T07:35:20Z"},"bodyHtml":"<hr>\n<h2>name: vaultr-index-knowledge\ndescription: \"Builds and refreshes domain-based index files for the Vaultr knowledge base. Use this skill whenever the user wants to build, rebuild, refresh, or update the knowledge index, create domain indexes, organize knowledge by domain, or index the knowledge base. Triggers on phrases like 'build knowledge index', 'rebuild index', 'refresh knowledge index', 'update domain indexes', 'index my knowledge base', 'regenerate index', or any request to create or maintain the knowledge index files.\"</h2>\n<h1>Vaultr Index Knowledge</h1>\n<p>Scans the knowledge directory, finds units not yet in any index, and adds them. Running this skill repeatedly is safe and always converges — it only ever adds missing entries, never rewrites existing ones.</p>\n<p>Domain index files live at <code>&lt;knowledge-dir&gt;/_indexes/&lt;Domain&gt;.md</code>. The compile skill matches a note to a domain by the index filename alone (e.g. <code>AI.md</code>, <code>Business.md</code>).</p>\n<p>A unit may appear in <strong>at most 2</strong> indexes: one primary domain, one secondary only when the unit genuinely straddles two.</p>\n<p><strong>Run all steps to completion without stopping. Only speak at the end (Step 4 summary).</strong></p>\n<hr>\n<h2>Inputs</h2>\n<ul>\n<li><strong>Knowledge directory</strong> — default: <code>_knowledge/</code> (relative to cwd, which is always the vault root)</li>\n</ul>\n<p>The index directory is always <code>&lt;knowledge-dir&gt;/_indexes/</code>. Create it if it does not exist.</p>\n<hr>\n<h2>Step 1 — Find unindexed units</h2>\n<p>Scan all knowledge units:</p>\n<pre><code>find &lt;knowledge-dir&gt; -name \"*.md\" -not -path \"*/_indexes/*\" | sort\n</code></pre>\n<p>Scan all existing index files and collect every <code>Path</code> value from their tables:</p>\n<pre><code>find &lt;index-dir&gt; -name \"*.md\" | sort\n</code></pre>\n<p>A unit is <strong>unindexed</strong> if its vault-absolute path (e.g. <code>/_knowledge/Vertical Agent.md</code>) does not appear in any index table. Build a list of only these units.</p>\n<p>If all units are already indexed, report and stop.</p>\n<hr>\n<h2>Step 2 — Read unindexed units</h2>\n<p>For each unindexed unit, read its YAML front matter and first non-heading paragraph. Build an internal list:</p>\n<p><code>references/extract.md</code> documents partial-read commands — <code>vaultr extract tag</code> retrieves front-matter tags directly; <code>vaultr extract segment --head N</code> retrieves the opening lines. Use them instead of a full <code>vaultr read</code> when only these fragments are needed.</p>\n<pre><code>title          | entity_type | tags          | summary (≤80 chars)                              | vault-absolute path\nVertical Agent | concept     | [ai, agent]   | AI product focused on a specific vertical domain | /_knowledge/Vertical Agent.md\nJane Smith     | person      | [founder, ai] | Founder of SophiaPro, AI startup                 | /_knowledge/Jane Smith.md\n</code></pre>\n<hr>\n<h2>Step 3 — Assign and update indexes</h2>\n<p>For each unindexed unit, determine domain assignment:</p>\n<ol>\n<li><p><strong>Match existing domains first</strong> by semantic understanding of the domain name (from existing index filenames) against the unit's title, entity_type, tags, and summary. Assign the strongest match.</p>\n</li>\n<li><p><strong>Secondary domain</strong> only when the unit genuinely belongs to two domains — passing relevance is not enough. When in doubt, assign one.</p>\n</li>\n<li><p><strong>New domain</strong> when no existing domain fits. Create a new domain if the topic is broad and stable enough to plausibly accumulate more units over time (e.g. <code>Physics</code>, <code>History</code>, <code>Health</code>, <code>Law</code>). The test is domain breadth, not how many unindexed units are present right now — a single unit can justify a new domain. Only fall back to \"General\" when the topic is genuinely narrow or one-off and unlikely to grow.</p>\n</li>\n<li><p><strong>Domain names</strong> should be broad and stable (e.g. <code>AI</code>, <code>Business</code>, <code>Science</code>, <code>People</code>, <code>Philosophy</code>). Don't name a domain after a single entity unless it anchors a large cluster.</p>\n</li>\n</ol>\n<p>For each affected domain index, append the new rows and update <code>unit_count</code> and <code>updated</code> in the frontmatter. If the index file does not exist yet, create it:</p>\n<pre><code>---\nkind: index\ndomain: &lt;Domain&gt;\nunit_count: &lt;N&gt;\nupdated: &lt;YYYY-MM-DD&gt;\n---\n\n# &lt;Domain&gt;\n\n| Title          | Type    | Tags          | Summary                                          | Path                          |\n| -------------- | ------- | ------------- | ------------------------------------------------ | ----------------------------- |\n| Vertical Agent | concept | [ai, agent]   | AI product focused on a specific vertical domain | /_knowledge/Vertical Agent.md |\n| Jane Smith     | person  | [founder, ai] | Founder of SophiaPro, AI startup                 | /_knowledge/Jane Smith.md     |\n</code></pre>\n<p>Keep rows sorted alphabetically by Title within each index file.</p>\n<hr>\n<h2>Step 4 — Report</h2>\n<ul>\n<li>How many units were already indexed vs. newly added</li>\n<li>Which index files were updated or created, and how many entries were added to each</li>\n</ul>\n","files":[{"path":"references/extract.md","sizeBytes":1336,"isText":true},{"path":"SKILL.md","sizeBytes":4714,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-09-25T17:49:46.003087Z","sha256":"265E7D7E918543D9AEC15F21CB3612CFCCFD23E34225224DE2D206CF51EC6610","sizeBytes":2754},"review":null,"source":{"repositoryUrl":"https://github.com/skoowoo/vaultr-notes","path":"skills/vaultr-index-knowledge","license":"Apache-2.0","commit":"6cd8ad6452a7f9dc05af95b20763e2661c3fef57","subtreeSha":"844B090AFA1969E6A940F82AE8E18E4174956977578F37C3FC30382B5FC172F3","lastSyncedAt":"2026-09-25T17:49:25.885266Z"},"reviewedAt":"2026-09-25T17:50:23.912771Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/skoowoo/vaultr-notes/tree/main/skills/vaultr-index-knowledge"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install skoowoo-vaultr-notes@llmmart"},{"target":"git","command":"git clone https://github.com/skoowoo/vaultr-notes.git"}]}