build-setup
Set up build environment and test fixtures for COBOL-to-Java migrations. Creates compilation infrastructure for both languages…
Run reinforcement-learning post-training of a model inside the OpenHands agent harness on Snowflake Cortex Training for any Harbor training and eval task directories or SWE-smith code localization, and generate the reward convergence graph. Use when asked to launch, monitor,
Claude Code
$ npx -y skills add openhands/extensions --skill cortex-training-rl --agent claude-code
Codex
$ npx skills add openhands/extensions --skill cortex-training-rl -a codex -y
Cursor
$ npx skills add openhands/extensions --skill cortex-training-rl -a cursor -y
Gemini CLI
$ npx skills add openhands/extensions --skill cortex-training-rl -a gemini-cli -y
GitHub Copilot
$ npx skills add openhands/extensions --skill cortex-training-rl -a github-copilot -y
OpenCode
$ npx skills add openhands/extensions --skill cortex-training-rl -a opencode -y
Windsurf
$ npx skills add openhands/extensions --skill cortex-training-rl -a windsurf -y
name: cortex-training-rl description: >- Run reinforcement-learning post-training of a model inside the OpenHands agent harness on Snowflake Cortex Training for any Harbor training and eval task directories or SWE-smith code localization, and generate the reward convergence graph. Use when asked to launch, monitor, debug, stop, or plot an OpenHands or Harbor RL run on Cortex Training. triggers: - /cortex-training-rl - cortex training - cortex-training - arctic platform - arctic-platform - codescout - harbor
The trainer and the sampler run on Cortex Training GPUs (`4 training + 4 sampling H200s`). Your machine runs a CPU-only driver that executes OpenHands rollouts against a local OpenAI-compatible proxy (`ChatCompletionsProxy`) and sends the exact sampled token IDs (`loss_mask = 1` on assistant turns, `0` on prompts and tool outputs) plus verifier rewards back to Cortex for a GSPO/GRPO update.
Two recipes ship in [Arctic Platform](https://github.com/Snowflake-AI-Research/Arctic-Platform): 1. **Harbor RL (`recipes/rl/harbor` + `arctic_platform/integrations/harbor`, [PR #294](https://github.com/Snowflake-AI-Research/Arctic-Platform/pull/294)):** Takes any Harbor training and eval task directories (`TRAIN_HARBOR_TASKS` and `EVAL_HARBOR_TASKS`, each task containing `instruction.md`, `environment/`, and `tests/test.sh`) and any target OpenHands agent (`HARBOR_SKILL`, `OPENHANDS_TOOLS`, `OPENHANDS_SYSTEM_PROMPT_FILE`, or `HARBOR_AGENT`). Each rollout is orchestrated by Harbor's `Trial` and scored by Harbor's `Verifier` (`tests/test.sh` $\to$ `/logs/verifier/reward.txt` or `reward.json`). 2. **Code localization (`recipes/rl/openhands/code_localization`):** Direct SWE-smith code localization (`file + module + function F1`, max `3.0`).
1. **Identify jobs by comment.** Set `ARCTIC_CORTEX_JOB_COMMENT` with your name; never cancel a job whose comment is not yours. 2. **One run per driver machine.** Concurrent runs collide on tmux sessions, ptys, and workspace disk. 3. **Never `kill -9` the driver.** Stop with `SIGTERM` or Ctrl-C so the launcher's exit trap cancels the Cortex GPU job. 4. **Keep credentials private.** Never print, log, or commit PATs or login configs. 5. **Keep recipe hyperparameters intact.** Fix environment issues (`references/troubleshooting.md`) rather than changing batch size, context length, or learning rate.
cortex-training login ~/cortex-training-config.json # once per machine
cortex-training capacity --hardware H200 # need 8 free
cortex-training list --status running # check for live jobs
pgrep -af 'run_qwen35_4b.sh|skyrl.train' # live driver on this host?
tmux ls 2>/dev/null | grep -c '^openhands-' # leaked rollout sessions
cat /proc/sys/kernel/pty/nr /proc/sys/kernel/pty/max # ptys in use / limit
df -h "${OPENHANDS_WORKSPACE:-/tmp/testbed}" # workspace diskIf no run is live and `openhands-*` tmux sessions remain, clear them before launching:
tmux ls -F '#{session_name}' 2>/dev/null | grep '^openhands-' | xargs -r -n1 tmux kill-session -tRequires `uv`, SkyRL at `skyrl-v0.3.0` (`export SKYRL_HOME=/path/to/SkyRL`), and an `Arctic-Platform` checkout.
Point `TRAIN_HARBOR_TASKS` and `EVAL_HARBOR_TASKS` at any directories of Harbor tasks (`instruction.md` + `tests/test.sh`). To export SWE-smith code localization into Harbor task directories (`train/` and `eval/`):
uv run recipes/rl/harbor/prepare_data.py \
--export-swe-smith-to ~/data/swe-smith-harbor-tasks \
--out ~/data/harbor-rluv run recipes/rl/openhands/code_localization/prepare_data.py
Always launch on a dedicated tmux socket (`-L "$RUN_NAME"`) with `TMUX` and `TMUX_PANE` unset so `libtmux` inside OpenHands does not attach to the launcher's tmux server.
**Harbor RL (`recipes/rl/harbor/run_qwen35_4b.sh`):**
export RUN_NAME=qwen35-4b-harbor-rl-$(date +%m%d-%H%M) export CKPT_DIR=$HOME/checkpoints/$RUN_NAME export TRAIN_HARBOR_TASKS=$HOME/data/swe-smith-harbor-tasks/train export EVAL_HARBOR_TASKS=$HOME/data/swe-smith-harbor-tasks/eval export HARBOR_SKILL=/path/to/SKILL.md # optional: ":"-separated SKILL.md paths export ARCTIC_CORTEX_JOB_COMMENT="<your name> harbor rl - ask before cancelling" export LOGGER=console OPENHANDS_WORKSPACE=/path/with/space STARTUP_TIMEOUT=14400 mkdir -p "$CKPT_DIR" tmux -L "$RUN_NAME" new-session -d -s train \ "echo \$\$ > $CKPT_DIR/launcher.pid; exec env -u TMUX -u TMUX_PANE \ bash recipes/rl/harbor/run_qwen35_4b.sh trainer.max_training_steps=100"
Optional environment variables to target any OpenHands configuration or Harbor sandbox:
**Direct code localization (`recipes/rl/openhan
This repository is the public extensions registry for OpenHands. It contains reusable, shareable skills, plugins, and Agent Canvas Apps that customize agent behavior and interfaces. Skills overview docs: SDK skill guide:
Set up build environment and test fixtures for COBOL-to-Java migrations. Creates compilation infrastructure for both languages…
End-to-end COBOL to Java migration workflow. Handles build setup, mainframe dependency removal, and code migration with test…
Create a transformation guide for replacing mainframe-specific COBOL constructs with standard COBOL equivalents. Use when…
Apply mainframe dependency transformations to COBOL code using a pre-generated transformation guide. Converts CICS/VSAM…
Migrate COBOL code to idiomatic Java, preserving business logic while following Java best practices. Use for COBOL modernization…
A test skill that responds to the magic word "alakazam" with a specific phrase
Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.
Drives the GUI of a visible local app window through `orca computer`: accessibility tree, clicks, typing, menus, dialogs, and…
Use your assigned AgentMail inbox to read email tasks, explicitly send or reply, and check delivery. Provided automatically by…
Create a new Architecture Decision Record with sequential numbering and AgentDB registration