rebase-assistant
Rebase custom fork commits onto a newer upstream vllm tag with automated conflict resolution, safety backups, and post-rebase verification.
Identity proven by GitHub's verified organisation badge (cohere-ai)
- Agents
- Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode, claude.ai and API
- License
- Apache-2.0 (permissive)
- Pin
- 2a9ed1fpinned Oct 9, 2026
- Context cost
- about 2,500 tokenswhen the skill loads
- GitHub stars
- 6on cohere-ai/vllm-skills
- Scripts
- None found
What it does
“Rebase custom fork commits onto a new upstream vllm tag, with conflict resolution and post-rebase verification via user-specified checks. Use when the user asks to rebase to a new upstream tag, update the fork base version, move custom patches to a newer vllm release, or resolve rebase conflicts against upstream.”
Generated summary from the skill's own text
Rebase custom fork commits onto a newer upstream vllm tag with automated conflict resolution, safety backups, and post-rebase verification. The skill guides users through collecting inputs, analyzing fork differences, running checks before and after rebase, and resolving conflicts while preserving custom changes.
When to use it
- Moving custom patches to a newer upstream vllm release version
- Updating fork base when upstream has released a new tag
- Resolving rebase conflicts against upstream changes
- Verifying fork stability after rebasing onto new upstream
When not to
- When custom commits should not be preserved or integrated
- If fork was already merged back into upstream completely
Install
These commands install from the publisher's repository and need no account.
skills CLI
npx skills add cohere-ai/vllm-skills --skill rebase-assistantInstalls from the repository's default branch, which may have changed since the commit we checked.
GitHub CLI 2.90 or later
gh skill install cohere-ai/vllm-skills rebase-assistant@2a9ed1ff5dd822a521a453f49eff84e8dd5a7071Installs the commit we checked (2a9ed1f).
Copy by hand
Download the folder at 2a9ed1f and put it in .claude/skills/rebase-assistant for Claude Code and in .agents/skills/rebase-assistant for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode.
Copy for your agent
A prompt for any coding agent. It installs this skill from GitHub at the pinned commit, copies the files as they are, and runs nothing unless you ask.
Prompt
Install the agent skill "rebase-assistant" by Cohere. Source, pinned to commit 2a9ed1ff5dd822a521a453f49eff84e8dd5a7071: https://github.com/cohere-ai/vllm-skills/tree/2a9ed1ff5dd822a521a453f49eff84e8dd5a7071/skills/rebase-assistant 1. Download that folder at exactly this commit. Do not use the default branch. 2. Copy every file unchanged, keeping the folder structure, into .claude/skills/rebase-assistant/ for Claude Code and .agents/skills/rebase-assistant/ for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode. Create the folders if they do not exist. 3. Do not edit the files, and do not run any script in the folder unless I ask you to. 4. When you are done, list the files you copied and where you put them. Listing and checks: https://www.agentnative.dev/skills/cohere/rebase-assistant
SKILL.md at the pin
---
name: rebase-assistant
description: >-
Rebase custom fork commits onto a new upstream vllm tag, with conflict
resolution and post-rebase verification via user-specified checks. Use when
the user asks to rebase to a new upstream tag, update the fork base version,
move custom patches to a newer vllm release, or resolve rebase conflicts
against upstream.
---
# Rebase Assistant
Rebase this repository's custom fork commits onto a newer upstream vllm tag
in a safe, repeatable way.
**Notation** used throughout this document:
- **v1** — the upstream tag the branch is currently based on
- **v2** — the target upstream tag to rebase onto
- **b1** — the branch before rebase (custom commits on top of v1)
- **b2** — the branch after rebase (custom commits replayed onto v2)
**Wheel rule**: when running checks via `local-test-runner`, always use the
stable release wheel matching the base tag of the branch being tested — **v1**
wheel for b1, **v2** wheel for b2. Skip the local-test-runner wheel prompt and
go straight to "Switch to stable release" with the matching version, unless the
user explicitly requested a different wheel.
## Step 1: Collect Inputs
Gather the following from the user before proceeding.
### Auto-detected or user-provided
1. **Current base tag (v1)**: Either provided directly by the user, or
auto-detected via the `detect-upstream-base` skill. See
[detect-upstream-base](../detect-upstream-base/SKILL.md).
If the user supplies v1 explicitly, skip detection and validate:
```bash
git rev-parse "upstream/$V1" 2>/dev/null \
|| git rev-parse "$V1" 2>/dev/null \
|| echo "ERROR: tag $V1 not found"
```
### Required
2. **Target upstream tag (v2)**: The upstream tag to rebase onto (e.g.
`v0.20.0`). Validate it exists:
```bash
git rev-parse "upstream/$V2" 2>/dev/null \
|| git rev-parse "$V2" 2>/dev/null \
|| echo "ERROR: tag $V2 not found"
```
3. **Verification checks**: One or more commands to run after rebase to
confirm correctness. Examples:
- Test command: `.venv/bin/python -m pytest tests/path/to/test.py -v`
- Lint command: `pre-commit run --all-files`
- Metric threshold: "WER < 15% on transcription tests"
Store these verbatim — they are run as-is during verification.
### Optional
4. **Reference commit**: A known-good commit where the checks pass. Used to
diff against when debugging failures after rebase.
```bash
git rev-parse --verify <reference-commit> 2>/dev/null
```
If not provided, `HEAD` on **b1** is used as the implicit reference.
Either way, Step 3 verifies the checks pass on the reference state
before rebasing.
## Step 2: Analyze b1
Understand the custom commits on **b1** that sit on top of v1. Use the
confirmed v1 from Step 1 — the merge-base between HEAD and `upstream/$V1`
is the fork point (`FORK_POINT`), used throughout the remaining steps.
```bash
FORK_POINT=$(git merge-base HEAD "upstream/$V1")
git log --oneline "$FORK_POINT"..HEAD
COMMIT_COUNT=$(git rev-list --count "$FORK_POINT"..HEAD)
git diff --stat "$FORK_POINT"..HEAD
```
Present summary to user:
- Number of custom commits
- Files modified/added/deleted
- Overall diff summary (what the fork changes at a high level)
## Step 3: Verify checks pass on b1 (gate)
**Do not skip this step.** Before any rebase work, run every verification
check from Step 1.3 to confirm they pass on the reference state.
- If no explicit reference commit was provided, run checks on **b1** HEAD.
- If an explicit reference commit was provided, check it out and run there.
Use the `local-test-runner` skill for execution. See
[local-test-runner](../local-test-runner/SKILL.md). Use the **v1** wheel
(see Wheel rule above).
If any check fails, **stop** and ask the user to:
- Fix the issue before proceeding, or
- Provide a different reference commit where the checks pass, or
- Proceed anyway and fix the failures on b2 after rebase
Only proceed to Step 4 once all checks pass (or the user explicitly opts to
skip).
## Step 4: Backup, Branch, and Prepare
Create safety nets, then prepare **b2**. **b1** is never modified.
1. Back up **b1**:
```bash
B1=$(git rev-parse --abbrev-ref HEAD)
git branch "backup-$B1-$(date +%Y%m%d-%H%M%S)"
```
2. Create **b2** for the rebase:
```bash
git checkout -b "$B1-$V2" # e.g. v0.19.1-asr-fix-v0.20.0
```
3. If there are multiple custom commits, ask whether to squash:
Ask user: "There are $COMMIT_COUNT custom commits. Squash into one before
rebasing? (recommended for cleaner conflict resolution)"
If yes:
```bash
git reset --soft "$FORK_POINT"
git commit -m "squashed custom changes on top of $V1"
```
## Step 5: Rebase b2 onto v2
Replay the custom commits from **b1** onto v2, producing **b2**.
1. Rebase. **Do not pass literal `HEAD` as the third argument** — git treats
it as a commit-ish rather than the current branch, and a successful rebase
leaves you in detached state. Either omit the third argument (b2 is
already checked out from Step 4.2) or pass the branch name explicitly:
```bash
git rebase --onto "upstream/$V2" "$FORK_POINT"
# or, equivalently:
git rebase --onto "upstream/$V2" "$FORK_POINT" "$B1-$V2"
```
If you do end up detached after a rebase, recover with
`git checkout -B "$B1-$V2"` to re-point the branch to the rebased HEAD.
2. If conflicts arise, resolve them one at a time:
- Show conflicted files: `git status`
- For each conflict:
- Read the conflict markers
- Compare what changed upstream: `git diff "upstream/$V1".."upstream/$V2" -- <file>`
- Preserve custom intent while integrating upstream changes
- If the reference commit was provided, compare:
`git show <reference-commit>:<file>` for guidance
- Stage resolved file: `git add <file>`
- Continue: `git rebase --continue`
3. If uncertain about a resolution, **stop and ask the user**.
### Conflict Resolution Rules
- Understand both sides before editing.
- Preserve custom branch intent — that's the whole point of the fork.
- Integrate upstream improvements that don't break custom behavior.
- If upstream deleted a file the fork doesn't modify, keep it deleted.
- Document non-obvious resolution decisions.
## Step 6: Verify b2
Run the checks collected in Step 1 on **b2** to confirm the rebase is correct.
1. Confirm branch shape:
```bash
git log --oneline "upstream/$V2"..HEAD
```
Expect: custom commit(s) on top of `upstream/$V2`.
2. Run verification checks using the `local-test-runner` skill. See
[local-test-runner](../local-test-runner/SKILL.md). Use the **v2** wheel
(see Wheel rule above).
3. If a check fails, debug and iterate:
**a) Create a findings file** and update it as you investigate:
```bash
mkdir -p .cache/investigation
# Log each finding: what failed, hypotheses, what you tried, outcome
```
This avoids re-treading ground across multiple fix attempts.
**b) Compare v1 vs v2** to find relevant upstream changes:
```bash
git diff "upstream/$V1".."upstream/$V2" -- <failing-file-or-dir>
git log --oneline "upstream/$V1".."upstream/$V2" -- <failing-file-or-dir>
```
If the diff is large, inspect individual commits from the log to narrow
down which upstream change introduced the breakage.
If the source files on the failing path are **unchanged** across v1..v2,
the regression likely lives in a transitive dependency. Also diff
`requirements/` between the tags and compare runtime signals — not just
pass/fail — between the b1 and b2 test logs:
```bash
git diff "upstream/$V1".."upstream/$V2" -- requirements/
# Compare per-request token throughput, tokens generated per request,
# warning/error log lines between b1 and b2 runs.
```
Major-version bumps of transformers, torch, peft, or tokenizers
frequently cause silent behaviour changes — especially for models
loaded via `trust_remote_code=True`, where transformers-version-specific
semantics (e.g. `split_special_tokens`, `use_fast`) can flip without
any code change in vllm itself.
**c) Check if v2 has related test cases** that test the same area — they
may reveal expected behavior changes or new APIs:
```bash
git diff "upstream/$V1".."upstream/$V2" -- tests/
```
**d) Compare against the reference state** (Step 1.4 / Step 3):
```bash
git diff <reference-commit> -- <failing-file>
```
**e) Fix, amend, re-run**:
```bash
git add -A && git commit --amend --no-edit
```
Re-run the failing check via local-test-runner. Repeat until the check
passes or escalate to user.
4. Once all checks pass, provide summary:
- Custom commits replayed
- Conflicts resolved (list files and decisions)
- Check results (pass/fail for each, with log file paths)
- Any follow-up items needing manual review
## Step 7: Cleanup
After user confirms **b2** is satisfactory:
1. Report backup branch name (snapshot of **b1**) for reference.
2. Note **b1** can be deleted if no longer needed.
3. If the user wants to push **b2**:
```bash
git push origin HEAD
```
## Command Reference
```bash
# Detect v1 — see detect-upstream-base skill
# Analyze b1: fork point and custom commits
FORK_POINT=$(git merge-base HEAD "upstream/$V1")
git log --oneline "$FORK_POINT"..HEAD
# Backup b1, create b2, squash (optional)
B1=$(git rev-parse --abbrev-ref HEAD)
git branch "backup-$B1-<timestamp>"
git checkout -b "$B1-$V2"
git reset --soft "$FORK_POINT"
git commit -m "squashed custom changes on top of $V1"
# Rebase b2 onto v2 (b2 already checked out, do NOT pass HEAD)
git rebase --onto "upstream/$V2" "$FORK_POINT"
# Conflict resolution loop
git status
git diff "upstream/$V1".."upstream/$V2" -- <file>
git add <resolved-file>
git rebase --continue
# Abort and return to b1
git rebase --abort
```
## Usage Examples
```text
Rebase this branch from v0.19.1 to v0.20.0. Run transcription tests to verify.
```
```text
Use rebase-assistant to move custom patches to upstream/v0.20.0.
Checks: pytest tests/entrypoints/openai/correctness/test_transcription_api_correctness.py
Reference commit: c9a168488
```
From cohere-ai/vllm-skills at 2a9ed1f, shown as plain text under its license: Apache-2.0 (permissive). The license text is in LICENSE.
View SKILL.md on GitHub at 2a9ed1fFiles
- SKILL.md10 KB · 371e97b874ac
1 file, 10 KB in total. Each file has a sha256 in the pin's manifest; the first 12 characters are shown.
Skill folder on GitHub at 2a9ed1fMore from Cohere
rcp-ndcg
Evaluates retrieval systems using RCP-nDCG, which replaces binary relevance labels with calibrated probabilities from an LLM judge.
Claude Code, Codex, Cursor +4 · about 3.4K tokens · pinned 6 days ago
auto-rebase
This skill automatically detects newer upstream vllm releases and rebases the current fork branch onto the latest one using detect-upstream-base and…
Claude Code, Codex, Cursor +4 · about 960 tokens · pinned 6 days ago
detect-upstream-base
This skill identifies the upstream vLLM tag that a forked branch is based on by configuring the upstream remote, fetching tags, and finding the nearest tagged…
Claude Code, Codex, Cursor +4 · about 220 tokens · pinned 6 days ago
install-vllm
Sets up a Python environment with uv and installs vLLM in editable mode for NVIDIA CUDA GPUs.
Contains scripts
Claude Code, Codex, Cursor +3 · about 2.2K tokens · pinned 6 days ago
local-test-runner
Run vLLM tests locally on NVIDIA GPUs using pytest, matching Buildkite CI test behavior.
Claude Code, Codex, Cursor +4 · about 2.5K tokens · pinned 6 days ago
Related in Coding workflow
planning
This skill orchestrates multi-workflow projects with dependencies and shared data tables by creating a task graph in the orchestrator via the create-tasks tool.
by n8nOfficial publisher
Claude Code, Codex, Cursor +3 · about 2.4K tokens · pinned 6 days ago
progressive-building
This skill implements incremental workflow development for agents building or extending workflows.
by n8nOfficial publisher
Claude Code, Codex, Cursor +3 · about 1.4K tokens · pinned 6 days ago
workflow-builder
Builds and edits n8n workflows using the TypeScript SDK.
by n8nOfficial publisher
Claude Code, Codex, Cursor +3 · about 14.2K tokens · pinned 6 days ago
remotion-upgrade
This skill upgrades Remotion and its related packages to the latest stable version.
by RemotionOfficial publisher
Claude Code, Codex, Cursor +3 · about 460 tokens · pinned 6 days ago
remotion-upgrade
This skill upgrades Remotion and related packages across a project, automatically detecting the package manager and workspaces.
by RemotionOfficial publisher
Claude Code, Codex, Cursor +3 · about 460 tokens · pinned 6 days ago
final-release-review
Audits Python SDK release candidates or plans against the previous release, comparing diffs for regressions, API changes, and version compatibility.
by OpenAIOfficial publisher
Contains scripts
Claude Code, Codex, Cursor +3 · about 5.4K tokens · pinned 6 days ago
Open roles at Cohere
5 of 41 open roles on the jobs board
- Senior Member of Technical Staff, Web Data
Remote (EST/EU) (Remote)
- Member of Technical Staff, Modeling
Remote (Remote)
- Senior Software Engineer, GPU Infrastructure (HPC)
Remote (Canada | United States) (Remote)
- Software Engineer, Data Infrastructure
New York | San Francisco | Canada | United States | Toronto | Montreal (Remote)
- Audio Inference Engineer, Model Efficiency
New York, NY, United States | San Francisco, CA, United States | Toronto, ON, Canada | Montreal, QC, Canada (Remote)