plugins/easychamp/skills/tournament-manager/SKILL.md
Tournament manager for the EasyChamp platform. Use when the user wants to create or operate a sports league, tournament, or bracket — covers generating a league, spinning up a tournament under it, building the bracket, producing a schedule with venues, and entering match results. Activates for 'create a league', 'start a tournament', 'make a bracket', 'schedule matches', 'enter a score', 'record results', 'basketball tournament', 'soccer league', 'single-elim bracket', 'double-elimination', or any EasyChamp-related workflow. Backed by the EasyChamp MCP — requires an EASYCHAMP_API_KEY for live use, or EASYCHAMP_DEMO=1 for offline demos. Do NOT activate for non-sports scheduling (use a generic calendar skill instead) or for tournament-style brackets inside unrelated domains (e.g. 'coding challenge bracket' without EasyChamp — prompt for clarification).
npx skillsauth add anton-abyzov/vskill tournament-managerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Run tournaments end-to-end without leaving Claude — generate a league, spin up a tournament under it, build the bracket, create the schedule, and enter results as matches finish. Powered by the EasyChamp MCP running over stdio.
Chain order is usually: easychamp_generate_league → easychamp_generate_tournament → easychamp_generate_bracket → easychamp_create_schedule → easychamp_enter_results (one per match).
All tools live on the EasyChamp MCP server. Invoke them as-is; the server is configured via the Deps tab snippet (see below).
easychamp_generate_leagueCreate a new league under the authenticated organization.
Input:
{
"name": "Summer Basketball League",
"sport": "basketball",
"teamCount": 8,
"format": "single_elim"
}
Output: { leagueId, name, sport, teams: string[] }.
easychamp_generate_tournamentCreate a tournament inside an existing league.
Input: { "leagueId": "lg_abc123", "type": "single_elim" }
Output: { tournamentId, leagueId, type }.
easychamp_generate_bracketBuild the bracket for a tournament from its registered teams.
Input: { "tournamentId": "tn_xyz789" }
Output: { bracketId, rounds: Match[] }.
easychamp_create_scheduleProduce the schedule with match dates (and optional venues).
Input:
{
"tournamentId": "tn_xyz789",
"startDate": "2026-06-01",
"venues": ["Court A", "Court B"]
}
Output: { scheduleId, matches: ScheduledMatch[] }.
easychamp_enter_resultsRecord the final score + winner for a single match.
Input: { "matchId": "m_42", "homeScore": 84, "awayScore": 77, "winner": "home" }
Output: { matchId, finalized: true }.
~/.claude.json under mcpServers.EASYCHAMP_API_KEY (from https://easychamp.com/account/api-keys) or set EASYCHAMP_DEMO=1 for a no-auth demo.Detailed tool schemas are in references/schemas.md.
1. easychamp_generate_league({ name: "Fall Cup", sport: "soccer", teamCount: 16, format: "double_elim" })
→ leagueId = "lg_fallcup"
2. easychamp_generate_tournament({ leagueId: "lg_fallcup", type: "double_elim" })
→ tournamentId = "tn_fallcup_main"
3. easychamp_generate_bracket({ tournamentId: "tn_fallcup_main" })
→ bracketId = "br_fallcup", rounds: [[Match, Match, ...], ...]
4. easychamp_create_schedule({ tournamentId: "tn_fallcup_main", startDate: "2026-09-01" })
→ scheduleId = "sc_fallcup", matches: [...]
5. easychamp_enter_results({ matchId: "m_1", homeScore: 3, awayScore: 1, winner: "home" })
→ { matchId: "m_1", finalized: true }
EASYCHAMP_API_KEY. The copy-config snippet uses the
${EASYCHAMP_API_KEY} placeholder — fill it in from your environment, never
paste the real value into chat.easychamp_enter_results for a matchId
that is already finalized returns a structured error.tools
Hand off your in-flight work to ANY other AI coding tool so you can continue exactly where you left off — works in 8+ tools (Claude Code, Codex, OpenCode, Gemini, Antigravity, Cursor, Aider, Cline/Roo, Windsurf). Writes one portable, secret-scrubbed handoff document plus a full diff of your uncommitted edits, then prints the absolute path, a clickable link, and a copy-paste resume prompt. Use this skill whenever the user is running out of subscription tokens, wants to switch tools mid-task, says 'handoff', 'continue elsewhere', 'continue on another machine', 'switch to Codex/OpenCode/Gemini/Cursor', or 'I'm out of tokens'. Self-contained: needs only git and a shell; uses 'specweave handoff' as an optional accelerator if it is on PATH.
tools
Bootstrap or update project AI-agent instruction files (AGENTS.md for Codex, CLAUDE.md for Claude Code, or both) from the current project's structure. Triggers on: write AGENTS.md, write CLAUDE.md, generate AGENTS.md, agent instructions, project conventions for AI, bootstrap agent docs, set up project memory for Codex/Claude, document dev/test/build commands for AI coding tools, single-source project instructions for any AI agent.
development
This skill should be used whenever the user asks Claude to perform any action, task, or operation — including "create X", "fix Y", "run Z", "build", "edit", "search", "deploy", or any other request involving Claude taking an action. Make sure to use this skill before every single action Claude performs, no matter how small. Activate on every action request without exception.
development
Meta-skill for creating new skills from natural language. Trigger phrases: "new skill", "create a skill", "build a skill", "make a skill", "generate a skill", "author a skill", "skill builder".