MCPInstall

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
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads pr-open automatically when relevant.

  3. 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

  1. Confirm branch context

    • If the user merged an earlier PR on this branch and there are new changes, branch from latest main instead 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:build noise (e.g. reformatted packages/ui/registry/examples/* unless those edits are intentional).
  2. Never commit secrets — skip .env, credentials, API keys, etc. Warn the user if they ask to commit them.

  3. 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 --amend unless 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

  1. Read the hook output and fix every reported issue (lint correctness, nested ternaries, biome-ignore only when justified, etc.).
  2. Re-stage affected files: git add <paths>
  3. 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:

  1. Review git diff for unexpected changes.
  2. If files changed: git add <paths> → git commit -m "$(cat <<'EOF' Fix lint issues from ultracite EOF )"
  3. Re-run pnpm lint until 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).

  1. Review git diff after the build. Include intentional changes under apps/web/public/r/.
  2. Do not commit incidental reformats on packages/ui/registry/examples/* unless those edits are intentional.
  3. If apps/web/public/r/ (or packages/ui/registry.json when 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
)"
  1. Re-run Step 3 (pnpm lint) if any source files changed outside public/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

  1. Fix the root cause (types, imports, missing registry files, etc.).
  2. Re-run the failing command until it passes.
  3. Commit fixes with a clear message, then re-run Step 3 (pnpm lint) and Step 4 (pnpm registry:build) if source files under packages/ui changed.

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.com for Open in v0

Repo-specific PR notes

  • Registry: Step 4 always runs pnpm registry:build; commit apps/web/public/r/ when the build updates it.
  • Do not commit incidental reformats from registry:build on packages/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)

StepCommand / actionMust pass before next step
1git status / git diff / git logUnderstand scope
2git add → git commitPre-commit hook clean; working tree clean
3pnpm lint → pnpm lint:fix if needed → re-commitpnpm lint exits 0
4pnpm registry:build → commit apps/web/public/r/ if changedNo stale registry diff
5pnpm build (and pnpm check-types if TS changed)Build exits 0
6git push -u origin HEADOnly if user requested push/PR
7gh pr create with Summary + Test planPR URL returned

Common failures

FailureFix
Pre-commit biome errorsFix code; add biome-ignore only with a one-line justification
Hook fixed files but commit already succeededgit add + new commit (or amend if allowed)
pnpm lint fails after commitpnpm lint:fix, review diff, commit, re-run pnpm lint
Can't resolve './animation' in registry consumersAdd missing @bklit/* registry deps; run pnpm registry:build
Web build OOMNODE_OPTIONS='--max-old-space-size=8192' for apps/web build
PR branch already mergedNew branch from origin/main, re-apply only new changes

Example flow

User: "commit this and open a PR"

  1. git status + git diff + git log -3
  2. git add apps/web packages/ui → git commit (fix pre-commit until clean)
  3. pnpm lint → pnpm lint:fix if needed → commit → pnpm lint
  4. pnpm registry:build → commit apps/web/public/r/ if changed
  5. pnpm build (fix until green) → commit if needed
  6. git push -u origin HEAD
  7. gh pr create with Summary + Test plan template
  8. 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

View all →

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.

Frontend & Design1.2K installs

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.

Testing & QA671 installs

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.

Frontend & Design665 installs

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.

Frontend & Design660 installs

bklit-playground

bklit/bklit-ui

DEPRECATED — use bklit-studio instead. Local /playground is no longer the chart development workflow for bklit-ui contributors.

Frontend & Design650 installs

Popular code quality & workflow skills

View category →

grill-me

mattpocock/skills

A relentless interview to sharpen a plan or design.

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.