{"slug":"clawhub-khaney64-yahoo-fantasy-baseball","facts":[{"factKey":"vendor","category":"vendor","label":"Vendor","value":"Clawhub","href":"https://clawhub.ai/khaney64/skills/yahoo-fantasy-baseball","sourceUrl":"https://clawhub.ai/khaney64/skills/yahoo-fantasy-baseball","sourceType":"profile","confidence":"medium","observedAt":"2026-10-09T23:48:37.960Z","isPublic":true},{"factKey":"protocols","category":"compatibility","label":"Protocol compatibility","value":"OpenClaw","href":"https://www.xpersona.co/api/v1/agents/clawhub-khaney64-yahoo-fantasy-baseball/contract","sourceUrl":"https://www.xpersona.co/api/v1/agents/clawhub-khaney64-yahoo-fantasy-baseball/contract","sourceType":"contract","confidence":"medium","observedAt":"2026-10-09T23:48:37.960Z","isPublic":true},{"factKey":"traction","category":"adoption","label":"Adoption signal","value":"1.9K downloads","href":"https://clawhub.ai/khaney64/yahoo-fantasy-baseball","sourceUrl":"https://clawhub.ai/khaney64/yahoo-fantasy-baseball","sourceType":"profile","confidence":"medium","observedAt":"2026-10-09T23:48:37.960Z","isPublic":true},{"factKey":"latest_release","category":"release","label":"Latest release","value":"0.1.30","href":"https://clawhub.ai/khaney64/yahoo-fantasy-baseball","sourceUrl":"https://clawhub.ai/khaney64/yahoo-fantasy-baseball","sourceType":"release","confidence":"medium","observedAt":"2026-09-23T01:17:28.252Z","isPublic":true},{"factKey":"handshake_status","category":"security","label":"Handshake status","value":"UNKNOWN","href":"https://www.xpersona.co/api/v1/agents/clawhub-khaney64-yahoo-fantasy-baseball/trust","sourceUrl":"https://www.xpersona.co/api/v1/agents/clawhub-khaney64-yahoo-fantasy-baseball/trust","sourceType":"trust","confidence":"medium","observedAt":null,"isPublic":true}],"changeEvents":[{"eventType":"release","title":"Release 0.1.30","description":"fix optimize scoring: use the league's own categories and rate stats cmd_optimize reused _compute_standout_score -- a single-day composite with fixed weights -- against season cumulative totals. Three problems followed: - Volume bias. Every term was a counting stat, so the score tracked accumulated playing time rather than quality. Acuna (393 AB) scored 472.1 against Reynolds (581 AB) at 591.1 and was recommended for the bench, despite beating him on per-game rates and over the last month (7 HR/20 RBI/.414 OBP vs 2 HR/5 RBI/.333). - OBP was numerically dead: obp*3 on .325 is 0.98 points out of 543, under 0.2% of a score, for one of five batting categories. - Hits carried 25% of the score although neither H nor AVG is a category in this league. The weights never consulted the league at all. Add _score_pool(), which derives weights from league.stat_categories(), min-max normalizes each category across the pool and averages them, so every scoring category carries equal weight and unscored stats contribute nothing. Batters and pitchers normalize in separate pools; ERA/WHIP/BB9 invert. Baseline values come from Yahoo's average_season window (already per-game) blended with lastmonth form at _RECENCY_WEIGHT, so playing time cannot inflate a score. Under 15 AB / 5 IP in the recent window falls back to the season rate rather than punishing a small sample. Scores are 0-100. Falls back to the legacy formula if categories can't be read. _compute_standout_score is untouched and still backs the standouts command, where a single-day composite is the right tool. CLAUDE.md now documents why the two paths must stay separate. Pitchers: a starter-only arm who is not today's probable starter now scores 0 -- his team having a game is irrelevant because he will not take the mound. Previously \"team is playing\" was enough, which produced swaps of one idle SP for another. At priority 0 the incumbent now keeps the slot instead of being displaced by an idle arm with better season numbers. Also stop emitting swap groups that never touch the bench. This reverts the filter from 4cd4121, which surfaced pure active-to-active reshuffles so the solver's assignment would not vanish from output. The symptom was real, but such a move leaves the same set of players in the lineup and so cannot change category production -- it is unactionable churn (UTIL -> SS and the like). Reshuffle legs are still reported when they are part of a genuine bench swap, e.g. a UTIL player sliding to 1B to make room for an incoming bat.","href":"https://clawhub.ai/khaney64/yahoo-fantasy-baseball","sourceUrl":"https://clawhub.ai/khaney64/yahoo-fantasy-baseball","sourceType":"release","confidence":"medium","observedAt":"2026-09-23T01:17:28.252Z","isPublic":true}]}