Decision grader
Block/api/play/evaluate. Shown with a captured result for folding aces; click another action to grade it live.$ npx shadcn@latest add @pokerstudy/decision-grader- You
- fold · +0.00bb
- Agent
- raise 50 · +13.8bb
- Equity
- 57%
Loading…
Developers · Component registry
Grade a decision against our agent, ask it what to do, find your drill leaks, scout an opponent from the hands you uploaded. Each block installs with the API route it needs, and that route adds your psk_ key on your server, so the browser never sees it.
{
"registries": {
"@pokerstudy": "https://www.pokerstudy.ai/r/{name}.json"
}
}Or pass full URLs, such as https://www.pokerstudy.ai/r/training-report.json.
$ npx shadcn@latest add @pokerstudy/training-reportThe install adds /api/pokerstudy/[...path] and a POKERSTUDY_API_KEY line in .env.local. Fill it with a Studio key from API settings.
// app/page.tsx
import { TrainingReport } from "@/components/pokerstudy/training-report";
export default function Page() {
// Calls /api/pokerstudy/trainer-stats, which adds POKERSTUDY_API_KEY on the server.
return <TrainingReport />;
}Your key reads your uploaded sessions, opponents and drill results. Those routes work in development and return 403 in production until you say who may call them.
// lib/pokerstudy/api.ts
export async function authorizePrivate(req: Request) {
// Only you (or your signed-in users) may read your hands.
return Boolean((await auth()).userId);
}These call endpoints that answer a Studio key. The agent blocks and the range explorer below are live; the blocks that read your own hands show sample data here, since this page can't read yours.
/api/play/evaluate. Shown with a captured result for folding aces; click another action to grade it live.$ npx shadcn@latest add @pokerstudy/decision-grader/api/play/decide. “Ask again” asks it live.$ npx shadcn@latest add @pokerstudy/agent-advisor/api/trainer/stats.$ npx shadcn@latest add @pokerstudy/training-report/api/opponents.$ npx shadcn@latest add @pokerstudy/opponent-profile/api/analytics/opponent-limp-range.$ npx shadcn@latest add @pokerstudy/limp-rangeShown-hand only: limps that folded before showdown are invisible.
/api/sessions.$ npx shadcn@latest add @pokerstudy/session-stats/api/ranges; your key opens every stack depth and game, where only 100bb 6-max cash is free without one. Props match the ranges API. This is the button facing a UTG open at 100bb.$ npx shadcn@latest add @pokerstudy/preflop-range-explorerauthorizePrivate first.$ npx shadcn@latest add @pokerstudy/pokerstudy-apiThe pieces the blocks above are made of. None of them call the API.
$ npx shadcn@latest add @pokerstudy/player-statsonSelect to make cells clickable. The range explorer and limp range above both render it.$ npx shadcn@latest add @pokerstudy/hand-matrixSee it in the range explorer and the limp range.
$ npx shadcn@latest add @pokerstudy/strategy-bar$ npx shadcn@latest add @pokerstudy/grade-badge$ npx shadcn@latest add @pokerstudy/playing-card