
pr-open
Open a pull request the bklit-ui way: stage and commit with pre-commit hooks, run ultracite from the repo root, rebuild the shadcn registry, run a production test build, fix failures, push, and create a PR with a structured summary. Use when the user asks to commit, push, open a PR, "ship it", or run the full pre-PR checklist.
- Installs
- 643
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/bklit/bklit-ui --skill pr-open- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads pr-open automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
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: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).
- If the user merged an earlier PR on this branch and there are new changes, branch from latest
-
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 --oneline
If opening a PR, also check divergence from base:
git fetch origin main
git log origin/main..HEAD --oneline
git diff origin/main...HEAD --stat
Draft 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 -A
Commit
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 check
If 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:build
This 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 build
Web app only (faster when changes are confined to apps/web):
cd apps/web && pnpm build
If the web build OOMs in dev/CI-like environments, retry with more heap:
cd apps/web && NODE_OPTIONS='--max-old-space-size=8192' pnpm build
Optional but recommended when touching TypeScript:
pnpm check-types
If 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 HEAD
If 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 |
Can't resolve './animation' in registry consumers | Add missing @bklit/* registry deps; run pnpm registry:build |
| Web build OOM | NODE_OPTIONS='--max-old-space-size=8192' for apps/web build |
| PR branch already merged | New branch from origin/main, re-apply only new changes |
Example flow
User: "commit this and open a PR"
git status+git diff+git log -3git add apps/web packages/ui→git commit(fix pre-commit until clean)pnpm lint→pnpm lint:fixif needed → commit →pnpm lintpnpm registry:build→ commitapps/web/public/r/if changedpnpm build(fix until green) → commit if neededgit push -u origin HEADgh pr createwith Summary + Test plan template- Reply with PR link and one-line summary of what was validated
FAQ
What does the pr-open skill do?
Open a pull request the bklit-ui way: stage and commit with pre-commit hooks, run ultracite from the repo root, rebuild the shadcn registry, run a production test build, fix failures, push, and create a PR with a structured summary. Use when the user asks to commit, push, open a PR, "ship it", or run the full pre-PR checklist.
How do I install pr-open?
Run npx skills add https://github.com/bklit/bklit-ui --skill pr-open in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/pr-open/ (personal) or .claude/skills/pr-open/ (project).
Which AI agents can use pr-open?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is pr-open safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains pr-open?
It is published by bklit in bklit/bklit-ui. It has 643 recorded installs.
More from bklit/bklit-ui
bklit-ui
bklit/bklit-ui
Install, compose, theme, and animate Bklit UI charts (the @bklit shadcn registry) in a React / Next.js app. Use when the user wants a chart, graph, or data visualization: line, area, bar, live/streaming line, composed, scatter, candlestick/OHLC, pie, ring/donut, radar, gauge, heatmap, funnel, sankey, sunburst, or choropleth/world map; a sparkline or tiny inline chart (LineSparkline, AreaSparkline, BarSparkline, useSparklineHover) for tables, KPI cards, or dense dashboards; a dashboard, analytics page, KPI or stat card; chart tooltips, crosshairs, legends, markers, reference bands, projections, trend lines, axes, or grids; or when code imports from components/charts/ or mentions @bklit/ or bklit.com. For styling vocabulary (patterns, squircle/rounded/3D bars, fades, loading looks, matching the app theme) also use bklit-ui-design. For moving from Recharts, shadcn ChartContainer, or TanStack Charts to Bklit, use bklit-ui-migrate.
unit-tests
bklit/bklit-ui
Guardrails for adding unit tests in bklit-ui without over-testing. Use when the user mentions unit test, unit tests, tests, test coverage, add tests, write tests, vitest, jest, or asks whether something should be tested.
bklit-studio-chart-performance
bklit/bklit-ui
Reusable Studio chart performance audit and fix workflow. Use when a chart feels sluggish in /studio (pan, slider ticks, legend hover) but siblings like pie-chart feel fine.
turborepo
bklit/bklit-ui
Turborepo monorepo build system guidance. Triggers on: turbo.json, task pipelines, dependsOn, caching, remote cache, the "turbo" CLI, --filter, --affected, CI optimization, environment variables, internal packages, monorepo structure/best practices, and boundaries. Use when user: configures tasks/workflows/pipelines, creates packages, sets up monorepo, shares code between apps, runs changed/affected packages, debugs cache, or has apps/packages directories.
bklit-ship
bklit/bklit-ui
bklit-ui monorepo contributors only — ship a chart or component from Studio prototype to production in packages/ui with docs and registry.
bklit-playground
bklit/bklit-ui
DEPRECATED — use bklit-studio instead. Local /playground is no longer the chart development workflow for bklit-ui contributors.
Popular code quality & workflow skills
grill-me
mattpocock/skills
A relentless interview to sharpen a plan or design.
improve-codebase-architecture
mattpocock/skills
Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.
handoff
mattpocock/skills
Compact the current conversation into a handoff document for another agent to pick up.
domain-modeling
mattpocock/skills
Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a GLOSSARY.md, or recording or editing an ADR.
codebase-design
mattpocock/skills
Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.
diagnosing-bugs
mattpocock/skills
Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.