one phone runs the game.
someone on the sideline is keeping score, and they are doing it on the back of a team sheet with a biro.
the sport-specific apps exist, cost money, and assume a level of formality that a sunday league does not have.
a page built for your sport tracks the things your sport tracks — periods, fouls, who scored, substitutions — and does it in one tap per event, which is all anyone on a sideline can manage.
the team sheet, with arithmetic.
01 / what it isthe difference between this and a scrap of paper is that at full time you have a record: who scored, when, and what happened — which is what gets typed into a league table or read out in the car on the way home.
the difference between this and a sports app is that it knows your squad, your sport’s events, and nothing else. there is no subscription and no account for a parent to create.
- the score, large, and the period or clock
- one tap to record a goal, point or whatever your sport calls it
- who did it, from your squad list
- the events your sport actually records
- a match log you can read out afterwards
- export of the completed match
- what it records
- score, clock or periods, scorers, and the events you named
- where that goes
- localStorage on the scoring device
- the squad
- your players, in the page, so attribution is a tap not a keyboard
- after the game
- an exportable summary you can paste into a group chat
see one in action.
02 / examplea match page with score, period clock, scorers and a running event log
the live example is still being built — the prompt below is the one it was made with.
copy this, then make it yours.
03 / starting prompta starting point, not a template — the point of an agent is that the result is yours. change the sections to match what you want, and remove anything you don’t need.
Build me a team scorekeeper as a single web page, for keeping score on the sideline.
Ask me first:
- The sport, and exactly what gets recorded in it — goals, points, tries, fouls, cards, substitutions, whatever applies.
- How the game is divided: halves, quarters, periods, innings, and how long.
- Whether there is a clock to run, and whether it counts up or down.
- My squad, so scorers can be attributed with a tap.
- The team name and whether I record the opposition's individual events too.
Take the sport's rules from me. Do not assume a standard I did not state, and do not invent players.
WHAT IT DOES
- The score is the biggest thing on the page, with the period and clock beneath it.
- Recording a score is one tap for the team, then one tap for the player from my squad. Never make me type a name on a sideline.
- Record the other events my sport needs, each one or two taps.
- The clock, if I asked for one: start, pause, and correct it, because it will get started late.
- A running event log with times — this becomes the match report and is the reason to use the page at all.
- An undo for the last event, and the ability to edit the log.
- At full time, a summary I can read out or paste into a chat, plus a JSON export.
- Start a new match without losing the squad.
DESIGN
- Usable standing up, outdoors, in the rain, one-handed, possibly cold. Very large targets, no precision gestures.
- High contrast and readable in bright light.
- Nothing that requires two hands or a steady finger.
BE HONEST ON THE PAGE
- Say the match is stored on this device only, so anyone else opening the url will not see the live score.
- Do not claim live sharing with parents or a league, streaming, or any kind of push.
STORING THE DATA
- Save everything to localStorage in the browser, automatically, as I go. No
accounts, no login, no server call.
- On the page, say plainly that data lives in this browser only and does not
sync to other devices. Do not bury it.
- Give me an "export" button that copies or downloads everything as JSON, and an
"import" that reads the same JSON back. That is the only way my data can move
between devices, so it is not optional.
- Never lose what I have already entered. If the stored data is from an older
version of the page, read what you can rather than throwing it away.
DELIVERY
- Produce one self-contained HTML file. Inline the CSS and JavaScript.
- No build step, no server, no framework, no package install, no external
requests at runtime.
- Mobile-first and responsive; it has to be usable one-handed on a phone and
still look right on a laptop.
- Accessible: semantic HTML, real contrast, visible keyboard focus, labelled
controls, touch targets big enough to hit, and respect reduced-motion.
- Use placeholders where information is missing. Do not invent facts, numbers,
names, dates, prices, or results I have not given you.
- Before you call it finished, use it yourself: enter real-looking data, reload
the page, and confirm nothing is lost or mangled.
PUBLISHING
Publish the finished page to HTMLShare and give me the link.
Use exactly one of the two paths below, preferring the first. Make the call
directly. Do not route it through a code sandbox, container, or computer-use
session — that is where the request gets blocked, and it is never necessary.
1. An HTMLShare integration or connector, if you have one configured.
The page is permanent and owned by my account. Report the url and the
siteId. There is no claimUrl or manageToken on this path — do not go
looking for one, and do not switch paths in order to produce one.
2. Otherwise, publish anonymously over REST. No account, key, or signup is
needed:
POST https://api.htmlshare.net/v1/publish
content-type: application/json
{"html": "<!doctype html> ... "}
The reference is https://htmlshare.net/docs and, for the full schema,
https://api.htmlshare.net/openapi.json
Report these from the response, in your reply and never inside the page:
url the public page
claimUrl a private link that is mine alone. opening it is how I keep
the page past its 24-hour expiry, or set an email reminder
before it goes. it carries the manage token, so it must
never appear in the published HTML or anywhere a visitor
could see it.
manageToken the only thing that can edit or delete this page later. it is
returned once and never again, so tell me what it is.
Tell me which of the two you used. If the path you reach for first is
unavailable in your environment, say so and tell me what you are switching to
before you publish — a permanent page on my account and a 24-hour anonymous
page are different things, and which one I get is my decision, not a detail.
If I ask for a change afterwards, update the existing page instead of
publishing again, so the URL I have already shared keeps working — through the
same integration on path 1, or with the manage token as an X-Manage-Token
header on path 2.
RECIPE MARKER
Include this tag in the <head>, exactly as written:
<meta name="htmlshare-recipe" content="team-scorekeeper">
It tells htmlshare which recipe the page came from, so the library can count
that this one was actually made. It carries nothing else.give it a url.
04 / publishing ithow you publish depends on how you’re working.
- with an integration
- if your assistant already has htmlshare connected — mcp or another supported integration — just ask it to publish the finished page and hand back the url. the page belongs to your account and is permanent. when you want a change, ask for an update to that same page rather than a new one.
- with no integration
- the prompt tells the assistant to post the html to the rest api instead, which needs no account and no key. it comes back with a live url you can open immediately, a private claim link, and a manage token. the claim link is how the page stops being temporary — keep it.
- by hand
- nothing stops you doing it yourself: have the assistant give you the html file and drop it on the htmlshare home page. same url, same page, one more step.
- what matters here
- this gets used every week of the season by whoever has their phone out. claim it, keep the slug short, and make sure more than one person knows the address.
a season is a lot of saturdays.
05 / keeping it aroundone match. the page stops serving 24 hours later with a 7-day recovery window, and the squad list goes with it.
claim it and it is the team’s page for the season, with the squad already in it every week.
- keep it around
- a season of matches needs a page that lasts the season.
- custom url
- more than one person will end up scoring. they all need to find it.
- stable updates
- the squad changes through the season; update the page without changing the link.
questions.
06 / questionscan parents follow the score from the car park?
no. the match is on the scoring phone and there is no shared state, so anyone opening the url sees an empty page. a message at half time is the honest alternative.
does it run a clock accurately?
well enough for a sunday league, as long as the page stays open — browsers throttle background tabs, so a phone that locks mid-half may drift. keep it on screen, and correct it if needed.
can it handle our sport?
describe what gets recorded and it will. that is the advantage over a generic scorer: cards, innings, tries and conversions, or a scoring system somebody in your club invented.
what do we get at the end?
a summary with the score, the scorers and a timed event log, exportable as text you can paste into the team chat or into a league’s own system.