Rebuild Knowledge Base Indexes
SkillFiles & storageRebuild the knowledge base shelf-index with hash-based change detection. Incremental by default — only re-extracts files whose content has changed since the last index. Use after ingesting new sources, after editing library files, or whenever the librarian agent reports a stale index.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Rebuild Knowledge Base Indexes skill
What this skill tells your AI
The instructions your AI receives, as published by stevegjones/ai-first-sdlc-practices in skills/kb-rebuild-indexes/SKILL.md and read by ahel’s review.
Script-based: This skill runs
build_shelf_index.pyvia Bash — no agent dispatch needed and no library file content loaded into session context.
Rebuild the shelf-index for the knowledge base. Incremental by default: compares each library file's content hash against the recorded hash in the index, and only re-extracts entries whose hash has changed.
Arguments
-
--full— Force complete rebuild. Re-extracts every entry even when the hash matches. Use this when:- The extraction logic itself has changed (you updated this skill)
- You suspect the index has drifted in a way the hash check missed
- You're starting from a deleted or corrupted index
Without this flag, the rebuild is incremental and skips unchanged files.
Preflight
Verify the project has a knowledge base. The [Knowledge Base] section in CLAUDE.md should declare:
library_path— defaultlibrary/shelf_index_path— defaultlibrary/_shelf-index.md
If CLAUDE.md does not contain a [Knowledge Base] section, report: "No knowledge base configured. Add a [Knowledge Base] section to CLAUDE.md (see plugins/sdlc-knowledge-base/skills/kb-init/templates/claude-md-section.md) before running this skill."
If the library path does not exist, report: "Library directory <path> does not exist. Create it or run /sdlc-knowledge-base:kb-init before running this skill."
Steps
1. Read knowledge base configuration
Read CLAUDE.md and locate the [Knowledge Base] section. Extract:
library_path— defaultlibrary/shelf_index_path— defaultlibrary/_shelf-index.md
Stop with the preflight errors above if either check fails.
2. Verify build_shelf_index module importable
python3 -c "
import sys, os, importlib.util
PLUGIN_ROOT = os.environ.get('CLAUDE_PLUGIN_ROOT', '')
SCRIPTS = os.path.join(PLUGIN_ROOT, 'scripts')
INIT = os.path.join(SCRIPTS, '__init__.py')
if os.path.isfile(INIT) and 'sdlc_knowledge_base_scripts' not in sys.modules:
spec = importlib.util.spec_from_file_location(
'sdlc_knowledge_base_scripts', INIT,
submodule_search_locations=[SCRIPTS])
if spec and spec.loader:
module = importlib.util.module_from_spec(spec)
sys.modules['sdlc_knowledge_base_scripts'] = module
spec.loader.exec_module(module)
try:
import sdlc_knowledge_base_scripts.build_shelf_index # noqa: F401
print('OK')
except ImportError:
print('MISSING')
"
If output is MISSING: report "build_shelf_index module not found. Update the sdlc-knowledge-base plugin." and stop.
3. Run the rebuild script
Construct the argument list from Step 1 and the skill argument (--full if provided):
python3 -c "
import sys, os, importlib.util
PLUGIN_ROOT = os.environ.get('CLAUDE_PLUGIN_ROOT', '')
SCRIPTS = os.path.join(PLUGIN_ROOT, 'scripts')
INIT = os.path.join(SCRIPTS, '__init__.py')
if os.path.isfile(INIT) and 'sdlc_knowledge_base_scripts' not in sys.modules:
spec = importlib.util.spec_from_file_location(
'sdlc_knowledge_base_scripts', INIT,
submodule_search_locations=[SCRIPTS])
if spec and spec.loader:
module = importlib.util.module_from_spec(spec)
sys.modules['sdlc_knowledge_base_scripts'] = module
spec.loader.exec_module(module)
from sdlc_knowledge_base_scripts.build_shelf_index import main
args = ['<library_path>', '--shelf-index-path', '<shelf_index_path>']
# If this skill was called with --full, append it:
# args.append('--full')
sys.exit(main(args))
"
Replace <library_path> and <shelf_index_path> with the values from Step 1. If the skill argument was --full, uncomment the args.append('--full') line.
4. Report results
Print the script output directly to the user. Expected format:
Shelf-index rebuilt: library/_shelf-index.md
Mode: incremental
Files scanned: 22
Unchanged: 18 (skipped)
Modified: 3 (re-extracted)
Added: 1 (new entries)
Removed: 0 (entries dropped)
Index entries: 22
If the script exits with code 1, surface the error and recommend:
/sdlc-knowledge-base:kb-init— if the library directory is missing/sdlc-knowledge-base:kb-ingest— if the library exists but is empty
Hash strategy
SHA-256 over raw file content, stored per-entry in the shelf-index. Any file change (including whitespace) triggers re-extraction on the next incremental run. See build_shelf_index.py for the full implementation.
What this skill does NOT do
- It does not invoke the librarian. That's
kb-query. - It does not ingest new sources. That's
kb-ingest. - It does not validate citations. That's
kb-validate-citations. - It does not check for logical drift (contradictions, orphans). That's
kb-lint. - It does not rebuild the codebase-index. The codebase-index is a future feature.
This skill only manages the shelf-index for the curated library files.
Example invocation
/sdlc-knowledge-base:kb-rebuild-indexes
Shelf-index rebuilt: library/_shelf-index.md
Mode: incremental
Files scanned: 22
Unchanged: 18 (skipped)
Modified: 3 (re-extracted)
Added: 1 (new entries)
Removed: 0 (entries dropped)
Index entries: 22
Signals
- GitHub stars
- 41
- Forks
- 6
- Last commit
- Aug 2026
Advanced
- Catalog kind
- skill
- Gateway key
kb-rebuild-indexes- Source
- github.com/stevegjones/ai-first-sdlc-practices