RediSearch / analyze-rust-ffi-crate-surface
Install for your project team
Run this command in your project directory to install the skill for your entire team:
mkdir -p .claude/skills/analyze-rust-ffi-crate-surface && curl -L -o skill.zip "https://fastmcp.me/Skills/Download/2649" && unzip -o skill.zip -d .claude/skills/analyze-rust-ffi-crate-surface && rm skill.zip
Project Skills
This skill will be saved in .claude/skills/analyze-rust-ffi-crate-surface/ and checked into git. All team members will have access to it automatically.
Important: Please verify the skill by reviewing its instructions before using it.
Determine which parts of the C codebase use Rust-defined C symbols.
0 views
0 installs
Skill Content
--- name: analyze-rust-ffi-crate-surface description: Determine which parts of the C codebase use Rust-defined C symbols. Use this when you want to understand which C code files may be impacted by changes to a Rust FFI crate. --- # Analyze Rust FFI Crate Surface Compile a list of all C-visible symbols defined in a given Rust FFI crate or file (e.g. an `extern "C" fn` annotated with `#[unsafe(no_mangle)]` or a type definition). Then determine which parts of the C codebase use these symbols. ## Arguments - `<path>`: Path to the Rust crate or file. - `<path 1> <path 2>`: Multiple Rust crates/files. If the path doesn't start with `src/`, assume it to be in the `src/redisearch_rs/c_entrypoint` directory. E.g. `numeric_range_tree_ffi` becomes `src/redisearch_rs/numeric_range_tree_ffi`. If the path points to a directory, review the documentation of all Rust files in that directory. ## Instructions - Read the relevant Rust source files. - Compile a list of all the FFI symbols defined they expose (e.g. `extern "C" fn` annotated with `#[unsafe(no_mangle)]` or type definitions). You can use the corresponding auto-generated header file in `src/redisearch_rs/headers`, if it helps. - For each symbol, determine which modules in the C codebase use it: - For functions, look for calls to the function in the C codebase. - For types, check out if they are used as function arguments, field types, or in type casts. Emit a report that lists, for each symbol, the following information: - The symbol name. - The module(s) in the C codebase that use it. - The type(s) of the symbol (function, type, etc.). - If it's only used in C/C++ unit tests (i.e. under `tests/) ## Auto-generated header files Each `*_ffi` Rust crate has a corresponding auto-generated header file in `src/redisearch_rs/headers`, created by the `build.rs` script via `cbindgen`. The auto-generated header file includes all the FFI symbols defined by the Rust crate, no matter the sub-module they are defined in.