К основному содержанию
скилл CX Codex

ninja — скилл для Claude Code: что делает и как установить

Скилл учит агента диагностировать ошибки сборки Ninja, настраивать параллельные потоки и связывать Ninja с CMake.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add mohitmishra786/low-level-dev-skills --skill ninja -a claude-code
Открыть на GitHub

Что делает 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-code

2Вручную: положить файлы

~/.claude/skills/ninja/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/ninja/

По шагам, с командами для каждой платформы: Как установить скилл в 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

Похожие скиллы

Все скиллы по теме «DevOps и инфраструктура» →
wizard Matt Pocock Скилл создаёт интерактивный bash-скрипт для ручных шагов: настройки сервисов, секретов CI и разовых миграций. 553 369установок hyperframes-cli heygen-com Управляет проектами HyperFrames через терминал: собирает таймлайн, проверяет контраст кадров, запускает предпросмотр и рендерит видео локально или в облаке. CX Codex +1 1 300 000установок setup-pre-commit Matt Pocock Скилл настраивает pre-commit для JavaScript-репозитория: Husky запускает форматирование, проверку типов и тесты перед коммитом. 489 289установок using-git-worktrees Jesse Vincent Готовит изолированное рабочее дерево перед доработкой или выполнением плана. Проверяет текущий репозиторий, выбирает нативные средства платформы либо Git. CX Codex 217 153установок finishing-a-development-branch Jesse Vincent Скилл проверяет тесты и помогает выбрать, как завершить работу в ветке: слить её, открыть Pull Request или оставить как есть. CX Codex 214 439установок orca-cli stablyai Скилл даёт агенту доступ к worktree, терминалам, артефактам и встроенному браузеру Orca через CLI. Пригодится, когда работа идёт в окружении Orca. CX Codex +1 353 600установок

Из того же набора79

elf-inspection Ведёт агента по readelf, objdump, nm и ldd: зависимости, символы, секции, отладочная информация и ошибки линковки. CX Codex +1 640установок freertos Помогает писать код для FreeRTOS: создавать задачи, передавать данные через очереди, ловить переполнение стека и отлаживать потоки в GDB. CX Codex +1 637установок linux-kernel-modules Ведёт агента по написанию и отладке загружаемых модулей ядра Linux: Kbuild, параметры модуля, /proc, sysfs, символьные устройства, KGDB и ftrace. CX Codex +1 639установок memory-model Скилл для работы с моделью памяти C++ и Rust: подсказывает, какой memory order выбрать, и разбирает гонки данных в атомиках. CX Codex +1 634установок heaptrack Ведёт агента по heaptrack: запись трасс аллокаций, разбор через heaptrack_print, поиск утечек и сравнение запусков. CX Codex +1 623установок fuzzing Помогает писать фаззинг-таргеты для C и C++, настраивать libFuzzer и AFL++, подключать санитайзеры и встраивать проверки в CI. CX Codex +1 618установок msvc-cl Подсказывает агенту, как компилировать C и C++ через MSVC cl.exe и clang-cl: флаги, рантайм, PDB, ошибки линковки. CX Codex +1 617установок ebpf Помогает писать программы eBPF на C и bpftrace для мониторинга Linux и обработки пакетов XDP. Подсказывает структуры карт ядра и чинит ошибки верификатора. CX Codex +1 610установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой