[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71PXYAXBR0XF2BTQSS4404G":3,"skill-same:01M71PXYAXBR0XF2BTQSS4404G":117},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":52,"commitSha":53,"skillDirectory":54,"forksCount":14,"repositoryHtmlUrl":55,"repositoryHomepageUrl":56,"ownerHtmlUrl":57,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":58,"install":59,"resources":72},"01M71PXYAXBR0XF2BTQSS4404G","tao-run-on-slurm",null,"Remote SLURM GPU cluster execution over SSH with sbatch\u002Fsrun, Pyxis\u002FEnroot containers, and Lustre-backed results. Use when running TAO training\u002Feval\u002Finference jobs on an on-prem or DGX SLURM cluster. Trigger phrases include \"run on SLURM\", \"submit sbatch\", \"DGX SLURM cluster\", \"Pyxis\u002FEnroot container\", \"Lustre dataset\".","pattanation\u002FNorvik","pattanation","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F235419268?v=4","01M71M5THHYYB15ME8R2E4FCZG","Patta","01M71M5TJM1NDM992M8PDKYR2K",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-run-on-slurm\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"run","Slurm","tao","tao run on slurm","read","login","Bash","dataset","you","hostname","when","access","remote","only","eval","training","submit","auth","nvidia-tao","passwordless","2026-11-10 13:02:02",false,"---\nname: tao-run-on-slurm\ndescription: Remote SLURM GPU cluster execution over SSH with sbatch\u002Fsrun, Pyxis\u002FEnroot containers, and Lustre-backed\n  results. Use when running TAO training\u002Feval\u002Finference jobs on an on-prem or DGX SLURM cluster. Trigger phrases include\n  \"run on SLURM\", \"submit sbatch\", \"DGX SLURM cluster\", \"Pyxis\u002FEnroot container\", \"Lustre dataset\".\nlicense: Apache-2.0\ncompatibility: Requires SSH access to a SLURM login node (passwordless via key auth) and SLURM_USER + SLURM_HOSTNAME env vars.\n  The TAO SDK with the slurm extra (pip install 'nvidia-tao-sdk[slurm]') is needed only if you want Job handles, S3 I\u002FO wrapping,\n  or run-folder durability via ActionWorkflow.\nmetadata:\n  author: NVIDIA Corporation\n  version: \"0.1.0\"\nallowed-tools: Read Bash\ntags:\n- platform\n- slurm\n---\n\n# SLURM\n\nRemote GPU compute platform for clusters managed by SLURM. Jobs are submitted\nfrom the TAO service or SDK host to a login node over SSH, staged on a shared\nfilesystem, submitted with `sbatch`, and executed with `srun` container support.\n\n## When to use\n\nUse SLURM when the user has access to a managed GPU cluster, shared Lustre\nstorage, and scheduler-owned GPU allocation. Do not use SLURM for local files\nthat exist only on the agent machine; data and outputs must be reachable from\nthe cluster.\n\n## Preflight + SSH\n\nConfirm `SLURM_USER` and `SLURM_HOSTNAME` are exported and passwordless SSH to a\nlogin host works (`ssh -o BatchMode=yes`). Optionally install the TAO SDK\nwrapper for Job handles + S3 wrapping (`nvidia-tao-sdk[slurm]`, on public PyPI).\nFor private `nvcr.io` images, install `~\u002F.config\u002Fenroot\u002F.credentials` on the\ncluster once per (cluster, user): Pyxis\u002FEnroot does not read `NGC_KEY` from the\njob env, and without persistent credentials, auth-gated pulls fail with \"Could\nnot process JSON input\" at job startup. Install it via the `printf | ssh`\nheredoc so the `NGC_KEY` value never lands in shell history, intermediate files,\nor chat output; never `cat`\u002F`echo` the value.\n\nIf a preflight check fails, the agent prompts the user to authorize the\ninstall\u002Ffix via Bash. Pip-installable Python requirements are the exception:\ninstall them automatically, then rerun preflight.\n\nSee `references\u002Fslurm-ssh-credentials.md` for the full preflight script, the\nenroot-credentials heredoc, prerequisite key setup (keypair, `ssh-copy-id`,\n`known_hosts`, container key mounts, 2FA handling), and the SSH failure\nremediation prompt.\n\n## Storage\n\nUse shared-filesystem URIs, not local or `file:\u002F\u002F` paths; `tao-core` rejects\nlocal\u002Ffile paths for remote backends.\n\n- `lustre:\u002F\u002F\u002Fabsolute\u002Fpath` for user-provided datasets on Lustre.\n- `slurm:\u002F\u002F` paths may appear in microservices metadata and are converted to\n  Lustre paths before the container starts.\n\nAccept either dataset roots (model skills map them to required files) or direct\nspec-key paths. After SSH succeeds and before generating scripts, `test -e` each\nrequired dataset path from the login host; if it fails, stop and ask for\ncorrected paths or staged data rather than producing scripts that fail in the\nfirst training job. See `references\u002Fslurm-ssh-credentials.md` for root vs.\ndirect-spec modes, backend details, and the results-dir default.\n\n## Container execution\n\n`tao-core` runs TAO containers through Pyxis\u002FEnroot:\n\n1. Stage compact JSON files for specs, environment, and cloud metadata under\n   `\u003Cjob_dir>\u002Fspecs`, `\u003Cjob_dir>\u002Fenv`, and `\u003Cjob_dir>\u002Fmeta`.\n2. Optionally convert the Docker image to a cached SQSH image with\n   `srun -n1 -p \u003Cconversion_partition> enroot import`.\n3. Write an sbatch script under `\u003Cjob_dir>\u002Fsbatch\u002Fjob_\u003Cjob_id>.sbatch`.\n4. Submit `sbatch --export=ALL \u003Cscript>`.\n5. Run the container with `srun --container-image=\u003Cimage> --container-mounts=\u002Flustre`.\n\nAccepted image formats: `\u002Fpath\u002Fto\u002Fimage.sqsh`, `registry#image:tag`,\n`docker:\u002F\u002Fregistry#image:tag`, and ordinary `registry\u002Fimage:tag` (converted to\nPyxis form when needed). SQSH conversion is cached by image name; for `:latest`\nimages the cached SQSH is reused unless `force_reconvert_latest` is enabled.\n\n## Monitoring and cancellation\n\n- Scheduler status comes from the stored SLURM job id via `squeue`\u002F`sacct`;\n  TAO terminal status comes from `status.json` in the shared results folder.\n- While chat monitoring is enabled, keep polling at the requested interval for\n  any non-terminal job (`PENDING`, `RUNNING`, or otherwise). Do not stop after a\n  fixed elapsed time such as 30 minutes; long queue waits are normal on shared\n  GPU partitions.\n- Do not send a final response for a non-terminal SLURM job when chat\n  monitoring is enabled. A final response is a detach action; use it only if the\n  user asked to detach\u002Fstop or the job reached terminal state.\n- Logs are read over SSH from\n  `\u003Cjob_dir>\u002Fslurm-logs\u002F\u003Cslurm_job_name>-\u003Cslurm_job_id>\u002Fmain.out` and `.err`.\n- Cancel by looking up `backend_details.slurm_metadata.slurm_job_id` and running\n  `scancel \u003Cslurm_job_id>` over SSH. Treat missing or already terminated jobs as\n  successful cancellation.\n\nStatus mapping:\n\n- `PENDING` -> `Pending`\n- `RUNNING` or `COMPLETING` -> `Running`\n- `COMPLETED` -> check `status.json`\n- `FAILED`, `BOOT_FAIL`, `DEADLINE`, `OUT_OF_MEMORY`, `NODE_FAIL` -> retry if\n  logs match retriable infrastructure patterns, otherwise `Error`\n- `CANCELLED`, `PREEMPTED`, `REVOKED` -> `Canceled`\n- `TIMEOUT` -> `Error`\n- `SUSPENDED`, `STOPPED` -> `Paused`\n\n## Required inputs\n\nAsk for these in the SLURM intake; see `references\u002Fslurm-ssh-credentials.md`\nfor the full credential list, microservices schema keys, and defaults.\n\n- **SLURM_USER** (required): SSH username for the login node.\n- **SLURM_HOSTNAME** (required): Comma-separated login hostnames for failover.\n- **SLURM_PARTITION** (required): Partition list for GPU submission. Packaged\n  default `polar,polar3,polar4,grizzly`, treated as 4-hour queues.\n- **SSH_KEY_PATH** (preferred, expected before launch): private key for\n  non-interactive public-key auth. Ask for this first in remediation; prefer it\n  over the `SSH_AUTH_SOCK` agent-socket fallback.\n- **SLURM_BASE_RESULTS_DIR** (optional): base shared-filesystem path; default\n  `\u002Flustre\u002Ffsw\u002Fportfolios\u002Fedgeai\u002Fusers\u002F\u003Cyour-dir>` (your per-user Lustre dir).\n- **SLURM_ACCOUNT** (usually required by site policy): account for `#SBATCH --account`.\n\nDo not ask for `SLURM_ACCOUNT` or `SLURM_BASE_RESULTS_DIR` in the initial\nintake unless the user says their site requires an account, wants a custom\nresults root, or the workflow cannot proceed without overriding defaults.\n\n## Resource defaults\n\nDefaults from `tao-core`:\n\n- `num_nodes`: 1\n- `num_gpus`: 4\n- `max_num_gpus_per_node`: 8\n- `cpus_per_task`: 16\n- `time_hours`: 4\n- `timeout_hours`: 3.8\n- `max_time_hours`: 4\n- `container_mounts`: `\u002Flustre`\n- `use_requeue`: true\n- `use_sqsh`: true\n\nWhen generating launchers or wrapper scripts for SLURM, set the wall-time\ndefaults explicitly from the packaged platform resource defaults:\n\n```bash\nexport SLURM_TIME_HOURS=\"${SLURM_TIME_HOURS:-4}\"\nexport SLURM_TIMEOUT_HOURS=\"${SLURM_TIMEOUT_HOURS:-3.8}\"\n```\n\nDo not default to 12 hours on SLURM. If the user supplies a longer\n`SLURM_TIME_HOURS`, verify that the selected partition supports it before\nsubmitting. For the packaged default partition list\n`polar,polar3,polar4,grizzly`, reject requests above 4 hours and ask for a\ndifferent partition only if the user actually wants a longer wall time.\n\nWhen `num_gpus` is greater than or equal to `max_num_gpus_per_node`, the\nhandler treats the request as exclusive per node and computes additional nodes\nfrom total GPU count when necessary.\n\n## Multi-node, SDK, and retries\n\nFor multi-node jobs (`num_nodes > 1`), the SDK builds the sbatch directives and\nexports the PyTorch-distributed rendezvous env vars automatically: `WORLD_SIZE`,\n`NUM_GPU_PER_NODE`, `NODE_RANK`, `MASTER_ADDR`, and `MASTER_PORT` (29500).\nTAO entrypoints read `WORLD_SIZE` + `NUM_GPU_PER_NODE` and build torchrun\ninternally. Cosmos-RL has special multi-node role handling for controller,\npolicy, and rollout workers.\n\n**Use Lustre, not S3, for SLURM job inputs.** The GPU allocation starts the\nmoment the job is dispatched, so a long `s3:\u002F\u002F` download at the top of the\nscript burns the allocation, can get the job killed for GPU-idle, and is billed\neither way. Stage training data on the shared filesystem first and reference it\nas `lustre:\u002F\u002F\u002F...`. S3\u002FHF\u002FNGC pre-fetch is fine for small auxiliary inputs\n(checkpoints, configs), not training datasets. K8s\u002FBrev do not share this\nscheduler-idle constraint.\n\nAuto-retry of infrastructure failures (`NODE_FAIL`, `BOOT_FAIL`, NCCL transport\ntimeouts, CUDA driver init failures, GPU\u002FIB link-down, OOM-killer node reaping,\nXid errors) is automatic in the SDK, with a stable user-facing `Job.id` across\nretries. Plain training failures surface immediately so a broken spec does not\nconsume the retry budget. `#SBATCH --requeue` is enabled by default via\n`SLURM_USE_REQUEUE=true`.\n\nSee `references\u002Fslurm-container-execution.md` for the full multi-node\nenv-var\u002Fsbatch directive detail and table, cluster requirements, the optional\nTAO SDK path (`SlurmSDK`, `build_entrypoint`, `ActionWorkflow`) with code, the\nLustre-not-S3 rule in full, and the failure-mode checklist;\n`references\u002Fslurm-execution-sdk.md` covers the `MAX_JOB_RETRIES` retry budget.\nWhen the SDK is in scope, read `tao-skill-bank:tao-run-platform` for the\n`SlurmSDK` kwarg reference.\n\n## References\n\n- `references\u002Fslurm-ssh-credentials.md` — preflight script, SSH\u002Fkey setup,\n  enroot credentials, full credential list, backend details, storage rules,\n  SSH remediation prompt.\n- `references\u002Fslurm-container-execution.md` — container execution steps,\n  monitoring, status mapping, cancellation, multi-node detail, SDK use,\n  Lustre-not-S3, auto-retry, failure modes.\n- `references\u002Fslurm-preflight-storage.md` — extended preflight\u002Fstorage notes.\n- `references\u002Fslurm-execution-sdk.md` — extended execution\u002FSDK notes.\n- `references\u002Fdetailed-guide.md` — navigation map for the split references.\n","# SLURM\n\nRemote GPU compute platform for clusters managed by SLURM. Jobs are submitted\nfrom the TAO service or SDK host to a login node over SSH, staged on a shared\nfilesystem, submitted with `sbatch`, and executed with `srun` container support.\n\n## When to use\n\nUse SLURM when the user has access to a managed GPU cluster, shared Lustre\nstorage, and scheduler-owned GPU allocation. Do not use SLURM for local files\nthat exist only on the agent machine; data and outputs must be reachable from\nthe cluster.\n\n## Preflight + SSH\n\nConfirm `SLURM_USER` and `SLURM_HOSTNAME` are exported and passwordless SSH to a\nlogin host works (`ssh -o BatchMode=yes`). Optionally install the TAO SDK\nwrapper for Job handles + S3 wrapping (`nvidia-tao-sdk[slurm]`, on public PyPI).\nFor private `nvcr.io` images, install `~\u002F.config\u002Fenroot\u002F.credentials` on the\ncluster once per (cluster, user): Pyxis\u002FEnroot does not read `NGC_KEY` from the\njob env, and without persistent credentials, auth-gated pulls fail with \"Could\nnot process JSON input\" at job startup. Install it via the `printf | ssh`\nheredoc so the `NGC_KEY` value never lands in shell history, intermediate files,\nor chat output; never `cat`\u002F`echo` the value.\n\nIf a preflight check fails, the agent prompts the user to authorize the\ninstall\u002Ffix via Bash. Pip-installable Python requirements are the exception:\ninstall them automatically, then rerun preflight.\n\nSee `references\u002Fslurm-ssh-credentials.md` for the full preflight script, the\nenroot-credentials heredoc, prerequisite key setup (keypair, `ssh-copy-id`,\n`known_hosts`, container key mounts, 2FA handling), and the SSH failure\nremediation prompt.\n\n## Storage\n\nUse shared-filesystem URIs, not local or `file:\u002F\u002F` paths; `tao-core` rejects\nlocal\u002Ffile paths for remote backends.\n\n- `lustre:\u002F\u002F\u002Fabsolute\u002Fpath` for user-provided datasets on Lustre.\n- `slurm:\u002F\u002F` paths may appear in microservices metadata and are converted to\n  Lustre paths before the container starts.\n\nAccept either dataset roots (model skills map them to required files) or direct\nspec-key paths. After SSH succeeds and before generating scripts, `test -e` each\nrequired dataset path from the login host; if it fails, stop and ask for\ncorrected paths or staged data rather than producing scripts that fail in the\nfirst training job. See `references\u002Fslurm-ssh-credentials.md` for root vs.\ndirect-spec modes, backend details, and the results-dir default.\n\n## Container execution\n\n`tao-core` runs TAO containers through Pyxis\u002FEnroot:\n\n1. Stage compact JSON files for specs, environment, and cloud metadata under\n   `\u003Cjob_dir>\u002Fspecs`, `\u003Cjob_dir>\u002Fenv`, and `\u003Cjob_dir>\u002Fmeta`.\n2. Optionally convert the Docker image to a cached SQSH image with\n   `srun -n1 -p \u003Cconversion_partition> enroot import`.\n3. Write an sbatch script under `\u003Cjob_dir>\u002Fsbatch\u002Fjob_\u003Cjob_id>.sbatch`.\n4. Submit `sbatch --export=ALL \u003Cscript>`.\n5. Run the container with `srun --container-image=\u003Cimage> --container-mounts=\u002Flustre`.\n\nAccepted image formats: `\u002Fpath\u002Fto\u002Fimage.sqsh`, `registry#image:tag`,\n`docker:\u002F\u002Fregistry#image:tag`, and ordinary `registry\u002Fimage:tag` (converted to\nPyxis form when needed). SQSH conversion is cached by image name; for `:latest`\nimages the cached SQSH is reused unless `force_reconvert_latest` is enabled.\n\n## Monitoring and cancellation\n\n- Scheduler status comes from the stored SLURM job id via `squeue`\u002F`sacct`;\n  TAO terminal status comes from `status.json` in the shared results folder.\n- While chat monitoring is enabled, keep polling at the requested interval for\n  any non-terminal job (`PENDING`, `RUNNING`, or otherwise). Do not stop after a\n  fixed elapsed time such as 30 minutes; long queue waits are normal on shared\n  GPU partitions.\n- Do not send a final response for a non-terminal SLURM job when chat\n  monitoring is enabled. A final response is a detach action; use it only if the\n  user asked to detach\u002Fstop or the job reached terminal state.\n- Logs are read over SSH from\n  `\u003Cjob_dir>\u002Fslurm-logs\u002F\u003Cslurm_job_name>-\u003Cslurm_job_id>\u002Fmain.out` and `.err`.\n- Cancel by looking up `backend_details.slurm_metadata.slurm_job_id` and running\n  `scancel \u003Cslurm_job_id>` over SSH. Treat missing or already terminated jobs as\n  successful cancellation.\n\nStatus mapping:\n\n- `PENDING` -> `Pending`\n- `RUNNING` or `COMPLETING` -> `Running`\n- `COMPLETED` -> check `status.json`\n- `FAILED`, `BOOT_FAIL`, `DEADLINE`, `OUT_OF_MEMORY`, `NODE_FAIL` -> retry if\n  logs match retriable infrastructure patterns, otherwise `Error`\n- `CANCELLED`, `PREEMPTED`, `REVOKED` -> `Canceled`\n- `TIMEOUT` -> `Error`\n- `SUSPENDED`, `STOPPED` -> `Paused`\n\n## Required inputs\n\nAsk for these in the SLURM intake; see `references\u002Fslurm-ssh-credentials.md`\nfor the full credential list, microservices schema keys, and defaults.\n\n- **SLURM_USER** (required): SSH username for the login node.\n- **SLURM_HOSTNAME** (required): Comma-separated login hostnames for failover.\n- **SLURM_PARTITION** (required): Partition list for GPU submission. Packaged\n  default `polar,polar3,polar4,grizzly`, treated as 4-hour queues.\n- **SSH_KEY_PATH** (preferred, expected before launch): private key for\n  non-interactive public-key auth. Ask for this first in remediation; prefer it\n  over the `SSH_AUTH_SOCK` agent-socket fallback.\n- **SLURM_BASE_RESULTS_DIR** (optional): base shared-filesystem path; default\n  `\u002Flustre\u002Ffsw\u002Fportfolios\u002Fedgeai\u002Fusers\u002F\u003Cyour-dir>` (your per-user Lustre dir).\n- **SLURM_ACCOUNT** (usually required by site policy): account for `#SBATCH --account`.\n\nDo not ask for `SLURM_ACCOUNT` or `SLURM_BASE_RESULTS_DIR` in the initial\nintake unless the user says their site requires an account, wants a custom\nresults root, or the workflow cannot proceed without overriding defaults.\n\n## Resource defaults\n\nDefaults from `tao-core`:\n\n- `num_nodes`: 1\n- `num_gpus`: 4\n- `max_num_gpus_per_node`: 8\n- `cpus_per_task`: 16\n- `time_hours`: 4\n- `timeout_hours`: 3.8\n- `max_time_hours`: 4\n- `container_mounts`: `\u002Flustre`\n- `use_requeue`: true\n- `use_sqsh`: true\n\nWhen generating launchers or wrapper scripts for SLURM, set the wall-time\ndefaults explicitly from the packaged platform resource defaults:\n\n```bash\nexport SLURM_TIME_HOURS=\"${SLURM_TIME_HOURS:-4}\"\nexport SLURM_TIMEOUT_HOURS=\"${SLURM_TIMEOUT_HOURS:-3.8}\"\n```\n\nDo not default to 12 hours on SLURM. If the user supplies a longer\n`SLURM_TIME_HOURS`, verify that the selected partition supports it before\nsubmitting. For the packaged default partition list\n`polar,polar3,polar4,grizzly`, reject requests above 4 hours and ask for a\ndifferent partition only if the user actually wants a longer wall time.\n\nWhen `num_gpus` is greater than or equal to `max_num_gpus_per_node`, the\nhandler treats the request as exclusive per node and computes additional nodes\nfrom total GPU count when necessary.\n\n## Multi-node, SDK, and retries\n\nFor multi-node jobs (`num_nodes > 1`), the SDK builds the sbatch directives and\nexports the PyTorch-distributed rendezvous env vars automatically: `WORLD_SIZE`,\n`NUM_GPU_PER_NODE`, `NODE_RANK`, `MASTER_ADDR`, and `MASTER_PORT` (29500).\nTAO entrypoints read `WORLD_SIZE` + `NUM_GPU_PER_NODE` and build torchrun\ninternally. Cosmos-RL has special multi-node role handling for controller,\npolicy, and rollout workers.\n\n**Use Lustre, not S3, for SLURM job inputs.** The GPU allocation starts the\nmoment the job is dispatched, so a long `s3:\u002F\u002F` download at the top of the\nscript burns the allocation, can get the job killed for GPU-idle, and is billed\neither way. Stage training data on the shared filesystem first and reference it\nas `lustre:\u002F\u002F\u002F...`. S3\u002FHF\u002FNGC pre-fetch is fine for small auxiliary inputs\n(checkpoints, configs), not training datasets. K8s\u002FBrev do not share this\nscheduler-idle constraint.\n\nAuto-retry of infrastructure failures (`NODE_FAIL`, `BOOT_FAIL`, NCCL transport\ntimeouts, CUDA driver init failures, GPU\u002FIB link-down, OOM-killer node reaping,\nXid errors) is automatic in the SDK, with a stable user-facing `Job.id` across\nretries. Plain training failures surface immediately so a broken spec does not\nconsume the retry budget. `#SBATCH --requeue` is enabled by default via\n`SLURM_USE_REQUEUE=true`.\n\nSee `references\u002Fslurm-container-execution.md` for the full multi-node\nenv-var\u002Fsbatch directive detail and table, cluster requirements, the optional\nTAO SDK path (`SlurmSDK`, `build_entrypoint`, `ActionWorkflow`) with code, the\nLustre-not-S3 rule in full, and the failure-mode checklist;\n`references\u002Fslurm-execution-sdk.md` covers the `MAX_JOB_RETRIES` retry budget.\nWhen the SDK is in scope, read `tao-skill-bank:tao-run-platform` for the\n`SlurmSDK` kwarg reference.\n\n## References\n\n- `references\u002Fslurm-ssh-credentials.md` — preflight script, SSH\u002Fkey setup,\n  enroot credentials, full credential list, backend details, storage rules,\n  SSH remediation prompt.\n- `references\u002Fslurm-container-execution.md` — container execution steps,\n  monitoring, status mapping, cancellation, multi-node detail, SDK use,\n  Lustre-not-S3, auto-retry, failure modes.\n- `references\u002Fslurm-preflight-storage.md` — extended preflight\u002Fstorage notes.\n- `references\u002Fslurm-execution-sdk.md` — extended execution\u002FSDK notes.\n- `references\u002Fdetailed-guide.md` — navigation map for the split references.\n",{"name":5,"tags":44,"license":15,"metadata":47,"description":7,"allowed-tools":50,"compatibility":51},[45,46],"platform","slurm",{"author":48,"version":49},"NVIDIA Corporation","0.1.0","Read Bash","Requires SSH access to a SLURM login node (passwordless via key auth) and SLURM_USER + SLURM_HOSTNAME env vars. The TAO SDK with the slurm extra (pip install 'nvidia-tao-sdk[slurm]') is needed only if you want Job handles, S3 I\u002FO wrapping, or run-folder durability via ActionWorkflow.","claude\u002Finstall-gsd-build-foQdV","d86cd127f527124b5fd0fd0bc679a4d79b7d01d7",".agents\u002Fskills\u002Ftao-run-on-slurm","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik","https:\u002F\u002Fnorvik-orpin.vercel.app","https:\u002F\u002Fgithub.com\u002Fpattanation","2026-07-17 11:17:04",{"source":8,"skillName":5,"commands":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add pattanation\u002FNorvik --skill tao-run-on-slurm",{"tool":65,"command":66},"bunx","bunx skills add pattanation\u002FNorvik --skill tao-run-on-slurm",{"tool":68,"command":69},"pnpm","pnpm dlx skills add pattanation\u002FNorvik --skill tao-run-on-slurm","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-run-on-slurm\u002FSKILL.md",true,[73,79,83,87,91,95,99,103,107,111],{"path":74,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":77,"sourceHtmlUrl":78},"BENCHMARK.md","REFERENCE","参考文档",3950,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-run-on-slurm\u002FBENCHMARK.md",{"path":80,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":81,"sourceHtmlUrl":82},"evals\u002Fevals.json",759,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-run-on-slurm\u002Fevals\u002Fevals.json",{"path":84,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":85,"sourceHtmlUrl":86},"references\u002Fdetailed-guide.md",591,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-run-on-slurm\u002Freferences\u002Fdetailed-guide.md",{"path":88,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":89,"sourceHtmlUrl":90},"references\u002Fskill_info.yaml",1282,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-run-on-slurm\u002Freferences\u002Fskill_info.yaml",{"path":92,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":93,"sourceHtmlUrl":94},"references\u002Fslurm-container-execution.md",10110,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-run-on-slurm\u002Freferences\u002Fslurm-container-execution.md",{"path":96,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":97,"sourceHtmlUrl":98},"references\u002Fslurm-execution-sdk.md",12926,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-run-on-slurm\u002Freferences\u002Fslurm-execution-sdk.md",{"path":100,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":101,"sourceHtmlUrl":102},"references\u002Fslurm-preflight-storage.md",11488,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-run-on-slurm\u002Freferences\u002Fslurm-preflight-storage.md",{"path":104,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":105,"sourceHtmlUrl":106},"references\u002Fslurm-ssh-credentials.md",10389,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-run-on-slurm\u002Freferences\u002Fslurm-ssh-credentials.md",{"path":108,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":109,"sourceHtmlUrl":110},"skill-card.md",3924,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-run-on-slurm\u002Fskill-card.md",{"path":112,"resourceType":113,"resourceTypeDesc":114,"sizeBytes":115,"sourceHtmlUrl":116},"skill.oms.sig","OTHER","其他",6073,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-run-on-slurm\u002Fskill.oms.sig",[118,151,177,201,223,238],{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":122,"sourceHtmlUrl":123,"categories":124,"keywords":133,"publishedAt":39},"01M71QDV4DM8T19HEHWATEF1K4","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fwebapp-testing\u002FSKILL.md",[125,130],{"categoryNo":126,"categoryName":127,"taxonomyType":128,"taxonomyTypeDesc":129},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":131,"categoryName":132,"taxonomyType":128,"taxonomyTypeDesc":129},"01JBSEEDCAT000000000000009","前端开发",[134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150],"webapp","testing","webapp testing","for","applications","local","frontend","debugging","toolkit","logs","browser","with","playwright","web","behavior","ui","screenshots",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":155,"sourceHtmlUrl":156,"categories":157,"keywords":159,"publishedAt":39},"01M71QDH2GGMXGA9105C9W1N7B","web-artifacts-builder","Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn\u002Fui). Use for complex artifacts requiring state management, routing, or shadcn\u002Fui components - not for simple single-file HTML\u002FJSX artifacts.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fweb-artifacts-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fweb-artifacts-builder\u002FSKILL.md",[158],{"categoryNo":131,"categoryName":132,"taxonomyType":128,"taxonomyTypeDesc":129},[160,161,162,147,163,164,165,137,166,167,140,168,169,170,171,172,173,174,175,176],"builder","artifacts builder","artifacts","web artifacts builder","single-file","css","Tailwind","ui components","single","use","file","components","react","multi","state","routing","state management",{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":181,"licenseFileUrl":182,"sourceHtmlUrl":183,"categories":184,"keywords":186,"publishedAt":39},"01M71QD9T2XC3EWMQNN9ACNWQ1","vueuse-functions","Apply VueUse composables where appropriate to build concise, maintainable Vue.js \u002F Nuxt features.","MIT","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvueuse-functions\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvueuse-functions\u002FSKILL.md",[185],{"categoryNo":131,"categoryName":132,"taxonomyType":128,"taxonomyTypeDesc":129},[187,188,189,190,191,192,193,194,195,196,197,198,199,200],"functions","vueuse","vueuse functions","project","nuxt","apply","github","concise","build","https","features","vue","js","composables",{"skillNo":202,"name":203,"nameZh":6,"description":204,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":181,"licenseFileUrl":205,"sourceHtmlUrl":206,"categories":207,"keywords":210,"publishedAt":39},"01M71QD51HWSGYMCMB7RW7PGK8","vue-testing-best-practices","Use for Vue.js testing. Covers Vitest, Vue Test Utils, component testing, mocking, testing patterns, and Playwright for E2E testing.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-testing-best-practices\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-testing-best-practices\u002FSKILL.md",[208,209],{"categoryNo":126,"categoryName":127,"taxonomyType":128,"taxonomyTypeDesc":129},{"categoryNo":131,"categoryName":132,"taxonomyType":128,"taxonomyTypeDesc":129},[211,135,212,198,213,146,214,215,216,193,217,137,218,219,220,169,221,199,222],"vue testing best practices","testing best practices","best practices","test","testing patterns","component","vitest","mocking","e2e","utils","patterns","e2e testing",{"skillNo":224,"name":225,"nameZh":6,"description":226,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":181,"licenseFileUrl":227,"sourceHtmlUrl":228,"categories":229,"keywords":231,"publishedAt":39},"01M71QD358H2DJ9THJRBP77T3T","vue-router-best-practices","Vue Router 4 patterns, navigation guards, route params, and route-component lifecycle interactions.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-router-best-practices\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-router-best-practices\u002FSKILL.md",[230],{"categoryNo":131,"categoryName":132,"taxonomyType":128,"taxonomyTypeDesc":129},[232,198,233,213,234,216,235,193,221,236,237],"router","vue router best practices","route","guards","navigation","lifecycle",{"skillNo":239,"name":240,"nameZh":6,"description":241,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":181,"licenseFileUrl":242,"sourceHtmlUrl":243,"categories":244,"keywords":246,"publishedAt":39},"01M71QCYPNWDE2MQZ1TF3ED5S4","vue-best-practices","MUST be used for Vue.js tasks. Strongly recommends Composition API with `\u003Cscript setup>` and TypeScript as the standard approach. Covers Vue 3, SSR, Volar, vue-tsc. Load for any Vue, .vue files, Vue Router, Pinia, or Vite with Vue work. ALWAYS use Composition API unless the project explicitly requires Options API.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002FSKILL.md",[245],{"categoryNo":131,"categoryName":132,"taxonomyType":128,"taxonomyTypeDesc":129},[247,198,213,248,190,249,250,251,232,252,253,254,255,256,257,137,258,169,259,260],"vue best practices","Composition","files","tasks","api","pinia","work","options","ssr","typescript","as","vite","load","standard"]