{"id":"e1c1a763-c6d7-4b36-ac65-653301951455","shortId":"jhXtKA","kind":"skill","title":"nutmeg","tagline":"Football data analytics — the single entry point. Use whenever the user mentions football data, xG, expected goals, match analysis, player stats, scouting, match reports, shot maps, passing networks, Premier League data, Champions League stats, scraping FBref/Understat/Transferma","description":"# Nutmeg\n\nYou are the user's football data analytics assistant. This is the single entry point — you understand what the user wants and either handle it directly or dispatch to the right specialised skill.\n\n## Step 1: Check profile\n\nRead `.nutmeg.user.md` in the project root.\n\n- **If it doesn't exist:** Read and follow `references/init-flow.md` to run the first-time setup before doing anything else.\n- **If it exists:** Load their profile (language, experience level, providers, goals) and adapt everything that follows.\n\n## Step 2: Understand the request\n\nRead what the user is asking. Classify it into one of these intents:\n\n| Intent | Signal | Action |\n|--------|--------|--------|\n| **Get data** | \"scrape\", \"fetch\", \"download\", \"get me data\", names a provider or competition | Invoke `/nutmeg-acquire` |\n| **Fix broken pipeline** | \"error\", \"broken\", \"403\", \"scraper stopped working\", \"rate limited\" | Invoke `/nutmeg-heal` |\n| **Transform data** | \"clean\", \"filter\", \"join\", \"merge\", \"reshape\", \"convert\", \"coordinate\" | Invoke `/nutmeg-wrangle` |\n| **Compute metrics** | \"xG\", \"PPDA\", \"passing network\", \"expected threat\", \"pressing\", \"per-90\" | Invoke `/nutmeg-compute` |\n| **Analyse / explore** | \"compare\", \"analyse\", \"which team\", \"who is the best\", \"pattern\", \"trend\" | Invoke `/nutmeg-analyse` |\n| **Visualise** | \"chart\", \"plot\", \"visualise\", \"dashboard\", \"shot map\", \"radar\", \"heatmap\" | Invoke `/nutmeg-brainstorm` |\n| **Review code/chart** | \"review\", \"check my code\", \"is this correct\", \"before I publish\" | Invoke `/nutmeg-review` |\n| **Store / publish** | \"save\", \"database\", \"publish\", \"deploy\", \"Streamlit\", \"share\" | Invoke `/nutmeg-store` |\n| **Learn / explain** | \"what is xG\", \"explain\", \"teach me\", \"resources\", \"how does X work\" | Invoke `/nutmeg-learn` |\n| **Manage credentials** | \"API key\", \"authentication\", \"set up access\" | Invoke `/nutmeg-acquire` (credentials are part of acquisition) |\n| **Provider docs** | \"qualifier ID\", \"coordinate system\", \"what fields does X have\" | Invoke `/nutmeg-learn` (provider docs are part of learning) |\n| **Plan a pipeline** | \"I want to build...\", \"how do I approach...\", multi-step goal | Dispatch `pipeline-builder` agent |\n| **Update profile** | \"update my profile\", \"change my settings\", \"nutmeg init\" | Run init flow from `references/init-flow.md` |\n\n**If the intent is ambiguous**, ask ONE clarifying question. The user should feel like they're talking to one assistant, not choosing from a switchboard.\n\n**If the request spans multiple intents** (e.g. \"get PL xG data and make a shot map\"), handle them in sequence — acquire first, then visualise. Don't ask the user to break it up.\n\n## Step 3: Dispatch or handle\n\nWhen dispatching to a sub-skill, invoke it by name (e.g. `/nutmeg-acquire`). Pass along:\n- The user's original request as context\n- Their profile settings (already loaded)\n\nFor provider-specific lookups that are quick (single qualifier ID, one field name), you can handle inline using MCP tools directly:\n- `search_docs(query, provider?)` for specific questions\n- `compare_providers(topic, providers?)` for comparisons\n- `list_providers()` to show coverage\n\nFollow the accuracy guardrail: read `docs/accuracy-guardrail.md`. Never guess provider-specific facts from training data.\n\n## Progressive disclosure\n\nThe user should discover capabilities naturally:\n\n1. **First interaction:** They describe what they want. You route it.\n2. **During work:** When you dispatch a sub-skill, briefly mention it (\"I'll use the data acquisition workflow for this...\") so they learn the vocabulary.\n3. **Power users:** If they directly invoke `/nutmeg-acquire` etc., respect that — don't re-route through here.\n4. **Teaching moments:** When the user hits a concept they don't know (xG, PPDA, coordinate systems), offer a brief inline explanation and mention `/nutmeg-learn` has deeper resources.","tags":["nutmeg","withqwerty","agent-skills","claude-code","claude-code-plugin","football-analytics","football-data","mcp","opta","sports-analytics","statsbomb"],"capabilities":["skill","source-withqwerty","skill-nutmeg","topic-agent-skills","topic-claude-code","topic-claude-code-plugin","topic-football-analytics","topic-football-data","topic-mcp","topic-opta","topic-sports-analytics","topic-statsbomb"],"categories":["nutmeg"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/withqwerty/nutmeg/nutmeg","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add withqwerty/nutmeg","source_repo":"https://github.com/withqwerty/nutmeg","install_from":"skills.sh"}},"qualityScore":"0.458","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 17 github stars · SKILL.md body (3,874 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-23T01:02:06.540Z","embedding":null,"createdAt":"2026-04-18T23:06:52.325Z","updatedAt":"2026-04-23T01:02:06.540Z","lastSeenAt":"2026-04-23T01:02:06.540Z","tsv":"'-90':188 '/nutmeg-acquire':153,264,399,522 '/nutmeg-analyse':204 '/nutmeg-brainstorm':215 '/nutmeg-compute':190 '/nutmeg-heal':166 '/nutmeg-learn':254,282,557 '/nutmeg-review':229 '/nutmeg-store':239 '/nutmeg-wrangle':177 '1':73,477 '2':119,488 '3':383,515 '4':533 '403':159 'access':262 'accuraci':456 'acquir':369 'acquisit':269,506 'action':138 'adapt':114 'agent':308 'along':401 'alreadi':412 'ambigu':328 'analys':191,194 'analysi':20 'analyt':4,46 'anyth':100 'api':257 'approach':299 'ask':128,329,375 'assist':47,343 'authent':259 'best':200 'break':379 'brief':552 'briefli':498 'broken':155,158 'build':295 'builder':307 'capabl':475 'champion':33 'chang':314 'chart':206 'check':74,219 'choos':345 'clarifi':331 'classifi':129 'clean':169 'code':221 'code/chart':217 'compar':193,443 'comparison':448 'competit':151 'comput':178 'concept':541 'context':408 'convert':174 'coordin':175,274,548 'correct':224 'coverag':453 'credenti':256,265 'dashboard':209 'data':3,15,32,45,140,146,168,359,468,505 'databas':233 'deeper':559 'deploy':235 'describ':481 'direct':64,435,520 'disclosur':470 'discov':474 'dispatch':66,304,384,388,493 'doc':271,284,437 'docs/accuracy-guardrail.md':459 'doesn':84 'download':143 'e.g':355,398 'either':61 'els':101 'entri':7,52 'error':157 'etc':523 'everyth':115 'exist':86,104 'expect':17,184 'experi':109 'explain':241,245 'explan':554 'explor':192 'fact':465 'fbref/understat/transferma':37 'feel':336 'fetch':142 'field':277,426 'filter':170 'first':95,370,478 'first-tim':94 'fix':154 'flow':321 'follow':89,117,454 'footbal':2,14,44 'get':139,144,356 'goal':18,112,303 'guardrail':457 'guess':461 'handl':62,365,386,430 'heatmap':213 'hit':539 'id':273,424 'init':318,320 'inlin':431,553 'intent':135,136,326,354 'interact':479 'invok':152,165,176,189,203,214,228,238,253,263,281,394,521 'join':171 'key':258 'know':545 'languag':108 'leagu':31,34 'learn':240,288,512 'level':110 'like':337 'limit':164 'list':449 'll':502 'load':105,413 'lookup':418 'make':361 'manag':255 'map':27,211,364 'match':19,24 'mcp':433 'mention':13,499,556 'merg':172 'metric':179 'moment':535 'multi':301 'multi-step':300 'multipl':353 'name':147,397,427 'natur':476 'network':29,183 'never':460 'nutmeg':1,38,317 'nutmeg.user.md':77 'offer':550 'one':132,330,342,425 'origin':405 'part':267,286 'pass':28,182,400 'pattern':201 'per':187 'pipelin':156,291,306 'pipeline-build':305 'pl':357 'plan':289 'player':21 'plot':207 'point':8,53 'power':516 'ppda':181,547 'premier':30 'press':186 'profil':75,107,310,313,410 'progress':469 'project':80 'provid':111,149,270,283,416,439,444,446,450,463 'provider-specif':415,462 'publish':227,231,234 'qualifi':272,423 'queri':438 'question':332,442 'quick':421 'radar':212 'rate':163 're':339,529 're-rout':528 'read':76,87,123,458 'references/init-flow.md':90,323 'report':25 'request':122,351,406 'reshap':173 'resourc':248,560 'respect':524 'review':216,218 'right':69 'root':81 'rout':486,530 'run':92,319 'save':232 'scout':23 'scrape':36,141 'scraper':160 'search':436 'sequenc':368 'set':260,316,411 'setup':97 'share':237 'shot':26,210,363 'show':452 'signal':137 'singl':6,51,422 'skill':71,393,497 'skill-nutmeg' 'source-withqwerty' 'span':352 'specialis':70 'specif':417,441,464 'stat':22,35 'step':72,118,302,382 'stop':161 'store':230 'streamlit':236 'sub':392,496 'sub-skil':391,495 'switchboard':348 'system':275,549 'talk':340 'teach':246,534 'team':196 'threat':185 'time':96 'tool':434 'topic':445 'topic-agent-skills' 'topic-claude-code' 'topic-claude-code-plugin' 'topic-football-analytics' 'topic-football-data' 'topic-mcp' 'topic-opta' 'topic-sports-analytics' 'topic-statsbomb' 'train':467 'transform':167 'trend':202 'understand':55,120 'updat':309,311 'use':9,432,503 'user':12,42,58,126,334,377,403,472,517,538 'visualis':205,208,372 'vocabulari':514 'want':59,293,484 'whenev':10 'work':162,252,490 'workflow':507 'x':251,279 'xg':16,180,244,358,546","prices":[{"id":"8a04bc0b-076f-48ae-9e7d-a8ced4312295","listingId":"e1c1a763-c6d7-4b36-ac65-653301951455","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"withqwerty","category":"nutmeg","install_from":"skills.sh"},"createdAt":"2026-04-18T23:06:52.325Z"}],"sources":[{"listingId":"e1c1a763-c6d7-4b36-ac65-653301951455","source":"github","sourceId":"withqwerty/nutmeg/nutmeg","sourceUrl":"https://github.com/withqwerty/nutmeg/tree/main/skills/nutmeg","isPrimary":false,"firstSeenAt":"2026-04-18T23:06:52.325Z","lastSeenAt":"2026-04-23T01:02:06.540Z"}],"details":{"listingId":"e1c1a763-c6d7-4b36-ac65-653301951455","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"withqwerty","slug":"nutmeg","github":{"repo":"withqwerty/nutmeg","stars":17,"topics":["agent-skills","claude-code","claude-code-plugin","football-analytics","football-data","mcp","opta","sports-analytics","statsbomb","xg"],"license":null,"html_url":"https://github.com/withqwerty/nutmeg","pushed_at":"2026-04-16T02:33:15Z","description":"Football data analytics toolkit for Claude Code. Covers Opta, StatsBomb, Wyscout, SportMonks, and free sources.","skill_md_sha":"d888620f8ae69f0f9fd9c7ce7167256e24f34d09","skill_md_path":"skills/nutmeg/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/withqwerty/nutmeg/tree/main/skills/nutmeg"},"layout":"multi","source":"github","category":"nutmeg","frontmatter":{"name":"nutmeg","description":"Football data analytics — the single entry point. Use whenever the user mentions football data, xG, expected goals, match analysis, player stats, scouting, match reports, shot maps, passing networks, Premier League data, Champions League stats, scraping FBref/Understat/Transfermarkt, building football charts, or anything football analytics related. Routes to specialised sub-skills automatically. Also handles first-time setup and profile management."},"skills_sh_url":"https://skills.sh/withqwerty/nutmeg/nutmeg"},"updatedAt":"2026-04-23T01:02:06.540Z"}}