Skip to content
Agentmart
Submit a tool

remy-index

Scan source files (Python, C/C++, TypeScript, Rust) and generate semantic logic index via LLM.

Skill by MyPeacefulValentine

IndexedMIT★ 28
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/mypeacefulvalentine-remy-index

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Scan source files (Python, C/C++, TypeScript, Rust) and generate semantic logic index via LLM. Index is injected into CLAUDE.md and used by hooks/skills for dependency analysis. Run after repo init or major changes.

Use cases: ml

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/remy-index
  • Your home directory (~)

Tools it pre-approves 6

From allowed-tools in SKILL.md: the agent may use these without asking you each time.

  • Read,
  • Grep,
  • Glob,
  • Bash,
  • Edit,
  • Write

What's inside

Skill name
remy-index
Description
Scan source files (Python, C/C++, TypeScript, Rust) and generate semantic logic index via LLM. Index is injected into CLAUDE.md and used by hooks/skills for dependency analysis. Run after repo init or major changes.
License
MIT
Allowed tools
Read,, Grep,, Glob,, Bash,, Edit,, Write
Instructions
142 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts
  • Pre-approves some shell commands

Files (44)

  • README.md
  • README_zh.md
  • SKILL.md
  • bootstrap.py
  • constants.py
  • default_logic_config.template
  • impact.py
  • index_state.py
  • llm_client.py
  • llm_judge.py
  • migrations.py
  • __init__.py · parsers/
  • base.py · parsers/
  • c_cpp_parser.py · parsers/
  • python_parser.py · parsers/
  • registry.py · parsers/
  • rust_parser.py · parsers/
  • ts_parser.py · parsers/
  • judge_propagation.md · prompts/
  • summarize_cluster.md · prompts/
  • summarize_file.md · prompts/
  • summarize_symbol_c.md · prompts/
  • summarize_symbol_python.md · prompts/
  • summarize_symbol_rust.md · prompts/
  • summarize_symbol_ts.md · prompts/
  • propagation.py
  • retrieval_projection.py
  • run.py
  • scanner.py
  • schema.py
  • schema.sql
  • struct_scan.py
  • summarizer.py
  • symbol_names.py
  • symbol_selection.py
  • __init__.py · synthesizers/
  • c_fnptr_dispatch.py · synthesizers/
  • EXTENSION_PLAN.md · synthesizers/c_fnptr_profiles/
  • SCHEMA.md · synthesizers/c_fnptr_profiles/
  • __init__.py · synthesizers/c_fnptr_profiles/
  • tee.py · synthesizers/c_fnptr_profiles/
  • event_emitter.py · synthesizers/
  • interface_dispatch.py · synthesizers/
  • rust_trait_dispatch.py · synthesizers/

SKILL.md (first lines)

# Update Logic Index

Updates the semantic understanding of the codebase by scanning source files (Python, C, C++, TypeScript, Rust), extracting symbol signatures, and generating incremental summaries using an OpenAI-compatible LLM API.

Supports multi-language projects. Language is detected automatically by file extension:
- Python: `.py`
- C: `.c`, `.h`
- C++: `.cpp`, `.hpp`, `.cc`, `.cxx`, `.hh`, `.hxx`
- TypeScript: `.ts`, `.tsx`
- Rust: `.rs`

C/C++ and TypeScript/TSX parsing use regex-based extraction by default (zero external dependencies). Rust parsing requires the tree-sitter grammar (no regex fallback; without it `.rs` files fail scanning and keep previously indexed rows). Rust `impl Trait for Type` blocks are recorded as per-file `rust_trait_impl` facts; the global postprocess derives struct/enum `bases` from them (cross-file impls included, ambiguous short-name targets merge nothing) and synthesizes `trait-impl` edges at the impl site. Install `tree-sitter` for higher C/C++/TS precision and for Rust support:
```bash
pip install tree-sitter tree-sitter-c tree-sitter-cpp tree-sitter-typescript tree-sitter-rust
```

## Process

You MUST execute the following steps strictly in order.

### Phase 1: Check Configuration
1.  Check if `.claude/logic_index_config` exists.
2.  **If missing**:
    - Create it from `~/.claude/skills/remy-index/default_logic_config.template`.
    - Use `AskUserQuestion` to prompt: "Configuration generated. Please review `.claude/logic_index_config` to exclude unnecessary directories (to save Tokens). Continue?"
    - Wait for "Yes".
3.  **If exists**:
    - Read the file content.
    - Use `AskUserQuestion` to prompt: "Existing configuration found. The scan will run based on these rules (consuming Tokens). Proceed?"
    - Wait for "Yes".

### Phase 2: Execute Scanning
1.  Check if `.claude/logic_index.db` exists.
    - If **MISSING**: Output a first-run notice in the language specified by the loaded `language.md` directive.
2.  Execute the Python indexer:
    ```bash
    python "~/.claude/skills/remy-index/run.py"
    ```
3.  Wait for completion and inspect the exit code:
    - `0` (`success`): continue normally.
    - `2` (`partial`): report the incomplete stages, then continue to Phase 3 so any bootstrap confirmation marker is still handled.
    - `1` (`failed`): stop. Do not run injection; dirty paths remain queued for retry.

### Phase 2.5: Symbol Summary Confirmation (Trigger: run.py stdout contains SYMBOL_PENDING_CONFIRMATION)

After Phase 2, inspect the stdout produced by `run.py`:

1.  **Search the captured stdout for the line `SYMBOL_PENDING_CONFIRMATION`.** This line is emitted only when the effective symbol mode is `ask` (`REMY_SYMBOL_SUMMARY_MODE=ask`, or downgraded from `auto` because the pending-symbol count exceeds `REMY_SYMBOL_AUTO_SIZE_GUARD`). When this line is present, run.py has skipped the symbol layer, the file/cluster bootstrap, and the propagation pass; the call graph is already up to date.
2.  **If the line is absent**: Skip Phase 2.5 entirely.
3.  **If the line is present**: Parse the `pending_symbols=X` field, then use `AskUserQuestion` in the language specified by the loaded `language.md` directive:
    - Question (zh-CN): "检测到 {X} 个符号尚未生成 LLM 摘要。立即生成?(消耗 LLM tokens,随后自动继续 file/cluster 摘要与传播判定)"
    - Question (en): "{X} symbol(s) lack LLM summaries. Generate now? (consumes LLM tokens; file/cluster summaries and propagation follow automatically)"
    - Options:
        - "Yes — generate now (推荐)" — proceed to step 4.
        - "Skip this session" — proceed to step 5.
        - "Disable symbol summaries permanently" — proceed to step 6.
4.  **If user chose "Yes"**: Rerun the full pipeline, overriding the symbol mode to `auto`:
    ```bash
    python "~/.claude/skills/remy-index/run.py" --symbol-mode auto
    ```
    Wait for completion (the incremental structural scan is cheap; pending symbols resume automatically), then re-enter Phase 3 with the new stdout.
5.  **If user chose "Skip"**: Output a single notice: "Skipped. Summaries stay pending; run `/remy-index` again later to resume." Then continue to Phase 4 (the graph is usable without summaries).
6.  **If user chose "Disable permanently"**: Output the command for the user to apply manually: "Set `REMY_SYMBOL_SUMMARY_MODE=never` through `remy-cc config --path <project>`." Then continue to Phase 4.

### Phase 3: Hierarchical Bootstrap Confirmation (Trigger: run.py stdout contains BOOTSTRAP_PENDING_CONFIRMATION)

After Phase 2, inspect the stdout produced by `run.py` and decide whether to ask the user about generating file/cluster summaries:

1.  **Search the captured stdout for the line `BOOTSTRAP_PENDING_CONFIRMATION`.** This line is emitted only when `REMY_SUMMARY_BOOTSTRAP_MODE=ask` (explicit or downgraded from `auto` due to a missing API key or file count exceeding `REMY_BOOTSTRAP_AUTO_SIZE_GUARD`).
2.  **If the line is absent**: Skip Phase 3 entirely. `auto` mode already generated file/cluster summaries; `never` mode intentionally skipped.
3.  **If the line is present**: Parse the `pending_files=X pending_clusters=Y` fields, then use `AskUserQuestion` in the language specified by the loaded `language.md` directive:
    - Question (zh-CN): "检测到 {X} 个文件 + {Y} 个集群尚未生成层级摘要。立即生成?(消耗 LLM tokens)"
    - Question (en): "{X} file(s) and {Y} cluster(s) lack hierarchical summaries. Generate now? (consumes LLM tokens)"
    - Options:
        - "Yes — generate now (推荐)" — proceed to step 4.
        - "Skip this session" — proceed to step 5.
        - "Disable hierarchical summaries permanently" — proceed to step 6.
4.  **If user chose "Yes"**: Execute the bootstrap-only entry, overriding the mode to `auto`:
    ```bash
    python "~/.claude/skills/remy-index/run.py" --bootstrap-only --mode auto
    ```
    Wait for completion. The output again contains a `BOOTSTRAP_RESULT` line confirming file_done / cluster_done counts.
5.  **If user chose "Skip"**: Output a single notice: "Skipped. Run `/remy-index` again or `remy-cc summary-rebuild` later to retry."
6.  **If user chose "Disable permanently"**: Output the command for the user to apply manually: "Set `REMY_SUMMARY_BOOTSTRAP_MODE=never` through `remy-cc config --path <project>`."

### Phase 4: Injection Strategy
1.  Determine the injection policy from the effective Remy configuration key `REMY_LOGIC_INDEX_AUTO_INJECT`.
    - Default is `ALWAYS` if not set.

2.  **Branching Logic**:

    - **Case A: Policy == ALWAYS**
        - Execute Injection immediately:
          ```bash
          REMY_LOGIC_INDEX_AUTO_INJECT=ALWAYS python "~/.claude/hooks/doc_manager/injector.py"
          ```

    - **Case B: Policy == ASK**
        - Use `AskUserQuestion` to prompt: "Logic Index generated. Inject into CLAUDE.md context?"
        - Options: ["Yes (Inject)", "No (Skip)"]
        - **If Yes**:
          ```bash
          REMY_LOGIC_INDEX_AUTO_INJECT=ALWAYS python "~/.claude/hooks/doc_manager/injector.py"
          ```
        - **If No**:
          - Output: "Skipping injection."

    - **Case C: Policy == NEVER**
        - Output: "Skipping injection (Policy: NEVER)."

## Configuration

`run.py` reads the independent Remy configuration files through the shared
registry. User values live in `~/.claude/remy-config.json`; project overrides
live in `<project>/.claude/remy-config.json`. Same-named process environment
variables override files for the current process tree.

- `REMY_LLM_API_KEY`: API key for an OpenAI-compatible service.
- `REMY_LLM_MODEL`: model name (default: `deepseek-v4-flash`).

From MyPeacefulValentine/Remy-CC, MIT.

More from MyPeacefulValentine/Remy-CC

Signals

Stars
28
Forks
0
Open issues
0
Last commit (this folder)
Aug 30, 2026 (1 month ago)
Last release
Oct 18, 2026 (10 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from MyPeacefulValentine

Cite this page

remy-index skill. Agent Mart. https://agentmart.dev/skills/mypeacefulvalentine-remy-index (last updated 2026-10-24)