Omni1 · Team handover · 2 September 2026

Factory Skills: how we ship websites and UI with AI, without Dominik in the loop

Every important decision is made before the page is built, at the point where changing it costs one sentence instead of a rebuild. This page explains the idea, the six gates and what we ask of you.

ForEnes (build, tech, skill owner)
Tayfun (copy, SEO, launch checks)
FromDominik
Source of the ideaAnton, mastermind call, 2 Sep 2026
Repo copyWebdev/website-factory/ in omni1-projects
This is an ownership brief, not a task list. You get the concept, the principles and the decisions already made. How you build it is yours. Read it once end to end, then let's talk.

01Why this, why now

Two things happened in the same day.

In our morning calls we agreed that the Superapp UI is unstructured: every tool sits at the same level, nothing tells the user where to look first. You two now own the UI. That is the right call. Tayfun uses the tool most, and Enes had the better ideas for it.

In the afternoon Anton showed how he builds websites with Claude today. He built a "Website Factory" skill for an agency in two to three hours. With that skill he relaunched the Digital X Results website in 45 minutes, from start to live, without touching the content. Everyone who saw it said the site feels much more valuable now. Same model as before. What changed: every decision had already been made before the AI started building.

Omni1 sells webdesign as part of Profit Marketing. We want to serve hundreds of clients at some point. That only works if a team member, or an agent, can ship a good website without Dominik reviewing every step. A factory skill is how we get there.

02What a factory skill is, and what it is not

Anton sorts skills into three kinds.

Generic skills

"How to write a Facebook creative." Mostly pointless. The model already knows this, and every new model generation makes such skills more obsolete. Throw them out regularly and test whether it works better without them.

Context skills

"Here is where the data lives, here are the API keys, here is how to pull a Loom transcript." Cheap to build, very useful. No step-by-step guide, just the context the task needs.

Factory skills

Context engineering: a fixed sequence of decision gates that build on each other, so that by the time the AI starts producing, it can deliver 95 percent of the desired result on its own.

Every important decision is made before the page is built, at the point where changing it costs one sentence instead of a rebuild.

The name comes from the division of labour. The human makes the relevant decisions, the AI executes. AI is excellent at execution. It has no way of knowing what you want. A normal chat session ("build me a landing page, I'll give feedback") makes hundreds of micro-decisions silently, and you spend your time correcting the wrong ones after the fact. The factory pulls those decisions forward and makes them explicit. It takes real thinking to design the factory once. After that, the work is systematic and can be handed to anyone on the team.

03The six gates

This is the website factory as Dominik wants it for Omni1. Anton's version has five gates. We name animation explicitly in Gate 3, because that was the open question in the call.

Gate 0Context drop Gate 1Design Gate 2Structure and copy complete? approved? no: rework no: rework approved? no: rework Gate 3Graphics, features,animation, images Gate 4Mobile Gate 5Build plan approved? approved? no: rework no: rework plan approved? Build slice by sliceshow, tick off, ask: next slice or change course? separate go for live? Live a later insight overturns an earlier decision:go back, change the document, approve again Gate 0 is a completeness check. Gates 1 to 5 each end with a stop and an explicit yes. Gates are never merged or skipped. Staging is free, going live needs its own go.
GateInputWhat the AI producesWhat gets decidedFile
0 · Context dropBrand book, Figma selection, who the client is and what the page must achieve, current homepage, booking or contact path, facts (address, hours, team, ratings, prices)A completeness check and a list of what is missingMode: Website or Landing Page. Whether this is a project at all or a quick fix. Nothing moves on until the list is complete00-status.md
1 · DesignContext from Gate 0A token set (colours, fonts, accent mechanic, section rhythm) and a design probe: one HTML file with two or three sections (hero, one light content section, one dark poster section)"Yes, this is the look." CI assets are mandatory here: fonts as woff2, logo as SVG. No silent fallback to similar fonts01-design.md plus the probe
2 · Structure and copyApproved design, the structure canon, client vocabulary (transcripts, briefs, old site)Page tree, section selection, copy written directly into the page in the approved design, images as marked placeholdersStructure from the canon, deviations only with a reason. Formal or informal address, decided once (Omni1 rule: formal before the first call, informal after). One CTA wording per page02-structure.md
3 · Graphics, features, animation, imagesApproved page with placeholdersGraphics from the building-block library, never from zero. Features chosen per project. Animations planned here (proven ones live in the library, new ones are decided here). Real images only. Conversion wired: every CTA to the booking tool, tel and WhatsApp linksWhich blocks are fix (dress in tokens only) and which are variable (reinterpret per CI). Which features this client gets. A shot list for missing photos. Gate 3 can be approved with documented gaps, launch cannotshot list in 00-status.md
4 · MobileComplete first pageA dedicated mobile pass at about 390 px and 768 px: no horizontal scroll, touch targets, headline breaks, hero crops, table and marquee behaviour, image weight. Screenshots of both viewports, plus a real phone test on stagingMobile-specific blocks (sticky CTA, mobile navigation)screenshots
5 · Build planOne page that is finished end to endA plan of everything still missing, one line per slice, in build orderThe order, and the go for the plan. Then slice by slice: show it, tick it off, ask "next slice or change course?" Going live gets its own, separate go05-build-plan.md

At every gate the question is the same: "Approve Gate N, or what should be different?" A clear yes is approval. Anything else means rework and ask again.

04The approval protocol

The same six steps at every gate. This is what makes the factory safe to hand to someone else.

  1. Write the gate document to disk, or update the page. Nothing important lives only in the chat.
  2. Summarise in the chat for a marketing person without dev knowledge. Marketing terms (hero, CTA, conversion) are fine, code jargon is not. Two to four small headings, about a dozen sentences, plus the path to the file.
  3. Ask, in these words: "Approve Gate N, or what should be different?"
  4. A clear yes is approval. Anything else means rework, then ask again.
  5. On approval, set the gate to APPROVED in the status file and move on.
  6. Backwards is allowed. If a later insight overturns an earlier decision: stop, change the earlier document, set that gate back to "in progress", get it approved again.

The status file

It lives in the client folder and is the first thing a new session reads.

# Status: <client>

Mode: Website | Landing Page
Booking tool: <name and URL>

- Gate 0 — Context drop: open | complete <date>
- Gate 1 — Design: open | in progress | APPROVED <date>
- Gate 2 — Structure and copy: open | in progress | APPROVED <date>
- Gate 3 — Graphics, features, animation, images: open | in progress | APPROVED <date>
- Gate 4 — Mobile: open | in progress | APPROVED <date>
- Gate 5 — Build plan: open | in progress | APPROVED <date>

## Slices
- [ ] Slice 1 — <one line>

## Open photo gaps (shot list)
<or "none">

## Notes for a new session
<everything decided in chat that a new session must know>

Resume rule: if a status file exists for this client, read every document in the folder first, then continue at the first open gate or slice. Never reopen an approved gate unless the user asks or a later gate has overturned it. At the end of every gate and every slice, tell the user this is a safe point to start a fresh session.

05The build plan, explained

This was the confusing part in the call, so here it is slowly.

By the time you reach Gate 5, the first page is already finished end to end.

It has the approved design, the approved copy, the graphics and features, and it has passed the mobile check. For a landing page that means the product is basically done.

The build plan is the list of everything that is still missing around that page. Typical slices for a website:

You write the plan first, one line per slice, and get the plan approved like a gate. Then you build slice by slice. After every slice: show it in the browser, tick it off in the status file, ask "next slice, or change course?" For a landing page the plan is usually empty. For a funnel with several pages, this is where those pages get planned.

Two rules around it. Staging deploys are free. Going live needs an explicit, separate go in that moment. A gate approval is no launch approval.

06Anatomy of the skill folder, and what we build ourselves

Anton's folder looks like this (the screenshot is in the repo folder):

website-factory/
  SKILL.md                    the workflow: gates, approval protocol, standing rules
  references/
    design-prinzipien.md      what premium looks like for this agency, and what is forbidden
    copy-system.md            tone, vocabulary, CTA rules, banned phrases
    master-kanon.md           the proven page structure and standard page tree
    phasen-baukasten.md       the agency's service phases as reusable content blocks
    launch-checkliste.md      everything checked before go-live
    tech-stack.md             the fixed stack and the deploy path
  assets/
    starter.html              the template every new site starts from
    bausteine.html            the library of proven building blocks, FIX and VARIABLE
    impressum-vorlage.md
    datenschutz-vorlage.md
    deploy-inline.py          bundles CSS and JS into one file when the host needs it

We only have the SKILL.md. The references and assets are the agency's own work, and that is the part that makes a factory good. So we build ours, from material we already have.

File in the factoryOmni1 source to build it fromOwner
references/design-principles.mdWebdev/omni1_website/DESIGN-REQUIREMENTS.md, the design skills we already use (design-taste-frontend, high-end-visual-design), Dominik's review notes on dominikkayser.com V4 ("typical AI stuff, delete")Enes with Dominik
references/copy-system.mdbrand-strategy.md from the copy base, the address rule (formal before the first call, informal after), the AI-tells catalogueTayfun
references/master-canon.mdwebsite-konzept.md, the page trees of omni1.ch, ai-kayser.com and dominikkayser.com, the Flow B competitor surveyTayfun with Enes
references/service-phases.mdOmni1's own phases: K.R.A.F.T. analysis, System, Results CentreDominik
references/tech-stack.mdNuxt 4 static build, Hostinger deploy (omni1_website/DEPLOY.md), Vercel for the Astro sitesEnes
references/launch-checklist.mdthe visual-check rule (look at the rendered page yourself before calling it done), SEO basics from the website ownership brief, noindex for internal toolsTayfun (SEO), Enes (tech)
assets/starter.html, assets/blocks.htmlEnes' block designs project is this fileEnes
assets/impressum-template.md, assets/datenschutz-template.mdthe legal texts in omni1_website/site (AGB 20 Aug, privacy 22 Aug)Enes
deploy scriptthe two-door deploy and the rclone ritual we already useEnes

The skill itself goes into omni1-projects/.claude/skills/website-factory/. Claude Code only loads skills from the repo it is running in, so it has to live in the shared repo. A private workspace would make it invisible to your sessions.

07Where Flow A, Flow B and block designs fit

Nothing you built is wasted. It slots into the gates.

Flow B

AI lists 20 competitor sites, you say what you like and dislike and why, AI writes a PRD and builds. That is a fast way through Gate 0 and Gate 1. The later gates still run, because Flow B decides nothing about copy, blocks, mobile or the build plan.

Flow A

Stitch for the visual, 21st.dev for the code, our agent orchestrating. A tool used inside a gate, mostly Gate 1 and Gate 3.

Block designs

The future assets/blocks.html. Keep going with it. Label each block FIX or VARIABLE.

Enes said it himself on 18 August: "the initial design was bad because our project description was bad." Gate 0 exists for that problem. The factory makes the lesson permanent.

08Part two: a light UI factory for the Superapp

Dominik asked Anton the same question you would ask: does this work for app UI, not just websites? Anton's answer for software has three parts.

  1. One design system. Reusable components, so the AI does not reinvent a date picker or a button state every time. For his own product this took a designer a month and a half. We do not need that. We need to write down the components the Superapp already has and treat them as the system.
  2. A mockup step. Before any feature is built, all relevant screens with all relevant states are mocked up inside the design system, and you fine-tune the mockups, not the code.
  3. A UX flow challenge. You tell the AI what you want to build, and it first thinks the user flow through and challenges it with you, before anything is built.

Anton added one caveat: for a website you do not need this depth. For the Superapp we keep it light too.

What we already decided this morning

Suggested light gate sequence per UI iteration

Context and click flowwho uses it, what they do most UX challengethe AI questions the flow Mockups of all statesinside the design system approved? Build Review togetherTuesdays no: rework the mockups worse than before: back to the mockups

Tuesday 8 September is the first review. Dominik's words: "iterate the tool until it's at a functional and nice working level and then I'm fine."

09Standing rules, in every gate

Anti-slop is mandatory. No stock photos, no AI images, no icon-library grids, no generic AI sections, no phrases from the banned list. The system is fixed, the expression per client is unique.

Premium means: real photography, one consistent accent-word system, a warm token palette, custom SVGs, radically short copy, calm motion. More effects make it cheaper, not better.

Images come from the asset library or from the client. The AI never sources images itself.

Report honestly. What has not been checked is not reported as done. Placeholders and gaps are always named.

Context hygiene. Every project folder gets an archive sub-folder. Old drafts and rejected versions go there, so they are not lost, but the AI does not pull them as context for new work. Larger context makes outputs worse, not better. Keep the CLAUDE.md of every repo short and current, it is loaded into every session.

Skills stay few. Before adding a skill, ask whether the model does it better without one.

10What we ask of you

Enes

  • Create omni1-projects/.claude/skills/website-factory/. Start with SKILL.md (gates, approval protocol, status template, standing rules) and the status file template. Anton's file shows the form.
  • Then fill tech-stack.md, design-principles.md (with Dominik), and turn block designs into starter.html and blocks.html.
  • Keep the Superapp UI plan as agreed. Radar first.

Tayfun

  • Write copy-system.md and master-canon.md (with Enes).
  • Own the SEO part of launch-checklist.md.

Together

Open questions for Dominik

Let's jump on a call as soon as you have read this.