lci-indexing-pipeline

Trace and debug the lci code indexing pipeline from scanning through RCU snapshot publication.

Updated Apr 27, 2026
One-click install
npx skills add https://github.com/standardbeagle/lci-cpp --skill lci-indexing-pipeline-standardbeagle
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: lci-indexing-pipeline
Source: https://github.com/standardbeagle/lci-cpp/tree/main/.agents/skills/lci-indexing-pipeline
Command: npx skills add https://github.com/standardbeagle/lci-cpp --skill lci-indexing-pipeline-standardbeagle

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? When working on the lci semantic code search engine, it is hard to locate the exact code responsible for how files are scanned, excluded, parsed, and merged into the in-memory index, or to diagnose reindex staleness, watch-mode gaps, and memory growth. This Skill maps the entire indexing pipeline with precise file and line references so you can navigate, debug, and compare it against other code indexers without reading the whole codebase. ## Core Features & Use Cases - Pipeline code map: Entry points, scanner, parser workers, integrator, trigram blooms, content store, and watch pipeline documented with exact source locations. - Config and invariants reference: Every .lci.kdl indexing knob, lock-ordering rules, bulk-window semantics, and known traps such as inert config keys and dead code paths. - Probe recipes and comparisons: Ready commands for auditing excludes, measuring cold index time and RSS, triggering reindex over the unix socket, plus an honest comparison against Zoekt, ripgrep, ctags, and clangd. - Use Case: A user reports that edits are not reflected in search results. Use this Skill to find the watch pipeline code, discover that watch mode silently disables when a .lci.kdl exists without watch_mode true, and verify with the listed tests. ## Quick Start Use the lci-indexing-pipeline skill to find where lci decides which files to exclude from the index and show me how to audit it with the CLI.

Frequently Asked Questions about lci-indexing-pipeline

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I trace how lci indexes a project?▼

Start at MasterIndex::index_directory in src/indexing/master_index.cpp, which opens the bulk window, then follow Pipeline::scan_and_parse in pipeline.cpp through the scanner, parser workers, and integrator. The Skill lists every stage with exact file and line references.

How does lci indexing compare to Zoekt or ripgrep?▼

lci builds an in-memory index with tree-sitter parsing, trigram blooms, and postings, rebuilt on every server start with no disk persistence. Zoekt and csearch persist trigram shards to disk, while ripgrep does no indexing at all; the Skill provides a full comparison table with measurement methods.

Why is lci watch mode not picking up my file changes?▼

Watch mode silently disables when a project ships a .lci.kdl file unless it explicitly sets watch_mode true, because make_kdl_base_config resets the default. Check your config and verify with the FileWatcherTest tests listed in the Skill.

How do I measure lci indexing memory usage per file?▼

Run lci debug memprofile with --ratio, --floor-mb, and --top flags for single-threaded per-file memory attribution through the real processor and integrator. For whole-process numbers, use /usr/bin/time -v with lci server --foreground and watch the index stages stderr line.

What are the limitations of lci's indexing approach?▼

lci has no disk persistence, so every server start pays a full cold index, and memory for reference-dense corpora can approach the 4 GB self-cap. The priority_mode and smart_size_control config keys are accepted but unused, and no incremental-update latency numbers are published.