Run full verification before committing or creating a PR
Run full verification before committing or creating a PR.
Use this skill to run comprehensive checks before finalizing changes.
Determine which code was modified (C, Rust, or both) and run the appropriate checks.
Run the following checks in order:
./build.sh
Ensure the full project compiles without warnings promoted to errors.
./build.sh RUN_UNIT_TESTS ENABLE_ASSERT=1
All unit tests must pass. Use /run-c-unit-tests for details on running specific tests.
./build.sh RUN_PYTEST ENABLE_ASSERT=1
Required for changes to command handlers, query execution, indexing pipeline, or RDB serialization.
./build.sh RUN_UNIT_TESTS SAN=address
If the change claims to fix a memory-safety bug, also follow Memory-safety fixes (either language) below.
coord/ code was modified)Changes to the coordinator (src/coord/), distributed hybrid (src/coord/hybrid/), or
the Map-Reduce layer (src/coord/rmr/) must be tested in a clustered environment:
./build.sh RUN_PYTEST ENABLE_ASSERT=1 REDIS_STANDALONE=0 SHARDS=3
This spins up a 3-shard cluster and runs the full test suite against it.
make fmt CHECK=1
If it fails, run make fmt to fix formatting.
make lint
Fix any clippy warnings or errors.
./build.sh
Ensure the full project compiles.
cargo nextest run --manifest-path src/redisearch_rs/Cargo.toml
All Rust tests must pass.
If the change claims to fix a memory-safety bug, also follow Memory-safety fixes (either language) below.
Run all checks from both sections above.
When the change claims to fix a memory-safety bug (out-of-bounds access, use-after-free), demonstrate the bug once on the pre-fix code with an executed sanitizer repro — a predicted report is not verification. Expect the sanitizer report on the pre-fix code and a clean run on the fixed one.
For C, the cheap form needs no ASan build tree: extract the affected file at the pre-fix revision and compile a standalone repro against it, e.g.
git show HEAD:src/<file>.c > /tmp/before_fix.c # fix not yet committed (the usual case)
git show <fix-commit>^:src/<file>.c > /tmp/before_fix.c # fix already committed
clang -fsanitize=address -g -O0 <repro.c> /tmp/before_fix.c -o repro && ./repro
Most src/ files won't compile standalone as-is: expect to add -I paths and stub out
heavyweight includes (rm_malloc, RS_ABORT, module headers) with minimal definitions
in the repro's own directory. That stubbing is usually minutes of work, not hours.
The repro must build against a consistent pre-fix baseline. If the fix also touches a
header, macro, or inline helper the extracted file depends on, extract those at the same
pre-fix revision — compiling a pre-fix .c against post-fix headers tests a mixed
program that can hide the bug or fail for an unrelated reason. When the dependency set
grows past a few files, a worktree checked out at the pre-fix revision is simpler.
For Rust, run the failing case on the pre-fix code under Miri
(cargo +nightly miri test --manifest-path src/redisearch_rs/Cargo.toml -p <crate>);
for bugs Miri cannot reach (FFI, foreign memory), use an ASan build of the affected test.
Single-file extraction does not work here — cargo builds the whole crate — and the
current checkout already contains the fix, so a Miri run in it only shows the fixed
code is clean. Check out a pre-fix tree first:
git worktree add --detach /tmp/prefix_tree HEAD # fix not yet committed (the usual case)
git worktree add --detach /tmp/prefix_tree <fix-commit>^ # fix already committed
If the failing test was added alongside the fix, copy the test (and only the test) into
that tree. Run Miri or ASan with --manifest-path pointing at the worktree, expect the
failure there and a clean run in the fixed checkout, then clean up with
git worktree remove --force /tmp/prefix_tree.
./build.sh RUN_PYTEST ENABLE_ASSERT=1
For minor Rust-only changes (subshell keeps the chain readable — one cwd hop, three commands):
(cd src/redisearch_rs && cargo fmt --check && cargo clippy --all-targets && cargo nextest run)
For minor C-only changes:
./build.sh && ./build.sh RUN_UNIT_TESTS ENABLE_ASSERT=1
npx skills add RediSearch/verify下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer