вариант

mcore-split-pr

nvidia/skills nvidia/skills

Разделите патч-запрос на несколько отдельных патч-запросов, чтобы уменьшить количество групп рецензентов CODEOWNERS, необходимых для его обработки.

...Расширить все
11
Обновлено время 26 августа 2026 г.

О mcore-split-pr

Инструмент mcore-split-pr позволяет разделить крупный pull request проекта Megatron-LM на несколько более мелких PR, каждый из которых затрагивает минимальное количество групп рецензентов, указанных в файле CODEOWNERS. Он решает проблему чрезмерной нагрузки при рецензировании: PR, охватывающий ядро проекта, примеры кода, инструменты и папки с данными для обучения, привлекает множество групп рецензентов, что замедляет процесс слияния, тогда как PR, ограниченный одной папкой, требует участия только рецензентов этой папки.

Процесс работы инструмента состоит из трех этапов. Сначала он анализирует PR, собирая его детали и статистику изменений с помощью gh CLI, парсит файл .github/CODEOWNERS для соотнесения шаблонов файлов с группами владельцев и подсчитывает количество различных групп рецензентов, необходимых для рассмотрения PR. Затем он предлагает способ разделения, сгруппировывая файлы по группам из CODEOWNERS, сохраняя тесты вместе с кодом, который они проверяют, выделяя зависимости между PR (например, символы, переименованные в одном PR, от которых зависит другой), обеспечивая возможность независимого слияния каждого полученного PR и представляя план в виде таблицы для утверждения пользователя. Только после получения одобрения инструмент выполняет действия: создает ветки от соответствующей базовой ветки, применяет изменения к файлам с помощью git apply, сохраняет их в виде коммитов и загружает на форк пользователя. Всегда создаются PR в режиме черновика, никогда не происходит прямой загрузки в основной репозиторий, перед любым принудительным слиянием проводится подтверждение, а если текущий пользователь не является автором PR, указывается его первоначальный автор.

Целевыми пользователями являются участники и администраторы проекта Megatron-LM, работающие с крупными PR и желающие уменьшить количество групп рецензентов в каждом PR, сохраняя при этом возможность независимого рецензирования и слияния каждого разделенного PR. Инструмент можно вызвать, указав URL или номер PR в качестве аргумента.

Часто задаваемые вопросы

Какую проблему решает разделение PR?

Оно сокращает количество групп рецензентов, указанных в CODEOWNERS, что уменьшает нагрузку при рецензировании. Каждый полученный PR по-прежнему должен быть возможен к независимому слиянию и рецензированию.

Загружает ли инструмент данные напрямую в основной репозиторий?

Нет. Он всегда создает PR в режиме черновика и загружает их на форк пользователя, никогда не происходит прямой загрузки в основной репозиторий, а перед любым принудительным слиянием проводится подтверждение с пользователем.

Как обрабатываются тесты во время разделения?

Файлы с тестами передаются вместе с кодом, который они проверяют. Инструмент намеренно избегает разделения тестов в отдельный PR только ради уменьшения количества групп рецензентов.

Что происходит, если один из разделенных PR зависит от другого?

Инструмент явно указывает на такую зависимость и добавляет обратносовместимые псевдонимы, переэкспорты или заменители в первый PR, чтобы последующие PR могли от них зависеть, а также указывает порядок слияния.

Что необходимо для работы инструмента?

Для работы требуется gh CLI с авторизацией в репозитории, локальная копия проекта с удаленным репозиторием upstream и форк пользователя для загрузки веток. Инструмент ожидает подтверждения пользователя перед началом разделения PR.

Все файлы

5 файловSKILL.md4.4 KBПросмотрskill.oms.sig4.5 KBПросмотрBENCHMARK.md2.7 KBПросмотрevals/evals.json0.0 KBПросмотрskill-card.md2.4 KBПросмотр

Посмотреть на GitHub

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

  1. Fetch the PR details: gh pr view <number> --repo NVIDIA/Megatron-LM --json title,body,headRefName,author and gh pr diff <number> --repo NVIDIA/Megatron-LM --stat. Also determine the current GitHub user with gh api user --jq .login.
  2. Parse .github/CODEOWNERS to build a mapping from file path patterns to owner groups.
  3. For each changed file in the PR, determine which CODEOWNERS groups would be required to review it.
  4. Build a summary table grouped by CODEOWNERS group, showing which files pull in which groups.
  5. 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:

  1. Cluster files by their CODEOWNERS groups. Files owned by the same set of groups naturally belong together.
  2. Identify the largest cluster — this becomes the first (and usually largest) PR.
  3. Remaining files form one or more additional PRs, each ideally requiring only one or two reviewer groups.
  4. 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.
  5. 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:

  1. Create a new branch from the appropriate base (main, or a dependency PR's branch).
  2. Extract the relevant changes: git diff upstream/main..<source-branch> -- <file paths> | git apply.
  3. Stage, commit with a clear message, and push to the user's fork.
  4. Create the PR as a draft (per repo contributing guidelines).
  5. If the original PR needs to be narrowed in scope, confirm with the user before force-pushing.
  6. 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 #").

Все файлы

0 файлов

Установить mcore-split-pr

Скачайте файлы с навыками и извлеките их в папку .claude/skills/.

Скачать ZIP

Клонируйте репозиторий и скопируйте файлы навыка в свой проект.

git clone https://github.com/NVIDIA/skills/blob/main/skills/mcore-split-pr/SKILL.md # Copy SKILL.md to your .claude/skills/ directory

Копировать Копировать
Быстрая настройка: Скопируйте папку с навыком в .claude/skills/ — Claude автоматически обнаружит её и начнёт использовать.
Репозиторий nvidia/skills

Похожие навыки

code-simplify
Обновлено время 2 июля 2026 г.
requesting-code-review
Обновлено время 29 июня 2026 г.
Git Commit Helper
Обновлено время 29 июня 2026 г.
commit-standards
Обновлено время 29 июня 2026 г.
OR