Skip to content

BreizhVibe case study

Skrid: write on the page, keep every byte.

Skrid, “writing” in Breton, is a small CMS you drop into any static website. Click a paragraph on the real page, type, save: the change is written into the HTML file itself, and nothing else in the file moves. No database, no build, no template. The site stays your site.

How it worksUnder the hoodWhat comes next

0
database, build step or framework
1
folder to drop next to the site’s index.html
62
pages on six sites, every round trip byte-exact

Twenty years of editing small sites

Small websites are best as plain files: fast, cheap to host, still readable in ten years. Their weak point is the day the owner wants to fix a typo. Either a developer opens the code, or the site moves into a CMS that takes it over: a database, an admin theme, templates that no longer look like the original.

The idea behind Skrid is twenty years old. Two earlier versions went the heavy way: a visual site builder with a database, then a skill that wrapped a static site with overrides and a publish step. In November 2026 it started again with a single rule: the HTML file is the content, and saving changes only the bytes you edited.

It is built the BreizhVibe way: described in plain words, coded with Claude, following the wavedevsimpl rules, and tested on copies of real sites before it ever touched one.

How it works

  1. 1

    Scan

    Skrid reads the page as plain text, once, and notes the byte offsets of every element that holds text and only inline markup.

  2. 2

    Mark

    The page is shown with a number on each editable text and the Skrid bar at the bottom. The site’s own design is untouched.

  3. 3

    Edit

    Click a text and type. Bold, italic, links and the site’s own text styles are one click away. Paste always comes in as plain text.

  4. 4

    Patch

    The server cleans the new text, keeps a copy of the page, and replaces only the edited byte ranges. Everything else stays identical.

A page as a strip of bytes. Two editable ranges are replaced by new text, the last one first; all other bytes are copied unchanged.
One save, two edited texts: only their bytes change. Replacing from the end of the file keeps the earlier offsets valid.

See it at work

Screenshots of Skrid running on a copy of this website.

Under the hood

Three small PHP files do the real work. Everything is plain PHP 8, no dependency, readable in one sitting.

  1. The scanner, scan.php

    • One pass over the page, from one < to the next, with a stack of open elements.
    • Optional end tags closed like a browser does: a new block closes an open <p>, a new <li> the previous one.
    • Editable: explicit end tag, inside <main>, only text and inline tags. The outermost element wins.
    • On a PHP page the code is blanked with spaces first, so offsets hold and the code is never touched.
  2. The save, api.php

    • The bar sends the page, the SHA-1 of the file it was served from, and the new inner HTML of each edited text.
    • Another change in the meantime? The hash differs: 409, reload, nothing is overwritten.
    • The new text goes through the sanitiser, then the byte ranges are replaced from the end of the file to the start.
  3. The safety net, core.php

    • A copy of the page before every save, 30 kept per page, restored in two clicks.
    • Every save, restore and setting change in an activity log.
    • One shared password, CSRF token on every request, a pause after 8 wrong passwords, paths kept inside the site.

What the sanitiser lets in

  • Inline markup only: strong, em, links, spans, line breaks, code…
  • A pasted <div> or <p> becomes a line break; scripts and frames disappear.
  • Links only to pages, anchors, http(s), e-mail and phone; a new tab always gets noopener.
  • The non-breaking spaces French typography wants are kept, the stray ones browsers add are not.

Also in the box

  • Title and description of every page, with a Google preview; the og: copies follow.
  • A form editor for the site’s JSON files, written back with the same indentation.
  • PHP pages: their fixed texts are editable, their code never changes.
  • The editor in French or English.

What comes next

  1. Header and footer

    Edit a menu label once, Skrid applies it to every page of the same language, with a copy of each.

  2. Images

    Replace a picture, resized on upload, and edit its alternative text.

  3. Lists

    Duplicate or remove an item: a card, a date, a question.

  4. New pages

    Start a page from an existing one.

  5. Accounts

    Editors and administrators, each with their own password.

  6. On GitHub

    The code and its documentation, with diagrams of every algorithm, will be published soon.

Skrid on your site?

It runs on any shared PHP host. Tell me about your site, I will tell you if Skrid fits.

Write to me on LinkedInMore BreizhVibe tools

Useful tip

Try Skrid on your Mac with one right-click

Skrid is plain PHP, so PHP’s built-in server is enough to run it. A Finder Quick Action starts that server in any folder and opens it in Chrome: right-click your site’s folder, choose Serve with PHP, then add /skrid/ to the address.

The same tutorial adds two Quick Actions to list the running servers and stop them.

Read the Quick Action tutorial