@claudinho/cli 0.1.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +59 -7
  2. package/dist/index.js +1385 -399
  3. package/package.json +14 -13
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @claudinho/cli ⚽
2
2
 
3
- **The 2026 men's football tournament, right in your terminal.** Live scores, fixtures, and group tables — TZ-aware, localized, scriptable.
3
+ **The 2026 men's football tournament, right in your terminal.** Live scores, fixtures, group tables, and market odds — TZ-aware, localized, scriptable.
4
4
 
5
5
  > ⚠️ **Not affiliated with, endorsed by, or connected to FIFA or Anthropic.**
6
6
  > Claudinho is an independent, open-source fan project. It shows factual match
@@ -18,15 +18,17 @@ npx @claudinho/cli today
18
18
  ## Commands
19
19
 
20
20
  ```bash
21
- claudinho today [date] # a day's fixtures (default: today), live scores inline
21
+ claudinho today [date] # a day's fixtures in your timezone (default: today), live scores inline
22
22
  claudinho live # matches in play right now
23
23
  claudinho next <TEAM> # a team's next fixture + countdown (e.g. next MEX)
24
24
  claudinho table [GROUP] # group standings (default: all groups)
25
25
  claudinho match <id> # a single match's detail
26
+ claudinho markets [target] # prediction-market odds: today | <date> | <id> | next <TEAM>
26
27
  claudinho prompt # one compact status line (for statusline/tmux/Starship)
27
28
  claudinho init-statusline # wire it into the Claude Code statusline
28
29
  claudinho hook # live-score context for a Claude Code hook (silent off-match)
29
30
  claudinho init-hook # make Claude itself score-aware (UserPromptSubmit)
31
+ claudinho vibe # a matchday-coder one-liner (#VibingLaVidaLoca)
30
32
  ```
31
33
 
32
34
  ### Examples
@@ -36,6 +38,7 @@ claudinho today --tz America/Mexico_City --lang es
36
38
  claudinho next BRA --tz America/Sao_Paulo --lang pt
37
39
  claudinho table A
38
40
  claudinho live --json | jq '.matches[].status'
41
+ claudinho today --flavor off # just the facts, no commentary
39
42
  ```
40
43
 
41
44
  ## Global options
@@ -43,13 +46,55 @@ claudinho live --json | jq '.matches[].status'
43
46
  | Flag | Description |
44
47
  |---|---|
45
48
  | `--lang <code>` | `en`, `es`, `pt`, `fr` (also via `CLAUDINHO_LANG`; falls back to `$LANG`) |
46
- | `--tz <zone>` | IANA timezone, e.g. `America/Mexico_City` (also `CLAUDINHO_TZ`; default: system) |
49
+ | `--tz <zone>` | IANA timezone, e.g. `America/Mexico_City` (also `CLAUDINHO_TZ`; default: system). Kickoff times **and** which day a fixture falls on are computed in this zone — a late-night-UTC match shows on the day you actually watch it. |
47
50
  | `--json` | machine-readable output for scripting |
48
51
  | `--no-color` | disable ANSI color (also honors `NO_COLOR`; auto-off when piped) |
49
52
  | `--source <name>` | live data provider (advanced; sensible default) |
53
+ | `--flavor <level>` | commentary flair: `off`, `subtle`, `full` (default: `full`; also `CLAUDINHO_FLAVOR`) |
54
+ | `--no-markets` | hide prediction-market signals in `today`/`match` (also `CLAUDINHO_MARKETS=off`) |
50
55
 
51
56
  Team codes are 3-letter (FIFA/IOC-style): `MEX`, `BRA`, `USA`, `ENG`, …
52
57
 
58
+ ### Commentary flair
59
+
60
+ By default Claudinho narrates with a bit of localized football-broadcast energy —
61
+ `¡GOOOOL!` on a goal, `¡a cancha llena!` before kickoff. These are generic,
62
+ genre-style exclamations (no real commentator is quoted or impersonated),
63
+ localized per `--lang`, and they never affect `--json` output.
64
+
65
+ - `--flavor full` *(default)* — flair on fixtures, live play, goals, and full-time
66
+ - `--flavor subtle` — only goals and full-time
67
+ - `--flavor off` — just the facts
68
+
69
+ ## Prediction-market signals
70
+
71
+ `claudinho markets` shows **read-only** prediction-market odds — "who's favored" as
72
+ market-implied percentages — for a date, a match, or a team's next fixture:
73
+
74
+ ```bash
75
+ claudinho markets # today's signals
76
+ claudinho markets 2026-06-11 # a specific date
77
+ claudinho markets 760415 # one match by id
78
+ claudinho markets next MEX # a team's next fixture
79
+ claudinho markets today --json # structured sidecar output
80
+ ```
81
+
82
+ A short market line is also added under `claudinho today` and `claudinho match`
83
+ when a reliable market is available. It's **informational only — not betting
84
+ advice:** market-implied percentages with attribution, no trading, no links. Data
85
+ comes from Polymarket public market data and is shown
86
+ only when the market maps cleanly to the result and is fresh.
87
+
88
+ Opt out with `--no-markets` (per command) or `CLAUDINHO_MARKETS=off` (global). The
89
+ statusline and hook **never** show market data — it stays off the hot path.
90
+
91
+ > **How matches are matched:** event slugs are derived automatically from each
92
+ > fixture (`fifwc-{home}-{away}-{date}`), so real odds appear for any match with a
93
+ > live Polymarket market — no mapping needed (`mapping.2026.json` is for slug
94
+ > *overrides* only). Matching fails closed, so an unmatched fixture simply shows
95
+ > nothing. For an offline preview, set `CLAUDINHO_MARKETS_SOURCE=fake` to render
96
+ > clearly-labeled synthetic **"demo data"** odds.
97
+
53
98
  ## Statusline (Claude Code)
54
99
 
55
100
  ```bash
@@ -89,15 +134,22 @@ claudinho live # live friendlies
89
134
  unset CLAUDINHO_COMPETITION # back to the World Cup
90
135
  ```
91
136
 
92
- Only the live fetch changes; the bundled schedule is always the World Cup.
137
+ Only the live fetch changes; the bundled schedule is always the World Cup. The
138
+ statusline/hook cache is keyed to the active competition, so switching with
139
+ `CLAUDINHO_COMPETITION` never surfaces stale scores from the other competition.
93
140
 
94
141
  ## How it works
95
142
 
96
- The full fixture list (104 matches, groups, venues, kickoffs) ships **bundled**
143
+ The full fixture list (104 matches, groups, venues, host cities, kickoffs) ships **bundled**
97
144
  in the package, so the common path is offline and instant. Only live match
98
- state hits the network. Scores come from a swappable data provider; provider
99
- attribution and rate limits are respected.
145
+ state hits the network. Live scores come from **ESPN's** public scoreboard (a
146
+ swappable provider, attributed in output as `Live data: ESPN`) and market odds
147
+ from Polymarket; provider attribution and rate limits are respected.
100
148
 
101
149
  ## License
102
150
 
103
151
  MIT © 2026 Arturo Garrido · [source & issues](https://github.com/arturogarrido/claudinho)
152
+
153
+ ---
154
+
155
+ _Built while watching the games._ **#VibingLaVidaLoca** ⚽