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.

install
source · Clone the upstream repo
git clone https://github.com/iOfficeAI/AionUi
Claude Code · Install into ~/.claude/skills/
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"
manifest: .claude/skills/oss-pr/SKILL.md
source content

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

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:

TypeExample
feat
{prefix}/feat/dark-mode
fix
{prefix}/fix/crash-on-open
refactor
{prefix}/refactor/settings
chore
{prefix}/chore/update-deps

Step 1: Quality Checks

CommandScopeSkip 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):

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

Co-authored-by
or any AI attribution.

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,

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