one-shot-site
Install

A few questions in. A finished, checked website out.

Answer a few multiple-choice questions and your agent builds the website. It opens the site in a real browser to check it at phone and desktop size, and puts it online when you say yes.

Install it See the six sites it made

You answer once, hence the name. It’s a free agent skill, MIT-licensed.

The film, 28 seconds: a few questions in, a finished, checked website out

What it takes care of.

It covers the work before the site goes live and the small changes after.

  1. For people who aren’t designers, from the first question to the live site.

    You don’t need design words for the questions. Once you’ve answered, it draws a few ideas using your own name, so you can point at one instead of describing it, and one of them is always a classic layout. At the end it publishes the site and checks the live copy.

    Warm: the café’s line in a soft serif on cream, beside a frame for its own picture. Bold: KLEINER KAFFEE in huge white letters on roast brown. Quiet: a warm white page, a thin serif headline low down and a lot of space.
    Not sure how it should feel? Here one café’s name and line are drawn Warm, Bold and Quiet. You just point at one.
  2. Checked before it goes live.

    There’s an audit at the end, and the run doesn’t stop until it passes. The audit looks at the link previews, tries every link, runs axe-core’s accessibility rules and measures how much a first visit downloads. I also had it film the motion, because something that jumps only shows up over a few seconds. A German business gets an Impressum and a privacy page as well. Whatever fails gets fixed, and the audit runs again until it says “Ready to ship”.

    The audit, before it hands over

    • Title, description and link previews
    • Every link, inside the site and out
    • Keyboard focus, contrast and axe-core’s rules
    • The weight of a first visit
    • Motion, filmed: nothing jumps, nothing loops forever
    • An Impressum and privacy page, where the law asks

    Ready to ship or it doesn’t go online.

  3. Easy to keep up to date.

    Opening hours, prices and events sit in one file. Say you’re closing on Christmas Eve: you tell your agent “We’re closed on the 24th” and it takes care of it. Each change is saved, so you can undo it later.

    We’re closed on the 24th.

    site.json"closed": [{ "from": "2026-12-24", "to": "2026-12-24" }]

    Kleiner Kaffee · Visit

    Tue–Sat
    08:00–17:00
    Sun
    10:00–16:00
    Mon
    Closed

    Closed on Thursday 24 December

    Your agent turns that sentence into one new line in site.json. The page and the opening hours that search engines read both come from that file, and the change is saved with the note “Closed on 24 December”.

One run, start to finish.

I made up Kleiner Kaffee for this run, a coffee bar in Saarbrücken with eight seats and a drum roaster. Here is what the run showed, in the order it happened.

  1. It asks.

    The owner clicked through the multiple-choice questions and then sent one message with the address, the seats and the roasting day. That was the whole input, and nobody wrote a prompt.

    Answers: A small business · Warm · Pick colours for me · Gentle motion · Goal: visit · No extras

    “Kleiner Kaffee, 8 seats, Röstergasse 12, Saarbrücken … Roasts its own beans every Tuesday in a 5 kg drum roaster … No photos.”

  2. It thinks of three ideas.

    Before it wrote any code it wrote a brief, which is a plain text file about the café and what its site has to do. It took its ideas from there and drew them with the café’s own name and words, so the owner wasn’t looking at dummy text. For a Warm site like this it recommended the classic layout, with the roaster big beside the headline and the hours and address under it.

    Idea A, the roaster on Röstergasse: the headline beside a large drawing of the drum roaster. Idea B, the board over the counter: the four lines of the menu and their prices, large. Idea C, eight seats: the headline beside a row of eight stools at the counter.
    A is the one it recommended.
  3. It shows three first screens.

    Next it built the top of the page a few different ways, each at phone and desktop size, so the owner could see every version on a phone as well as a laptop. One of them is always the classic, which here meant a simple split. Normally it would use photos, either the owner’s or free ones it finds, but the owner had said there were none, so the roaster stayed a drawing.

    First screen A: the headline, the opening hours and the button on the left, the drum roaster drawn large on the right. First screen B: three columns, the headline, the roaster, and the hours with the address. First screen C: the headline in cream on a roast-brown field, the roaster beside it.
    The owner picked A, the classic split.
  4. It looks, and a reviewer checks.

    After that it photographed every page at phone, tablet and desktop width and filmed the scrolling, then fixed what was off. A second agent that hadn’t seen any of the work reviewed the site next and wrote down what bothered it most. Those fixes went in too.

    The café’s first screen with pink number tags on its parts: 1, 1a, 2, 2a, 2b and 2c.
  5. It audits, then you point.

    The run can’t finish until the audit says “Ready to ship”, and you can see the café’s audit here. Then the screenshots come back with small pink numbers on every part, and the owner can write something like “make 2c bigger” instead of describing which bit they mean.

    # Audit: Ready to ship.

    All clear.

    • axe-core on /, /impressum.html and /datenschutz.html: no violations.
    • /: first visit 111 KB (JS 1 KB, CSS 5 KB, fonts 54 KB gzipped)
  6. It goes online.

    You decide where the site lives, and nothing goes up until you say yes. Once it’s online it opens the real address to check it, and it leaves an EDITING.md file that explains how to change things later.

    Open it on its own

    Kleiner Kaffee, as published

    The finished café site: its first screen.

No two of these sites look alike.

Each site came from one run. The address bar shows the answers that run was given, along with a few lines about a made-up business. These are the actual sites running here on the page, so you can scroll inside one or open it in its own tab.

Try the questions.

These are the skill’s first four questions, word for word and in the same order. Pick an answer and the next one shows up. At the end you’ll see which of the six sites came from answers closest to yours.

A real run asks two or three more after these, then asks for your text and photos. It won’t ever ask you for hex codes or font names.

Your answers go here

1 of 4 What’s the site for?
2 of 4 How should it feel?
3 of 4 Colours?
4 of 4 How much movement?

Give it your old site. Your words and facts stay.

Say “redesign my site” and paste the link. It reads every page first and keeps your text, photos, opening hours and contact details. Its questions are only about the look, and when it’s done you can see each old page next to its new version.

After: the workshop's new first screen, a stencil headline and a yellow repair tag with the prices.
Before: the workshop's site from 2008, a yellow menu column and a banner in a comic-book font.
Fahrrad Hollerbach is a bike workshop in Trier that I made up. Each old page became a section of the new site, and the old links still lead to the right place. Every page, old and new

Install it, then say “make me a website”.

  1. Install it with one command:

    npx skills add Barabosik/one-shot-site -a claude-code
  2. Open your agent in an empty folder.

  3. Say “make me a website”.

Every way to install Needs Node 22.12 or newer, git, and Chrome, Edge, Brave or Chromium.

Install one-shot-site

You can install it with npx skills, as a Claude Code plugin, or by copying the folder by hand. Each way puts the same folder where your agent looks for skills.

Any agent recommended

With npx skills, for Claude Code, Codex, Cursor and other agents.

npx skills add Barabosik/one-shot-site -a claude-code

-a claude-code (or codex, cursor) names your agent. Without it, the skill can land in a folder for each of about 20 agents. Add -g to install it for every project instead of this one.

Claude Code plugin

Inside Claude Code, one line at a time:

/plugin marketplace add Barabosik/one-shot-site
/plugin install one-shot-site@one-shot-site

From a terminal it’s the same with claude plugin in front: claude plugin marketplace add Barabosik/one-shot-site, then claude plugin install one-shot-site@one-shot-site.

By hand

Copy one folder, skills/one-shot-site, from the repository:

git clone https://github.com/Barabosik/one-shot-site

Claude Code reads .claude/skills/ in a project and ~/.claude/skills/ for every project. Codex, Cursor, Gemini CLI and GitHub Copilot read .agents/skills/ and ~/.agents/skills/.

What happens next

  1. Open your agent in an empty folder. The site gets built right there.
  2. Say “make me a website”. If you already have a site, say “redesign my site” and paste the link.
  3. Answer six or seven questions. Then send what you’ve got, and if that’s nothing, “Skip, write it for me” is fine.
  4. Pick an idea, then a first screen. There are three of each, with your own name on them.
  5. Wait while it builds and checks. You’ll get numbered screenshots, a short film of the scrolling and the audit result.
  6. You say where it goes. It won’t publish anything until you say yes.

You need

  • Node 22.12 or newer, and git
  • Chrome, Edge, Brave or Chromium
  • An agent that runs shell commands. Built and tested in Claude Code; others should work but are untested.

It’s free and MIT-licensed. The skill has no server and doesn’t report back to anyone. Source on GitHub

Help make it better.

If a run went wrong for you, please open an issue and tell me what happened. The answers you gave help a lot, and so does the brief from .one-shot/brief.md if you still have it.

Pull requests are welcome once there’s an issue for them, so we can agree on the change first. Each one has to pass npm test on Linux, macOS and Windows. If you change how sites get built, add the examples’ scores from before and after.

Questions before you install

Does it need a server?

No. You get plain static files (HTML, CSS, JavaScript, fonts and pictures) built with Vite and no framework, and every file is yours. GitHub Pages hosts them for free from a public repository, which is the route the tests cover. It can also publish to Vercel, Netlify or Cloudflare, use your own domain, or just hand you the folder.

What leaves my computer?

The skill has no server and doesn’t report back to anyone. Its checks run in your browser, on a copy of the site on your computer. It does need the internet to install Vite, axe-core and the fonts from npm, plus GSAP or three.js when an add-on uses them. The looks are drawn with fonts loaded from Fontsource through cdn.jsdelivr.net. When you have no photos, it searches Openverse or Wikimedia Commons unless you’ve said no, and downloads the ones you pick from wherever they’re hosted. It opens any site you name and tests the site’s outside links. Publishing happens only after you’ve said yes. You log in to your host yourself, and it never handles passwords or tokens. Your agent still sends your messages to its model provider, as it does in any session.

How do I change it later?

Hours, prices and events live in one file, site.json. Tell your agent “we’re closed on the 24th” and it edits that file and checks the screens that changed before it publishes again. Every change is saved in git, so you can undo any one of them.

What does it cost?

The skill is free and MIT-licensed. Your agent costs what it normally costs, and a full run is a long session because the agent looks at a lot of screenshots. GitHub Pages hosts a site like this for free from a public repository. Netlify and Cloudflare have free plans too, and Vercel’s free plan is for non-commercial use, so a domain name is probably the only thing you’d pay for.

Which agents does it work with?

I build and test it in Claude Code. It uses the open Agent Skills format, so Codex, Cursor and other agents that run shell commands can load it, but I haven’t tested those yet. If your agent has a question picker you’ll get clickable choices. Otherwise it’s a numbered list and you reply with “2” or “1,3”.