Fantasy Premier League copilot: syncs live FPL data, analyzes players/teams/fixtures, manages your fantasy squad, and generates self-contained HTML reports for squads, fixtures, transfers, captain picks, and gameweek strategy. Use when the user asks about FPL, player stats, transfer advice, captain picks, fixture difficulty, gameweek strategy, or squad management.
npx skills add https://github.com/sugarforever/01coder-agent-skills --skill fpl-copilot
Fantasy Premier League data sync, analysis, and squad management.
~/.fplcopilot/fplcopilot.db~/.fplcopilot/squads/Activate this skill when the user mentions:
sqlite3 ~/.fplcopilot/fplcopilot.db "SELECT * FROM sync_metadata;"
If the database doesn't exist or data is stale, sync first.
SYNC="${CLAUDE_PLUGIN_ROOT}/skills/fpl-copilot/references/sync.sh"
# First time or daily refresh
$SYNC bootstrap # Teams, gameweeks, ~600 players (~5s)
$SYNC fixtures # All 380 fixtures (~2s)
# On demand — single player's match history
$SYNC player 328 # e.g., Salah's detailed GW-by-GW stats
# Batch — all players' histories (slow, ~60s, rate-limited)
$SYNC player-stats
# Everything at once
$SYNC all
# Bypass freshness checks
$SYNC bootstrap --force
# All queries go through sqlite3
sqlite3 ~/.fplcopilot/fplcopilot.db "SELECT web_name, position, form, total_points, now_cost FROM players ORDER BY form DESC LIMIT 10;"
Read references/analysis.md for formulas and example SQL queries.
Read references/squad.md for squad management, persistence format, and multi-squad support.
Many FPL outputs are inherently spatial or color-coded — formation, FDR matrix, transfer comparison. For those, generate a self-contained HTML report instead of a markdown table. For quick lookups and one-shot answers, stay in markdown.
| Output type | Format | Template |
|---|---|---|
| Squad view (formation, bench, totals) | HTML | templates/squad-view.html |
| Fixture difficulty matrix (teams × next N GWs) | HTML | templates/fixture-matrix.html |
| Transfer comparison (out → in, deltas) | HTML | templates/transfer-comparison.html |
| Captain ranking with reasoning | HTML | templates/captain-ranking.html |
| Gameweek strategy report (squad + fixtures + recs) | HTML | templates/gameweek-report.html |
| Single-stat lookup ("Salah's form?") | markdown | — |
| Short reasoning ("Bench Haaland this week?") | markdown | — |
| Deadline, price changes, one-line answers | markdown | — |
| 3-row SQL result | markdown | — |
Heuristic: if the user will *refer back to it, share it, or scan it visually* → HTML. If they glance and move on → markdown.
.html file. No build step. CSS in <style>, JS in <script>, SVG inlined.<meta name="viewport" content="width=device-width, initial-scale=1">. Layout survives a phone viewport.~/.fplcopilot/reports/{YYYY-MM-DD}-{slug}.html. Create the directory with mkdir -p if missing.open <path> to view in their default browser.templates/, replace the placeholder data with real values from SQL, save the result.Before generating any HTML report, read references/html-output.md for color tokens, typography, the team-color table, the sortable-table snippet, and the list of anti-patterns to avoid.
Read these BEFORE answering questions in their domain:
| Doc | When to Read |
|-----|-------------|
| references/api.md | Understanding FPL API endpoints and data structure |
| references/analysis.md | Computing metrics (VAPM, projected points, FDR, momentum, etc.) |
| references/squad.md | Squad persistence, management, multi-squad, scoring rules |
| references/schema.sql | Understanding database tables and columns |
| references/html-output.md | Styling rules, color tokens, team colors, anti-patterns for HTML reports |
Squads are stored as markdown files in ~/.fplcopilot/squads/ — one file per squad. This enables multi-squad support (user's own team, friends' teams, draft plans).
Proactive persistence rules — the agent MUST follow these:
~/.fplcopilot/squads/. Ask for a name if unclear.~/.fplcopilot/squads/ for existing squad files first. List available squads if multiple exist.my-fpl-team.md, daves-team.md, wildcard-draft.md).Read references/squad.md for the full markdown format specification.
sync_metadata shows stale data (bootstrap > 6h, fixtures on match day > 2h), run the sync script first.~/.fplcopilot/squads/ before asking the user to re-share. -- Try exact web_name first, then partial, then full name
SELECT * FROM players WHERE web_name = 'Salah' COLLATE NOCASE;
SELECT * FROM players WHERE web_name LIKE '%salah%' COLLATE NOCASE;
SELECT * FROM players WHERE (first_name || ' ' || last_name) LIKE '%salah%' COLLATE NOCASE;
now_cost is in 0.1m units. 130 = £13.0m. Always display as £X.Xm.a=available, d=doubtful, i=injured, s=suspended, u=unavailable.sync.sh player <id> when the user asks about a specific player's match-by-match performance. Don't batch-fetch unless explicitly needed.10. Proactively persist squads: Always save/update squad files after any squad-related interaction. Never rely on conversation context alone.
11. Generate HTML for spatial outputs: Any request that maps to a template in templates/ — "plan gameweek" / "next gameweek team" → gameweek-report.html; "show/view my squad", formation, bench → squad-view.html; "compare transfer", out → in → transfer-comparison.html; "captain pick" with reasoning → captain-ranking.html; fixture run / FDR matrix → fixture-matrix.html — MUST produce the HTML file (saved to ~/.fplcopilot/reports/{YYYY-MM-DD}-{slug}.html) and report the path with an open <path> hint on macOS. Markdown is only for one-line / single-stat lookups, short reasoning, deadlines, price changes, or ≤3-row SQL results.
Integration with protocols.io API for managing scientific protocols. This skill should be used when working with protocols.io to search, create, update, or publish protocols; manage protocol steps and materials; handle discussions and comments; organize workspaces; upload and manage files; or integrate protocols.io functionality into workflows. Applicable for protocol discovery, collaborative protocol development, experiment tracking, lab protocol management, and scientific documentation.
Analyzes job descriptions and generates tailored resumes that highlight relevant experience, skills, and achievements to maximize interview chances
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.
Build and distribute Expo development clients locally or via TestFlight
Use when you have a written implementation plan to execute in a separate session with review checkpoints
Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.
Benchling R&D platform integration. Access registry (DNA, proteins), inventory, ELN entries, workflows via API, build Benchling Apps, query Data Warehouse, for lab data management automation.
Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.
Take sugarforever/fpl-copilot from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.