README
The developer portal for starikov.dev — principles and metadata for humans; an MCP server and Markdown editions for agents. Tokens and the component registry live under the Components tab, the change workflow under Checklist.
Keep the shape
The site borrows the familiar rhythm of a messaging app, but the content stays personal: brief, direct, and useful.
- Identity onceThe fixed header owns the avatar and name. Don’t repeat them in the opening content.
- One-handedPrimary navigation stays reachable at the bottom and never scrolls sideways.
- Plain firstSemantic HTML and durable links before effects or abstraction.
- Two modesEvery new color must work in both system light and dark themes.
App metadata
The site is installable and link-preview ready. Every page carries the full head block — favicon, app icons, manifest hooks, and Open Graph/Twitter tags.
- Favicon
assets/favicon.svg(green rounded square, white h) with afavicon.icofallback for older browsers. The olddata:,empty-favicon hack is gone. - App icons
icon-192.png/icon-512.pngfor the manifest,icon-512-maskable.png(padded safe zone) for adaptive launchers,apple-touch-icon.png(180px, full-bleed) for iOS. - Installable
manifest.webmanifest(standalone, Herman, theme#f0f2f5) plussw.js— a deliberately passthrough service worker. It exists because the install prompt requires a fetch handler; it caches nothing, so the tab SPA can never render a stale page.site.jsregisters it on window load. - Social preview
assets/og-image.jpg(1200×630, avatar + name + tagline). Each page sets its ownog:title/og:url/og:descriptionand shares the image;twitter:cardissummary_large_imageeverywhere. - Avatar
assets/avatar.jpg(512px face crop) is the source; the header and message-bubble avatars ship asassets/avatar-176.webp(176px, ~5KB) with a JPEG fallback via<picture>.assets/herman.jpgis the full portrait (also the JSON-LDimage).
Developer resources
The site ships a machine-readable surface next to the pages: an MCP server, an llms.txt index, and a hand-maintained Markdown edition of every page.
- MCP server
https://starikov.dev/mcp— Streamable HTTP, no auth. Tools:site_index(what the site is),get_page(a page's Markdown edition),get_contact(verified channels). AGETon the endpoint returns a connect description. - ClaudeRun
claude mcp add --transport http starikov-dev https://starikov.dev/mcp. In claude.ai or Claude Desktop: Settings → Connectors → Add custom connector → paste the URL. - CursorSettings → MCP → Add new MCP server: name
starikov-dev, transportstreamable-http, URLhttps://starikov.dev/mcp. Or add to.cursor/mcp.json:{"mcpServers": {"starikov-dev": {"url": "https://starikov.dev/mcp"}}}. - ChatGPTPaid plans: Settings → Apps → Advanced settings → enable Developer mode, then Apps → Create app with the MCP URL
https://starikov.dev/mcpand auth none. (OpenAI renames these labels — look for Connectors/Apps.) - llms.txt/llms.txt — the site index for agents: when to use the site, the page list, and how it's built.
- Agent editionsEvery page ships a Markdown edition — request any page with
Accept: text/markdown, or pull it through the MCPget_pagetool. Page content and its.mdship in the same commit.
Deep dives
Long-form notes on the parts of the site that earned them. This index stays the quick reference; the deep dives hold the full stories, dead ends included.
- DockAnatomy, the pointerdown/click interaction contract, and the full saga of keeping the tab bar above Android's gesture bar.
Tools
- ReviewHighlight text on any page, attach comments, then copy the batch as one prompt for Muse. Highlights live in this browser only.