Agent skill

Rl Agentic Job Cleanup

by open-thoughts in open-thoughts/OpenThoughts-Agent

Preserve + publish a finished RL (SkyRL/GRPO) training checkpoint after the job terminates (completed at maxsteps OR early-stopped/scancelled) on an HPC cluster (Jupiter/Leonardo/Perlmutter).

Apache-2.0Auto-check passedAI & LLM Engineering

Install Rl Agentic Job Cleanup

skills CLI
$ npx skills add open-thoughts/OpenThoughts-Agent --skill rl-agentic-job-cleanup -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install open-thoughts/OpenThoughts-Agent rl-agentic-job-cleanup --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/open-thoughts/OpenThoughts-Agent.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/rl-agentic-job-cleanup .claude/skills/rl-agentic-job-cleanup && rm -rf skills-src

Use ~/.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/

Facts

Skill name
rl-agentic-job-cleanup
GitHub stars
301
Token cost
~2.4k tokens
SKILL.md length
646 words
Files
1
Skills in repo
44
Repo updated
First seen
Licence
Apache-2.0

At a glance

Preserve + publish a finished RL (SkyRL/GRPO) training checkpoint after the job terminates (completed at maxsteps OR early-stopped/scancelled) on an HPC cluster (Jupiter/Leonardo/Perlmutter).

  • Works in 12 steps: Cancel pending retries → Select the checkpoint — trailing-5… → Locate the W&B run (optional) → …
  • An RL run needs its model uploaded + registered
  • SKILL.md covers Rules, 0. Cancel pending retries, 1. Select the checkpoint —… and 2. Locate the W&B run (optional), plus 9 more sections
  • Calls hf and python; reaches wandb.ai and huggingface.co

What it does

Rl Agentic Job Cleanup is an agent skill from open-thoughts/OpenThoughts-Agent. Preserve + publish a finished RL (SkyRL/GRPO) training checkpoint after the job terminates (completed at maxsteps OR early-stopped/scancelled) on an HPC cluster (Jupiter/Leonardo/Perlmutter). Covers: cancel pending retries, pick the BEST checkpoint by trailing-5 EMA of reward across the full restart chain, flatten weights to repo root, secret-scan, hf upload to laion/<job-<step-<size, Supabase DB register (--training-type RL + cross-user FK safety pre-check), upload training traces to penfever/<job, parse…

Its SKILL.md is about 2.4k 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. It works with Supabase. The repository describes itself as: Data recipes and robust infrastructure for training AI agents. The licence is Apache-2.0.

When your agent uses it

  • An RL run needs its model uploaded + registered
  • Asked to run the RL cleanup checklist

Example prompts

  • “run the RL cleanup checklist”
  • “/rl-agentic-job-cleanup”

Requirements

  • Python 3

Workflow steps

12 steps, taken from the step headings in SKILL.md.

  1. Cancel pending retries
  2. Select the checkpoint — trailing-5 reward EMA
  3. Locate the W&B run (optional)
  4. Flatten model files to the upload-dir root
  5. Copy the launch config for reproducibility
  6. Scan for secrets before upload
  7. Upload to HuggingFace — laion/--
  8. Register in the DB (--training-type RL) — with cross-user FK safety
  9. Upload RL traces → penfever/
  10. Parse metrics and preserve training logs
  11. Verify the published model and write the completion record
  12. Clean up the experiments dir

What it can do on your machine

Read from SKILL.md and the folder at commit 3bd1917. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • hf
    • python

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • wandb.ai
    • huggingface.co

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Rl Agentic Job Cleanup loads about 2.4k tokens when it runs. Until then it costs about 181 tokens; SKILL.md has 646 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~181
When it runs · the whole SKILL.md, loaded when a task matches
~2.4k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from open-thoughts/OpenThoughts-Agent at commit 3bd1917, republished under its Apache-2.0 licence (© open-thoughts). 646 words, ~2,434 tokens.

Download SKILL.mdSave it as .claude/skills/rl-agentic-job-cleanup/SKILL.md (or your agent's skills folder).
name
rl-agentic-job-cleanup
description
Preserve + publish a finished RL (SkyRL/GRPO) training checkpoint after the job terminates (completed at max_steps OR early-stopped/scancelled) on an HPC cluster (Jupiter/Leonardo/Perlmutter). Covers: cancel pending retries, pick the BEST checkpoint by trailing-5 EMA of reward across the full restart chain, flatten weights to repo root, secret-scan, `hf upload` to laion/<job>-<step>-<size>, Supabase DB register (--training-type RL + cross-user FK safety pre-check), upload training traces to penfever/<job>, parse metrics, and clean up. Use when an RL run needs its model uploaded + registered, or when asked to "run the RL cleanup checklist". Distinct from SFT cleanup (that's a different flow).

⚠ Do not add comments to YAMLs. Report your recommendations directly to the supervisor.

rl-agentic-job-cleanup

After an RL job terminates, publish laion/<job_name>-<step>-<size> (weights at repo root), trace dataset penfever/<job_name>, and a Supabase models row (training_type=RL).

Rules

  • hf upload, NEVER hf upload-large-folder (deprecated stub; deadlocks on HF LFS 429s). Wrap long uploads in tmux, not nohup.
  • --private is a no-value flag — do NOT pass --private false. Default is PUBLIC; omit it.
  • Run trace upload + parse_skyrl_metrics.py from the otagent conda env (the RL venv lacks google.cloud.storage + matplotlib).
  • On Leonardo, login-node hf upload is SIGKILLed at ~100s — use the sbatch+tunnel upload pattern.

0. Cancel pending retries

bash
squeue -u $USER --format='%.18i %.80j %.8T' | grep <job_name>
scancel <retry_job_ids>

1. Select the checkpoint — trailing-5 reward EMA

bash
# NOTE: there is an empty exports/ at the base level — ignore it. Real HF-exportable ckpts are nested:
ls -lt $EXPERIMENTS_DIR/<job_name>/<job_name>/exports/ | head -10

Use the EMA of reward/avg_raw_reward over a trailing-5 window.

Rules:

  • EMA across ALL chronological steps, regardless of chain restarts. Collect every .out and sort by trainer/global_step; do not compute it per-chain link.
  • Standard 5-period EMA: α = 2/(5+1) = 1/3; EMA_n = α·reward_n + (1−α)·EMA_{n−1}, EMA_1 = reward_1.
  • Never select the first saved checkpoint (global_step_5 with hf_save_interval: 5) — EMA not warmed up. Start from the second-saved step (typically 10).
  • Among saved, aligned checkpoints (multiples of hf_save_interval, excluding the first), upload the highest EMA. If scancelled before a save-aligned max-step, cap at the latest saved multiple.
python
import json, glob, re
rewards = {}  # step -> avg_raw_reward
for fn in glob.glob(f"{EXP_DIR}/logs/*.out"):
    for line in open(fn):
        m = re.search(r'trainer/global_step":\s*(\d+).*avg_raw_reward":\s*([\d.eE+-]+)', line)
        if m:
            step, r = int(m.group(1)), float(m.group(2))
            rewards.setdefault(step, r)  # first-seen wins (chain links may overlap)
steps = sorted(rewards)
alpha = 1/3
ema = {}; prev = rewards[steps[0]]
for s in steps:
    prev = alpha * rewards[s] + (1 - alpha) * prev
    ema[s] = prev
SAVE_EVERY = 5  # match hf_save_interval
aligned_eligible = [s for s in steps if s % SAVE_EVERY == 0 and s >= 2 * SAVE_EVERY]
best = max(aligned_eligible, key=ema.get)
print(f"best EMA={ema[best]:.4f} at step={best} (reward at that step={rewards[best]:.4f})")

Upload the checkpoint at exports/global_step_<best>/.

2. Locate the W&B run (optional)

From the job logs / trainer_log.jsonl: https://wandb.ai/dogml/OpenThoughts-Agent/runs/<run_id>. (Jupiter has no W&B — omit.)

3. Flatten model files to the upload-dir root

bash
UPLOAD_DIR=/e/scratch/jureap59/feuer1/upload_staging/<job_name>-<step>
mkdir -p $UPLOAD_DIR
cp $EXPORT_DIR/policy/* $UPLOAD_DIR/
ls $UPLOAD_DIR/   # safetensors, config.json, tokenizer files all at root

4. Copy the launch config for reproducibility

bash
cp hpc/skyrl_yaml/<config_used>.yaml $UPLOAD_DIR/rl_config.yaml

5. Scan for secrets before upload

bash
trufflehog filesystem $UPLOAD_DIR --no-update                                   # if installed
trufflehog filesystem $EXPERIMENTS_DIR/<job_name>/<job_name> --no-update         # logs/traces too
# fallback:
grep -rIE '(sk-[a-zA-Z0-9]{20,}|AKIA[0-9A-Z]{16}|ghp_[a-zA-Z0-9]{36}|hf_[a-zA-Z0-9]{34}|eyJ[a-zA-Z0-9._-]+)' $UPLOAD_DIR

Redact before proceeding (the wrapper emits a JSON finding record even when clean):

bash
python -m scripts.harbor.secret_redaction "$UPLOAD_DIR"

6. Upload to HuggingFace — laion/<job_name>-<step>-<size>

Include the global step and base-model size suffix (-20-32B, -30-8B).

bash
# tmux for long uploads. OMIT --private (no-value flag; default public).
hf upload laion/<job_name>-<step>-<size> $UPLOAD_DIR . --repo-type=model

The SkyRL trainer auto-pushes laion/<job_name> with weights under checkpoints/step_N/. Upload the manually flattened export to -<step>-<size> instead.

7. Register in the DB (--training-type RL) — with cross-user FK safety

Delete the trainer's auto-registered duplicate only if safe, then push the correct row. If any other-user row in sandbox_jobs, sandbox_trial_model_usage, or elsewhere FKs the auto-row, stop; do not delete or mutate the FK'd rows. Restrict all writes to rows you own.

python
other_users_fk = (c.table("sandbox_jobs").select("id,username,model_id")
    .eq("model_id", auto_row_id).neq("username", os.environ.get("USER","<you>")).execute())
if other_users_fk.data:
    print(f"SKIPPING auto-row delete — {len(other_users_fk.data)} other-user rows FK'd.")
else:
    c.table("models").delete().eq("name", "laion/<job_name>").execute()
    # optional, ONLY if pre-check passed: HfApi().delete_repo("laion/<job_name>", repo_type="model")

Then register the -<step>-<size> repo (--training-type RL is REQUIRED — the script defaults to SFT):

bash
python scripts/database/manual_db_push.py \
  --hf-model-id laion/<job_name>-<step>-<size> \
  --base-model <base_model_hf> \
  --dataset-name <dataset_name> \        # comma-separated for multi-dataset → sets dataset_names
  --training-type RL                      # --wandb-run optional (defaults to now)

Verify --base-model is the exact HF repo trained from, not a default. Cross-check the job-name suffix, trainer.policy.model.path in the .out launch command, or notes/ot-agent/rl_experiments.md.

Show full SKILL.md (269 more words)Show less

8. Upload RL traces → penfever/<job_name>

From the otagent env, always pass --skip_register for RL; register the model separately in step 7.

bash
python -m scripts.harbor.make_and_upload_trace_dataset \
  --job_dir "$EXPERIMENTS_DIR/<job_name>/<job_name>" \
  --repo_id penfever/<job_name> --episodes last --skip_register

Never subsample or cap: upload the full trial set. The script reads the inner <job>/<job> trace_jobs/. For image-backed Jupiter runs, pass the same inner run root. The exporter detects artifact_store.img, refuses an unsafe mount while a writer lock is active, mounts it read-only after the link exits, and unmounts it when export finishes. Legacy bare trace_jobs/ runs keep the existing path.

make_and_upload_trace_dataset buffers the full dataset; chunk_size does not bound peak RAM. Large login-node uploads can OOM; do not respond by sampling.

Then add a "Training Traces" section to $UPLOAD_DIR/README.md (append if a model card exists, don't overwrite) linking penfever/<job_name>:

markdown
## Training Traces
Training-time Daytona/Harbor rollouts: **[penfever/<job_name>](https://huggingface.co/datasets/penfever/<job_name>)**
(the `last` episode of each trial — the rollouts the policy trained on after rollback/truncation).

9. Parse metrics and preserve training logs

bash
python scripts/analysis/parse_skyrl_metrics.py \
  $EXPERIMENTS_DIR/<job_name>/logs $UPLOAD_DIR/training_logs \
  --trace_jobs_dir $EXPERIMENTS_DIR/<job_name>/<job_name>/trace_jobs
cp $EXPERIMENTS_DIR/<job_name>/<job_name>/trainer_log.jsonl $UPLOAD_DIR/training_logs/ 2>/dev/null
cp $EXPERIMENTS_DIR/<job_name>/logs/<job_name>_*.out $UPLOAD_DIR/training_logs/
hf upload laion/<job_name>-<step>-<size> $UPLOAD_DIR . --repo-type=model   # additive

Produces metrics.csv, vllm_metrics.csv, trial_stats.csv, report.md, reward_plot.png. The metrics reader also detects a missing <run>/trace_jobs beside artifact_store.img and mounts the inactive image read-only for trial statistics. WARNING: never use huggingface_hub.upload_folder() without delete_patterns=[] — it deletes files absent locally and clobbers the weights. hf upload is additive (safe).

10. Verify the published model and write the completion record

The model is complete only when its remote repo has weights, README.md with Training Traces, and redacted training_logs/. Record every artifact as present, absent, or not applicable in the cleanup handoff; an absent required artifact is not a completed cleanup.

bash
hf api repo-info laion/<job_name>-<step>-<size> --repo-type model --expand siblings \
 | python -c 'import json,sys; files=[x["rfilename"] for x in json.load(sys.stdin)["siblings"]]; print({"weights": any(x.endswith(".safetensors") for x in files), "readme": "README.md" in files, "training_logs": any(x.startswith("training_logs/") for x in files)})'

Fetch README.md and verify it contains ## Training Traces and the exact penfever/<job_name> URL.

11. Clean up the experiments dir

After all prior steps succeed, rm -rf the local job dir. Detach a large GPFS removal with nohup or tmux; do not du or find it first.

© 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

Files

Just SKILL.md in .agents/skills/rl-agentic-job-cleanup of open-thoughts/OpenThoughts-Agent.

Open the folder on GitHubat commit 3bd1917

Compare with similar skills

Rl Agentic Job Cleanup 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.

Rl Agentic Job Cleanup compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Rl Agentic Job Cleanup this skillopen-thoughts/OpenThoughts-Agent301—~2.4kAutomated safety check: PassApache-2.0
Sentence-Transformers Training Routerhuggingface/skills11k1 repos~2.6kAutomated safety check: PassApache-2.0
Train RlOpenPipe/ART11k—~2.4kAutomated safety check: PassApache-2.0
Qwopus27b Rl TrainingR6410418/Jackrong-llm-finetuning-guide1.7k—~830Automated safety check: PassApache-2.0
Dataset Evaluationawslabs/agent-plugins9161 repos~1.3kAutomated safety check: PassApache-2.0
Train SftOpenPipe/ART11k—~2.9kAutomated safety check: PassApache-2.0

Similar skills

  • Official

    Routes a sentence-transformers training task to the right model type and required reference docs and example scripts, covering bi-encoders, rerankers, sparse and multi-vector models.

    11k GitHub starsUsed in 1 repo~2.6k tokens
    AI & LLM EngineeringAuto-check passed
  • Train Rl

    OpenPipe/ART

    RL training reference for the ART framework. An agent skill from OpenPipe/ART.

    11k GitHub stars~2.4k tokensUpdated yesterday
    AI & LLM EngineeringAuto-check passed
  • Qwopus27b Rl Training

    R6410418/Jackrong-llm-finetuning-guide

    Prepare, validate, launch-plan, monitor, resume, and stop configurable Qwopus 27B reinforcement-learning workflows for GRPO or GSPO.

    1.7k GitHub stars~830 tokensUpdated 3 mo ago
    AI & LLM EngineeringAuto-check passed
  • Dataset Evaluation

    awslabs/agent-plugins

    Official

    Validates dataset formatting and quality for SageMaker model fine-tuning (SFT, DPO, or RLVR).

    916 GitHub starsUsed in 1 repo~1.3k tokens
    AI & LLM EngineeringAuto-check passed
  • Train Sft

    OpenPipe/ART

    SFT training reference for the ART framework. An agent skill from OpenPipe/ART.

    11k GitHub stars~2.9k tokensUpdated yesterday
    AI & LLM EngineeringAuto-check passed
  • Fine Tuning With Trl

    Orchestra-Research/AI-Research-SKILLs

    Fine-tune LLMs using reinforcement learning with TRL - SFT for instruction tuning, DPO for preference alignment, PPO/GRPO for reward optimization, and reward model training.

    13k GitHub starsUsed in 6 repos~2.9k tokens
    AI & LLM EngineeringAuto-check passed

More from open-thoughts/OpenThoughts-Agent

All 44 skills in this repo
  • Analyze Dataset Token Length

    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.

    301 GitHub stars~1.5k tokensUpdated 12 days ago
    Auto-check passed
  • Analyze Id Eval Ranking

    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…

    301 GitHub stars~3.1k tokensUpdated 12 days ago
    Auto-check passed
  • Analyze Job History Iris

    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.

    301 GitHub stars~2.9k tokensUpdated 12 days ago
    Auto-check passed
  • Analyze Rl Behavior

    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…

    301 GitHub stars~4.2k tokensUpdated 12 days ago
    Auto-check passed
  • Analyze Training Run Iris

    open-thoughts/OpenThoughts-Agent

    Detailed health check for a Levanter/executor TRAINING run on the marin Iris cluster (e.g.

    301 GitHub stars~2k tokensUpdated 12 days ago
    Auto-check passed
  • Code Create Staged Plan

    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…

    301 GitHub stars~1.5k tokensUpdated 12 days ago
    Auto-check passed

Works with

Questions about Rl Agentic Job Cleanup

What does Rl Agentic Job Cleanup do?

Preserve + publish a finished RL (SkyRL/GRPO) training checkpoint after the job terminates (completed at maxsteps OR early-stopped/scancelled) on an HPC cluster (Jupiter/Leonardo/Perlmutter). Rl Agentic Job Cleanup is an agent skill from open-thoughts/OpenThoughts-Agent. Preserve + publish a finished RL (SkyRL/GRPO) training checkpoint after the job terminates (completed at maxsteps OR early-stopped/scancelled) on an HPC cluster (Jupiter/Leonardo/Perlmutter).

When should I use Rl Agentic Job Cleanup?

Rl Agentic Job Cleanup fits situations like: an RL run needs its model uploaded + registered; asked to run the RL cleanup checklist.

How do I install Rl Agentic Job Cleanup in Claude Code?

Run `npx skills add open-thoughts/OpenThoughts-Agent --skill rl-agentic-job-cleanup -a claude-code`. Or copy the skill folder (.agents/skills/rl-agentic-job-cleanup in open-thoughts/OpenThoughts-Agent) into .claude/skills/rl-agentic-job-cleanup in your project. Claude Code loads it when a task matches its description.

How do I install Rl Agentic Job Cleanup in Codex?

Run `npx skills add open-thoughts/OpenThoughts-Agent --skill rl-agentic-job-cleanup -a codex`. Or copy the skill folder (.agents/skills/rl-agentic-job-cleanup in open-thoughts/OpenThoughts-Agent) into .agents/skills/rl-agentic-job-cleanup in your project. Codex loads it when a task matches its description.

Can I use Rl Agentic Job Cleanup in Cursor, Gemini CLI or GitHub Copilot?

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 rl-agentic-job-cleanup -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/rl-agentic-job-cleanup, .gemini/skills/rl-agentic-job-cleanup, .github/skills/rl-agentic-job-cleanup and .opencode/skills/rl-agentic-job-cleanup in your project.

What does Rl Agentic Job Cleanup need to run?

Going by SKILL.md and its folder, Rl Agentic Job Cleanup needs the command-line tools its instructions call (hf and python). Our summary lists: Python 3.

Does Rl Agentic Job Cleanup access the network?

SKILL.md names 2 domains. In commands or code: wandb.ai and huggingface.co; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Rl Agentic Job Cleanup safe to install?

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.

What licence does Rl Agentic Job Cleanup use?

Rl Agentic Job Cleanup 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.

How many tokens does Rl Agentic Job Cleanup use?

About 2.4k tokens (SKILL.md is roughly 9.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Rl Agentic Job Cleanup?

Skills that share tags, products or a category with Rl Agentic Job Cleanup: Sentence-Transformers Training Router (huggingface/skills, 11k stars), Train Rl (OpenPipe/ART, 11k stars), Qwopus27b Rl Training (R6410418/Jackrong-llm-finetuning-guide, 1.7k stars) and Dataset Evaluation (awslabs/agent-plugins, 916 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Rl Agentic Job Cleanup?

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.