commit-and-pr
GitHub规范代码提交与PR流程,强制使用指定标题格式和模块标签。执行重复工作检查以避免冗余,确保贡献合规并披露AI辅助情况,保障仓库协作质量。
Trigger Scenarios
Install
npx skills add verl-project/verl-omni --skill commit-and-pr -g -y
SKILL.md
Frontmatter
{
"name": "commit-and-pr",
"description": "verl-omni commit message + PR conventions and the mandatory contribution policy. MUST load before any git commit or PR creation -- enforces the [{modules}] {type}: {description} title format, commit trailers, duplicate-work checks, and AI-assistance disclosure."
}
Commit & PR Conventions
How to commit and open PRs in verl-project/verl-omni. Load this before any
commit or PR. The rules here come from AGENTS.md / CLAUDE.md and are
enforced by maintainers — breaching them can result in banning.
When to Use
- Any
git commitin this repo. - Any PR creation (including delegated/agent commits).
- Whenever you infer a module/type label for a change.
Step 0: Contribution policy (fail-closed)
Before proposing a PR, run the duplicate-work checks:
gh issue view <issue_number> --repo verl-project/verl-omni --comments
gh pr list --repo verl-project/verl-omni --state open --search "<issue_number> in:body"
gh pr list --repo verl-project/verl-omni --state open --search "<short area keywords>"
- If an open PR already addresses it → do not open another.
- If your approach differs materially → explain the difference in the issue.
- No low-value busywork PRs (single typo, one style tweak, one mutable default). Mechanical cleanups are acceptable only bundled with substantive work.
- If the work is duplicate/trivial → stop and report what's missing.
PR title format
[{modules}] {type}: {description}
- modules (comma-separated if several). The gate is
tests/special_sanity/check_pr_title.py, notAGENTS.md— it accepts the officialAGENTS.mdset (vllm_omni,diffusion,omni,rollout,trainer,reward,model,algo,fsdp,ray,worker,data,cfg,ckpt,doc,ci,tests,docker,misc) plustraining_utils,single_controller,recipe,perf,env,tool. Prefer the official set; the extras are real (recipeforexamples/work,perffor perf changes). Anything outside the validator's list fails the check. - type:
feat,fix,refactor,chore,test. [BREAKING]if it breaks any API (CLI args, config, signatures) — placed immediately before the module bracket:[BREAKING][cfg] refactor: ..., not[cfg] [BREAKING] ...(the validator only strips a leading[BREAKING]).- For a stacked/multi-part PR series, prefix
[N/N](single digits only), e.g.[1/N][omni] feat: .... Combined with[BREAKING]the order is[N/N][BREAKING][module].
Module inference from changed paths
| Path | Module |
|---|---|
verl_omni/pipelines/ |
diffusion |
verl_omni/pipelines/qwen3_omni/ |
omni |
verl_omni/trainer/ |
trainer |
verl_omni/trainer/config/, */config/ |
cfg |
verl_omni/utils/reward_score/, verl_omni/reward_loop/ |
reward |
verl_omni/workers/rollout/ |
rollout |
verl_omni/workers/ |
worker |
verl_omni/models/ |
model |
verl_omni/utils/vllm_omni/ |
vllm_omni |
docs/ |
doc |
tests/ |
tests |
.github/, CI |
ci |
docker/ |
docker |
Title examples
[reward] feat: add pickscore visual reward
[diffusion, cfg] feat: add teacher-anchored distillation losses for OPD
[omni] fix: correct attention mask for Qwen3-Omni text+image inputs
[tests] test: cover qwen-image DPO adapter guidance branching on CPU
[BREAKING][cfg] refactor: rename guidance_scale to cfg_scale
Real history to match style: [trainer, algo, cfg] feat: ...,
[diffusion, cfg, tests] feat: ..., [1/N][omni] feat: ....
Commit messages
Body explains why, not what. Wrap ~72 chars. For AI-assisted commits, add an explicit disclosure line in the body and attribution trailers (this is the actual repo convention — see recent history):
[reward] feat: add pickscore visual reward
Add a PickScore-based scorer routed via default_compute_score_image so
flow-GRPO runs can optimize human-preference reward.
AI assistance (<your tool name>) was used for this change.
Co-authored-by: <your tool name>
Signed-off-by: Your Name <your.email@example.com>
The Co-authored-by trailer names the assisting tool actually used —
substitute your own tool name, do not copy Claude Code verbatim unless
you are Claude Code. Signed-off-by with a real name/email is required.
PR description (AI-assisted work — mandatory)
The PR body must include:
- Why this is not duplicating an existing PR (cite your Step 0 checks).
- Test commands run and their results.
- A clear statement that AI assistance was used.
- A note that a human submitter has reviewed every changed line — pure code-agent PRs are not allowed.
Pre-commit
Ensure hooks pass before committing (pre-commit install once). If you touched
config dataclasses, run scripts/generate_trainer_config.sh and commit the
regenerated _generated_*.yaml (see config rule).
Common Mistakes
- ❌ Title with a module not in
check_pr_title.py, or an invalid type. - ❌
[BREAKING]after the module bracket ([cfg] [BREAKING]) instead of before it. - ❌ Opening a PR without the duplicate-work checks.
- ❌ Omitting the AI-assistance disclosure or trailers.
- ❌ Committing a stale
_generated_*.yaml.
Version History
- f92f3f0 Current 2026-08-16 07:00


