mcore-split-pr
nvidia/skills
Divisez une PR en plusieurs PR afin de réduire le nombre de groupes d’examinateurs CODEOWNERS requis.
...Développer toutÀ propos de mcore-split-pr
La compétence mcore-split-pr permet de diviser une grande demande de fusion Megatron-LM en plusieurs demandes plus petites, chacune concernant un nombre minimal de groupes d’experts CODEOWNERS. Elle résout un problème concret lié à la charge de révision : une demande de fusion couvrant les composants principaux, les exemples, les outils et les dossiers de formation implique de nombreux groupes d’experts, ce qui ralentit les fusionnements, tandis qu’une demande ciblant un seul dossier ne nécessite que les experts de ce dernier.
Le processus se déroule en trois phases. Tout d’abord, il analyse la demande de fusion en récupérant ses détails ainsi que les statistiques de différences via gh CLI, en analysant le fichier .github/CODEOWNERS pour associer les motifs de fichiers aux groupes d’experts, et en comptant le nombre de groupes d’experts distincts requis pour cette demande. Ensuite, il propose une division des fichiers en fonction de leurs groupes CODEOWNERS, conserve les tests avec le code de production qu’ils valident, identifie les dépendances entre demandes (par exemple des symboles renommés dans une demande dont une autre dépend), s’assure que chaque demande résultante puisse être fusionnée indépendamment, et présente ce plan sous forme de tableau pour approbation par l’utilisateur. Enfin, et uniquement après approbation, il met en œuvre la division en créant des branches à partir du bon répertoire de base, en appliquant les modifications ciblées via git apply, en effectuant des commits, puis en poussant les modifications vers le fork de l’utilisateur. Il crée toujours les demandes de fusion en tant que brouillons, ne pousse jamais directement vers le répertoire principal, demande toujours l’accord de l’utilisateur avant toute fusion forcée, et attribue le crédit à l’auteur initial lorsque l’utilisateur actuel n’est pas l’auteur de la demande.
Les utilisateurs cibles sont les contributeurs et les mainteneurs de Megatron-LM qui doivent gérer des demandes de fusion très volumineuses et souhaitent réduire le nombre de groupes d’experts par demande, tout en garantissant que chaque demande divisée puisse être examinée et fusionnée indépendamment. Cette compétence peut être activée par l’utilisateur en fournissant l’URL ou le numéro de la demande de fusion.
FAQ
Quel problème résout la division d’une demande de fusion ?
Elle réduit le nombre de groupes d’experts CODEOWNERS nécessaires par demande, ce qui diminue la charge de révision. Chaque demande de fusion résultante doit néanmoins pouvoir être fusionnée et examinée indépendamment.
Pousse-t-elle directement dans le répertoire principal ?
Non. Elle crée toujours les demandes de fusion en tant que brouillons et les pousse vers le fork de l’utilisateur, jamais directement vers le répertoire principal. De plus, elle demande toujours l’accord de l’utilisateur avant toute fusion forcée qui réduirait la taille de la demande originale.
Comment sont gérés les tests lors de la division ?
Les fichiers de test accompagnent le code de production qu’ils valident. Cette compétence évite expressément de diviser les tests en une demande de fusion distincte uniquement dans le but de réduire le nombre d’experts.
Que se passe-t-il si une demande de fusion divisée dépend d’une autre ?
Elle indique explicitement cette dépendance et ajoute des alias compatibles avec les versions antérieures, des réexportations ou des modules de substitution dans la première demande, afin que les demandes suivantes puissent en dépendre. Elle précise également l’ordre de fusion requis.
Quelles sont les conditions nécessaires à son exécution ?
Une interface gh CLI authentifiée pour le répertoire, un dépôt local connecté au répertoire distant principal, ainsi qu’un fork personnel vers lequel pousser les branches. Elle attend l’approbation de l’utilisateur avant d’exécuter la division.
Tous les fichiers
5 fichiersSKILL.md4,4 KBAfficherskill.oms.sig4,5 KBAfficherBENCHMARK.md2,7 KBAfficherevals/evals.json0,0 KBAfficherskill-card.md2,4 KBAfficher
Split a large pull request into multiple smaller PRs, where each PR touchesthe fewest possible CODEOWNERS reviewer groups. The goal is to reduce reviewburden: a PR that only touches megatron/core/ needs only the core reviewers,while a PR that also touches examples/, tools/, and megatron/training/pulls in many additional groups.
Answer-First Constraints
For split-planning questions, lead with these constraints before the fullworkflow:
- Minimize CODEOWNERS reviewer groups per PR, but each resulting PR must stillbe independently mergeable and reviewable.
- Tests travel with the production code they validate; do not split tests into aseparate PR just to reduce reviewer groups.
- If PR B depends on symbols renamed in PR A, call out the dependency and putbackward-compatible aliases, re-exports, or shims in PR A when needed.
- Wait for user approval before execution.
- Execution creates draft PRs from the right base, applies file-scoped diffswith
git diff upstream/main..<source-branch> -- <paths> | git apply, pushesto the user's fork, and never pushes directly to upstream.
Workflow
1. Analyze the PR
- Fetch the PR details:
gh pr view <number> --repo NVIDIA/Megatron-LM --json title,body,headRefName,authorandgh pr diff <number> --repo NVIDIA/Megatron-LM --stat. Also determine the current GitHub user withgh api user --jq .login. - Parse
.github/CODEOWNERSto build a mapping from file path patterns to owner groups. - For each changed file in the PR, determine which CODEOWNERS groups would be required to review it.
- Build a summary table grouped by CODEOWNERS group, showing which files pull in which groups.
- Count the total number of distinct reviewer groups the PR currently requires.
2. Propose a split that minimizes reviewer groups per PR
The primary optimization goal: minimize the number of CODEOWNERS reviewer groups required for each resulting PR.
Strategy:
- Cluster files by their CODEOWNERS groups. Files owned by the same set of groups naturally belong together.
- Identify the largest cluster — this becomes the first (and usually largest) PR.
- Remaining files form one or more additional PRs, each ideally requiring only one or two reviewer groups.
- If a split creates a dependency (e.g., PR B uses symbols renamed in PR A), the dependent PR must be merged after the first. Note this explicitly.
- Each PR must be independently mergeable to main — no broken imports, no missing symbols. Backward-compatible aliases and re-export stubs in the first PR can make this possible.
Present the proposed split as a table:
- PR name/description
- Files included
- CODEOWNERS groups required
- Dependencies on other PRs (if any)
Wait for user approval before proceeding.
3. Execute the split (after user approval)
For each new PR:
- Create a new branch from the appropriate base (
main, or a dependency PR's branch). - Extract the relevant changes:
git diff upstream/main..<source-branch> -- <file paths> | git apply. - Stage, commit with a clear message, and push to the user's fork.
- Create the PR as a draft (per repo contributing guidelines).
- If the original PR needs to be narrowed in scope, confirm with the user before force-pushing.
- Report all PR URLs when done.
Important guidelines
- Always create PRs as drafts and push to the user's fork, never directly to upstream.
- Backward-compatible changes (aliases, re-exports, deprecation shims) should go in the first PR so subsequent PRs can depend on them.
- Test files should go with the production code they test, not in a separate PR.
- Prefer a single clean commit per split PR over replaying the original commit history.
- If a file is hard to categorize (e.g., it touches two groups), ask the user which PR it should go in.
- If the current GitHub user is not the author of the original PR, each new PR's description must explicitly credit the original author (e.g., "Original changes by @ in #").
Tous les fichiers
0 fichiersInstaller mcore-split-pr
Téléchargez et extrayez les fichiers de compétences dans votre répertoire .claude/skills/.
Télécharger le ZIPClonez le dépôt et copiez les fichiers de compétence dans votre projet.
git clone https://github.com/NVIDIA/skills/blob/main/skills/mcore-split-pr/SKILL.md # Copy SKILL.md to your .claude/skills/ directory
Copier





Maison
