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.
- 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
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
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
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
Patch
The server cleans the new text, keeps a copy of the page, and replaces only the edited byte ranges. Everything else stays identical.
See it at work
Screenshots of Skrid running on a copy of this website.
-
Edit texts Every text Skrid can change gets a dotted outline. The bar stays at the bottom of the real page. -
Click and type A small toolbar appears above the text: bold, italic, link, styles. The bar counts the changes. -
Text styles Right-click a selection: Skrid’s own styles, and styles made of the site’s own classes. -
No silent overwrite Someone changed the page meanwhile: Skrid refuses to save over it and asks you to reload. -
Title, description, history With a Google preview, and every copy kept before a save, ready to view or restore. -
Data files as forms The portfolio’s JSON file as a list of items, written back with the same indentation.
Under the hood
Three small PHP files do the real work. Everything is plain PHP 8, no dependency, readable in one sitting.
-
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.
- One pass over the page, from one
-
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.
-
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
Header and footer
Edit a menu label once, Skrid applies it to every page of the same language, with a copy of each.
Images
Replace a picture, resized on upload, and edit its alternative text.
Lists
Duplicate or remove an item: a card, a date, a question.
New pages
Start a page from an existing one.
Accounts
Editors and administrators, each with their own password.
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.
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.
