ninety seconds, then go again.
the rest timer is the smallest useful thing in this library and the one most likely to be ruined by advertising. you want a big number counting down, a noise at the end, and a button to start it again.
what you get from a store is a timer wrapped in a subscription, or a phone clock app with three taps between you and ninety seconds.
ask for the timer instead. your intervals, your sound, one screen. it takes a minute to build and it is the fastest way to see this whole loop work end to end.
a countdown and nothing else.
01 / what it isthis is the least ambitious page in the library and the one most likely to get used daily. it counts down, it makes a noise, it starts again. the only reason to build your own is that the ones you can install are not this.
it is also the recipe to try first if you have never asked an agent for software. one message, one file, one url, and something you will genuinely open tomorrow — the whole loop in about two minutes, with nothing to lose if it comes out wrong.
- a countdown you can read from the floor
- your own presets, one tap each
- a sound and a vibration at zero, both of which you can turn off
- interval mode if you want it — work, rest, rounds
- a screen that does not sleep while the timer runs, as far as a browser can manage
- what it does
- counts down, signals at zero, repeats — with presets you defined
- what it stores
- your presets, in this browser only. no session history at all
- offline
- works once loaded; there is nothing to fetch while it runs
- the browser limits
- a web page cannot reliably run in the background or wake your phone. keep it on screen
see one in action.
02 / examplea three-preset timer — 90s, 3min, and a 40/20 interval set
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 rest timer as a single web page for use on my phone at the gym.
Ask me first:
- What rest lengths I use most, so they can be presets.
- Whether I want a simple countdown, an interval timer (work/rest/rounds), or both.
- What should happen at zero: a sound, a vibration, a colour change, or some combination.
Keep the interview to those. Do not invent intervals for a training style I did not describe.
WHAT IT DOES
- One screen. The countdown is the largest thing on it by a long way — readable at arm's length, sitting on a bench, in bad light.
- My presets are buttons along the bottom. Tapping one starts it immediately; there is no "set up timer" step.
- A big start/stop control and a reset. Tapping the countdown itself restarts the current preset, because that is the gesture I will reach for.
- At zero: play a short sound, vibrate if the browser allows it, and change the screen colour so it works with the sound off. Let me mute it.
- Interval mode, if I asked for it: work seconds, rest seconds, number of rounds, and a clear display of which round I am in.
- Add and edit presets in the page itself, and remember them for next time.
- Keep the screen awake while a timer is running if the browser supports it, and do not pretend to if it does not.
DESIGN
- Enormous numerals. Everything else small and out of the way.
- High contrast, works in a bright gym and a dark one.
- No animation except the countdown itself. Nothing that draws attention while I am mid-set.
BE HONEST ON THE PAGE
- Note that presets are stored in this browser only.
- Do not claim background timing, lock-screen controls, or notifications. A web page cannot do those reliably, and a timer that silently stops when the screen locks is worse than no timer — say that the page needs to stay open.
- Do not invent a training protocol or tell me how long to rest.
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="rest-timer">
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
- you will open this between sets, which means the only thing that matters is that it is one tap away. claim the page, give it a short slug, and add it to your home screen before you use it once.
a timer is only useful if it is already there.
05 / keeping it aroundperfect for testing — publish it, try it for a session, see whether the sound is loud enough. it stops serving 24 hours later, with a 7-day recovery window behind that.
claimed, it stays at one short url forever, which is what makes it a home-screen icon rather than something you rebuild.
- custom url
- this is a page you re-find by typing. a short slug you chose beats a random id you have to search for.
- keep it around
- a timer that expires overnight is a novelty. claimed, it is on your home screen for as long as you train.
- stable updates
- you will want a fourth preset eventually. changing the page at the same url means the icon keeps working.
questions.
06 / questionswill it keep counting if i lock my phone?
probably not, and no page should promise it will. browsers throttle or suspend a backgrounded tab, so the honest design is a timer that stays on screen — which the prompt asks it to say out loud rather than failing silently mid-set.
why not just use the clock app?
use it if it is fine. this wins on the two things a clock app is bad at: your exact rests as one-tap buttons, and nothing else on the screen. it loses on background timing, which is a real trade.
does it need signal?
only to load. after that it is a self-contained file, so it counts down in a basement gym with no bars at all.
can i have different timers for different sessions?
yes — either more presets on one page, or a second page for a different sport. these cost a message each, so people often end up with two.