dealer
無料Use when writing, editing, debugging, or reviewing dealer language code in btn, dlr, or script files. Provides the complete dealer DSL syntax reference for bridge hand generation constraints.
日本語の概要は準備中です。原文の説明を表示しています。
Author a complete both-seats coaching lesson for a BBA-NATIVE bidding scenario and produce all served artifacts in one consistent pass: curate the pool → tokenized coaching-curated/<scn>.pbn → gated promote to served coaching/<scn>.pbn → resolve to South=student coaching-non-rotated/<scn>.pbn (bridge-classroom) → update both toc.json files. Invoke as `/coach-lesson <Scenario>` (e.g. `/coach-lesson Fourth_Suit_Forcing`). Use ONLY for conventions BBA bids natively (its bba/<scn>.pbn [Auction] is the answer key — Basics, New_Minor_Forcing, Fourth_Suit_Forcing). For conventions BBA CANNOT bid (Spiral Raises), use the py/spiral_auction.py substitution path instead — not this skill.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
⚠️ ROTATION TOKENS ARE RETIRED (2026-06-28). Bridge Classroom never supported or used them. Author every lesson token-free, directly from the fixed South = student seat — South's calls in second person ("you bid 4\C"), partner's in third ("your partner answers 4\S"). NO
@S/@v(...)tokens. Because the prose is already South-fixed, thenonrotate.pyresolve step below is OBSOLETE — the three layers (coaching-curated/,coaching/,coaching-non-rotated/) are now the SAME token-free file (like the defense sets: byte-identical). Where the steps below say "tokenized" / "rotation pronoun tokens" / "resolve rotation tokens," ignore that and author/keep plain South-fixed prose. Seecoaching-curated/GENERATOR.md(updated).
$ARGUMENTS is the scenario name (a btn/<Scenario>.btn stem, e.g.
Fourth_Suit_Forcing). Call it <scn> below. Run everything from the project root.
btn/<scn>.btn exists and its # bba-works: is true (BBA bids the
convention natively). If BBA can't bid it, STOP — this is the spiral-auction path,
not this skill.bba/ is present: bba/<scn>.pbn and
bba-filtered/<scn>.pbn. If missing, the upstream pipeline (dlr→pbn→rotate→bba→ filter) must run first (Windows VM for bba) — flag to David; don't fake it.btn/<scn>.btn's /*@chat */ block — it is the convention's source of truth
(what each call shows, plus any partnership-agreement caveats). Read the
bridgebum/reference URL it cites if present.dealer north, so North opens and South
(the student) makes the hero call. Verify by reading a few bba/<scn>.pbn
[Auction] blocks and mapping calls to seats by dealer.The sibling New_Minor_Forcing is the canonical worked example of this whole flow — inspect its artifacts when unsure.
Grade the filtered pool and annotate it, exactly as for New_Minor_Forcing (design:
notes/plans/pbn-curation-plan.md).
python3 -P py/curate.py <scn> (resumable; reads the .btn
# curate: directive).notes/plans/pbn-curation-plan.md;
write verdicts to bba-curated/<scn>-graded.json. Borderline-but-defensible calls
are judgment + also_ok, never reject (board-137 calibration).python3 -P py/annotate.py <scn> → inserts {Curate ...} blocks into
bba-curated/<scn>.pbn.This is the rich, both-seats, rotation-ready artifact. Voice + structure spec:
coaching-curated/GENERATOR.md. Read it.
python3 -P py/coach.py packets <scn> "bidding=textbook,judgment" "diff<=3" -n 30
→ selects ~30 decision-rich boards, writes packets to coaching-curated/.work/.@S / @s, @Your / @your, @v(base|third) —
parens, not braces; use @S at most once per chunk). Rules:
[BID <call>] anchor per N/S non-pass call (both seats get anchors here —
rotation may seat the student in either); a framing-only intro before the first;[ACCEPT <call>] on any genuine judgment alternative;[show NS] + a short result reflection; suit symbols
\S \H \D \C; plain commas.
Write coaching-curated/.work/<scn>-coach*.json as {board, coaching} objects.python3 -P py/coach.py splice <scn> → builds coaching-curated/<scn>.pbn.python3 -P py/coach.py validate <scn> → must report 0 issues (marker
structure + suit-quality + ordering lint; "solid" only when the suit truly is
AKQ-solid — see GENERATOR.md).python3 -P py/promote.py <scn> — gated copy of coaching-curated → coaching. It only
promotes if all gates pass; it reports blocked scenarios and exits non-zero on any
block. Only commit YOUR scenario's promoted file; if promote.py syncs other
eligible scenarios too, flag them, don't claim them.
Two commands — nonrotate.py does the resolve+fold deterministically, then
bridge_classroom.py makes it renderer-ready:
python3 -P py/nonrotate.py <scn>
python3 -P py/bridge_classroom.py <scn>
nonrotate.py reads coaching-curated/<scn>.pbn and writes
coaching-non-rotated/<scn>.pbn, doing both transforms the non-rotated file needs:
fill_pronouns
rule, but position-aware so a mid-sentence @S reads "you", not "You"): South's
calls render 2nd person, partner's (North's) 3rd person.[BID <call>] anchor on every South call and
only South's calls (each on its own line); merges each partner call into the
adjacent South chunk in 3rd person (prepended when South is the responder, appended
when South is the opener — it detects which from the auction); and anchors South's
auction-ending Pass as [BID Pass] … you pass; <contract> is the final contract.
[ACCEPT] markers ride along inside their South chunk.bridge_classroom.py then strips the pre-auction {Shape}/{HCP}/{Curate} blocks,
renumbers [Board] 1..n, preserves [OriginalBoard], and ensures the block opens with
[show S]. Both scripts are idempotent; re-run nonrotate.py (it rebuilds from
curated) whenever the curated prose changes, then bridge_classroom.py.
(Reference clean output: coaching-non-rotated/Fourth_Suit_Forcing.pbn or
Spiral_Raises_Wolpert.pbn. The old New_Minor_Forcing.pbn, Basic_Overcall.pbn,
Basic_Takeout_Double.pbn predate the fold and still carry un-folded partner anchors —
a defect to fix by re-running nonrotate.py, not a model to copy.)
[BID] maps to a South call, every South non-pass call is
anchored, and no partner call carries an anchor. (Reuse the parse-by-seat check
used to audit the existing files.)coaching-non-rotated/<scn>.pbn has 0 @S/@v(/@Your tokens left.endplay (the trainer's loader) in all three of
coaching-curated / coaching / coaching-non-rotated.coaching-curated/toc.json and
coaching-non-rotated/toc.json under the right category (e.g. "Minor/Major
Sequences"): id: <scn>, a human name, one-line description, difficulty.
Re-validate both as JSON.<baseUrl>/<scn>_Intro.pdf and only appears when that PDF exists — a new lesson
shows NO intro until you generate it. Ensure btn/<scn>.btn has a real
/*@chat*/ body (a stub title yields an empty intro), then run
python3 build-scripts-mac/generate-intro-pdfs.py (reportlab; deterministic) and
commit coaching-non-rotated/<scn>_Intro.pdf.List the boards chosen, the validate + anchor-check results, the promote.py output (what it promoted/blocked), and any judgment calls. Commit only when David asks ("commit" = commit + push). Committing a coaching change means committing its regenerated derived files too (curated + served + non-rotated + toc), or GitHub serves stale and the menu shows MISSING/ORPHAN.
First use: /coach-lesson Fourth_Suit_Forcing — after 1♣/1♦/1♥, a 1-level
response, and a new suit by opener, the fourth suit is artificial and game-forcing;
dealer North, so South (student) makes the 4SF call; BBA bids it natively
(21GF-SPECIALS NS / 21GF-GIB EW).
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Use when writing, editing, debugging, or reviewing dealer language code in btn, dlr, or script files. Provides the complete dealer DSL syntax reference for bridge hand generation constraints.
日本語の概要は準備中です。原文の説明を表示しています。
End-of-session wrap-up. Save what was learned this session to auto-memory, verify the working tree is committed/pushed, and emit a brief resume prompt the user can paste next time. Invoke as /done to close a work session. Wrap-up is auto-memory ONLY — never writes a handoff.md or any handoff file.
日本語の概要は準備中です。原文の説明を表示しています。
Act on the queued items. Works through every pending item on the working todo list (the queue built with /list), actually doing each one, marking it in_progress then completed as you go. Use after stacking items with /list.
日本語の概要は準備中です。原文の説明を表示しています。
Process the batch of incoming Bridge Classroom feedback. Pull open `classroom-feedback` issues from the PBS repo, cluster them by defect class, verify each against the actual board, and fix at the right altitude — patch a single board, or (when a class recurs) build a gate, sweep the whole corpus, and regenerate/drop collectively. Engine bugs route to the Classroom repo; bridge-judgment calls go to Rick. Nothing leaves the machine without David's OK. Invoke as `/issue` (optionally with an issue number or scenario to restrict the run).
日本語の概要は準備中です。原文の説明を表示しています。
Queue an item WITHOUT acting on it. Appends the provided text as a new pending item on the working todo list, then stops. Use /list <text> to stack up tasks or notes one at a time; act on them later with /go. Does not plan or start the work.
日本語の概要は準備中です。原文の説明を表示しています。