Bullpen Bracket Skill
This is a live example of the AI agent skill format. For the full format specification, see AI Agent Skill Format Specification.
Instructions
Step 1: Identify What the User Wants to Do
Route to the right section based on intent:
Read references/bracket-contest.md for full command reference, slot ID format, scoring rules, strategy templates, and the automated fill script.
Step 2: Key Rules
- Authentication required for all write operations (picks, tiebreaker). Run
bullpen login first.
- Slot IDs follow the format
R{round}_{region}_{game}. Get exact slot IDs from bullpen polymarket bracket bracket-view <id>.
- Team names support fuzzy matching — you can use short names like "Duke", "Illinois", "Michigan St" instead of full university names. The CLI resolves against the server's team list.
- R2+ picks work — for later-round matchups where opponents are TBD, the CLI resolves team names against all tournament entries.
- Round-by-round submission —
fill-chalk and fill submit picks round by round (R1 first, then R2-R6) with automatic fallback to individual submission if a batch fails.
- Dry-run mode — use
--dry-run on fill-chalk or fill to preview picks without submitting.
- Consistency warnings — picking a team in R2+ that you didn't pick to advance from the previous round triggers a warning (non-blocking).
- Tiebreaker is the predicted total points in the championship game. Submit after filling all 63 picks.
- All commands support
--output json for scripting and automation.
Step 3: Execute
Run commands via bullpen CLI. Bracket commands are all under bullpen polymarket bracket.
Quick Command Map
| Intent |
Command |
| List open contests |
bullpen polymarket bracket contests --status open |
| View contest details |
bullpen polymarket bracket view <CONTEST_ID> |
| Display bracket tree |
bullpen polymarket bracket bracket-view <CONTEST_ID> |
| View my picks |
bullpen polymarket bracket picks <CONTEST_ID> |
| View picks for one round |
bullpen polymarket bracket picks <CONTEST_ID> --round 1 |
| Submit one pick |
bullpen polymarket bracket pick <CONTEST_ID> --slot <SLOT> --winner "Duke" |
| Preview chalk bracket |
bullpen polymarket bracket fill-chalk <CONTEST_ID> --dry-run |
| Auto-fill chalk bracket |
bullpen polymarket bracket fill-chalk <CONTEST_ID> --tiebreaker 145 |
| Fill from JSON file |
bullpen polymarket bracket fill <CONTEST_ID> --file picks.json |
| View bracket summary |
bullpen polymarket bracket summary <CONTEST_ID> |
| Submit tiebreaker |
bullpen polymarket bracket submit <CONTEST_ID> --tiebreaker <SCORE> |
| View leaderboard |
bullpen polymarket bracket leaderboard <CONTEST_ID> |
| My rank and score |
bullpen polymarket bracket status <CONTEST_ID> |
| Game results |
bullpen polymarket bracket results <CONTEST_ID> |
| Polymarket mappings |
bullpen polymarket bracket markets <CONTEST_ID> |
Examples
Example 1: Fill a Full Bracket (Chalk Strategy)
User says: "Fill my March Madness bracket picking the higher seed every time"
Actions:
- Find the active contest:
bullpen polymarket bracket contests --status open --output json
- Auto-fill all 63 picks with chalk (higher seed always wins):
bullpen polymarket bracket fill-chalk <CONTEST_ID> --tiebreaker 145
- Review the bracket summary:
bullpen polymarket bracket summary <CONTEST_ID>
- Override specific picks if desired:
bullpen polymarket bracket pick <CONTEST_ID> --slot R1_E2 --winner "TCU"
- Verify:
bullpen polymarket bracket picks <CONTEST_ID>
Example 2: Fill a Bracket with a Specific Champion
User says: "Fill my bracket with Duke winning it all"
Actions:
- Find contest:
bullpen polymarket bracket contests --status open --output json
- Start with chalk base:
bullpen polymarket bracket fill-chalk <CONTEST_ID> --tiebreaker 152
- Override Duke's path to the championship — work backwards from R6:
bullpen polymarket bracket pick <CONTEST_ID> --slot R6_CH1 --winner "Duke"
bullpen polymarket bracket pick <CONTEST_ID> --slot R5_FF1 --winner "Duke"
- (continue for Elite 8, Sweet 16, etc.)
- Review:
bullpen polymarket bracket summary <CONTEST_ID>
- Verify all 63 picks:
bullpen polymarket bracket picks <CONTEST_ID>
Example 3: Check Standings Mid-Tournament
User says: "How am I doing in the bracket contest?"
Actions:
- Quick overview:
bullpen polymarket bracket summary <CONTEST_ID>
- Check your rank:
bullpen polymarket bracket status <CONTEST_ID>
- View recent results:
bullpen polymarket bracket results <CONTEST_ID>
- See leaderboard:
bullpen polymarket bracket leaderboard <CONTEST_ID>
- Compare max possible points vs current leader to assess your path to winning
Example 4: Fill from a JSON File
User says: "I have my picks in a file, submit them all"
Actions:
- Create a picks file (
picks.json):{
"picks": [
{"slot": "R1_E1", "winner": "Duke"},
{"slot": "R1_E2", "winner": "TCU"},
{"slot": "R1_E3", "winner": "Illinois"}
],
"tiebreaker": 148
}
- Submit:
bullpen polymarket bracket fill <CONTEST_ID> --file picks.json
- Team names support fuzzy matching — "Duke", "Illinois", "Michigan St" all work.
- Verify:
bullpen polymarket bracket summary <CONTEST_ID>
March Madness Quick Reference
64 teams, 4 regions (East, West, South, Midwest), 63 total picks
| Round |
Games |
Pts/Pick |
Max Pts |
| First Round |
32 |
1 |
32 |
| Second Round |
16 |
2 |
32 |
| Sweet 16 |
8 |
4 |
32 |
| Elite 8 |
4 |
8 |
32 |
| Final Four |
2 |
16 |
32 |
| Championship |
1 |
32 |
32 |
| Total |
63 |
— |
192 |
Historic upset rates (Round 1):
- 12 over 5: ~35%
- 11 over 6: ~37%
- 10 over 7: ~40%
- 13 over 4: ~21%
- 14 over 3: ~15%
- 15 over 2: ~6%
- 16 over 1: ~1% (has happened once in history)
Troubleshooting
| Error |
Fix |
| "Not authenticated" |
Run bullpen login |
| "Contest not found" |
Run bullpen polymarket bracket contests to get valid IDs |
| "Invalid slot ID" |
Use bracket-view --output json to get exact slot IDs |
| "No team matching..." |
Check team names with bracket-view. Fuzzy matching works for short names ("Duke", "UNC") |
| "Ambiguous team name..." |
Be more specific — the error lists matching candidates |
| "Warning: ... not picked to advance" |
Consistency warning — your later-round pick doesn't match an earlier pick. Non-blocking. |
| "Picks deadline passed" |
Contest is closed — check bracket-view for deadline field |
| Command not found |
Run bullpen upgrade to get the latest version |
Full Reference
See references/bracket-contest.md for:
- Complete command syntax and all flags
- Full slot ID format specification
- All strategy templates (chalk, upset-heavy, custom champion, contrarian)
- Automated fill script
- Polymarket market mapping usage
Resources
Source: mixn/dotfiles — distributed by TomeVault.
1---2name: bullpen-bracket3description: AI-assisted bracket contest filling and management for Polymarket tournament contests (e.g. March Madness). Use when the user wants to fill a bracket, make picks, submit a tiebreaker, view standings, check results, or automate bracket strategies. Provides command reference, slot ID format, scoring rules, and strategy templates (chalk, upset-heavy, custom champion). Use when this capability is needed.4---56# Bullpen Bracket Skill78> This is a live example of the AI agent skill format. For the full format specification, see [AI Agent Skill Format Specification](https://cli.bullpen.fi/skill-format-spec/).910## Instructions1112### Step 1: Identify What the User Wants to Do1314Route to the right section based on intent:1516| User Intent | Go To |17|-------------|-------|18| Find bracket contests | [List Contests](#list-contests) |19| See the full tournament bracket | [Display Tournament Bracket](#display-tournament-bracket) |20| Submit picks (one or many) | [Submit a Single Pick](#submit-a-single-pick) |21| Fill entire bracket automatically | [Auto-Fill Bracket](#auto-fill-bracket) |22| Fill from a JSON file | [Fill from File](#fill-from-file) |23| See bracket summary | [View Bracket Summary](#view-bracket-summary) |24| Set tiebreaker score | [Submit Tiebreaker](#submit-tiebreaker) |25| See standings / my rank | [View Leaderboard](#view-leaderboard) / [View Your Status](#view-your-status) |26| Check game outcomes | [View Game Results](#view-game-results) |27| See Polymarket market mappings | [View Polymarket Market Mappings](#view-polymarket-market-mappings) |28| Strategy help | [Strategy Templates](#strategy-templates) |2930Read `references/bracket-contest.md` for full command reference, slot ID format, scoring rules, strategy templates, and the automated fill script.3132### Step 2: Key Rules3334- **Authentication required** for all write operations (picks, tiebreaker). Run `bullpen login` first.35- **Slot IDs** follow the format `R{round}_{region}_{game}`. Get exact slot IDs from `bullpen polymarket bracket bracket-view <id>`.36- **Team names support fuzzy matching** — you can use short names like "Duke", "Illinois", "Michigan St" instead of full university names. The CLI resolves against the server's team list.37- **R2+ picks work** — for later-round matchups where opponents are TBD, the CLI resolves team names against all tournament entries.38- **Round-by-round submission** — `fill-chalk` and `fill` submit picks round by round (R1 first, then R2-R6) with automatic fallback to individual submission if a batch fails.39- **Dry-run mode** — use `--dry-run` on `fill-chalk` or `fill` to preview picks without submitting.40- **Consistency warnings** — picking a team in R2+ that you didn't pick to advance from the previous round triggers a warning (non-blocking).41- **Tiebreaker** is the predicted total points in the championship game. Submit after filling all 63 picks.42- **All commands support `--output json`** for scripting and automation.4344### Step 3: Execute4546Run commands via `bullpen` CLI. Bracket commands are all under `bullpen polymarket bracket`.4748## Quick Command Map4950| Intent | Command |51|--------|---------|52| List open contests | `bullpen polymarket bracket contests --status open` |53| View contest details | `bullpen polymarket bracket view <CONTEST_ID>` |54| Display bracket tree | `bullpen polymarket bracket bracket-view <CONTEST_ID>` |55| View my picks | `bullpen polymarket bracket picks <CONTEST_ID>` |56| View picks for one round | `bullpen polymarket bracket picks <CONTEST_ID> --round 1` |57| Submit one pick | `bullpen polymarket bracket pick <CONTEST_ID> --slot <SLOT> --winner "Duke"` |58| Preview chalk bracket | `bullpen polymarket bracket fill-chalk <CONTEST_ID> --dry-run` |59| Auto-fill chalk bracket | `bullpen polymarket bracket fill-chalk <CONTEST_ID> --tiebreaker 145` |60| Fill from JSON file | `bullpen polymarket bracket fill <CONTEST_ID> --file picks.json` |61| View bracket summary | `bullpen polymarket bracket summary <CONTEST_ID>` |62| Submit tiebreaker | `bullpen polymarket bracket submit <CONTEST_ID> --tiebreaker <SCORE>` |63| View leaderboard | `bullpen polymarket bracket leaderboard <CONTEST_ID>` |64| My rank and score | `bullpen polymarket bracket status <CONTEST_ID>` |65| Game results | `bullpen polymarket bracket results <CONTEST_ID>` |66| Polymarket mappings | `bullpen polymarket bracket markets <CONTEST_ID>` |6768## Examples6970### Example 1: Fill a Full Bracket (Chalk Strategy)7172User says: "Fill my March Madness bracket picking the higher seed every time"7374Actions:751. Find the active contest: `bullpen polymarket bracket contests --status open --output json`762. Auto-fill all 63 picks with chalk (higher seed always wins): `bullpen polymarket bracket fill-chalk <CONTEST_ID> --tiebreaker 145`773. Review the bracket summary: `bullpen polymarket bracket summary <CONTEST_ID>`784. Override specific picks if desired: `bullpen polymarket bracket pick <CONTEST_ID> --slot R1_E2 --winner "TCU"`795. Verify: `bullpen polymarket bracket picks <CONTEST_ID>`8081### Example 2: Fill a Bracket with a Specific Champion8283User says: "Fill my bracket with Duke winning it all"8485Actions:861. Find contest: `bullpen polymarket bracket contests --status open --output json`872. Start with chalk base: `bullpen polymarket bracket fill-chalk <CONTEST_ID> --tiebreaker 152`883. Override Duke's path to the championship — work backwards from R6:89 - `bullpen polymarket bracket pick <CONTEST_ID> --slot R6_CH1 --winner "Duke"`90 - `bullpen polymarket bracket pick <CONTEST_ID> --slot R5_FF1 --winner "Duke"`91 - (continue for Elite 8, Sweet 16, etc.)924. Review: `bullpen polymarket bracket summary <CONTEST_ID>`935. Verify all 63 picks: `bullpen polymarket bracket picks <CONTEST_ID>`9495### Example 3: Check Standings Mid-Tournament9697User says: "How am I doing in the bracket contest?"9899Actions:1001. Quick overview: `bullpen polymarket bracket summary <CONTEST_ID>`1012. Check your rank: `bullpen polymarket bracket status <CONTEST_ID>`1023. View recent results: `bullpen polymarket bracket results <CONTEST_ID>`1034. See leaderboard: `bullpen polymarket bracket leaderboard <CONTEST_ID>`1045. Compare max possible points vs current leader to assess your path to winning105106### Example 4: Fill from a JSON File107108User says: "I have my picks in a file, submit them all"109110Actions:1111. Create a picks file (`picks.json`):112 ```json113 {114 "picks": [115 {"slot": "R1_E1", "winner": "Duke"},116 {"slot": "R1_E2", "winner": "TCU"},117 {"slot": "R1_E3", "winner": "Illinois"}118 ],119 "tiebreaker": 148120 }121 ```1222. Submit: `bullpen polymarket bracket fill <CONTEST_ID> --file picks.json`1233. Team names support fuzzy matching — "Duke", "Illinois", "Michigan St" all work.1244. Verify: `bullpen polymarket bracket summary <CONTEST_ID>`125126## March Madness Quick Reference127128**64 teams, 4 regions** (East, West, South, Midwest), **63 total picks**129130| Round | Games | Pts/Pick | Max Pts |131|-------|-------|----------|---------|132| First Round | 32 | 1 | 32 |133| Second Round | 16 | 2 | 32 |134| Sweet 16 | 8 | 4 | 32 |135| Elite 8 | 4 | 8 | 32 |136| Final Four | 2 | 16 | 32 |137| Championship | 1 | 32 | 32 |138| **Total** | **63** | — | **192** |139140**Historic upset rates (Round 1):**141- 12 over 5: ~35%142- 11 over 6: ~37%143- 10 over 7: ~40%144- 13 over 4: ~21%145- 14 over 3: ~15%146- 15 over 2: ~6%147- 16 over 1: ~1% (has happened once in history)148149## Troubleshooting150151| Error | Fix |152|-------|-----|153| "Not authenticated" | Run `bullpen login` |154| "Contest not found" | Run `bullpen polymarket bracket contests` to get valid IDs |155| "Invalid slot ID" | Use `bracket-view --output json` to get exact slot IDs |156| "No team matching..." | Check team names with `bracket-view`. Fuzzy matching works for short names ("Duke", "UNC") |157| "Ambiguous team name..." | Be more specific — the error lists matching candidates |158| "Warning: ... not picked to advance" | Consistency warning — your later-round pick doesn't match an earlier pick. Non-blocking. |159| "Picks deadline passed" | Contest is closed — check `bracket-view` for deadline field |160| Command not found | Run `bullpen upgrade` to get the latest version |161162## Full Reference163164See `references/bracket-contest.md` for:165- Complete command syntax and all flags166- Full slot ID format specification167- All strategy templates (chalk, upset-heavy, custom champion, contrarian)168- Automated fill script169- Polymarket market mapping usage170171## Resources172173- Docs: [cli.bullpen.fi](https://cli.bullpen.fi)174- Bug reports: [github.com/BullpenFi/bullpen-cli-releases/issues](https://github.com/BullpenFi/bullpen-cli-releases/issues)175- Support: [help.bullpen.fi](https://help.bullpen.fi)176- Releases: [github.com/BullpenFi/bullpen-cli-releases](https://github.com/BullpenFi/bullpen-cli-releases)177178---179> Source: [mixn/dotfiles](https://github.com/mixn/dotfiles) — distributed by [TomeVault](https://tomevault.io).180<!-- tomevault:4.0:skill_md:2026-06-24 -->