What it is
Teletext, called Ceefax in the UK, sent numbered pages of 40 by 24 character cells with colour control codes and block graphics to every television. The analogue services are gone, the BBC closed Ceefax in 2012. Skeletext brings the page model back as a small skeleton and shows what it can carry with two apps.
The skeleton is a TypeScript package with no runtime dependencies. It holds the cell grid, the Level 1 control codes from ETSI ETS 300 706 with their set-at and set-after timing, a display interpreter (colours, flash, conceal and reveal, mosaics, hold mosaics, double height), an SVG renderer, a page builder, Fastext coloured links, page numbers 100 to 899 with subpages that rotate on their own, a compact page codec, and a browser viewer with keyboard and on-screen controls.
Quake Desk shows live earthquakes from the US Geological Survey feeds: the past day, the significant ones this week, the ten strongest in detail with a mosaic magnitude bar, and a magnitude chart. Repo Desk shows the public status of a GitHub repository: description and counts, latest commits, open pull requests and issues, GitHub Actions runs with green, red and yellow results, and a language breakdown. Repo Desk defaults to this repository, so its CI page shows this project's own build history, and ?repo=owner/name selects another public repository. Both apps are static pages that fetch live data in the browser. Type a three digit page number, use the four coloured keys, or use the on-screen buttons on a phone.
A note for testers: GitHub allows 60 anonymous API requests an hour per visitor. Repo Desk loads each page only when it is opened and keeps answers for five minutes, and it shows a clear page with the reset time if the limit is reached.
How it was built is in docs/HOW-KIRO-WAS-USED.md. Control code facts, with sources and the places where two sources disagree, are in docs/ets300706-level1-reference.md.
How Kiro was used (full text in docs/HOW-KIRO-WAS-USED.md)
Kiro CLI 2.37 was used on the free plan. Surfaces: CLI only. The IDE was not installed, Kiro Web needs a paid plan, Crew was not used.
- Spec-driven development: four specs in
.kiro/specs/(skeleton core, quake-desk, repo-desk, teletext-mcp), each with EARS requirements, design and tasks, all written by Kiro. Invariants are tagged [PBT] and became fast-check properties. - Steering:
product,tech,structureandtypescript-gotchaswere written by hand (the last after failed Kiro runs),teletext-stylewas written by Kiro. - Custom agent:
teletext-builder(written by Kiro) works one spec task at a time with permission rules; it only loads in the V3 engine of the CLI. - Hooks: four hooks written by Kiro (tests on save, protect the verified reference, tests before stop, spec drift check). The Stop hook was seen to fire and keep the agent working.
- MCP: a small stdio MCP server (explain_code, render_page, validate_page, encode_rows). The server was written by hand against Kiro's spec. A Kiro run with the custom agent called
render_pageandvalidate_pageon five quake-desk pages (log indocs/review-notes/). - Property-based testing: 209 tests in four packages. Hand-written properties found 9 failing cases in Kiro's first interpreter, which had misread "bit 6" of the mosaic set and several set-after rules. The interpreter was rewritten by hand and the original is kept in
docs/review-notes/. - Honest split: Kiro wrote the specs, agent, hooks, MCP configuration and the first versions of the grid, control code, mosaic, store, Fastext and codec modules with tests. The renderer, builder, viewer, MCP server and both apps were written by hand against Kiro's specs, because the free credits ran out in the middle of the build; a Kiro attempt at repo-desk was stopped after 19 minutes because its layouts overlapped. The table of who wrote what is in the repo document.
Built With
- esbuild
- fast-check
- github-actions
- kiro
- mcp
- svg
- typescript
- vercel
- vitest
Log in or sign up for Devpost to join the conversation.