system-profile — скилл для Claude Code: что делает и как установить
Профилирует скрипты, процессы, память и GPU с помощью системных утилит и точечной инъекции замеров в код. Помогает найти узкие места в обучении моделей или пайплайнах.
npx skills add wanshuiyin/Auto-claude-code-research-in-sleep --skill system-profile -a claude-codeЧто делает system-profile
Скилл анализирует производительность конкретного скрипта, процесса по PID, сервиса вроде vLLM или подсистем железа. Он сам выбирает способ замера под указанную цель. Для анализа задействуются профилировщики cProfile, py-spy, torch.profiler, nsys, системные команды вроде strace или анализ топологии через nvidia-smi.
Когда внешних утилит не хватает, ассистент сам дописывает замеры в исходный код. Он использует декораторы, контекстные менеджеры и таймеры CUDA-событий, помечая каждую правку комментарием # [PROFILE]. В циклах агент не ставит замеры на каждую итерацию, чтобы не искажать результаты. Это снижает эффект наблюдателя. Все артефакты, логи и трейсы сохраняются в каталог ./profile_output/.
Итоговый отчёт содержит таблицы накладных расходов CPU, памяти и шины данных, а также обязательный список изменённых файлов. Вы всегда можете потребовать откат всех правок. Агенту требуются локально установленные утилиты профилирования, иначе глубокий сбор метрик по GPU и сети сорвётся.
Какие задачи решает
- замерить пропускную способность связок GPU и NVLink
- найти узкие места в скриптах обучения и сервисах на vLLM
- отследить избыточное дублирование данных между CPU и GPU
- расставить замеры времени CUDA-событий без ручной правки кода
Примеры запросов агенту
- Профиль train.py
- Запусти бенчмарк vllm serving и найди узкие места
- Сними профиль gpu и interconnect для pid 1234
Как установить system-profile
1Через Skills CLI (Vercel)
npx skills add wanshuiyin/Auto-claude-code-research-in-sleep --skill system-profile -a claude-code2Вручную: положить файлы
~/.claude/skills/system-profile/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/system-profile/
1Через Skills CLI (Vercel)
npx skills add wanshuiyin/Auto-claude-code-research-in-sleep --skill system-profile -a codex2Вручную: положить файлы
.agents/skills/system-profile/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add wanshuiyin/Auto-claude-code-research-in-sleep --skill system-profile -a cursor2Вручную: положить файлы
.cursor/skills/system-profile/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install wanshuiyin/Auto-claude-code-research-in-sleep system-profile2Вручную: положить файлы
.github/skills/system-profile/SKILL.md1Через Skills CLI (Vercel)
npx skills add wanshuiyin/Auto-claude-code-research-in-sleep --skill system-profile -a gemini-cli2Командой платформы
gemini skills install https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep --path skills/system-profileВручную: положить файлы
.devin/skills/system-profile/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add wanshuiyin/Auto-claude-code-research-in-sleep --skill system-profile -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о system-profile
Как установить system-profile в Claude Code?
Выполните в терминале команду npx skills add wanshuiyin/Auto-claude-code-research-in-sleep --skill system-profile -a claude-code. Также можно вручную сохранить файл в ~/.claude/skills/system-profile/SKILL.md.
Что делает скилл system-profile?
Он запускает системные профилировщики или внедряет таймеры в код целевого процесса, скрипта либо сервиса. По итогам агент формирует сводку узких мест и сохраняет трейсы в ./profile_output/.
Как вернуть код в исходное состояние после замеров?
Агент обязан составить таблицу со списком изменённых файлов и строк. После завершения анализа достаточно попросить его удалить всю добавленную разметку.
Исходный текст
SKILL.md · MIT
--- name: system-profile description: "Profile a target (script, process, GPU, memory, interconnect) for performance analysis. Use when user says \"profile\", \"benchmark\", \"bottleneck\", or wants performance analysis." argument-hint: '<target, e.g. "train.py", "gpu", "pid 1234", "vllm serving">' --- # System Profile Profile the specified target and summarize the results. Target: $ARGUMENTS ## Instructions You are a profiling assistant. Based on the user's target, choose appropriate profiling strategies, **including writing instrumentation code when needed**, then run profiling, analyze results, and produce a summary. ### Step 1: Determine the profiling target Parse `$ARGUMENTS` to understand what to profile. Examples: - A Python script or module - A running process (PID or service name) - A specific function or code block - An entire framework or system (e.g., "autogen", "vllm serving") — profile its end-to-end execution, identify bottlenecks across components - "gpu" / "interconnect" / "memory" for focused profiling If `$ARGUMENTS` is empty or unclear, ask the user. ### Step 2: Choose profiling methods Select from external tools and/or code instrumentation as appropriate. Don't limit yourself to the examples below — use whatever makes sense for the target. **External tools** (check availability first): - CPU: `cProfile`, `py-spy`, `line_profiler`, `perf stat`, `/usr/bin/time -v` - Memory: `tracemalloc`, `memory_profiler`, `memray` - GPU: `nvidia-smi`, `nvidia-smi dmon`, `nvitop`, `torch.profiler`, `nsys` - Interconnect: `nvidia-smi topo -m`, `nvidia-smi nvlink`, `NCCL_DEBUG=INFO` - System: `strace -c`, `iostat`, `vmstat` **Code instrumentation** — when external tools are insufficient, write and insert profiling code into the target. Typical scenarios: - Timing specific code blocks (wall time vs CPU time) - Measuring CPU-GPU or GPU-GPU transfer size, frequency, and bandwidth - Tracking memory allocation across CPU and GPU to detect redundancy - Wrapping NCCL collectives to measure latency and throughput - Adding CUDA event timing around kernels Design the instrumentation based on what you observe in the code — don't use a fixed template. ### Step 3: Key dimensions to investigate Depending on the target, focus on some or all of these: **CPU overhead** - Context switching (voluntary / involuntary) - CPU utilization: ratio of CPU time to wall time - Per-function execution time hotspots **Memory overhead** - CPU and GPU memory usage (allocated vs reserved vs peak) - Redundant replication: same data living on both CPU and GPU - Per-device allocation balance in multi-GPU setups **Interconnect & communication** - CPU-GPU transfer: frequency, per-transfer size, total volume, bandwidth achieved - GPU-GPU transfer: P2P bandwidth, NVLink vs PCIe topology impact - NCCL collectives: operation type, message size distribution, latency - Communication-to-computation ratio **GPU compute** - SM utilization, kernel launch overhead - Memory bandwidth utilization vs peak ### Step 4: Instrumentation guidelines When inserting code into the target: 1. Read and understand the target code first 2. Prefer wrapping (decorator, context manager, standalone runner) over inline edits 3. If inline edits are necessary, mark them clearly (e.g., `# [PROFILE]` comments) 4. Minimize observer effect — don't instrument tight inner loops; sample instead 5. Collect results into a structured log, don't scatter print statements ### Step 5: Run profiling 1. Check available tools and hardware topology 2. Run the chosen methods, capture all output 3. Save artifacts (flamegraphs, traces, logs) to `./profile_output/` ### Step 6: Produce the report **Part A — Profiling results** (structured tables by dimension, as applicable): - CPU overhead table - Memory overhead table (with redundancy column) - Interconnect table (transfer type / frequency / size / latency / bandwidth) - Hotspots / bottleneck identification - Actionable recommendations ranked by expected impact **Part B — Instrumentation changelog** (MANDATORY): List every file that was modified or created for profiling purposes: | File | Change type | What was added/modified | Line(s) | |------|-------------|------------------------|---------| | ... | modified | ... | ... | | ... | created | ... | — | This allows the user to review and revert all instrumentation changes. Offer to clean up (remove all instrumentation) when the user is done.
© wanshuiyin · MIT · wanshuiyin/Auto-claude-code-research-in-sleep