agentleFS
NVIDIA-NeMoNVIDIA-NeMo/RL/skills/cp-to-release/SKILL.md

cp-to-release

Skill2.1k starsChanged 20 days agoApache-2.0View on GitHub

Manually cherry-pick a merged NVIDIA-NeMo/RL PR onto the current release branch (r0.X.0) and open a cp PR with matching CI labels and /ok to test.

  • Reads credentials
  • Commits and pushes

We split this skill into the rules it gives an agent

2 rules. About 0 are common, 0 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Run from the NeMo-RL checkout.

    line 22
  2. Very specific:

    Stop if merged is false. Keep title, merge_commit_sha, and the labels starting with CI:.

    line 29

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

cp-to-release

Input: the original PR number N (already merged). Optional: a release branch name; otherwise use the newest origin/rX.Y.Z.

Release flow since r0.8.0: PRs merge into the release branch first, and a label auto cherry-picks them back to main. A manual cp is needed when a PR was merged into main instead of the release branch first. (Up to r0.7.0 it was the reverse: main first, auto cp to release.)

The user invoking this skill authorizes the cherry-pick commit, push, PR, label, and /ok to test — no pause-before-commit for the clean path. Do not assign reviewers; the user does.

Steps

Run from the NeMo-RL checkout. $GITHUB_TOKEN (public_repo scope) must be set in every Bash call that uses it; <user> is the user's GitHub branch prefix.

  1. Read the original PR.
    curl -sH "Authorization: Bearer $GITHUB_TOKEN" https://api.github.com/repos/NVIDIA-NeMo/RL/pulls/<N> \
      | jq '{title, merged, merge_commit_sha, base: .base.ref, labels: [.labels[].name]}'
    Stop if merged is false. Keep title, merge_commit_sha, and the labels starting with CI:.
  2. Pick the release branch (unless given):
    git fetch origin
    git branch -r | grep -E '^ *origin/r[0-9]+\.[0-9]+\.[0-9]+$' | sort -V | tail -1
    Also check git ls-remote origin refs/heads/<user>/cp-<N> is empty; if the branch exists, ask.
  3. Branch + cherry-pick in a worktree, so the user's main checkout (often dirty, on another branch) is untouched. Put it under a temp directory:
    git worktree add -b <user>/cp-<N> <tmpdir>/cp-<N> origin/<rel>
    cd <tmpdir>/cp-<N> && git cherry-pick -s <merge_commit_sha>
    -s is required: the commit must carry the user's own Signed-off-by alongside the author's. Forgetting it means amend + force-push + a second /ok to test.
  4. Conflicts: stop and hand back. Show the conflicting files; do not auto-resolve. After the user resolves and continues, verify before pushing:
    • git log -1 — the cherry-pick committed, and has the user's Signed-off-by.
    • grep -n "^<<<<<<< \|^=======$\|^>>>>>>> " <files> — no leftover markers.
    • Per file, compare the + lines with the original: diff <(git diff HEAD~1..HEAD -- <f> | grep '^+' | grep -v '^+++' | sort) <(git show <merge_sha> -- <f> | grep '^+' | grep -v '^+++' | sort) and report any extra/missing lines.
  5. Push and open a PR targeting the release branch, never main:
    git push -u origin <user>/cp-<N>
    POST /repos/NVIDIA-NeMo/RL/pulls with "base": "<rel>", "head": "<user>/cp-<N>".
    • Title: cp: cherry-pick #<N> - <original title verbatim> (keeps semantic-pull-request CI happy).
    • Body, one line:
      • Clean: manually cp #<N> into <rel> branch since it was merged into main instead of <rel> first.
      • Conflict: append the conflict, e.g. ... first. There's a conflict in <file> (<why, e.g. depends on #M which is not in <rel>>).
  6. Labels + CI. Copy the original's CI:* labels (POST /issues/<pr>/labels). Do not copy cherry-pick-to-main (it makes the bot cherry-pick the PR back to main) or release labels such as r0.8.0. Then post /ok to test <full head sha> as an issue comment.
  7. Report: PR number (bare #N), base, commit sha, labels, that /ok to test was posted, and the worktree path (git worktree remove <path> to clean up).

Reference PRs

  • #4412 (r0.8.0, clean, new flow): body manually cp #4182 into r0.8.0 branch since it was merged into main instead of r0.8.0 first.
  • r0.7.0, old flow: #3211 (clean, empty body); conflicts: #3153 manually cp #3147 into r0.7.0 branch since there's a conflict in docs/guides/environments.md., #3195, #3214.

Download now (ZIP)

Trending

More talk lately.about the whole repository

Dec 2025: 0 mentionsJan 2026: 2 mentionsFeb 2026: 0 mentionsMar 2026: 0 mentionsApr 2026: 0 mentionsMay 2026: 0 mentionsJun 2026: 1 mentionJul 2026: 9 mentionsAug 2026: 7 mentionsSep 2026: 10 mentionsOct 2026: 19 mentionsNov 2026: 0 mentions
Dec 2025Jun 2026Nov 2026
Mentions a month of the NVIDIA-NeMo/RL repository that our weekly crawl found. There is no adoption data for this file yet.

Who's talking about NVIDIA-NeMo/RL

The biggest 5 of 52 mentions linking to the repository that our crawl found. Each line is their own headline.

See all 52

Talked about on GitHub and Bluesky (52 times).

On GitHub · 50

45 more on GitHub

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.