ninja — скилл для Claude Code: что делает и как установить
Скилл учит агента диагностировать ошибки сборки Ninja, настраивать параллельные потоки и связывать Ninja с CMake.
npx skills add mohitmishra786/low-level-dev-skills --skill ninja -a claude-codeЧто делает ninja
Скилл даёт агенту инструкции по запуску и отладке низкоуровневой системы сборки Ninja. Внутри собраны готовые сценарии для связки с CMake, флаги управления потоками компиляции и диагностические утилиты вроде ninja -v или ninja -t targets.
Агент получает шпаргалку по синтаксису файлов build.ninja и типичным сбоям: от циклических зависимостей до рассинхронизации артефактов. По умолчанию Ninja берёт число доступных процессоров плюс два потока. На задачах с интенсивным дисковым вводом-выводом это перегружает систему, поэтому сборку стоит ограничивать через ключ -l. Для работы самого инструмента в проекте должен быть предварительно настроен CMake или другой мета-генератор.
Какие задачи решает
- разобрать ошибки сборки и подробный вывод компилятора через
ninja -v - настроить сборку проекта через связку CMake и Ninja
- ограничить нагрузку на процессор и диск с помощью флагов
-jи-l - сгенерировать
compile_commands.jsonдля линтеров и языковых серверов - найти циклические зависимости в графе сборки с помощью
ninja -t graph
Примеры запросов агенту
- Покажи подробный вывод команды компиляции, чтобы понять, почему падает ninja
- Сконфигурируй CMake с генератором Ninja и ограничь сборку четырьмя потоками
- Как с помощью ninja сгенерировать compile_commands.json для clang-tidy?
Как установить ninja
1Через Skills CLI (Vercel)
npx skills add mohitmishra786/low-level-dev-skills --skill ninja -a claude-code2Вручную: положить файлы
~/.claude/skills/ninja/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/ninja/
1Через Skills CLI (Vercel)
npx skills add mohitmishra786/low-level-dev-skills --skill ninja -a codex2Вручную: положить файлы
.agents/skills/ninja/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add mohitmishra786/low-level-dev-skills --skill ninja -a cursor2Вручную: положить файлы
.cursor/skills/ninja/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install mohitmishra786/low-level-dev-skills ninja2Вручную: положить файлы
.github/skills/ninja/SKILL.md1Через Skills CLI (Vercel)
npx skills add mohitmishra786/low-level-dev-skills --skill ninja -a gemini-cli2Командой платформы
gemini skills install https://github.com/mohitmishra786/low-level-dev-skills --path skills/build-systems/ninjaВручную: положить файлы
.devin/skills/ninja/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add mohitmishra786/low-level-dev-skills --skill ninja -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о ninja
Как установить ninja в Claude Code?
Выполните команду npx skills add mohitmishra786/low-level-dev-skills --skill ninja -a claude-code. Файл навыка сохранится в ~/.claude/skills/ninja/SKILL.md.
Что делает скилл ninja?
Он обучает ИИ-ассистента работе с низкоуровневой системой сборки Ninja, разбору диагностических флагов, анализу графа зависимостей и интеграции с CMake.
Сколько параллельных потоков использует Ninja по умолчанию?
Ninja запускает число задач, равное количеству ядер процессора плюс 2. При необходимости значение переопределяется ключом -j или ограничивается по средней загрузке через -l.
Исходный текст
SKILL.md · MIT
--- name: ninja description: Ninja build system skill. Use when diagnosing Ninja build failures, understanding Ninja's role as a low-level build executor generated by CMake or other meta-build systems, tuning parallelism, interpreting Ninja output, or working with build.ninja files. Activates on queries about ninja errors, ninja parallelism, ninja verbose output, build.ninja format, or ninja as a CMake generator. user-invocable: true triggers: - ninja build failure - ninja parallelism tuning - cmake ninja generator - interpret ninja output - build.ninja file format - ninja verbose output - ninja as cmake generator - diagnose ninja errors --- # Ninja ## Purpose Guide agents through Ninja as a build executor: diagnosing failures, controlling parallelism, generating from CMake, and understanding the `.ninja` file format when needed. ## Triggers - "Ninja is failing — how do I get more output?" - "How do I use Ninja with CMake?" - "How many parallel jobs does Ninja use?" - "How do I add a custom build step in Ninja?" - "What is a `build.ninja` file?" ## Workflow ### 1. Ninja as a CMake generator The most common use of Ninja is as the build executor for CMake: ```bash # Configure with Ninja cmake -S . -B build -G Ninja cmake --build build # uses ninja internally # Or invoke ninja directly cd build && ninja # Specify parallelism ninja -j4 ninja -j$(nproc) # Build specific target ninja myapp ninja install ``` CMake also supports `Ninja Multi-Config`: ```bash cmake -S . -B build -G "Ninja Multi-Config" cmake --build build --config Release cmake --build build --config Debug ``` ### 2. Verbose output and diagnostics ```bash # Show full commands (not just [CC] foo.c) ninja -v # Dry run (show what would be built) ninja -n # Show why a target needs rebuilding ninja -d explain myapp # Print all targets ninja -t targets all # Print targets grouped by rule ninja -t targets rule cc # Dependency graph (graphviz) ninja -t graph myapp | dot -Tsvg -o deps.svg ``` ### 3. Common Ninja flags | Flag | Effect | |------|--------| | `-j N` | Parallel jobs (default: CPUs + 2) | | `-l N` | Don't start new jobs if load average > N | | `-k N` | Keep going after N failures (default 1) | | `-v` | Verbose: show full command lines | | `-n` | Dry run | | `-C dir` | Change to `dir` before doing anything | | `-t tool` | Run a sub-tool (`clean`, `query`, `targets`, `graph`, `compdb`) | ### 4. Cleaning ```bash ninja -t clean # remove build outputs ninja -t clean -g # also remove generated files ``` Or via CMake: ```bash cmake --build build --target clean ``` ### 5. compile_commands.json Ninja (via CMake) can generate a `compile_commands.json` for IDE integration and `clang-tidy`: ```bash cmake -S . -B build -G Ninja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ln -sf build/compile_commands.json . ``` ### 6. build.ninja format (reference) Rarely hand-written, but useful to understand for debugging: ```ninja # Variable cflags = -Wall -O2 # Rule rule cc command = gcc $cflags -c $in -o $out description = CC $in # Build edge build foo.o: cc foo.c # Phony target build all: phony foo.o # Default target default all ``` Key concepts: - `rule`: defines how to produce outputs from inputs - `build`: instantiates a rule with specific files - `$in` / `$out`: automatic variables for inputs/outputs - `phony`: a target that is always considered out of date (like `.PHONY` in make) ### 7. Ninja sub-tools ```bash # List all build targets ninja -t targets # Query dependencies of a target ninja -t query myapp # Clean (already mentioned) ninja -t clean # Generate compile_commands.json (if supported by generator) ninja -t compdb cc cxx > compile_commands.json # List rules ninja -t rules ``` ### 8. Common issues | Issue | Cause | Fix | |-------|-------|-----| | `ninja: error: 'foo.o', needed by 'prog', missing and no known rule to make it` | Missing build rule | Regenerate with CMake; check `add_executable` source list | | Build not picking up changes | Stale `build.ninja` | Re-run `cmake -S . -B build` | | Very slow parallel build | `-j` too high for I/O-bound build | Use `-l$(nproc)` to limit by load | | Circular dependency | Rule depends on itself | Check CMake target dependencies | For the full Ninja command reference, `build.ninja` format details, and CMake integration patterns, see [references/cheatsheet.md](references/cheatsheet.md). ## Related skills - Use `skills/build-systems/cmake` for CMake configuration that generates Ninja files - Use `skills/build-systems/make` for Make-based projects
© mohitmishra786 · MIT · mohitmishra786/low-level-dev-skills