v0.3.0 — team competitions
--team on competition create
The CLI could read team competitions and not create them. A clan bingo on WOM is a team competition, so the shape the clan actually runs was the one shape Andy could not make. Me So Scape Battleship Bingo (140957) and Me So Summer Bingo (102382) both exist on group 5165 in that form.
wom competition create \
--title "Summer Bingo" --metric ehb \
--starts "2026-06-13T00:00:00Z" --ends "2026-06-27T00:00:00Z" \
--group-id 5165 --verification-code "..." \
--team "Team Alpha=Doe Matic,Uka36" \
--team "Team Bravo=pollieolly,Zezima"Repeat --team once per side. = splits the name from the roster and , splits the roster: unambiguous, because an OSRS name is at most 12 characters of letters, digits, spaces and underscores and can contain neither.
Refused before the request goes out rather than left for the API to reject: --participants together with --team, a team with no players, and the same team name twice. That last one matters because WOM keys a team by name, so a duplicate would silently merge two rosters into one team instead of erroring.
Why it matters: every participation in a team competition carries teamName, so competition view gives per-team standings with no separate roster mapping. The WOM side and the Discord side of an event join on the same team names.
Also
- First tests in this repo. The POST body is built by
buildCompetitionBody, split out so it is testable with no I/O. Mutation-tested: dropping the both-set guard, sending teams under theparticipantskey, allowing a duplicate team name, and swapping name and roster around the=each fail a named test. - A regression test keeps
groupIdnumeric on the team path, so the v0.2.1 fix cannot come undone through it. SKILL.mdwas untracked and is now committed.