Converts baseball and fantasy-baseball jargon into plain English for a user with zero baseball knowledge. Wraps every user-facing sentence produced by the MLB agent team (morning briefs, trade recommendations, waiver calls, chat summaries). Detects jargon terms, attaches an inline parenthetical plain-English gloss on first mention in a document, enforces the action-verb ladder (START / SIT / ADD / DROP / BID $X / ACCEPT / COUNTER / REJECT), and rejects assumed-knowledge phrases like "hot streak" or "positive matchup." Use when asked to translate for beginner, explain in plain English, translate this, write without jargon, make it beginner-friendly, or produce any user-facing MLB output for K L D'Souza's Fantasy Baseball 2K25 team.
Scenario: The lineup-optimizer has produced a raw recommendation that needs to be rewritten for the user (K L D'Souza, zero baseball knowledge) before it ships in the morning brief.
Before (raw, jargon-heavy):
Caminero (TB 3B) has positive platoon splits vs RHP and a plus matchup vs Bello at Fenway (park factor 103 R / 105 HR). His 15-day xwOBA is .410 vs a .355 baseline, suggesting a hot streak. OBP contribution is elite given his #3 slot. daily_quality = 66. SB opportunity is middling -- Bello holds runners average but catcher CS% 28%. Regression index +15 on season wOBA gap. START over Hayes (UTIL), who faces a LHP in a bullpen game at Oracle -- negative park, low opportunity, QS unlikely (trivially, he is a hitter; what I mean is his slate has low floor). Verdict: START Caminero, SIT Hayes.
After (beginner-translated):
Junior Caminero (Tampa Bay, third base) -- START him today.
Why: he hits right-handed pitchers well (most batters hit better against pitchers who throw from the opposite hand), and today's opposing pitcher (Brayan Bello) throws right-handed. The stadium (Fenway Park in Boston) also favors hitters -- it gives about 3% more runs and 5% more home runs than an average park. On top of that, Caminero has been hitting well lately (his expected-hitting quality over the last 15 days is about 15% above his season average), and he is batting third in the lineup (more times at the plate = more chances to score). Stealing a base today is a coin flip -- the Boston catcher throws out runners at a decent rate, so we are not counting on it.
Ke'Bryan Hayes (Pittsburgh, third base, in your utility slot) -- SIT him today.
Why: he faces a left-handed pitcher, which is the harder matchup for him, and the game is at Oracle Park in San Francisco (a cold, big-outfield park that suppresses hitting). The opposing team is also using a bullpen game (no single starter -- they cycle relief pitchers all game), which tends to produce fewer big hitting opportunities.
Actions:
- START Caminero at 3B.
- SIT Hayes (move him to bench, BN).
What the translator did:
daily_quality = 66, regression_index = +15) -- these are inputs, not output.Copy this checklist and track progress:
MLB Beginner Translator Progress:
- [ ] Step 1: Receive raw draft from upstream agent
- [ ] Step 2: Scan for jargon terms (use glossary list)
- [ ] Step 3: Apply first-mention-gloss rule per term per document
- [ ] Step 4: Rewrite assumed-knowledge phrases (hot streak, plus matchup, etc.)
- [ ] Step 5: Strip internal signals and agent self-talk
- [ ] Step 6: Collapse to action verbs (START / SIT / ADD / DROP / BID $X / ACCEPT / COUNTER / REJECT)
- [ ] Step 7: Validate against rubric (resources/evaluators)
Step 1: Receive raw draft from upstream agent
Accept whatever the calling agent produced -- lineup-optimizer synthesis, trade-analyzer verdict, waiver-analyst ranking, category-strategist plan, coach's morning brief. The input can be bullet points, prose, or a signal JSON block; output is always user-facing prose plus an action list.
Step 2: Scan for jargon terms
Walk through the full glossary in resources/methodology.md and the master context/frameworks/beginner-glossary.md in the yahoo-mlb repo. Mark every occurrence of every term. A term can appear in five forms: full word ("On-Base Percentage"), initialism ("OBP"), compound ("OBP contribution"), slang ("hot bat"), and internal signal name ("daily_quality"). All five count as jargon.
Step 3: Apply first-mention-gloss rule per term per document
For every jargon term detected in Step 2, attach an inline parenthetical plain-English gloss the first time the term appears in the document. Subsequent mentions in the same document can use the bare term. See resources/methodology.md for the rule, and resources/template.md for the gloss patterns.
Step 4: Rewrite assumed-knowledge phrases
The dangerous category is not unfamiliar words -- it is familiar-sounding phrases that secretly assume baseball knowledge. "Hot streak," "good matchup," "plus matchup," "tough lefty," "soft slate," "live arm," "plays the hot corner," "juicy park." Each of these requires a rewrite, not a gloss. See resources/methodology.md and Guardrails #2 for the full list and rewrite patterns.
Step 5: Strip internal signals and agent self-talk
Internal signal values (numeric daily_quality, regression_index, streamability_score) are inputs to the decision, not content for the user. Drop them. Also drop any self-correction, debate remnants, or variant labels ("the advocate says... the critic says... synthesis is..."). The user sees only the synthesized answer.
Step 6: Collapse to action verbs
Every recommendation must end in one of the approved action verbs with no hedging. No "consider," "think about," "might want to," "could try." See the full ladder in CLAUDE.md rule 6. If the upstream agent hedged, collapse the hedge into a single verb plus an explicit fallback action.
Step 7: Validate against rubric
Score the translated output against resources/evaluators/rubric_mlb_beginner_translator.json. Minimum standard: average score of 4.0, and no criterion scored below 3. If the action-verb criterion or the first-mention-rule criterion scores below 4, revise before shipping.
Pattern 1: Daily lineup brief (morning)
daily_quality score dropped; matchup terms (park factor, RHP/LHP, platoon) glossed; "confirmed" explained as "in today's lineup card"Pattern 2: Trade recommendation memo
Pattern 3: Waiver / FAAB add memo
Pattern 4: Weekly category-strategy plan
Pattern 5: Chat reply (ad hoc question)
The first-mention-gloss rule is per document, not per sentence. Once you have glossed OBP in the first paragraph, you do not re-gloss it in paragraph four of the same document -- that would annoy the reader. But if the document is a fresh morning brief, every jargon term resets. When in doubt, err toward glossing again in a new document.
Watch for "hot streak" traps. The phrase "hot streak" sounds self-explanatory but assumes the user knows baseball performance is noisy and streaky. Rewrite as "has been hitting well over the last 1-2 weeks" or "has been pitching well lately." Equivalent traps: "cold streak" -> "has been struggling lately"; "plus matchup" -> name the concrete reason (opposing pitcher, park, weather); "tough lefty" -> "a good left-handed pitcher"; "juicy park" -> name the park and say "favors hitters"; "live arm" -> "throws hard with good movement."
Never use an internal signal name in user output. daily_quality, form_score, matchup_score, opportunity_score, regression_index, streamability_score, qs_probability, obp_contribution, sb_opportunity, role_certainty, k_ceiling, era_whip_risk, two_start_bonus, save_role_certainty -- all of these are internal. They are inputs to your decision, not content for the user. If you must convey the idea ("he has been unusually unlucky and is due to improve"), use plain English.
Every player's first mention in a document gets team + position. "Junior Caminero (Tampa Bay, third base)" not "Caminero." After the first mention, the last name alone is fine. Applies to every document type.
Action verbs are not optional. The user cannot interpret "consider starting Caminero if the weather holds" -- the user has no model of what "if the weather holds" means. Collapse to a primary action plus an explicit fallback: "START Caminero; if the game is postponed, swap in Hayes." No "consider," "think about," "might want to," "could try," "lean toward," "leaning," "in play."
Dollars, not percentages, for FAAB. The user has a $100 budget. Say "bid $12" not "bid 12% of remaining FAAB." If the context requires a percentage, translate to dollars explicitly.
Category codes get spelled out on first use. "HR" is not a baseball term to a beginner -- it is two letters. Write "home runs (HR)" the first time, then "HR" thereafter. Same for R, RBI, SB, K, SV, QS, and even OBP / ERA / WHIP which look familiar but are not.
Do not invent jargon translations. If an upstream agent uses a term that is not in the master glossary (context/frameworks/beginner-glossary.md) or the extended list in resources/methodology.md, either (a) ask the upstream agent to rephrase, or (b) rewrite around the term using only glossary-approved words. Do not freelance a new plain-English gloss -- glossary consistency matters across briefs.
Degrade gracefully on unverified facts. If the upstream agent's draft includes a fact marked confidence: low or a fact that could not be web-verified, surface the uncertainty in plain English ("I could not verify the weather forecast for San Francisco today -- if the game is postponed, see fallback below"). Never hide the uncertainty.
Do not add emojis or decorations. The user asked for plain English, not performative friendliness. Bold for player names and action verbs is allowed. Emojis, smileys, and cheerleader phrases ("great pick!") are not.
The action-verb ladder (from CLAUDE.md rule 6):
START -- put this player in your active lineup today
SIT -- bench this player today (move to BN)
ADD -- claim this player (via FAAB or waivers)
DROP -- release this player from the roster
BID $X -- submit a FAAB bid of $X (between $0 and remaining budget)
ACCEPT -- accept the incoming trade offer as-is
COUNTER -- reject as-is and send back a specific counter (specify the counter)
REJECT -- reject the incoming trade offer with no counter
PASS -- do not claim this player (alternative to ADD on waivers)
The first-mention-gloss pattern:
<bare term> -> <term> (<plain-English description>) on first mention in a document
-> <bare term> on subsequent mentions in the same document
Example:
Common rewrites (assumed-knowledge phrases):
| Agent phrase | User-facing rewrite |
|---|---|
| "Hot streak" | "Has been hitting well over the last 1-2 weeks" |
| "Cold streak" | "Has been struggling lately" |
| "Plus matchup" | Name the concrete reason (park, pitcher hand, weather) |
| "Tough lefty" | "A good left-handed pitcher" |
| "Juicy park" | "Stadium that favors hitters (<park name>)" |
| "Live arm" | "Throws hard with good movement" |
| "Has the hot hand" | "Is in a good stretch of games" |
| "Good slate" | "Plays today in a favorable setup" |
| "Ace" | "One of the best starting pitchers in baseball" |
| "Stud" | "Top-tier player" |
| "Bat flip / dinger / dong" | "Home run" |
| "Gas / cheese / heater" | "Fastball" |
| "Punch out" | "Strikeout" |
| "Free pass / walk" | "Walk (pitcher gives up a base without a hit)" |
Key resources:
/Users/kushaldsouza/Documents/Projects/yahoo-mlb/context/frameworks/beginner-glossary.md -- authoritative source for plain-English definitions. This skill mirrors and extends it.Inputs required:
confidence: low flags from web-search failures upstreamOutputs produced: