AionUi oss-pr
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.
git clone https://github.com/iOfficeAI/AionUi
T=$(mktemp -d) && git clone --depth=1 https://github.com/iOfficeAI/AionUi "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/oss-pr" ~/.claude/skills/iofficeai-aionui-oss-pr && rm -rf "$T"
.claude/skills/oss-pr/SKILL.mdOSS 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
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
ormain
: auto-generate a branch name, create and switch immediately — no confirmation neededmaster
Auto-generating a branch name:
Analyze the changed files from
git diff --name-only HEAD to infer:
- type — pick one:
/feat
/fix
/refactorchore
: new user-facing functionalityfeat
: bug fixfix
: restructuring without behavior changerefactor
: config, scripts, skills, docs, depschore
- 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 | |
| fix | |
| refactor | |
| chore | |
Step 1: Quality Checks
| Command | Scope | Skip when |
|---|---|---|
| | Never — always run |
| only | No files changed |
| only | No 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):
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
bunx vitest run
- Fails → Stop, report failing tests. Do not proceed.
- Passes → Proceed silently.
Step 3: Commit
git status git diff
Stage all modified files — including any files auto-fixed by
format in Step 1:
git add -u
Generate commit message in English using conventional commits format:
<type>(<scope>): <subject>.
NEVER include
or any AI attribution.Co-authored-by
Step 4: Push Branch
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:
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,
, or Generated with
lines.Co-Authored-By
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