Aqua Deployment
oracle/accelerated-data-science
Deploy LLM models on OCI using AI Quick Actions (AQUA) - single model, multi-model, stacked (LoRA), with GPU shape selection, vLLM configuration, streaming, and tool calling.
Launch SFT via python -m hpc.launch --jobtype sft on any cluster (JSC Jupiter GH200, CINECA Leonardo A100, TACC Vista GH200), with EITHER backend — LLaMA-Factory (default) or axolotl (--sftbackend…
$ npx skills add open-thoughts/OpenThoughts-Agent --skill sft-launch -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install open-thoughts/OpenThoughts-Agent sft-launch --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/open-thoughts/OpenThoughts-Agent.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/sft-launch .claude/skills/sft-launch && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "sft-launch" agent skill from https://github.com/open-thoughts/OpenThoughts-Agent/tree/main/.agents/skills/sft-launch into .claude/skills/sft-launch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sft-launch", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/open-thoughts/OpenThoughts-Agent/tree/main/.agents/skills/sft-launchType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add open-thoughts/OpenThoughts-Agent --skill sft-launch -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install open-thoughts/OpenThoughts-Agent sft-launch --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-thoughts/OpenThoughts-Agent.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/sft-launch .agents/skills/sft-launch && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "sft-launch" agent skill from https://github.com/open-thoughts/OpenThoughts-Agent/tree/main/.agents/skills/sft-launch into .agents/skills/sft-launch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sft-launch", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add open-thoughts/OpenThoughts-Agent --skill sft-launch -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install open-thoughts/OpenThoughts-Agent sft-launch --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-thoughts/OpenThoughts-Agent.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/sft-launch .cursor/skills/sft-launch && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "sft-launch" agent skill from https://github.com/open-thoughts/OpenThoughts-Agent/tree/main/.agents/skills/sft-launch into .cursor/skills/sft-launch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sft-launch", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/open-thoughts/OpenThoughts-Agent.git --path .agents/skills/sft-launch--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add open-thoughts/OpenThoughts-Agent --skill sft-launch -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install open-thoughts/OpenThoughts-Agent sft-launch --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-thoughts/OpenThoughts-Agent.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/sft-launch .gemini/skills/sft-launch && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "sft-launch" agent skill from https://github.com/open-thoughts/OpenThoughts-Agent/tree/main/.agents/skills/sft-launch into .gemini/skills/sft-launch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sft-launch", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install open-thoughts/OpenThoughts-Agent sft-launchInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add open-thoughts/OpenThoughts-Agent --skill sft-launch -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/open-thoughts/OpenThoughts-Agent.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/sft-launch .github/skills/sft-launch && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "sft-launch" agent skill from https://github.com/open-thoughts/OpenThoughts-Agent/tree/main/.agents/skills/sft-launch into .github/skills/sft-launch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sft-launch", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add open-thoughts/OpenThoughts-Agent --skill sft-launch -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install open-thoughts/OpenThoughts-Agent sft-launch --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-thoughts/OpenThoughts-Agent.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/sft-launch .opencode/skills/sft-launch && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "sft-launch" agent skill from https://github.com/open-thoughts/OpenThoughts-Agent/tree/main/.agents/skills/sft-launch into .opencode/skills/sft-launch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sft-launch", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
sft-launchLaunch SFT via python -m hpc.launch --jobtype sft on any cluster (JSC Jupiter GH200, CINECA Leonardo A100, TACC Vista GH200), with EITHER backend — LLaMA-Factory (default) or axolotl (--sftbackend…
Sft Launch is an agent skill from open-thoughts/OpenThoughts-Agent. Launch SFT via python -m hpc.launch --jobtype sft on any cluster (JSC Jupiter GH200, CINECA Leonardo A100, TACC Vista GH200), with EITHER backend — LLaMA-Factory (default) or axolotl (--sftbackend axolotl) — including Delphi tool-calling models (delphi template, tokenizer prep, jinja-as-ground-truth masking). This skill is the cluster-AGNOSTIC core (backend choice, Delphi handling, config maps, node-scaling, dataset mixing, cleanup recognition, common traps). Per-cluster particulars (preamble, paths, QOS/wall…
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in AI & LLM Engineering, covering Fine-tuning, Machine learning and Structured output and tool calling. It works with Python and Weights & Biases. The repository describes itself as: Data recipes and robust infrastructure for training AI agents. The licence is Apache-2.0.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 3bd1917. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pythongitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Sft Launch loads about 2.9k tokens when it runs. Until then it costs about 196 tokens; SKILL.md has 1,087 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from open-thoughts/OpenThoughts-Agent at commit 3bd1917, republished under its Apache-2.0 licence (© open-thoughts). 1,087 words, ~2,912 tokens.
.claude/skills/sft-launch/SKILL.md (or your agent's skills folder).⚠ Local clone = ground truth (CLAUDE.md §Always). ALL code/config/sbatch edits go in the local Mac checkout (
~/Documents/OpenThoughts-Agent) → commit → push →git pullon the cluster. NEVER hand-edit,git commit, or leave divergent/ untracked changes on a cluster; no patch-by-rsync. New/changed configs are authored locally + synced, never on the cluster. Bake this into every subagent you dispatch.
SFT runs through python -m hpc.launch --job_type sft on both backends and all clusters. Read
.agents/ops/<cluster>/ops.md §SFT for the cluster preamble, paths, QOS/wall, and cleanup mechanics.
| LLaMA-Factory (default) | axolotl (--sft_backend axolotl) | |
|---|---|---|
| When | Everything today; the validated production path | Delphi jinja-as-ground-truth SFT; when you want axolotl's template/plugin stack |
| Launcher runs | accelerate + DeepSpeed ZeRO-3 (multi-node) / torchrun | -m axolotl.cli.train |
| Conda env | otagent (or sft-qwen35 for Qwen3.5 hybrid arch) | sft-axolotl (--conda_env sft-axolotl) |
| Flag-off contract | — | --sft_backend llamafactory (default) is byte-identical to before the backend existed |
Universal launch shape (fill per cluster from ops/<cluster>/ops.md §SFT):
python -m hpc.launch --job_type sft [--sft_backend axolotl] \
--train_config_path sft/<lf_configs|axolotl_configs>/<cfg>.yaml \
--num_nodes N --gpus_per_node <4|1> --time_limit <cluster max> \
--dataset <hf-dataset> --role_tag role --user_tag user --assistant_tag assistant --content_tag content \
--hub_model_id laion/<name> [--conda_env <env>]Always --dry_run the first cell and inspect model, template, epochs, LR, role tags, push_to_hub, and
output_dir in <exp>/configs/*_train_config.yaml.
attn_implementation: sdpa and install
torchao==0.17.0 without dependencies in sft-axolotl.--dataset and schema flags at launch;
hand-authored datasets: applies only to direct axolotl.cli.preprocess.WANDB_MODE=disabled — the launcher sets
report_to=wandb; wandb 0.28.x crashes on the compute-node service socket
(WANDB_MODE=disabled makes it a no-op; loss still logs to trainer_state.json).pure_bf16: true (fp32-master OOMs an 8B on 96 GiB)..agents/projects/axolotl/axolotl.md.Delphi checkpoints use the Llama-3 tokenizer with reasoning/tool tokens. Both backends require:
python sft/delphi/prepare_delphi_tokenizer.py --model <ckpt> --output <dir>
(reserved-slot rename + mean-init → <|start_think|>/<|end_think|>/
<|tool_call|>/<|tool_result|> become single tokens). Launch with
--model_path <dir>.qwen3. The delphi template =
Llama-3 header/turn format (<|start_header_id|>…<|eot_id|>, EOS <|eot_id|>)qwen3 (ChatML <|im_start|>) would shred every
example. This template×tokenizer mismatch is the #1 silent ruin — --dry_run<think> warmup example) before launching.sft/delphi/dataset_info.json (per-dataset schema
tags — the instruction sets use heterogeneous ShareGPT schemas). Launch with
--dataset_dir sft/delphi and the 90/10 mix:
--dataset <instr>,delphi_warmup --mix_strategy interleave_under --interleave_probs 0.9,0.1.chat_template: delphi + tokenizer_save_jinja_files: false + the
template_integrity plugin (embeds the chat_template into tokenizer_config.json,
covering the per-checkpoint dirs the flag ignores). Validate the loss mask with
axolotl.cli.preprocess <cfg> --debug (assistant + <|start_think|>…<|end_think|>
trained, user/system masked, 0 Last turn is not trainable skips). Canary:
sft/axolotl_configs/delphi_canary.yaml (validated, TACC job 802053).enable_db_registration: false; do NOT run manual_db_push.py. LR = shared
conventional SFT LR (2e-5) across all cells for comparability.sft/lf_configs/qwen3/ + …/extra/): 32k_base.yaml (default 32k
thinking), 32k_base_nothink.yaml, 131k_base.yaml; extra/32k_base_bs96.yaml
(node-scaling, §4b), extra/32k_base_bs96_opt1k.yaml (small <1k-row: 7ep/lr4e-5),
extra/32k_base_bs96_opt100k.yaml (large ≈11k+: 5ep/lr4e-5), plus other
sizes/coder.…/32k_base_32b*.yaml): DeepSpeed ZeRO-3, writes sharded
global_stepN/, NOT root safetensors → launch WITHOUT --hub_model_id,
then consolidate → upload (§6 + ops/<cluster>/ops.md §SFT).sft/lf_configs/qwen3_5/*.yaml): GDN+Attention arch
not in transformers 4.x → needs the sft-qwen35 env (transformers ≥5.3) +
DISABLE_VERSION_CHECK=1. 9B → root safetensors (SKIP consolidate, like 8B); 27B
→ 32B consolidate flow. Copy preprocessor_config.json from base into the ckpt
before upload (LF doesn't emit it; vLLM needs it).sft/axolotl_configs/): smoke.yaml, parity_llama3.yaml,
delphi_canary.yaml, marin/delphi_all3.yaml (all-3-plugins). aarch64 → SDPA.bs96 configsbs96 fixes global_batch_size: 96 and derives gradient_accumulation_steps = 96 / (num_nodes*gpus).
Keep 96 % (num_nodes*gpus_per_node) == 0.
--dataset is repeatable. Concatenate: --dataset A --dataset B --mix_strategy concat. Interleave: --mix_strategy interleave_under|interleave_over --interleave_probs 0.7,0.3 (weights in dataset order).--role_tag role --user_tag user --assistant_tag assistant --content_tag content. Older ShareGPT uses from/human/gpt/value.--role_tag silently yields 0 assistant
turns on the mismatched source. Register per-dataset columns/tags in a
dataset_info.json and launch with --dataset_dir <registry> (how the Delphi mix
works — §3).After training, check the checkpoint root:
ls $CHECKPOINTS_DIR/<job>/ | grep -E 'safetensors|global_step':
model-*.safetensors at root → 8B path (also Qwen3.5-9B): drop intermediate
checkpoint-* + .cache, upload, DB-register.global_stepN/ + zero_to_fp32.py, no root safetensors → 32B path (ZeRO-3
shards): consolidate first (--job_type consolidate), then upload from
final_repo/.DB registration is a manual cleanup step via scripts/database/manual_db_push.py. HF uploads default public to laion/.
Per-series no-DB exception: HF-upload-only series (e.g. Delphi #6279,
enable_db_registration: false) SKIP manual_db_push.py. The mechanics (which
node uploads, tunnels, cert) are cluster-specific → ops/<cluster>/ops.md §SFT.
Live status: tail the .out for {'loss':…, 'grad_norm':…} step lines
(trainer_log.jsonl is unreliable mid-run).
AF_UNIX path too long at dataset tokenization — the HF-datasets
SyncManager binds a socket under $TMPDIR (108-byte sun_path cap). The
launcher redirects TMPDIR to a short /tmp/sft_<job> for BOTH backends; if you
still see it: confirm the rendered sbatch's _TMPROOT/TMPDIR is short, or
export SFT_KEEP_TMPDIR_LOCAL=1 before launch.overwrite_output_dir rejected by HfArgumentParser (transformers v5) — the
launcher strips this launcher-only key from the LF config before write.
grep -c overwrite_output_dir <exp>/configs/*_train_config.yaml must print 0.
The --overwrite_output_dir true CLI flag still works (⊥ --max_restarts).data_shared_file_system: true (global barrier; same tokens/loss). Diagnose in
order: dsfs → schema-key KeyError → only then suspect genuinely-slow
tokenization (--pretokenize). Details in ops/leonardo/ops.md §SFT.OSError [Errno 37] No locks available
(ENOLCK) / [Errno 116] Stale file handle (ESTALE) during dataset load
(masquerades as a C10d RendezvousConnectionError in the log tail — that's
teardown noise; the real error is upstream, datasets/builder.py:821 FileLock
and/or the axolotl FileLockLoader at utils/data/lock.py). data_shared_file_system:true
does NOT save axolotl (axolotl's lock.py always locks). Fixes:export SFT_KEEP_TMPDIR_LOCAL=1 (the
sbatch write-cache guard points HF_DATASETS_CACHE/TRITON_CACHE_DIR/
TORCHINDUCTOR/RAY/TMPDIR/XDG at /tmp/otsft_$JOBID, per-node) +
dataset_prepared_path: /tmp/... in the axolotl config; keep HF_HUB_CACHE
shared+populated (pre-download once) so node-local arrow builds read cached
parquet (each rank builds uncontended).dataset_prepared_path + a lock-free persistent-sentinel fast-path in axolotl
lock.py. Full saga: agent_logs/2026-07-08_sft-815251-c10d-rendezvous-fail.md.| Cluster | Env | Wall | ops §SFT |
|---|---|---|---|
| JSC Jupiter (GH200, 4/node, aarch64) | otagent / sft-qwen35 / sft-axolotl | 12h booster (11:59:00) | .agents/ops/jupiter/ops.md §SFT |
| CINECA Leonardo (A100-64GB, 4/node, no-internet-compute) | otagent / sft-qwen35 | 24h (23:59:00) | .agents/ops/leonardo/ops.md §SFT |
| TACC Vista (GH200, aarch64) — axolotl path | sft-axolotl / otagent | per-partition | .agents/ops/tacc/ops.md |
Each ops §SFT has the required preamble, paths, QOS/account rules, post-patches, offline handling, and upload mechanics.
© open-thoughts, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/sft-launch of open-thoughts/OpenThoughts-Agent.
Open the folder on GitHubat commit 3bd1917
Sft Launch next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Sft Launch this skillopen-thoughts/OpenThoughts-Agent | 301 | — | ~2.9k | Automated safety check: Pass | Apache-2.0 | |
| Aqua Deploymentoracle/accelerated-data-science | 125 | — | ~2.4k | Automated safety check: Pass | UPL-1.0 | |
| Lintlang Auditsickn33/agentic-awesome-skills | 47k | 1 repos | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| Deep Learningericrisco/rsc-harness | 156 | — | ~3.4k | Automated safety check: Pass | MIT | |
| ML Experiment IterationLeeroo-AI/superml | 195 | — | ~4.8k | Automated safety check: Pass | Apache-2.0 | |
| nanoGPT Training GuideOrchestra-Research/AI-Research-SKILLs | 13k | 3 repos | ~1.7k | Automated safety check: Pass | MIT |
oracle/accelerated-data-science
Deploy LLM models on OCI using AI Quick Actions (AQUA) - single model, multi-model, stacked (LoRA), with GPU shape selection, vLLM configuration, streaming, and tool calling.
sickn33/agentic-awesome-skills
Audit named agent instructions, tool definitions, and supported Python prompts with local LintLang checks; return finding codes and locations without changing files.
ericrisco/rsc-harness
A skill your agent uses when training or debugging a neural net in PyTorch — the forward/loss/backward/step loop and its silent bugs, mixed precision (AMP), AdamW/LR schedules, DDP/FSDP/ZeRO…
Leeroo-AI/superml
Produces ranked, evidence-grounded next steps when an ML experiment has stalled, drawing on a Leeroopedia knowledge base or on fetched docs and issues.
Orchestra-Research/AI-Research-SKILLs
Walks through nanoGPT, Karpathy's compact GPT implementation: training on Shakespeare, reproducing GPT-2, fine-tuning GPT-2 checkpoints and training on your own text.
K-Dense-AI/scientific-agent-skills
Modal is a serverless cloud platform for running Python on demand, including on-demand GPUs.
open-thoughts/OpenThoughts-Agent
Analyze the token length of an OT-Agent conversation-format (ShareGPT-style) dataset — the per-trace distribution (median/p90/max) and/or counts under a token threshold + a metadata predicate (e.g.
open-thoughts/OpenThoughts-Agent
Given a list of models (HF name stubs) that have valid agentic ID eval scores in Supabase, build a ranking table: raw per-benchmark accuracy on the 3 ID benchmarks (SWE-Bench-100…
open-thoughts/OpenThoughts-Agent
Run the Iris harbor job-history analyzer (scripts/iris/analyzeirisharborjob.py) on a datagen/eval job and read its JSON sidecar for trustworthy throughput / preemption / productive-trial stats.
open-thoughts/OpenThoughts-Agent
Run the full RL behavioral-analysis pipeline (scripts/analysis/analyzerlbehavior.py) on a trained RL model to understand WHAT changed vs its pre-RL baseline, WHY, whether it PERSISTS, and its EVAL…
open-thoughts/OpenThoughts-Agent
Detailed health check for a Levanter/executor TRAINING run on the marin Iris cluster (e.g.
open-thoughts/OpenThoughts-Agent
DESIGN a non-trivial codebase change (Harbor / MarinSkyRL / vLLM / OT-Agent / LLaMA-Factory) as a dependency-ordered STAGED PLAN before writing code — a feature port, a multi-step fix with parity…
Works with
Categories
Launch SFT via python -m hpc.launch --jobtype sft on any cluster (JSC Jupiter GH200, CINECA Leonardo A100, TACC Vista GH200), with EITHER backend — LLaMA-Factory (default) or axolotl (--sftbackend…. Sft Launch is an agent skill from open-thoughts/OpenThoughts-Agent.launch --jobtype sft on any cluster (JSC Jupiter GH200, CINECA Leonardo A100, TACC Vista GH200), with EITHER backend — LLaMA-Factory (default) or axolotl (--sftbackend axolotl) — including Delphi tool-calling models (delphi template, tokenizer prep, jinja-as-ground-truth masking).
Sft Launch fits situations like: asked to SFT / launch a finetune / train a model on Jupiter; tasks that involve Fine-tuning; tasks that involve Machine learning.
Run `npx skills add open-thoughts/OpenThoughts-Agent --skill sft-launch -a claude-code`. Or copy the skill folder (.agents/skills/sft-launch in open-thoughts/OpenThoughts-Agent) into .claude/skills/sft-launch in your project. Claude Code loads it when a task matches its description.
Run `npx skills add open-thoughts/OpenThoughts-Agent --skill sft-launch -a codex`. Or copy the skill folder (.agents/skills/sft-launch in open-thoughts/OpenThoughts-Agent) into .agents/skills/sft-launch in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add open-thoughts/OpenThoughts-Agent --skill sft-launch -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sft-launch, .gemini/skills/sft-launch, .github/skills/sft-launch and .opencode/skills/sft-launch in your project.
Going by SKILL.md and its folder, Sft Launch needs the command-line tools its instructions call (python and git). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Sft Launch is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Sft Launch: Aqua Deployment (oracle/accelerated-data-science, 125 stars), Lintlang Audit (sickn33/agentic-awesome-skills, 47k stars), Deep Learning (ericrisco/rsc-harness, 156 stars) and ML Experiment Iteration (Leeroo-AI/superml, 195 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
open-thoughts (a GitHub organization) maintains it in open-thoughts/OpenThoughts-Agent, which has 301 GitHub stars. The repository holds 44 skills in this directory. The repository was last updated on September 28, 2026.
Source: open-thoughts/OpenThoughts-Agent on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.