slurm-job-script-generator
О программе
Этот навык создает проверенные скрипты заданий SLURM sbatch с автоматической проверкой корректности запросов ресурсов HPC. Он помогает разработчикам настраивать конфигурации MPI/OpenMP, задания для GPU и устранять проблемы с запуском, предотвращая конфликты директив. Используйте его при подготовке отправки заданий в кластер, стандартизации скриптов команды или диагностике неудачных заданий.
Быстрая установка
Claude Code
Рекомендуетсяnpx skills add HeshamFS/materials-simulation-skills -a claude-code/plugin add https://github.com/HeshamFS/materials-simulation-skillsgit clone https://github.com/HeshamFS/materials-simulation-skills.git ~/.claude/skills/slurm-job-script-generatorСкопируйте и вставьте эту команду в Claude Code для установки этого навыка
Документация
SLURM Job Script Generator
Goal
Generate a correct, copy-pasteable SLURM job script (.sbatch) for running a simulation, and surface common configuration mistakes (bad walltime format, conflicting memory flags, oversubscription hints).
Requirements
- Python 3.8+
- No external dependencies (Python standard library only)
- Works on Linux, macOS, and Windows (script generation only)
Inputs to Gather
| Input | Description | Example |
|---|---|---|
| Job name | Short identifier for the job | phasefield-strong-scaling |
| Walltime | SLURM time limit | 00:30:00 |
| Partition | Cluster partition/queue (if required) | compute |
| Account | Project/account (if required) | matsim |
| Nodes | Number of nodes to allocate | 2 |
| MPI tasks | Total tasks, or tasks per node | 128 or 64 per node |
| Threads | CPUs per task (OpenMP threads) | 2 |
| Memory | --mem or --mem-per-cpu (cluster policy dependent) | 32G |
| GPUs | GPUs per node (optional) | 4 |
| Working directory | Where the run should execute | $SLURM_SUBMIT_DIR |
| Modules | Environment modules to load (optional) | gcc/12, openmpi/4.1 |
| Run command | The command to launch under SLURM | ./simulate --config cfg.json |
Decision Guidance
MPI vs MPI+OpenMP layout
Does the code use OpenMP / threading?
├── NO → Use MPI-only: cpus-per-task=1
└── YES → Use hybrid: set cpus-per-task = threads per MPI rank
and export OMP_NUM_THREADS = cpus-per-task
Rule of thumb: if you see diminishing strong-scaling efficiency at high MPI ranks, try fewer ranks with more threads per rank (and measure).
Memory flag selection
- Use either
--mem(per node) or--mem-per-cpu(per CPU), not both. - Follow your cluster’s documentation; some sites enforce one style.
- SLURM
--memunits are integer MB by default, or an integer with suffixK/M/G/T(and--mem=0commonly means “all memory on node”).
Script Outputs (JSON Fields)
| Script | Key Outputs |
|---|---|
scripts/slurm_script_generator.py | results.script, results.directives, results.derived, results.warnings |
Workflow
- Gather cluster constraints (partition/account, GPU policy, memory policy).
- Choose a process layout (MPI-only vs hybrid MPI+OpenMP).
- Generate the script with
slurm_script_generator.py. - Inspect warnings (conflicts, suspicious layouts).
- Save the generated script as
job.sbatch. - Submit with
sbatch job.sbatchand monitor withsqueue.
CLI Examples
# Preview a job script (prints to stdout)
python3 skills/hpc-deployment/slurm-job-script-generator/scripts/slurm_script_generator.py \
--job-name phasefield \
--time 00:10:00 \
--partition compute \
--nodes 1 \
--ntasks-per-node 8 \
--cpus-per-task 2 \
--mem 16G \
--module gcc/12 \
--module openmpi/4.1 \
-- \
./simulate --config config.json
# Write to a file and also emit structured JSON
python3 skills/hpc-deployment/slurm-job-script-generator/scripts/slurm_script_generator.py \
--job-name phasefield \
--time 00:10:00 \
--nodes 1 \
--ntasks 16 \
--cpus-per-task 1 \
--out job.sbatch \
--json \
-- \
/bin/echo hello
Conversational Workflow Example
User: I need an sbatch script for my MPI simulation. I want 2 nodes, 64 ranks per node, 2 OpenMP threads per rank, and 2 hours.
Agent workflow:
- Confirm partition/account and whether GPUs are needed.
- Generate a hybrid job script:
python3 scripts/slurm_script_generator.py --job-name run --time 02:00:00 --nodes 2 --ntasks-per-node 64 --cpus-per-task 2 -- -- ./simulate - Explain the mapping:
- Total ranks = 128
- Threads per rank = 2 (
OMP_NUM_THREADS=2)
- If the user provides node core counts, sanity-check oversubscription using
--cores-per-node.
Error Handling
| Error | Cause | Resolution |
|---|---|---|
time must be HH:MM:SS or D-HH:MM:SS | Bad walltime format | Use 00:30:00 or 1-00:00:00 |
nodes must be positive | Non-positive nodes | Provide --nodes >= 1 |
Provide either --mem or --mem-per-cpu, not both | Conflicting memory directives | Choose one memory style |
Provide a run command after -- | Missing launch command | Add -- ./simulate ... |
Security
Input Validation
--timeis validated against strictHH:MM:SSorD-HH:MM:SSformat via regex--nodes,--ntasks,--ntasks-per-node,--cpus-per-task,--gpusare validated as positive integers with upper bounds--memand--mem-per-cpuare validated against SLURM's accepted format (<int>[K|M|G|T]); providing both simultaneously is rejected--job-nameis validated against[a-zA-Z0-9_.-]+(no shell metacharacters)--partitionand--accountare validated against safe-character allowlists--modulevalues are validated to prevent shell injection (no;,|,&, backticks, or$)
File Access
- The script reads no external files; all inputs are provided via CLI arguments
--outwrites the generated sbatch script to a single specified file path- The generated script is a plain-text shell script with
#SBATCHdirectives; it contains no dynamically generated code
Tool Restrictions
- Read: Used to inspect script source, references, and existing job scripts
- Bash: Used to execute
slurm_script_generator.pywith explicit argument lists; the generated script itself is NOT executed by the agent - Write: Used to save the generated
.sbatchfile; writes are scoped to the user's working directory - Grep/Glob: Used to locate existing scripts, configs, and cluster documentation
Safety Measures
- No
eval(),exec(), or dynamic code generation - All subprocess calls use explicit argument lists (no
shell=True) - The run command (after
--) is included verbatim in the generated script but is never executed by the skill itself - Module names are sanitized to prevent injection into
module loaddirectives - Generated scripts use
set -euo pipefailfor safe shell execution on the cluster
Limitations
- Does not query cluster hardware or site policies; it can only validate internal consistency.
- SLURM installations vary (GPU directives, QoS rules, partitions). Adjust directives for your site.
References
references/slurm_directives.md- Common#SBATCHdirectives and mapping tips
Version History
- v1.0.0 (2026-02-25): Initial SLURM job script generator
GitHub репозиторий
Frequently asked questions
What is the slurm-job-script-generator skill?
slurm-job-script-generator is a Claude Skill by HeshamFS. Skills package instructions and resources that Claude loads on demand, so Claude can perform slurm-job-script-generator-related tasks without extra prompting.
How do I install slurm-job-script-generator?
Use the install commands on this page: add slurm-job-script-generator to Claude Code as a plugin, or clone its repository into your skills directory, then restart Claude so it picks up the skill.
What category does slurm-job-script-generator belong to?
slurm-job-script-generator is in the Meta category, tagged automation.
Is slurm-job-script-generator free to use?
Yes. slurm-job-script-generator is listed on AIMCP and free to install. It runs inside Claude, so no separate service account is required to use the skill itself.
Похожие навыки
Этот навык предоставляет проверенную в продакшене настройку для Content Collections — TypeScript-ориентированного инструмента, который преобразует файлы Markdown/MDX в типобезопасные коллекции данных с валидацией Zod. Используйте его при создании блогов, сайтов документации или контентных приложений на Vite + React для обеспечения типобезопасности и автоматической проверки содержимого. Он охватывает всё: от настройки плагина Vite и компиляции MDX до оптимизации развертывания и валидации схем.
Этот навык позволяет разработчикам создавать приложения на платформе прогнозных рынков Polymarket, включая интеграцию с API для торговли и получения рыночных данных. Он также обеспечивает потоковую передачу данных в реальном времени через WebSocket для отслеживания текущих сделок и рыночной активности. Используйте его для реализации торговых стратегий или создания инструментов, обрабатывающих обновления рынка в реальном времени.
Этот навык помогает разработчикам создавать плагины OpenCode, которые подключаются к более чем 25 типам событий, таким как команды, файлы и операции LSP. Он предоставляет структуру плагина, спецификации API событий и шаблоны реализации для модулей на JavaScript/TypeScript. Используйте его, когда вам нужно перехватывать, отслеживать или расширять жизненный цикл ассистента OpenCode AI с помощью пользовательской событийно-ориентированной логики.
SGLang — это высокопроизводительный фреймворк для обслуживания больших языковых моделей (LLM), специализирующийся на быстрой структурированной генерации JSON, regex и рабочих процессов агентов с использованием кэширования префиксов RadixAttention. Он обеспечивает значительно более высокую скорость вывода, особенно для задач с повторяющимися префиксами, что делает его идеальным для сложных структурированных результатов и многократных диалогов. Выбирайте SGLang вместо альтернатив, таких как vLLM, когда вам требуется ограниченное декодирование или вы создаете приложения с интенсивным совместным использованием префиксов.
