the list you already know by heart.
you pack the same things every time and forget a different one each trip. the list exists in your head and gets reconstructed, badly, the night before.
writing it down once is the whole fix. the reason it never happens is that a note becomes stale, and a note with ticks in it is useless the second time.
a page that resets its ticks per trip solves that in about twenty lines. describe your trips, get the page, tick it in the bedroom on your phone.
one list, switchable.
01 / what it isthe reason packing lists do not stick is that every trip is slightly different, so people either keep one list that is wrong for this trip or five lists that have quietly diverged. a page can hold one list with switchable sections, which is the shape that actually survives.
it is a small thing that pays off on a schedule — twice a year, for years. the whole build is one message, and the payback is not forgetting the charger again.
- a base list of the things you take every time
- add-on sets you switch on per trip — beach, cold, work, kids
- grouping by bag or by room, whichever way you pack
- a reset that clears the ticks and keeps the list
- a place to add the one-off item for this trip only
- export and import as json
- what it holds
- a base list, optional add-on sets, and this trip’s ticks
- where that goes
- localStorage in one browser. not shared with whoever else is packing
- between trips
- a reset clears ticks and one-off items, leaving the list intact
- sharing
- send the url and they get the list with no ticks — their own copy, not yours
see one in action.
02 / examplea base list plus three add-on sets — beach, cold, work — and a reset for the next trip
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 reusable packing list as a single web page.
Ask me first:
- The things I take on every trip, regardless of destination.
- The kinds of trips I take, and what each one adds — beach, cold weather, work, travelling with kids, camping, and so on.
- Whether I want the list grouped by bag, by room, or by category.
- Whether anyone else packs from the same list.
Build from my answers. Do not invent a generic travel checklist; use my items.
WHAT IT DOES
- Shows my base list always, plus toggles for each add-on set. Turning on "cold" adds those items to the list rather than opening a separate one.
- Each item is one tap to tick, with big targets — this gets used standing over an open suitcase holding something.
- A clearly separated place to add one-off items for this trip only, which the reset removes.
- A reset for the next trip: clears all ticks and one-off items, keeps the base list and the add-on sets.
- Shows how many items are left, grouped the way I asked, so I can see what is outstanding without scrolling.
- Let me edit the base list and the add-on sets in the page itself.
DESIGN
- Mobile-first and tappable. Ticked items stay visible but recede.
- Readable in a hurry, which is the only time it will ever be opened.
- No animation, no celebration when the list is complete.
BE HONEST ON THE PAGE
- Say that the list and its ticks are stored in this browser only, so a second person packing from the same url sees their own copy, not mine.
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="packing-list">
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 page gets opened twice a year, which is exactly the interval at which you will have lost a random url. claim it and give it a slug you would guess correctly.
the next trip is further away than 24 hours.
05 / keeping it aroundthe page stops serving a day after you publish it, with a 7-day recovery window. that is shorter than the gap between any two trips, which makes anonymous the wrong choice here by default.
claim it once and the list is there for every trip after this one. the value of this page is entirely in being reused.
- keep it around
- the whole value is reuse, and an anonymous page does not survive to the next trip.
- custom url
- you will look for this twice a year. a guessable slug beats digging through browser history.
- stable updates
- the list improves after every trip. update the page, keep the address.
questions.
06 / questionscan my partner tick things off too?
they can open the page, but their ticks are theirs — each browser keeps its own state, so you will not see each other’s progress. the practical answer is one phone does the packing, or you each take a section.
does resetting delete my list?
no. the reset clears ticks and this-trip-only items and leaves the base list and add-on sets alone. the prompt separates those two things deliberately, because conflating them is how these pages get abandoned.
can i have one for camping and one for work?
you can, but the add-on sets usually work better — one page you maintain rather than two that slowly disagree about which charger you own.
what if i get a new phone before the trip?
the page opens fine and the list is part of it. only the ticks are per-browser, and you were going to start those fresh anyway. use the export if you have customised the list heavily in the page itself.