create-pr
SkillDev toolsLets your agent create a pull request for the current branch with a title and description matching repo rules.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the create-pr skill
About this capability
Create a pull request for the current branch. Handles uncommitted changes, generates a PR title matching the `[{modules}] {type}: {description}` format enforced by CI, and fills in the PR description template. Trigger: 'create pr', 'open pr', 'submit pr', 'make pr'.
What this skill tells your AI
The instructions your AI receives, as published by bytedance-seed/veomni in .agents/skills/create-pr/SKILL.md and read by ahel’s review.
Interaction Principle
Minimize confirmations. The only user confirmation is for uncommitted changes (Step 1.3). Everything after that — drafting, writing file, pushing, creating PR — runs automatically. Tool-level permission prompts (file write, git push) serve as implicit confirmation; do not add extra "are you sure?" pauses on top.
Steps
Step 1: Pre-flight Checks
-
Identify current branch:
git branch --show-currentIf on
main— stop and ask the user to create a feature branch first. -
Determine base branch: use
mainunless the user specifies otherwise. -
Check for uncommitted changes (only confirmation point):
git status git diff --statIf there are staged or unstaged changes, show a summary and ask the user:
"There are uncommitted changes. Commit them before creating the PR?"
- If yes: run
make quality, stage relevant files (skip.env, credentials, large binaries), commit. - If no: proceed with what's already committed.
- If
make qualityfails: stop and report errors.
- If yes: run
-
Check for existing PR on this branch:
gh pr view --json number,title,body 2>/dev/nullNote the PR number if one exists.
-
Check commits ahead of base:
git log origin/main..HEAD --onelineIf the branch has no commits ahead of
main, stop — nothing to open a PR for.
Step 2: Analyze Changes (automatic)
-
Collect the full diff against the base branch:
git diff main...HEAD git log main..HEAD --oneline -
Identify affected modules by mapping changed file paths to allowed module names:
Path prefix Module veomni/models/modelveomni/trainer/trainerveomni/data/dataveomni/distributed/distveomni/ops/opsveomni/checkpoint/ckptveomni/optim/optimveomni/lora/loraconfigs/configdocs/docstests/,.github/workflows/cidocker/dockertasks/task.agents/agentother / mixed miscparallel,logging,omni,perfandreleasehave no directory of their own: useparallelwhen aveomni/distributed/change is about a parallelism strategy rather than the plumbing,perfalongside another module when the PR makes a measurable speed or memory claim, andomni,logging,releasefor omni-model, log/telemetry-surface and release-plumbing work respectively.Allowed modules:
misc,ci,config,docs,data,dist,omni,logging,model,optim,ckpt,release,task,perf,ops,parallel,docker,trainer,agent,lora -
Determine change type:
Type When featNew functionality or capability fixBug fix refactorSame behavior, better structure choreMaintenance, cleanup, config changes testTest-only changes
Step 3: Generate Draft File and Push (automatic)
-
Draft PR title in
[{modules}] {type}: {description}format:- Multiple modules separated by comma:
[model, data] feat: ... - Description: concise, lowercase start, no period, under 60 chars
- Breaking changes: prepend
[BREAKING] - Must pass the regex in
.github/workflows/check_pr_title.yml
- Multiple modules separated by comma:
-
Draft PR description following
.github/PULL_REQUEST_TEMPLATE.md. -
Write to
.pr-drafts/(already in.gitignore):mkdir -p .pr-draftsFilename convention:
- Existing PR:
.pr-drafts/<pr-number>.md(e.g..pr-drafts/123.md) - New PR:
.pr-drafts/<branch-name>.md— renamed to PR# after creation.
File format — first line is the PR title, blank line, then the description body:
[model] feat: add support for Qwen4 ### What does this PR do? > Summary here. ### Checklist Before Starting - Search for relative PRs/issues and link here: ... - PR title follows `[{modules}] {type}: {description}` format ### Test > Test description here. ### API and Usage Example > N/A ### Design & Code Changes > - Change 1 > - Change 2 ### Checklist Before Submitting - [ ] Read the [Contribute Guide](https://github.com/ByteDance-Seed/VeOmni/blob/main/CONTRIBUTING.md) - [ ] Applied pre-commit checks - [ ] Added/updated documentation - [ ] Added tests to CI workflow (or explained why not feasible) - Existing PR:
-
Tell the user the draft file path (so they know where to find it if they want to review later).
Step 4: Push and Create/Update PR (automatic, immediately after Step 3)
-
Push the branch:
git push -u origin HEAD -
Create or update:
- New PR (use
--body-fileto avoid shell escaping issues):
After creation, rename the draft file from# Extract body from draft file (everything after the first blank line) tail -n +3 .pr-drafts/<branch-name>.md > /tmp/pr-body.md gh pr create --base <base-branch> --title "<title>" --body-file /tmp/pr-body.md<branch-name>.mdto<pr-number>.md. - Existing PR:
tail -n +3 .pr-drafts/<pr-number>.md > /tmp/pr-body.md gh pr edit <pr-number> --title "<title>" --body-file /tmp/pr-body.md
- New PR (use
-
Output the PR URL and the draft file path.
Common Pitfalls
- Title format is enforced by CI — a malformed title will block the PR. Always validate against the allowed modules and types listed above.
- Don't force-push unless the user explicitly asks.
- Check for sensitive files before committing — skip
.env, credentials, large binaries and warn the user.
Signals
- GitHub stars
- 2k
- Forks
- 272
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
create-pr-bytedance-seed- Source
- github.com/bytedance-seed/veomni