- Skill ID
- bklit/bklit-ui/pr-open
- Publisher
- bklit
- Repository
- bklit-ui
- Installs
- 0
- Files
- 1
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
bklit/bklit-ui/pr-openInstalls these files- SKILL.md
What this skill tells the agent
PR Open Skill
End-to-end workflow for committing work and opening a merge-ready PR in bklit-ui.
Read this skill when the user wants to add, commit, validate, push, and open a PR — or references @pr-open.
Before you start
- Confirm branch context
- If the user merged an earlier PR on this branch and there are new changes, branch from latest
maininstead of stacking on a stale feature branch: ``bash git fetch origin main git checkout -b <new-branch-name> origin/main`` - Re-apply or cherry-pick only the intended changes; do not commit unrelated
registry:buildnoise (e.g. reformattedpackages/ui/registry/examples/*unless those edits are intentional).
- Never commit secrets — skip
.env, credentials, API keys, etc. Warn the user if they ask to commit them.
- Git safety (required)
- Do not update git config.
- Do not run destructive commands (
push --force,reset --hard) unless the user explicitly asks. - Do not skip hooks (
--no-verify) unless the user explicitly asks. - Do not
git commit --amendunless all amend rules in the user's git rules are satisfied (HEAD commit is yours, not pushed, or user requested amend). - If a commit fails due to a hook, fix the issue and create a new commit — do not amend a failed commit.
- Use HEREDOC for commit messages (see below).
- Do not push unless the user asked to push or open a PR.
Step 1 — Inspect changes
Run in parallel from the repo root:
git status
git diff
git diff --staged
git log -5 --onelineIf opening a PR, also check divergence from base:
git fetch origin main
git log origin/main..HEAD --oneline
git diff origin/main...HEAD --statDraft a commit message that explains why, not just what. Match recent repo style (e.g. feat(charts): …, fix(web): …).
Step 2 — Stage and commit (pre-commit loop)
Stage
git add <paths> # prefer explicit paths over blind git add -ACommit
git commit -m "$(cat <<'EOF'
<subject line>
<optional body — 1–2 sentences on why>
EOF
)"Husky pre-commit runs npx ultracite fix (see .husky/pre-commit).
If pre-commit fails or leaves unstaged fixes
- Read the hook output and fix every reported issue (lint correctness, nested ternaries,
biome-ignoreonly when justified, etc.). - Re-stage affected files:
git add <paths> - Commit again with a new commit (or amend only if amend rules allow and the previous commit succeeded but the hook auto-modified files).
Repeat until git commit succeeds and git status is clean (no leftover hook formatting).
Step 3 — Ultracite from repo root
After commits are clean, run the root pnpm scripts (not npx ultracite directly unless fixing a one-off):
pnpm lint # ultracite checkIf check fails:
pnpm lint:fix # ultracite fix (same as pnpm format)Then:
- Review
git difffor unexpected changes. - If files changed:
git add <paths>→ `git commit -m "$(cat <<'EOF'
Fix lint issues from ultracite EOF )"`
- Re-run
pnpm lintuntil it passes with no fixes pending.
Do not open a PR while pnpm lint fails or while lint fixes are unstaged.
Step 4 — Rebuild shadcn registry (required)
Always run this before the production build on every PR — not only when packages/ui changed. Registry artifacts under apps/web/public/r/ must stay in sync with the committed UI package.
From the repo root:
pnpm registry:buildThis updates apps/web/public/r/ from packages/ui (see packages/ui/package.json → registry:build).
- Review
git diffafter the build. Include intentional changes underapps/web/public/r/. - Do not commit incidental reformats on
packages/ui/registry/examples/*unless those edits are intentional. - If
apps/web/public/r/(orpackages/ui/registry.jsonwhen you edited it) changed:
git add apps/web/public/r packages/ui/registry.json
git commit -m "$(cat <<'EOF'
chore(registry): rebuild shadcn registry for PR
EOF
)"- Re-run Step 3 (
pnpm lint) if any source files changed outsidepublic/r/.
Do not open a PR while registry outputs are stale (uncommitted apps/web/public/r/ diffs after registry:build).
Step 5 — Test build
Run a production build to catch type and compile errors before the PR.
Default (whole monorepo):
pnpm buildWeb app only (faster when changes are confined to apps/web):
cd apps/web && pnpm buildIf the web build OOMs in dev/CI-like environments, retry with more heap:
cd apps/web && NODE_OPTIONS='--max-old-space-size=8192' pnpm buildOptional but recommended when touching TypeScript:
pnpm check-typesIf build fails
- Fix the root cause (types, imports, missing registry files, etc.).
- Re-run the failing command until it passes.
- Commit fixes with a clear message, then re-run Step 3 (
pnpm lint) and Step 4 (pnpm registry:build) if source files underpackages/uichanged.
Step 6 — Push
Only when the user asked to push or open a PR:
git push -u origin HEADIf the branch was already pushed and you added commits, git push is enough.
Step 7 — Open the PR
Use GitHub CLI from the repo root:
gh pr create --title "<PR title>" --body "$(cat <<'EOF'
## Summary
- <bullet: what changed and why>
- <bullet: user-facing impact>
- <bullet: follow-ups or deploy notes if any>
## Test plan
- [ ] `pnpm lint` passes at repo root
- [ ] `pnpm registry:build` run; `apps/web/public/r/` committed if updated
- [ ] `pnpm build` (or `apps/web` build for web-only changes)
- [ ] <manual verification step 1>
- [ ] <manual verification step 2>
EOF
)"Return the PR URL to the user.
PR title guidelines
- Short, imperative, scoped (e.g.
Add @bklit/chart-animation registry item) - Match the primary commit subject when possible
PR body template (copy structure every time)
## Summary
- <1–3 bullets: what and why>
## Test plan
- [ ] `pnpm lint` passes at repo root
- [ ] `pnpm registry:build` run; registry outputs committed if changed
- [ ] Production build succeeds (`pnpm build` or scoped web build)
- [ ] <feature-specific check>
- [ ] <regression check if applicable>Add extra sections only when useful:
- Context — link to a merged PR or issue (e.g. "Follow-up to #70")
- Deploy notes — e.g. registry JSON must be live on
ui.bklit.comfor Open in v0
Repo-specific PR notes
- Registry: Step 4 always runs
pnpm registry:build; commitapps/web/public/r/when the build updates it. - Do not commit incidental reformats from
registry:buildonpackages/ui/registry/examples/*unless intentional. - Chart/docs work: mention manual checks for docs pages, Studio, or Open in v0 when relevant.
Full checklist (quick reference)
| Step | Command / action | Must pass before next step |
|---|---|---|
| 1 | git status / git diff / git log | Understand scope |
| 2 | git add → git commit | Pre-commit hook clean; working tree clean |
| 3 | pnpm lint → pnpm lint:fix if needed → re-commit | pnpm lint exits 0 |
| 4 | pnpm registry:build → commit apps/web/public/r/ if changed | No stale registry diff |
| 5 | pnpm build (and pnpm check-types if TS changed) | Build exits 0 |
| 6 | git push -u origin HEAD | Only if user requested push/PR |
| 7 | gh pr create with Summary + Test plan | PR URL returned |
Common failures
| Failure | Fix |
|---|---|
| Pre-commit biome errors | Fix code; add biome-ignore only with a one-line justification |
| Hook fixed files but commit already succeeded | git add + new commit (or amend if allowed) |
pnpm lint fails after commit | pnpm lint:fix, review diff, commit, re-run pnpm lint |
More from bklit
Use this skill in a project
Open any RiverX project, search the Skills panel for bklit/bklit-ui/pr-open, and install it in one click.
