with one click
pr
Open a draft pull request on GitHub. MUST use when you want to create/open a PR.
Menu
Open a draft pull request on GitHub. MUST use when you want to create/open a PR.
MUST use when using the CLI, including debugging job failures and inspecting run history via `wmill job`.
MUST use when creating raw apps.
MUST use when creating flows.
MUST use when writing Bun/TypeScript scripts.
MUST use when writing Bun Native scripts. The script must start with //native to run on the native worker.
MUST use when writing Deno/TypeScript scripts.
| name | pr |
| user_invocable | true |
| description | Open a draft pull request on GitHub. MUST use when you want to create/open a PR. |
Create a draft pull request with a clear title and explicit description of changes.
Follow conventional commit format for the PR title:
<type>: <description>
feat: New feature or capabilityfix: Bug fixrefactor: Code restructuringdocs: Documentation changeschore: Maintenance tasksperf: Performance improvements*_ee.rs files were modified, prefix with [ee]: [ee] <type>: <description>The body MUST be explicit about what changed. Structure:
## Summary
<Clear description of what this PR does and why>
## Changes
- <Specific change 1>
- <Specific change 2>
- <Specific change 3>
## Test plan
- [ ] <How to verify change 1>
- [ ] <How to verify change 2>
The harness/tooling that invoked the skill may add its own attribution trailer; the skill itself does not prescribe one.
If git diff main...HEAD --name-only matches ^frontend/, the PR body must include
screenshots of the affected UI. Skip only when there is no visible UI effect (types,
tests, build config) — and say so in the body.
Verify the change in the browser (AGENTS.md → "Verifying Frontend Changes").
Screenshot each affected page with mcp__playwright__browser_take_screenshot (save to a file).
Host each image and get its Markdown embed by pushing to the public
windmill-labs/agent-screenshots-internal repo. Pipe base64 through stdin —
passing it as -f content=… fails with argument list too long on real images:
REPO=windmill-labs/agent-screenshots-internal
IMG=screenshot.png # repeat per page
DEST="shots/$(git branch --show-current)/$(date +%s)-$(basename "$IMG")"
base64 -w0 "$IMG" | jq -Rs --arg m "add $DEST" '{message:$m, content:.}' \
| gh api -X PUT "repos/$REPO/contents/$DEST" --input - >/dev/null
echo ""
Derive $DEST from the file name (as above) so distinct pages never collide — a
fixed name would make same-second uploads reuse one path, and the second PUT
then 422s (the Contents API needs the existing file's sha to overwrite).
Put the printed  lines under a ## Screenshots heading in the PR body.
Requires gh (repo scope), jq, base64 — all in the devShell. The host repo is
public (so the raw URLs render for reviewers without a token) and its history is
permanent — never screenshot pages that show secrets or sensitive values (workspace
variables, resource values, instance settings, OAuth/SMTP config); deleting the file
can't undo an accidental capture. (GitHub's drag-and-drop uploader needs a browser
session and can't be driven from a token.)
If gh can't push to the host repo (e.g. a CI token scoped only to windmill), do
not fail the PR or skip silently — hand the upload to the user, who has push access,
and continue once they confirm it's done.
git status to check for uncommitted changesgit log main..HEAD --oneline to see all commits in this branchgit diff main...HEAD to see the full diff against mainlocal-review skill before creating the PR (/local-review in Claude Code, $local-review in Codex, pi --skill local-review / /skill:local-review in Pi). If issues are found, fix them and commit before proceeding. Do not skip this step.git diff main...HEAD --name-only matches ^frontend/, capture and embed screenshots of the affected UI per "Screenshots" above before writing the PR body (skip only if there is no visible UI effect).git rev-parse --abbrev-ref --symbolic-full-name @{u} 2>/dev/null || echo "no upstream"
git push -u origin HEADgh pr create --draft --title "<type>: <description>" --body "$(cat <<'EOF'
## Summary
<description>
## Changes
- <change 1>
- <change 2>
## Test plan
- [ ] <test 1>
- [ ] <test 2>
EOF
)"
*_ee.rs files were modified)The *_ee.rs files in the windmill repo are symlinks to windmill-ee-private — changes won't appear in git diff of the windmill repo. Instead, check the EE repo for uncommitted or unpushed changes.
Follow the full EE PR workflow in docs/enterprise.md. The key PR-specific details:
docs/enterprise.mdgit -C <ee-path> status --short
docs/enterprise.md[ee] prefix):
gh pr create --draft --repo windmill-labs/windmill-ee-private --title "<type>: <description>" --body "$(cat <<'EOF'
Companion PR for windmill-labs/windmill#<PR_NUMBER>
EOF
)"
ee-repo-ref.txt and push the updated windmill branch