cargo-fuzz — скилл для Claude Code: что делает и как установить
Разворачивает cargo-fuzz в Rust-крейте и проводит через обвязку, санитайзеры и разбор падений.
npx skills add trailofbits/skills --skill cargo-fuzz -a claude-codeЧто делает cargo-fuzz
Скилл ставит в проект cargo-fuzz и ведёт по шагам: cargo fuzz init создаёт каталог fuzz/ с отдельным Cargo.toml и заготовкой fuzz/fuzz_targets/fuzz_target_1.rs. Бэкенд — libFuzzer, а подкоманда Cargo сама включает нужные флаги сборки, включая AddressSanitizer. ASan работает по умолчанию.
Обвязку пишут макросом fuzz_target!, а не собственным main. Для структурных входов есть связка с крейтом arbitrary: #[derive(Arbitrary)] на типе, и этот же тип принимает замыкание fuzz_target!. Фаззить удобнее библиотечный крейт, поэтому бинарный проект придётся разделить на main.rs и lib.rs — иначе обвязку не к чему прицепить.
Ночной тулчейн обязателен: без rustup install nightly и запуска через cargo +nightly fuzz run сборка не пойдёт. Если unsafe нет ни в коде, ни в зависимостях, санитайзеры отключают флагом --sanitizer none. Проверить наличие unsafe помогает cargo geiger. Падения ложатся в fuzz/artifacts/fuzz_target_1/, и любой из них перезапускается, если передать файл аргументом после имени цели.
Какие задачи решает
- поднять фаззинг в Cargo-проекте без ручной настройки флагов
- написать обвязку
fuzz_target!вокруг unsafe-кода или FFI - воспроизвести конкретный краш из
fuzz/artifacts/fuzz_target_1/ - прогнать корпус без фаззинга через
-- -runs=0 - снять покрытие по корпусу и посмотреть, какие строки не пройдены
Примеры запросов агенту
- Инициализируй cargo-fuzz в этом крейте и объясни, что дописать в `fuzz/fuzz_targets/fuzz_target_1.rs`.
- Прогони `cargo +nightly fuzz run fuzz_target_1` и покажи, какой вход упал.
- Разбери этот краш: воспроизведи его и предложи фикс в `src/lib.rs`.
Как установить cargo-fuzz
1Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill cargo-fuzz -a claude-code2Вручную: положить файлы
~/.claude/skills/cargo-fuzz/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/cargo-fuzz/
1Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill cargo-fuzz -a codex2Вручную: положить файлы
.agents/skills/cargo-fuzz/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill cargo-fuzz -a cursor2Вручную: положить файлы
.cursor/skills/cargo-fuzz/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install trailofbits/skills cargo-fuzz2Вручную: положить файлы
.github/skills/cargo-fuzz/SKILL.md1Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill cargo-fuzz -a gemini-cli2Командой платформы
gemini skills install https://github.com/trailofbits/skills --path plugins/testing-handbook-skills/skills/cargo-fuzzВручную: положить файлы
.devin/skills/cargo-fuzz/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill cargo-fuzz -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Из того же набора35
Весь набор →Похожие
Вопросы о cargo-fuzz
Как установить скилл cargo-fuzz в Claude Code?
Одной командой: npx skills add trailofbits/skills --skill cargo-fuzz -a claude-code. Файл скилла окажется в ~/.claude/skills/cargo-fuzz/SKILL.md.
Что делает этот скилл?
Помогает настроить и запустить cargo-fuzz в Rust-крейте: инициализация, обвязка на fuzz_target!, структурные входы через arbitrary, выбор санитайзера и перезапуск упавшего входа.
Что нужно, чтобы скилл заработал?
Rust и Cargo, поставленные через rustup, ночной тулчейн (rustup install nightly) и сама утилита (cargo install cargo-fuzz). Для покрытия дополнительно нужны llvm-tools-preview, cargo-binutils и rustfilt.