Computes the full impact of a proposed MLB fantasy trade across all 10 H2H categories (R/HR/RBI/SB/OBP, K/ERA/WHIP/QS/SV), rest-of-season dollar value, positional flexibility, slot-value optionality, adverse-selection prior, and weeks 21-23 playoff impact. Produces a signed verdict (accept / counter / reject) with rationale and a specific counter if applicable. Use when user mentions "trade evaluation", "trade value", "should I accept", "trade delta", "counter offer", or pastes in a trade proposal from Yahoo. Defaults to COUNTER in the middle band — pure REJECT is reserved for clearly predatory offers.
Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.
Quelldateien prüfen
Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Ein direkter Befehl überspringt den Prüf-Prompt. Prüfen Sie die Quelle, bevor Sie ihn ausführen.
Der Befehl bleibt in einer Zeile. Scrollen Sie horizontal, um ihn vor dem Kopieren vollständig zu prüfen.
Sie bevorzugen eine lokale Kopie? Laden Sie die Dateien herunter, die SkillsMP derzeit vorliegen.
Datei-Explorer
4 Dateien
SKILL.md wird angezeigt
SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
mlb-trade-evaluator
description
Computes the full impact of a proposed MLB fantasy trade across all 10 H2H categories (R/HR/RBI/SB/OBP, K/ERA/WHIP/QS/SV), rest-of-season dollar value, positional flexibility, slot-value optionality, adverse-selection prior, and weeks 21-23 playoff impact. Produces a signed verdict (accept / counter / reject) with rationale and a specific counter if applicable. Use when user mentions "trade evaluation", "trade value", "should I accept", "trade delta", "counter offer", or pastes in a trade proposal from Yahoo. Defaults to COUNTER in the middle band — pure REJECT is reserved for clearly predatory offers.
Scenario: Opponent offers Aaron Judge (OF) for Bobby Witt Jr. (SS) + Spencer Strider (SP). Today is 2026-06-10. User is 4th in 12-team league. cat_pressure signals from mlb-category-state-analyzer: SB pressure 85, HR pressure 55, K pressure 70, QS pressure 80, OBP pressure 60; others 40-50. User has spare OF depth but thin SS. Opponent archetype from mlb-opponent-profiler: active.
Rest-of-season ATC projections (weeks 11-23, ~105 games remaining):
Player
R
HR
RBI
SB
OBP
K
QS
SV
$ value
Judge (incoming)
75
28
78
2
.405
—
—
—
$34
Witt (outgoing)
70
20
65
25
.355
—
—
—
$32
Strider (outgoing)
—
—
—
—
—
165
12
0
$26
Per-category delta (ours minus theirs, weighted by cat_pressure):
Cat
Delta (raw)
Pressure
Weighted Δ
R
+5
45
+2.3
HR
+8
55
+4.4
RBI
+13
45
+5.9
SB
−25
85
−21.3
OBP
+.050 (×PA)
60
+3.0
K
−165
70
−115.5
QS
−12
80
−96.0
SV
0
45
0
ERA/WHIP
neutral
50
0
Sum
−217.2
Raw trade value delta = $34 − ($32 + $26) = −$24.
Slot-value bonus (principle #9): 2 players out, 1 player in → we clear +1 net slot; they clear 0. slot_value_delta = (1 − 0) × $2.50 = +$2.50.
Adverse-selection pipeline (delegated to @skills/adverse-selection-prior/):
Inputs: offer_type=trade, proposer_archetype=active, offer_symmetry_score=20 (pre-adj ratio −37%, clearly lopsided against us), proposer_info_asymmetry=55.
Output from skill: prior_ev_probability=0.30, recommended_adjustment=0.85, rationale cites active trader selecting this offer from many possibilities despite surface lopsidedness against us.
Express as % of outgoing dollars: −$18.28 / $58 = −31.5% → below the −20% REJECT threshold.
Positional flex delta: −30 (lose a scarce SS, gain a surplus OF).
Playoff impact (weeks 21-23): Judge's schedule has 19 games vs Witt's 18 + Strider's 4 starts → −35 (lose 4 starts of Ks/QS during championship weeks).
Verdict ladder (principle #8):
delta_pct = −31.5%, clearly below −20%.
Adverse-selection prior is 0.34 (strong evidence offer is −EV for us).
Advocate and critic agree: SB, K, QS all crushed at high pressure.
Triggers the narrow REJECT case: delta < −20% AND clear adverse-selection evidence.
Verdict: REJECT. Even the always-counter rule yields: we include the counter we would have sent — "Judge + Webb + Ruiz for Witt + Strider" — as the walk-away ask, but pre-commit to reject because the haircut keeps it underwater.
Workflow
Copy this checklist and track progress:
Trade Evaluation Progress:
- [ ] Step 1: Parse the offer (players in, players out, both sides)
- [ ] Step 2: Pull rest-of-season ATC projections for every player
- [ ] Step 3: Compute per-category deltas (counting + ratio)
- [ ] Step 4: Apply cat_pressure weights from category-state-analyzer
- [ ] Step 5: Compute raw trade_value_delta in dollars
- [ ] Step 6: Compute slot_value_delta (optionality bonus)
- [ ] Step 7: Invoke @skills/adverse-selection-prior/ and apply the haircut
- [ ] Step 8: Assess positional_flex_delta
- [ ] Step 9: Compute playoff_impact (weeks 21-23 only, July+)
- [ ] Step 10: Render verdict + counter via the +15% / -20% ladder
Step 1: Parse the offer
Record exactly who is being given up and who is being received, on both sides. Trades are zero-sum within the league. See resources/template.md for the input schema.
List all players moving to our roster (IN)
List all players moving off our roster (OUT)
Note each player's Yahoo position eligibility (C/1B/2B/3B/SS/OF/Util/SP/RP)
Note any IL status, trade protection clauses, or two-start weeks in flight
Capture the opponent's team slug so we can read context/opponents/<team>.md for their archetype
Step 2: Pull rest-of-season projections
The authoritative source is FanGraphs ATC (ensemble projection). Fallback: FanGraphs Depth Charts, then Razzball Player Rater. For every player involved, get projected totals for remaining season.
For hitters: rest-of-season R, HR, RBI, SB, OBP, and PAs
For pitchers: rest-of-season K, IP, ERA, WHIP, QS, SV
Cite each source URL in the signal file frontmatter
If a projection is missing, drop confidence to 0.5 and flag
Ratio cat deltas expressed as a shift in team average, weighted by volume
Record each in a per-cat delta table (both teams, side by side)
Step 4: Apply cat_pressure weights
Read the most recent signals/YYYY-MM-DD-cat-state.md from mlb-category-state-analyzer. For each of the 10 cats, multiply the raw delta by cat_pressure / 50.
Weighted delta = raw_delta × (cat_pressure / 50)
Sum the weighted deltas → cat_pressure_weighted_delta
Step 5: Compute raw trade_value_delta
Use FanGraphs Auction Calculator rest-of-season dollar values (or Razzball as fallback).
trade_value_delta_raw = Sum($ of players IN) − Sum($ of players OUT)
This is the starting point — it does NOT yet include the slot-value bonus or the adverse-selection haircut.
Every open bench slot is worth ~$2-3 in optionality: it can host a streamer, an IL stash, or a handcuff speculation. A 2-for-1 trade frees a roster slot on one side.
Step 7: Invoke @skills/adverse-selection-prior/ and apply the haircut
This step operationalizes principle #4 (adverse selection on incoming offers). The evaluator does NOT compute the prior itself — it delegates to the dedicated skill and consumes the output.
Prepare inputs for @skills/adverse-selection-prior/:
offer_type: trade (or counter_offer if this is a counter to a prior proposal)
proposer_archetype: read from context/opponents/<opponent-team>.md (one of active, expert, dormant, frustrated, unknown). If file missing, use unknown.
offer_symmetry_score: integer 0-100 derived from our own surface valuation. Map via:
proposer_info_asymmetry: integer 0-100. Default 50. Raise toward 80+ if any of: recent injury news we have not yet verified, closer role shift pending, lineup construction change, trade-deadline timing. See resources/methodology.md#adverse-selection-delegation for the scoring guide.
Invoke @skills/adverse-selection-prior/ with those four inputs.
Consume the skill's output contract:
prior_ev_probability — store verbatim in the signal file.
recommended_adjustment (float, typically 0.80-1.00) — this is the multiplicative haircut.
bayesian_rationale — embed in the verdict block's rationale.
override_hints — add each hint as a red_team_finding in the signal file.
Record adverse_selection_adjustment in the output signal block = 1 − recommended_adjustment (expressed as a percentage haircut, e.g., 0.88 → "12% haircut").
Sign note: The haircut is multiplicative on the delta. It shrinks the MAGNITUDE of our estimate in both directions — a positive delta moves toward zero (we over-estimated the gain), and a negative delta also moves toward zero (we over-estimated the loss). This is mathematically correct for an Akerlof-style prior: the skill tells us our model is less reliable than we thought, so we should anchor more toward zero. The verdict ladder compensates by setting tight thresholds (+15% / −20%) on the post-haircut percentage, so a moderately negative raw delta with a deep haircut will land in the middle band (COUNTER), while a very negative raw delta with any haircut will still clear the −20% REJECT threshold. If the haircut creates a tie at a ladder boundary, resolve toward COUNTER (per the always-counter rule).
Gaining a scarce position (C, SS, 2B) from surplus = positive
Losing a scarce position = negative
Gaining multi-position eligibility = positive
Consolidating two bench players into one starter = positive (frees bench)
Step 9: Compute playoff_impact (July 1+ only)
For trades made July 1 or later, evaluate specifically for championship weeks 21, 22, 23. Read the mlb-playoff-scheduler signal file for playoff_games and playoff_matchup_quality per player.
playoff_impact = Sum(playoff_games × matchup_quality of IN)
− Sum(playoff_games × matchup_quality of OUT)
Normalize to 0-100 where 50 = neutral.
Step 10: Render verdict via the +15% / −20% ladder
Express trade_value_delta_adjusted as a percent of outgoing dollars:
delta_pct = trade_value_delta_adjusted / Σ($_OUT)
Apply the principle #8 verdict ladder:
delta_pct
Verdict
Conditions
≥ +15%
ACCEPT
AND advocate/critic variants agree AND no cat with pressure ≥80 has negative weighted delta
−20% < delta_pct < +15%
COUNTER (with specific package)
ALWAYS produce a specific counter; never pure-reject in this band
≤ −20%
REJECT
AND prior_ev_probability ≤ 0.35 (clear adverse-selection evidence)
Always-counter rule: in the middle band, even if our instinct is to decline, we ship a specific counter-package per principle #8 (repeated-game reputation). Rejection dismissively dries up future offers; a reasoned counter keeps the pipeline open.
If REJECT conditions are only partially met (e.g., delta_pct ≤ −20% but prior_ev_probability > 0.35): downgrade to COUNTER with a more demanding package.
Every verdict ends with a single-verb recommendation: ACCEPT, COUNTER (with specific proposal), or REJECT. No "consider."
Opponent offers one star for two or three of our mid-tier players. Opponent gains a headline name; we gain slot-value bonus because the 2-for-1 frees a bench slot.
Typical trap: dollar values look close, but we should still expect a haircut from adverse-selection-prior because they chose this offer.
Rule: slot_value_delta tilts toward us (+$2.50 or +$5); but the adverse-selection haircut applies — check if trade_value_delta_adjusted clears +15% AND the players we give up aren't droppable-tier. If in doubt, COUNTER (not REJECT).
Pattern 2: Category-targeted swap
Symmetric-value trade where both sides target their weaknesses (e.g., opponent gives us K/QS for our HR/RBI).
Diagnostic: does the swap match OUR cat_pressure, or does it match THEIRS? If theirs, haircut is deep (symmetry actually bad for us).
Rule: only ACCEPT if the categories we gain have pressure ≥70 AND the categories we give up have pressure ≤40 AND delta_pct ≥ +15% after haircut. Otherwise COUNTER.
Pattern 3: Buy-low / sell-high regression play
Offer involves a player currently over/underperforming their underlying metrics. Cross-reference mlb-regression-flagger signal.
Rule: if their player's regression_index is sharply positive (unlucky, bounce-back due) AND ours is sharply negative (lucky, regression incoming), pass this to @skills/adverse-selection-prior/ as proposer_info_asymmetry of 30-40 (we plausibly have better regression info than they do). The resulting shallow haircut may let delta_pct clear +15%.
Pattern 4: Injury-adjacent desperation offer
Opponent's player is on IL or nursing a minor injury. Offer dangles a discount.
Rule: set proposer_info_asymmetry = 80+ (they know more about the injury). The skill will return recommended_adjustment ≈ 0.80. Usually COUNTER or REJECT depending on whether delta_pct after haircut lands below −20%.
Incoming player has 20 games in weeks 21-23; outgoing has 14. Even if ROS dollar value is flat, playoff value differs.
Rule: double-weight playoff_impact for any trade proposed July 15 or later. Use playoff_impact positive swings to tip close COUNTER cases into ACCEPT.
Guardrails
Always counter — pure REJECT is narrow. Per game-theory-principles.md #8 (repeated-game reputation), rejecting fairly with a counter keeps offer pipelines open; dismissive rejection dries them up. REJECT is reserved for delta_pct ≤ −20% AND clear adverse-selection evidence (prior_ev_probability ≤ 0.35). Every other middle-band offer → COUNTER with a specific package.
Delegate the adverse-selection prior — never recompute it inline. Step 7 invokes @skills/adverse-selection-prior/. Do not duplicate its logic here. The skill is reused across trades, waiver drops, and future M&A/negotiation skills; keeping it single-source prevents drift.
Apply the haircut to trade_value_delta_pre_adj, not to per-category deltas. The prior adjusts our net dollar estimate, not individual cat contributions. The cat delta table stays un-haircut and is displayed as-is in the template.
Slot-value bonus is symmetric. If they send two and we send one, slot_value_delta is NEGATIVE from our perspective — they got the bench-slot optionality. Do not forget the minus sign on incoming 2-for-1s.
Use rest-of-season projections, never full-season or season-to-date. Same rule as before; atcr not atc.
Ratio categories need volume weighting. OBP, ERA, WHIP deltas must be PA- or IP-weighted.
Read the cat_pressure signal first. If mlb-category-state-analyzer has not emitted for today, run it first.
Quantify the counter — don't say "ask for more." Propose a specific alternative package with named players.
Check for trade deadline proximity. Yahoo's deadline is August 6. Flag any trade proposed in the week before.
Two-way impact. If the opponent is a direct playoff-seed competitor, the trade helping them is doubly bad. Note opponent identity and their standings proximity in the output block.
Beginner-voice output. The user has zero baseball knowledge. Translate every stat into plain English at least once. Every user-facing recommendation ends with ACCEPT, COUNTER (with specific package), or REJECT.
Log the decision. Emit via to with full signal values, including , , , , verdict, confidence, and date (4 weeks out).
resources/template.md: Offer input schema, per-cat delta table (both teams), value/slot/adverse-selection/flex/playoff blocks, verdict block with rationale and counter, three worked examples (ACCEPT, COUNTER, REJECT)
resources/methodology.md: Projection sourcing, counting vs ratio cat math, cat_pressure weighting, value dollars, slot-value optionality, delegation to adverse-selection-prior, flex scoring, playoff impact, new verdict ladder with always-counter rule