Preview gallery
Similar Skills
View allWhat you get
- A single offline HTML file of 19 hash-routed pages that reads with JavaScript off and stores nothing in the browser
- Home: the three-column hero with portrait card, drifting client wordmarks, a services index, the collaboration split, a dark band of count-up figures, chosen work, rotating testimonials, a short FAQ and the lime closing band
- About, plus Services and a page for each of the four services, giving prices, timelines and steps, a comparison table and a sticky price card
- A Work index with filters, search and an empty state, and six case studies that each finish on their own working HTML mock-up
- Testimonials, an FAQ searchable by topic, a brief form with inline checks that preselects the service, a privacy page with a table of contents, and a 404
- Schibsted Grotesk and Geist Mono embedded with the icons, and ProfessionalService structured data
Good fit
- Freelance brand, web and product designers who offer a small set of well-defined services
- Small creative studios whose case studies should give visitors something to try
- Independents who want services, process, proof and a brief form on one site
Not for
- Receiving briefs or bookings for real: the brief form and newsletter are previews that send nothing
- Designers who don't have real projects, results or client quotes yet
- Large agencies that need a CMS, lots of authors or dozens of case studies
About this Skill

Freelance designers get hired for how they work as much as for what they have made, and this Skill builds the site around both. You provide real services, projects, clients and answers; your agent hands back one offline HTML file of 19 pages, all on a white sheet framed by a thin lime border. The first screen has three columns: a short hello with your name and offer beside a lime pill, a portrait card with a copy-email button and a pulsing line saying when you are free, and a side column for an award, a two-tone job title and a proof figure. Evidence follows: eight client wordmarks drifting past, a near-black band whose numbers count up, a selected-work grid and testimonials that crossfade. The six case studies go past screenshots, since each closes on a working mock-up drawn in HTML: phone screens, print covers with a toggleable grid, a construction drawing, a tablet whose dial moves, a product range and a browser page. To turn interest into a brief there is a services index, a Services page (cards, phases, a table comparing them), four service pages whose price card stays in view, an FAQ searchable by topic, and a brief form that already knows which service sent the visitor. Also included: About with principles, career path and skills, a split on collaboration illustrated by two process photos, Testimonials, Work with filters and search, a lime closing band, privacy and a designed 404. Headlines are near-black Schibsted Grotesk, pairing an ink phrase with a gray one; Geist Mono sets small data labels, and lime is the only accent. Forms validate inline and tell the visitor the preview sends nothing.
How it works
- Get four services with their real prices and timelines from the designer, plus six projects with measured results and a quote from each client, FAQ answers and a privacy text
- Write the facts into brief.json following the schema; the build makes sure the price of each service, how many projects there are, the rating and the date you are next free match on every page
- Swap the stand-in portrait, the studio pictures, each project cover and the client headshots for the designer's own
- Run the build, which names every gap in the brief in a single pass, figures that contradict each other included
- Validate, then try each filter, mock-up and form in the browser at widths of 390, 768, 1024 and 1440 px before handing it over
Checked before delivery
- validate.mjs passes: single file, one h1 per view, every link resolves, no browser storage API anywhere, no colour in hue 235-300, lime as the only accent, both fonts embedded, no names or sentences from the reference product
- Service prices, the project count, the referral share, the rating and the availability date agree everywhere they appear
- Hero copy button, menu sheet, carousel, FAQ accordions, work filters and search, every showcase, the brief form with its service preselect and the newsletter work at 1440, 1024, 768 and 390 px
What you need before you start
- You bring
- The designer's name, role, studio address, phone, email, domain and the date they next take on work · Four services with a real starting price, timeline, review rounds, inclusions, steps and handover files · Six case studies: client, year, role, the brief, approach and outcome, three measured results, four deliverables, a quote from the client and the mock-up content for one showcase each (phone app, print covers, tablet panel, maker's mark, browser page or product range) · Twelve FAQ answers over four topics, a short career history, three principles, a skills list, the awards worth showing and a privacy text · Eight client wordmarks (names only; the glyphs are drawn for you), a portrait and a studio photo, six project covers and six client headshots
- Dependencies
- Node.js 20 or later · Nothing to install, no keys, no network calls
- Outside costs
- None
- Last tested
- v0.1.1 — Claude Code / Codex / Cursor
User reviews
Loading reviews…
FAQ
Will the brief form email me?
Not until you connect it. Right now it checks each field and shows a panel saying the preview sent nothing; point it at your inbox or a form service before publishing.
What happens if a price differs between two pages?
The build stops. Each service's price, how many projects you show, the rating and your next free date repeat across pages, and they all have to agree before the file is made.
Can the sample clients and quotes stay in?
No. The designer, the clients, their quotes and the results in the example are all invented. Put in real, attributable ones, or take the section out.
Does the site store anything in the visitor's browser?
No. It stores nothing, so it runs in sandboxed previews, and a reload always starts from a clean state.









