Skip to content
Back to skills

Index

ASecurity

Reindexes KB for semantic search via vector store (Qdrant). Triggers: reindex KB, rebuild index, vector reindex, refresh embeddings.

  • 177 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 27, 2026
data-aigobashdockerperformance

Works with

  • mcp

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add softspark/ai-toolkit --skill index --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Index?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Index
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/softspark-index/badge)](https://www.skillsdirectory.com/skills/softspark-index)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: index
description: "Reindexes KB for semantic search via vector store (Qdrant). Triggers: reindex KB, rebuild index, vector reindex, refresh embeddings."
effort: low
disable-model-invocation: true
argument-hint: "[path or scope]"
allowed-tools: Bash
---

# Knowledge Base Indexing

$ARGUMENTS

Reindex the knowledge base for semantic search.

> **Prerequisite**: This command requires a vector store (e.g., Qdrant) and an indexing pipeline configured for your project. If not configured, this command provides guidance on setup.

## Usage

```
/index              # Incremental index (detect changes)
/index --full       # Full rebuild
```

## Execution

### Direct Execution
```bash
# Incremental index (auto-detects changes)
make index

# Full rebuild
make index-full
```

### Docker Execution
```bash
docker exec {app-container} make index
docker exec {app-container} make index-full
```

## Change Detection

The indexer uses content hashing to detect changes:

| Scenario | Action |
|----------|--------|
| New document | Index |
| Changed content | Reindex |
| No changes | Skip |
| Deleted document | Remove from index |

## Frontmatter Validation

Before indexing, ensure all KB documents have valid frontmatter:

```yaml
---
title: "Document Title"
service: {service-name}
category: reference|howto|procedures|troubleshooting|decisions|best-practices
tags: [tag1, tag2]
last_updated: "YYYY-MM-DD"
---
```

## Troubleshooting

| Problem | Solution |
|---------|----------|
| Index not updating | Check file timestamps, run full rebuild |
| Missing documents | Verify frontmatter is valid |
| Slow indexing | Check embedding service performance |
| No vector store | Set up Qdrant or compatible vector DB |

## Rules

- **MUST** require explicit user permission before running `make index` or `make index-full` — never self-trigger
- **NEVER** trigger a full rebuild to "clean up" unless the user asked for it
- **CRITICAL**: validate KB frontmatter before indexing — abort on invalid documents rather than indexing a broken state
- **MANDATORY**: respect change-detection hashes; do not force reindexing of unchanged documents

## Gotchas

- Content-hash change detection keys on the file's content AND path. A **moved** document (same content, new path) looks new to the indexer — both the old path vector and the new one will exist until a full rebuild. Plan a full rebuild after mass reorganizations.
- Deleting a document on disk does not automatically remove its vectors from Qdrant; the indexer emits tombstones only if run with a directory scan. Without `--delete-missing`, orphan vectors stay for weeks.
- Embedding providers rate-limit by requests-per-minute AND by tokens-per-minute. A reindex of 1000+ docs hits the token cap first and stalls silently — watch for 429s in the indexer log before concluding "slow indexing".
- `make index-full` truncates the collection before re-embedding; if the embedding job crashes mid-way, the collection is left partially populated with no query-time indicator of the gap.

## When NOT to Use

- For searching the KB — use `/research-mastery` or call `smart_query()` via the rag-mcp tool
- For fixing indexing bugs — use `/debug` on the indexer pipeline
- To evaluate RAG quality after reindexing — use `/evaluate`
- When no vector store is configured — document the gap, do not invent one

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…