Use when creating a pull request, after committing changes, or when user invokes /oss-pr. Covers branch management, quality checks, commit, push, and PR creation.
Scanned 5/27/2026
Install via CLI
openskills install iOfficeAI/AionUi---
name: oss-pr
description: Use when creating a pull request, after committing changes, or when user invokes /oss-pr. Covers branch management, quality checks, commit, push, and PR creation.
---
# OSS PR
Smart commit + PR workflow: branch management → quality checks → tests → commit → push → PR.
**Announce at start:** "Using oss-pr skill to commit and open a pull request."
## Workflow
### Step 0: Gather Info
```bash
git branch --show-current
git diff --name-only HEAD
git status --short
git config user.name
```
**Branch rules:**
- If already on a feature branch: proceed directly
- If on `main` or `master`: auto-generate a branch name, create and switch immediately — no confirmation needed
**Auto-generating a branch name:**
Analyze the changed files from `git diff --name-only HEAD` to infer:
1. **type** — pick one: `feat` / `fix` / `refactor` / `chore`
- `feat`: new user-facing functionality
- `fix`: bug fix
- `refactor`: restructuring without behavior change
- `chore`: config, scripts, skills, docs, deps
2. **slug** — 2–3 lowercase words derived from the most relevant changed paths, joined by hyphens. Keep it short and specific.
Create branch `{username}/{type}/{slug}` directly and announce the name chosen.
**Branch naming reference:**
| Type | Example |
| -------- | ---------------------------- |
| feat | `{prefix}/feat/dark-mode` |
| fix | `{prefix}/fix/crash-on-open` |
| refactor | `{prefix}/refactor/settings` |
| chore | `{prefix}/chore/update-deps` |
### Step 1: Quality Checks
| Command | Scope | Skip when |
| ------------------- | ------------------------- | --------------------------- |
| `bun run format` | `.ts/.tsx/.css/.json/.md` | **Never** — always run |
| `bun run lint` | `.ts/.tsx` only | No `.ts/.tsx` files changed |
| `bunx tsc --noEmit` | `.ts/.tsx` only | No `.ts/.tsx` files changed |
Run in this order: `format` → `lint` → `tsc`.
- **format** → Auto-fixes silently (must run even for non-code files like `.md`).
- **lint fails** → Stop, report errors. Do not proceed.
- **tsc fails** → Stop, report errors. Do not proceed.
- **All pass** → Proceed to i18n check below.
**i18n check** (run if any `src/renderer/`, `locales/`, or `src/common/config/i18n` files are modified):
```bash
bun run i18n:types
node scripts/check-i18n.js
```
- **i18n:types fails** → Stop, report errors. Do not proceed.
- **check-i18n exits 1 (errors)** → Stop, report errors. Do not proceed.
- **check-i18n exits 0 (warnings only)** → Continue silently.
- **No i18n-sensitive files changed** → Skip both commands.
### Step 2: Run Tests
```bash
bunx vitest run
```
- **Fails** → Stop, report failing tests. Do not proceed.
- **Passes** → Proceed silently.
### Step 3: Commit
```bash
git status
git diff
```
Stage **all** modified files — including any files auto-fixed by `format` in Step 1:
```bash
git add -u
```
Generate commit message in English using conventional commits format: `<type>(<scope>): <subject>`.
**NEVER include `Co-authored-by` or any AI attribution.**
### Step 4: Push Branch
```bash
git push -u origin <branch-name>
```
If push fails due to remote rejection, inform user. **NEVER force-push** without explicit approval.
### Step 5: Create Pull Request
Run `git log main..HEAD --oneline` and `git diff main...HEAD` to understand all changes, then:
```bash
gh pr create --title "<pr-title>" --body "$(cat <<'EOF'
## Summary
<1-3 bullet points>
## Test plan
- [ ] <verification steps>
EOF
)"
```
**PR title:** under 70 characters, `<type>(<scope>): <description>` format. Reuse commit message if single commit.
**NEVER add AI-generated signatures, `Generated with`, or `Co-Authored-By` lines.**
### Step 6: Post-PR
Output the PR URL when done.
## Quick Reference
```
0. Check branch (create if on main)
1. bun run format (ALWAYS) && bun run lint && bunx tsc --noEmit (skip lint/tsc if no .ts/.tsx)
(if i18n files changed: bun run i18n:types && node scripts/check-i18n.js)
2. bunx vitest run
3. Commit (conventional commits, no AI attribution)
4. git push -u origin <branch>
5. gh pr create
6. Output PR URL
```
No comments yet. Be the first to comment!