Skip to content

Cellprose website ​

The project site: home, a playground, docs and benchmark results, in the "Live Sheet" look (the page itself is drawn as a spreadsheet). Built with VitePress.

bash
cd site
npm ci
npm run dev        # http://localhost:5173
npm run build      # static site in .vitepress/dist
npm test           # browser code against the JS writer and the docs

Where things come from ​

Nothing on the site is a second copy of the format or of the results.

WhatSource
Playground and home-page conversionsjs/src (the JS writer), bundled for the browser by scripts/prepare.mjs. An .xlsx is unzipped in the page with DecompressionStream and handed to loadXlsx as an archive object.
Parsing .sheet.md for the viewerviewer/core/cellprose-core.js, bundled with the writer
Spec, design notes, benchmark protocoldocs/SPEC.md, docs/DESIGN.md, docs/PROTOCOL.md, copied into reference/ at build time with links rewritten (scripts/links.mjs)
Benchmark numbersdata/benchmarks.json, written by benchmarks/site_data.py from the result files. tests/test_site_data.py checks it against benchmarks/results/headline_r1r2.json.
/llms.txt, /llms-full.txtWritten by scripts/llms.mjs from docs/SPEC.md, INTEGRATIONS.md and the skill. Set SITE_URL at build time to make the index's site links absolute; unset, it links to the repo.
Sample workbooksbenchmarks/workbooks/*.xlsx and the benchmark's CSV of each, copied into public/samples/

reference/, public/samples/, public/img/, public/llms*.txt and .vitepress/theme/lib/cellprose.gen.js are generated and gitignored. The guide pages (guide/) and the home, playground, benchmarks and ecosystem pages are written by hand.

After a new benchmark run, regenerate the numbers with cd benchmarks && python site_data.py. It imports analyze.py, which rewrites results/headline.json (untracked) and writes verdicts.json; delete those if you only wanted the site data.

Layout ​

PathWhat
.vitepress/config.mtsNav, sidebar, search, fonts
.vitepress/theme/The Live Sheet theme: Layout.vue (formula bar, column letters, row numbers, status bar), live.js (hover, select, fill-handle drag, arrow keys), style.css, components/, lib/
index.md, playground.md, benchmarks.md, ecosystem.mdPages built from components
guide/Hand-written docs
scripts/prepare.mjs (bundle, samples, reference pages) and its helpers

SITE_BASE sets the base path for hosting under a sub-path (for example SITE_BASE=/cellprose/ npm run build for GitHub Pages). The code is under Apache-2.0 (LICENSE) and the spec under CC-BY-4.0 (LICENSE-SPEC); the footer links both. Hosting and domain are not decided yet.

Domain and hosting ​

The canonical domain is https://cellprose.com (override with SITE_URL for previews). The build sets canonical, Open Graph and Twitter meta tags and a sitemap from it. Deploy on Cloudflare Pages: build command npm run build, root directory site, output directory .vitepress/dist. Add cellprose.com as a custom domain in the Pages project; Cloudflare creates the DNS record when the zone is in the same account.

Cellprose is an open format for spreadsheet workbooks. Benchmarks: Claude Haiku 5.5 and Sonnet 5.5, 14 workbooks, two same-session repeats.

CellproseGitHub ↗
A1fx
ReadyClick a cell · drag the corner handle · arrow keys move · Esc clears