- Home
- Skills
- Frontend & Web Apps
- Minimal Site Studio
Works with the AI Agents you already use
Minimal Site Studio
Builds complete minimalist static websites and one-pagers in seven bundled writing styles, with an optional privacy-first flavor and a pre-ship quality checklist.
$12
Minimal Site Studio
Example session with this skill installed
Build me a one-page site about my work. I write software most weeks, and I take small build jobs for anyone who asks: shops, farms, studios, whoever needs something that works. Dark, minimal, a purple accent, nothing cute. I don't know which writing style to pick; show me the options and choose for me.
- Read your context and instructions
- Compiled the minimal site studio
- Generated the app files
Two choices first, then the build. The layout is the resume and portfolio pattern: one page about your work serves a recruiter, a neighbor, and a client the same way. Here are the seven writing styles with one line each:
| Style | Sample line |
|---|---|
| Plain Professional | We repair commercial espresso equipment in the metro area. Field service runs Tuesday through Saturday. |
| Warm Direct | You want bread that was baked this morning, by someone who lives nearby. |
| Editorial Understatement | The studio has two chairs and one window. We book four cuts a day and keep the coffee decent. |
| Engineer's Plain | The indexer handles 12,000 documents per second on a single core. |
| Bold Declarative | Built for night shifts. Charges in twenty minutes. |
| Dry Wit | Our bookkeeping service costs less than the fine you would otherwise pay. |
| Manual Plain | Open the config file in any text editor. Set the retry value to 3. |
I went with Editorial Understatement: your page has to sit well with any reader, and quiet specifics age the best. The dark theme runs the design system's quiet inversion: off-white on near-black, one purple accent, flat CSS.
What I built
index.html(6.2 KB): one self-contained page on the shared design system.
A sticky wordmark bar with anchor links, a hero with the monospace tagline, one accent word, and two buttons.
A numbered box trio that redirects to the page's three doors, numbered points for the working terms, and numbered work boxes for the selected work.
System fonts, inline CSS, an inline SVG favicon as a data URI, no scripts, no web fonts, no third-party requests._headers(331 B): referrer, content-type, frame, permissions, and content-security policies, ready for Netlify or Cloudflare Pages.
Pre-ship checks: title 39 characters, meta description 111 characters, exactly one h1, headings in order, viewport set, and every anchor link resolves to a real section id. The box grid wraps to one column at 320 px, contact is a mailto link, and text contrast sits well above 4.5 to 1 in both directions, the filled button's label included.
The scrub found one stacked triad in the first draft and kept the truest of the three words; everything else passed on the first read.
index.html:
<!DOCTYPE html>
```html
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
```
<title>Rowan Calder: software and small builds</title>
```html
<meta name="description" content="Software most weeks, small builds for anyone who asks. One page, no tracking, a thirty-minute call starts most work.">
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Crect width='16' height='16' rx='3' fill='%23100e14'/%3E%3Ccircle cx='8' cy='8' r='4' fill='%23a78bfa'/%3E%3C/svg%3E">
<style>
:root{color-scheme:dark}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",sans-serif;line-height:1.65;color:#e6e2ee;background:#100e14}
a{color:#b9a0ff}
.bar{position:sticky;top:0;z-index:2;background:rgba(16,14,20,.82);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid #262033}
.bar-in{max-width:880px;margin:0 auto;padding:.72rem 1.5rem;display:flex;justify-content:space-between;align-items:center}
.mark{font-weight:600;letter-spacing:.01em;color:#e6e2ee;text-decoration:none}
.dot{display:inline-block;width:.45rem;height:.45rem;background:#a78bfa;border-radius:50%;margin-left:.4rem}
.bar nav a,.bar nav span{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.78rem;margin-left:1.1rem;color:#cfc8dd;text-decoration:none}
.bar nav span{color:#8f86a0}
.wrap{max-width:880px;margin:0 auto;padding:0 1.5rem}
.prose{max-width:680px}
.tagline{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.85rem;color:#a78bfa;margin:3rem 0 .9rem}
h1{font-size:2.1rem;margin:0 0 1rem;letter-spacing:-.01em;line-height:1.2}
h1 .acc{color:#a78bfa}
.lede{color:#a89fbb;font-size:1.05rem;margin:0 0 1.6rem}
.btns{margin:0 0 3.2rem;display:flex;gap:.7rem;flex-wrap:wrap}
.btn{display:inline-block;padding:.55rem 1.05rem;border-radius:.45rem;font-weight:600;font-size:.95rem;text-decoration:none}
.btn-p{background:#a78bfa;color:#100e14}
.btn-q{border:1px solid #3a3350;color:#cfc8dd}
h2{font-size:1.15rem;margin:2.6rem 0 .3rem}
.sub{color:#8f86a0;font-size:.92rem;margin:0 0 1.2rem}
.boxes{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:.9rem;margin:1.2rem 0 0}
.box{border:1px dotted #3a3149;border-radius:.55rem;padding:1rem .95rem}
.tag{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.78rem;color:#a78bfa;margin-bottom:.45rem}
.box h3{font-size:.98rem;margin:0 0 .3rem}
.box p{font-size:.9rem;color:#a89fbb;margin:0 0 .6rem}
.box a{font-size:.85rem}
.point{display:flex;gap:.8rem;margin:0 0 .9rem}
.ptag{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:#a78bfa;font-size:.8rem;padding-top:.28rem}
.point p{margin:0}
.point strong{color:#b9a0ff;font-weight:600}
.year{color:#8f86a0;font-weight:400;font-size:.82rem}
footer{margin-top:3.4rem;border-top:1px solid #262033}
footer .wrap{padding:1.1rem 1.5rem;color:#8f86a0;font-size:.85rem}
</style>
</head>
<body>
<header class="bar"><div class="bar-in">
<a class="mark" href="#">rowan calder<span class="dot"></span></a>
<nav>
<a href="#what">what i do</a>
<a href="#work">selected work</a>
<a href="#contact">contact</a>
</nav>
</div></header>
<main class="wrap">
<p class="tagline">// SOFTWARE, SMALL BUILDS, CAREFUL WORK</p>
<h1>Small builds that <span class="acc">hold.</span></h1>
<p class="lede">I write software most weeks and build small things for people who need them: a page for a shop, a signup list for a farm, a schedule that stops falling over.</p>
<div class="btns">
<a class="btn btn-p" href="mailto:hello@rowancalder.example">Say hello</a>
<a class="btn btn-q" href="#work">See the work</a>
</div>
<div class="boxes">
<div class="box"><span class="tag">01</span><h3>Software</h3><p>Internal tools, data cleanups, integrations that hold.</p><a href="#what">what i do</a></div>
<div class="box"><span class="tag">02</span><h3>Small builds</h3><p>Pages, forms, and lists for shops, farms, and studios.</p><a href="#work">selected work</a></div>
<div class="box"><span class="tag">03</span><h3>Contact</h3><p>A thirty-minute call settles most questions.</p><a href="#contact">say hello</a></div>
</div>
<section id="what" class="prose">
<h2>What I do</h2>
<p class="sub">The shape of a usual month.</p>
```
<p>Most weeks I write software: internal tools, data cleanups, integrations between systems that barely speak. The rest of the time I build small things for people who need them. If it fits in one person's head, I can build it.</p>
```html
</section>
<section class="prose">
<h2>How I work</h2>
<div class="point"><span class="ptag">01</span><p><strong>Four at a time.</strong> I never carry more than four jobs, so each one gets a real week.</p></div>
<div class="point"><span class="ptag">02</span><p><strong>Fixed scope.</strong> Larger work gets a written scope and a date before I start.</p></div>
<div class="point"><span class="ptag">03</span><p><strong>Priced by the job.</strong> One number, agreed up front, no meters running.</p></div>
<div class="point"><span class="ptag">04</span><p><strong>Full handover.</strong> Files, accounts, the lot. You own everything I make.</p></div>
</section>
<section id="work" class="prose">
<h2>Selected work</h2>
<div class="boxes">
<div class="box"><span class="tag">01</span><h3>Voss Coffee Roasters <span class="year">2025</span></h3><p>One page and a delivery list for their Monday run. The owner runs it herself now, and the bag count is up forty from last season.</p></div>
<div class="box"><span class="tag">02</span><h3>Harrow Field Farm <span class="year">2024</span></h3><p>A signup page for a weekly vegetable box. Payments stay at the farm gate; the page keeps the list straight.</p></div>
<div class="box"><span class="tag">03</span><h3>Linden Studio <span class="year">2026</span></h3><p>A project page and a quiet portfolio. Their words, my layout, two afternoons.</p></div>
</div>
</section>
<section id="contact" class="prose">
<h2>Say hello</h2>
```
index.html
ZIP · project files
Example file from a real run - the skill writes it into your workspace.
Connects securely to your tools. The creator never sees your data.
About this skill
Builds small, text-first static websites from a short brief: one-pagers, product pages, docs, link hubs, and resume or portfolio pages, delivered as self-contained HTML files that load in a single request and read like a person wrote the copy.
What it does
- Writes in a named voice. Seven bundled writing styles, each with rules and sample sentences the agent imitates: Plain Professional, Warm Direct, Editorial Understatement, Engineer's Plain, Bold Declarative, Dry Wit, Manual Plain. Name a style at the start, or the agent shows one sample line per style and asks you to pick.
- Scrubs machine tells from every line. A mandatory copy pass hunts punctuation dashes, negation-contrast framing, robotic triads, hype filler, essay openers, and benefit-stacking fragments. The scrub runs on the draft before any HTML exists, and again at the end.
- Lays pages over a shared design system. Sticky top bar, hero with a monospace tagline, numbered link boxes, section heads, quiet buttons, and a footer formula, in light or dark. Six curated layout patterns cover the one-pager, product page, plain docs, link hub, resume and portfolio, and project page.
- Ships a privacy-first flavor on request. System fonts only, no scripts or analytics, a mailto contact, an inline favicon, and a ready
_headersfile with referrer, frame, permissions, and content-security policies for Netlify or Cloudflare Pages. - Verifies every build before delivery. A pre-ship quality gate checks the size budget, external-request count, title and meta lengths, heading order, readability at 320 px, and accessibility contrast, and the delivery note reports the results.
How it works
You bring the brief: what the site is for, who reads it, and the one thing a visitor should do after reading. The agent proposes or takes a writing style, drafts the copy, runs the scrub, then builds the page as one self-contained HTML file with inline CSS and a system font stack. Delivery is the finished file plus a note naming the layout, the style, the file sizes, the request count, and what to check at your host.
Why this beats prompting it yourself
A bare prompt carries no writing style to imitate and no scrub to catch its tells, so the copy comes back with the machine rhythms in it, and the layout comes back as the gradient hero and card grid the model reaches for first. This skill bundles both the style corpus and the scrub, ties every box, bar, and button to a real link or action, and reports checks a bare prompt never runs: request count, size budget, heading order, readability at 320 px. The output is finished plain HTML that any static host serves as is, with no frameworks, no build tooling, and no accounts to connect.
Known limitations
The skill builds plain HTML and CSS. Contact forms with a backend, client-side interactivity, and e-commerce stay outside its scope, and contact runs through a mailto link. Multi-page sites ship as self-contained pages linked with relative links, one file per page.
How to use
Skills on Agensi run inside your AI agent. Copy the prompt, paste it into your agent, and it connects to Agensi and installs this skill for you. If a payment is needed, your agent shows it to you first.
Reviews
No reviews yet
Be one of the first to try it. Every listed skill passes our trust checks below.
Security scanned
Passed our 8-point scan before listing
Fresh listing
Recently published to Agensi
Money-back guarantee
Doesn't do what its page promises? You get your money back.
Trust & safety
Security scanned
Verified clean 1 day ago
- Passed all security checks, Safe to install