本文へ移動
cccskills
無料GitHub で公開

coach-lesson

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.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md8.9 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

coach-lesson — bootstrap a full coaching lesson for a BBA-native bidding scenario

⚠️ 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, the nonrotate.py resolve 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. See coaching-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.

Precondition check (do this first)

  1. Confirm 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.
  2. Confirm the dealer pipeline through 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.
  3. Read 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.
  4. Note the seats: most of these deal 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.

Phase 1 — Curate (→ bba-curated/<scn>.pbn)

Grade the filtered pool and annotate it, exactly as for New_Minor_Forcing (design: notes/plans/pbn-curation-plan.md).

  • Layer A features: python3 -P py/curate.py <scn> (resumable; reads the .btn # curate: directive).
  • Layer B grading: fan out subagents to grade each board's BIDDING (textbook / standard / judgment / reject) per the rubric in 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).
  • Annotate: python3 -P py/annotate.py <scn> → inserts {Curate ...} blocks into bba-curated/<scn>.pbn.

Phase 2 — Author the tokenized lesson (→ coaching-curated/<scn>.pbn)

This is the rich, both-seats, rotation-ready artifact. Voice + structure spec: coaching-curated/GENERATOR.md. Read it.

  1. 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/.
  2. Subagents author the prose per packet using the rotation pronoun tokens so the lesson renders for either seat (@S / @s, @Your / @your, @v(base|third) — parens, not braces; use @S at most once per chunk). Rules:
    • one [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;
    • describe what each call SHOWS by agreement — never the actor's concrete hidden holding during the auction;
    • [ACCEPT <call>] on any genuine judgment alternative;
    • close each board with [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.
  3. python3 -P py/coach.py splice <scn> → builds coaching-curated/<scn>.pbn.
  4. 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).

Phase 3 — Promote to served (→ coaching/<scn>.pbn)

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.

Phase 4 — Resolve to South=student (→ coaching-non-rotated/<scn>.pbn)

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:

  1. Resolves rotation tokens for a fixed South seat (the trainer's 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.
  2. Folds partner's calls: keeps a [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.)

Phase 5 — Verify (all must pass before declaring done)

  • Anchor check (the load-bearing gate): parse each non-rotated board's auction by dealer-seat; assert every [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.
  • All boards parse via endplay (the trainer's loader) in all three of coaching-curated / coaching / coaching-non-rotated.
  • No hidden-hand reveal mid-auction; suit symbols render; ~4 coaching beats/board.
  • toc.json: add the lesson to BOTH 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.
  • Intro PDF (don't skip): BC's "Intro" button fetches <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.

Report

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

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

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.

日本語の概要は準備中です。原文の説明を表示しています。

bridge-craftwork/Practice-Bidding-Scenarios102026年10月13日 更新

done

無料

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.

日本語の概要は準備中です。原文の説明を表示しています。

bridge-craftwork/Practice-Bidding-Scenarios102026年10月13日 更新

go

無料

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.

日本語の概要は準備中です。原文の説明を表示しています。

bridge-craftwork/Practice-Bidding-Scenarios102026年10月13日 更新

issue

無料

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

日本語の概要は準備中です。原文の説明を表示しています。

bridge-craftwork/Practice-Bidding-Scenarios102026年10月13日 更新

list

無料

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.

日本語の概要は準備中です。原文の説明を表示しています。

bridge-craftwork/Practice-Bidding-Scenarios102026年10月13日 更新

bridge-craftwork のスキルをすべて見る

このスキルの問題を報告する