linting-and-formatting
Skill2.1k starsChanged 20 days agoApache-2.0View on GitHub
Code style guidelines for NeMo-RL (Python and shell). Covers naming, indentation, comments, docstrings, reflection avoidance, and uv usage.
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 3 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 18
Use uv run to execute scripts.
- Distinctive: line 53
Avoid shadowing variables declared in an outer scope.
- Distinctive: line 64
Use Google style docstrings (parseable by Sphinx).
- Very specific: line 68
When a function has multiple parameters of the same type that could easily be swapped by mistake, use a bare * to force keyword-only …
- Distinctive: line 90
Do not use reflection when functionality can be achieved without it.
- Very specific: line 112
When you add a new module under a type-checked area, add it to pyrefly.toml project-includes.
- Very specific: line 118
Put imports at module top.
≈ “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.
Files
Code Style
Style Guides
- Python: Google Python Style Guide
- Shell: Google Shell Style Guide
This repository is Python-first.
uv
Use uv run to execute scripts. Do not activate a virtual environment and call python directly.
Do:
uv run examples/run_grpo.pyDon't:
source .venv/bin/activate
python examples/run_grpo.pyException: Dockerfile.ngc_pytorch is exempt from this rule.
Python Standard
Code must conform to Python 3.13.13+.
Indentation
Indent with 4 spaces. Do not use tabs.
Naming
| Kind | Convention | Example |
| Files | snake_case | some_file.py |
| Classes | PascalCase | class SomeClass |
| Functions/methods | snake_case | def my_awesome_function(): |
| Local variables | snake_case | my_variable = ... |
| Variables starting with a number | prefix k | k_99th_percentile = ... |
| Global variables | upper snake_case + prefix G | G_MY_GLOBAL = ... |
| Constants | upper snake_case | MY_CONSTANT = ... |
- Avoid shadowing variables declared in an outer scope.
- Initialize all externally visible members of a class in the constructor.
Comments
- For interfaces used outside a file, prefer docstrings over comments.
- Comments are for code within a function or file-local interfaces.
- Commented-out code must have a comment explaining why it is commented out. Otherwise remove it before merging.
Docstrings
Use Google style docstrings (parseable by Sphinx).
Enforce Keyword Arguments for Ambiguous Parameters
When a function has multiple parameters of the same type that could easily be swapped by mistake, use a bare * to force keyword-only arguments starting from where the ambiguity begins. This prevents callers from accidentally transposing arguments.
Don't:
def loss_fn(input: Tensor, cp_group: ProcessGroup, tp_group: ProcessGroup, cp_rank: int, tp_rank: int):
...
# Caller can silently swap cp_group/tp_group or cp_rank/tp_rank
loss_fn(x, tp_group, cp_group, tp_rank, cp_rank) # wrong order, no errorDo:
def loss_fn(input: Tensor, *, cp_group: ProcessGroup, tp_group: ProcessGroup, cp_rank: int, tp_rank: int):
...
# Caller must name every argument — swaps are impossible
loss_fn(x, cp_group=cp_group, tp_group=tp_group, cp_rank=cp_rank, tp_rank=tp_rank)Avoid Reflection
Do not use reflection when functionality can be achieved without it.
Don't:
def make_complex(*args):
x, y = args
return dict(**locals())Do:
def make_complex(x, y):
return {'x': x, 'y': y}Type Annotations
Annotate new functions and methods — both parameters and return type. When you add a parameter to an
existing signature, type it, and match the type already used at the call site (don't leave a new arg
untyped while the caller already declares it, e.g. def __init__(self, teacher_worker_groups=None) when the
caller passes teacher_worker_groups: Optional[dict[str, Any]]).
When you add a new module under a type-checked area, add it to pyrefly.toml project-includes.
pyrefly checks an explicit allow-list of files, so a new file that isn't listed silently escapes
type-checking and its annotations are never verified.
Imports
Put imports at module top. Defer an import into a function body ONLY to break a circular import or to avoid
loading a heavy/optional dependency in a path that shouldn't need it — and when you do, add a one-line comment
saying which. An in-function import with no such reason should move to the top. In particular, deferring
stdlib (concurrent.futures, collections, …) or a module that is already imported at module top buys
nothing — hoist it.
Trending
Steady: 0 new projects took it in the last 4 weeks, none the 4 weeks before.thin data
Who's talking about NVIDIA-NeMo/RL
- vllm-project/vllm“[RFC]: Native Weight Syncing APIs”GitHub · Jan 7, 2026 · 14 reactions
- @sungkim.bsky.social“Nvidia has open-sourced the Llama-Nemotron-Super-V1.5 post-training Synthetic Data: …”Bluesky · Jul 31, 2025 · 4 likes
- vllm-project/vllm“[Bug]: Accuracy Discrepancy in Qwen-7B-Chat Evaluation: vLLM Logprobs Differ from SGLANG, Impacting …”GitHub · Jun 25, 2025 · 3 reactions
- huggingface/trl“Async-GRPO: Decouple rollout generation and reward computation/model update for faster training”GitHub · Nov 27, 2025 · 2 reactions
- Alvorecer721/Nemo-RL“fix(data): eval-path processors render a duplicated default system block (two chat-template calls)”GitHub · Sep 17, 2026 · 1 reactions
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
- Jan 7, 2026[RFC]: Native Weight Syncing APIs — vllm-project/vllm14 reactions · 11 comments
- Jun 25, 2025[Bug]: Accuracy Discrepancy in Qwen-7B-Chat Evaluation: vLLM Logprobs Differ from SGLANG, Impacting Performance — vllm-project/vllm3 reactions · 7 comments
- Nov 27, 2025Async-GRPO: Decouple rollout generation and reward computation/model update for faster training — huggingface/trl2 reactions · 3 comments
- Sep 17, 2026fix(data): eval-path processors render a duplicated default system block (two chat-template calls) — Alvorecer721/Nemo-RL1 reaction
- Jul 15, 2026docs(rl): add ModelExpress weight refit guide — ai-dynamo/dynamo1 reaction · 1 comment
45 more on GitHub
- Jul 9, 2026[roadmap] verl 26Q3 roadmap — verl-project/verl1 reaction · 5 comments
- Jan 8, 2026[Feat][RL][1/2] Native Weight Syncing API: NCCL — vllm-project/vllm1 reaction · 23 comments
- Oct 29, 2026feat: support FP32 LM-head output for NeMo RL / vLLM parity — NVIDIA-NeMo/Automodel0 reactions
- Oct 29, 2026Track softmax collapse and cancellation fixes in logprobs and losses — swiss-ai/Nemo-RL0 reactions
- Oct 27, 2026Support DAPO in async GRPO training — swiss-ai/Nemo-RL0 reactions · 1 comment
- Oct 25, 2026feat: preserve score heads — NVIDIA-NeMo/Gym0 reactions · 4 comments
- Oct 20, 2026Fix potential positional embedding tensor reuse for train/rollout 0-mismatch RL — NVIDIA/Megatron-LM0 reactions · 19 comments
- Oct 15, 2026feat(speechlm): support native RL checkpoints and frozen CTC export — NVIDIA-NeMo/Speech0 reactions · 20 comments
- Oct 15, 2026feat(audio): align ASR scoring and support explicit Ray launches — NVIDIA-NeMo/Skills0 reactions · 1 comment
- Oct 15, 2026feat(freezing): select exact parameters with FreezeConfig — NVIDIA-NeMo/Automodel0 reactions · 10 comments
- Oct 14, 2026fix(inference): support batch-invariant Mamba prefix caching — NVIDIA/Megatron-LM0 reactions · 7 comments
- Oct 11, 2026Latest 20 Papers - October 12, 2026 — xllm-io/daily-papers0 reactions
- Oct 8, 2026Latest 20 Papers - October 09, 2026 — xllm-io/daily-papers0 reactions
- Oct 8, 2026No VLLM DP path for EP>1 — swiss-ai/Nemo-RL0 reactions · 1 comment
- Oct 7, 2026Latest 20 Papers - October 08, 2026 — xllm-io/daily-papers0 reactions
- Oct 7, 2026Latest 15 Papers - October 08, 2026 — Hdksg10/DailyArxiv0 reactions
- Oct 7, 2026Support exporting MXFP8 values and scales from TE quantized tensors — NVIDIA/TransformerEngine0 reactions
- Oct 7, 2026Latest 15 Papers - October 07, 2026 — Ponkux/DailyArXiv-cp0 reactions
- Oct 7, 2026Latest 15 Papers - October 07, 2026 — ever-xing/DailyArXiv0 reactions
- Oct 2, 2026feat(swe): forward per-rollout sampling seeds to OpenHands — NVIDIA-NeMo/Gym0 reactions · 1 comment
- Oct 2, 2026feat: support episode-derived NeMo Gym request seeds — sdevare-nv/nv-OpenHands0 reactions
- Sep 28, 2026pjin/main-dev-20260928 — NVIDIA-NeMo/Gym0 reactions · 1 comment
- Sep 23, 2026feat(token-capture): add direct ledger manifest reader — NVIDIA-NeMo/Gym0 reactions · 1 comment
- Sep 22, 2026fix(peft): expose gather_output on output-layer substitutes — NVIDIA-NeMo/Megatron-Bridge0 reactions · 1 comment
- Sep 17, 2026Support vLLM version 0.29.0 — NVIDIA-NeMo/Gym0 reactions
- Sep 15, 2026feat(checkpoint): prefix token level recovery — NVIDIA-NeMo/Gym0 reactions · 1 comment
- Sep 13, 2026feat(checkpoint): add durable turn-level rollout recovery — NVIDIA-NeMo/Gym0 reactions · 1 comment
- Sep 10, 2026perf(data-plane): avoid local batch copies — rohitrango/NeMo-RL0 reactions · 2 comments
- Sep 4, 2026LLM Post training - Question regarding seq-mask-tis and global_valid_toks denominator scaling. — mlcommons/training0 reactions · 4 comments
- Sep 1, 2026decouple force_on_policy_ratio from step0 reforward. — google/tunix0 reactions · 1 comment
- Aug 26, 2026chore(customizer): enable configuring grpo hyperparams — NVIDIA-NeMo/nemo-helix0 reactions · 2 comments
- Aug 24, 2026fix(llm): preserve nvext through tool-call jail — ai-dynamo/dynamo0 reactions · 7 comments
- Aug 24, 2026Batch invariant nvls — NVIDIA/Megatron-LM0 reactions · 4 comments
- Aug 13, 2026[bug] nonlearnable params exist on different device than learnable parameters — NVIDIA-NeMo/Megatron-Bridge0 reactions · 5 comments
- Aug 10, 2026fold_weight crashes with AttributeError: 'NoneType' object has no attribute 'data' on Megatron models with tied word embeddings — NVIDIA/Model-Optimizer0 reactions · 1 comment
- Aug 4, 2026default port range to the 5000-5999 band — NVIDIA-NeMo/Gym0 reactions · 1 comment
- Aug 4, 2026nemo-gym / nemo-rl をライブラリレジストリに登録する — airas-org/airas0 reactions
- Jul 31, 2026Async colo upstreaming candidates — anlthms/RL0 reactions
- Jul 30, 2026[VDR][v0.5.0] Tutorials fail when followed verbatim — NVIDIA-NeMo/Gym0 reactions
- Jul 28, 2026test(vllm): cover upstream token metadata fast path — NVIDIA-NeMo/Gym0 reactions · 1 comment
- Jul 22, 2026NeMoRL: Container & Examples — eth-cscs/alps-extended-images0 reactions
- Jul 16, 2026Investigate torch.compile numerical differences between grad and no-grad RMSNorm forward passes — NVIDIA-NeMo/Automodel0 reactions · 1 comment
- Jul 13, 2026Support agentic training for SWE with TRTLLM rollout — hchings/RL0 reactions
- Jul 8, 2026fix: deterministic implementation of _float32_rms_norm_fwd — NVIDIA-NeMo/Automodel0 reactions · 6 comments
- Jun 10, 2026Nemotron Super RL is using Nano Parser — NVIDIA-NeMo/Nemotron0 reactions
On Bluesky · 2
- Jul 31, 2025Nvidia has open-sourced the Llama-Nemotron-Super-V1.5 post-training Synthetic Data: huggingface.co/datasets/nvi... Human Data:… — @sungkim.bsky.social4 likes and reposts
- Aug 23, 2025📦 NVIDIA-NeMo / RL ⭐ 683 (+3) 🗒 Python Scalable toolkit for efficient model reinforcement — @github-trending.bsky.social1 likes and repost
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- NVIDIA-NeMo/Automodel★ 1ksame name
- NVIDIA-NeMo/Megatron-Bridge★ 960same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository21 other files it gives its agents.
- AGENTS.mdAGENTS.md
- build-and-dependencySkill
- cicdSkill
- config-conventionsSkill
- contributingSkill
- copyrightSkill
- cp-to-mainSkill
- cp-to-releaseSkill
- error-handlingSkill
- launch-nemo-rlSkill
- nemo-rl-auto-researchSkill
- nemo-rl-brev-etiquetteSkill
- nemo-rl-docsSkill
- nemo-rl-session-memorySkill
- pr-html-concise-publicSkill
- removing-outdated-configSkill
- review-prSkill
- review-pr-teamSkill
- review-pr-team-verify-followupSkill
- review-pr-team-with-htmlSkill
- testingSkill
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.

