hive-desktop / web
AGENTS.md4 starsChanged 2 months agoMITView on GitHub
Scope: web/, the public site at hivedesktop.com. The repository-root AGENTS.md still applies (git standards, quality gates). A Zensical site, the successor of Material for MkDocs by the same team. zensical.toml is a copy of the hive CLI's docs configuration (theme variant, features, palette, markdown extensions) and holds the nav; the hive CLI's docs are the reference for look and feel. Pages are Markdown under docs/. The build writes site/, which Cloudflare serves as Worker static assets (wrangler.jsonc; the custom domain…
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,439 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository16 other files it gives its agents.
- AGENTS.mdAGENTS.md
- desktop/AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- desktop/CLAUDE.mdCLAUDE.md
- web/CLAUDE.mdCLAUDE.md
- desktop-apiSkill
- devserverSkill
- docs-auditSkill
- keymap-auditSkill
- palette-auditSkill
- release-notesSkill
- release-prepSkill
- releaseSkill
- shipped-skillsSkill
- ui-perfSkill
- web-docsSkill
The file
We split this AGENTS.md into the rules it gives an agent
3 rules. About 0 are common, 1 is distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 64
Keep pages short and task-focused.
- Very specific: line 85
After the build, scripts/llms.py derives site/llms.txt (one link per page), site/llms-full.txt (every page inlined), and a Markdown twin of …
- Very specific: line 125
Never deploy. mise run deploy, npm run deploy, and npx wrangler deploy all publish to hivedesktop.com.
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Agent Instructions — Landing page and docs
Scope: web/, the public site at hivedesktop.com. The repository-root
AGENTS.md still applies (git standards, quality gates).
What the site is
A Zensical site, the successor of Material for MkDocs by the same team.
zensical.toml is a copy of the hive CLI's docs configuration (theme variant,
features, palette, markdown extensions) and holds the nav; the hive CLI's docs
are the reference for look and feel. Pages are Markdown under docs/. The
build writes site/, which Cloudflare serves as Worker static assets
(wrangler.jsonc; the custom domain is declared there and attaches on
deploy). ADR the-site-is-zensical-built-under-mise-served-as-worker-static-assets
records the choice.
mise.toml stands on its own: it pins Python, uv, and Node on top of the
repository's toolchain (mise.lock beside it holds the resolved versions)
and owns the site's tasks. Run them from inside web/:
| Task | What it runs |
mise run install | uv sync --frozen and npm ci; once per fresh worktree |
mise run build | zensical build --clean --strict, then python scripts/llms.py |
mise run dev | zensical serve behind wrangler dev: the whole site, Worker routes included, on http://127.0.0.1:8788 |
mise run dev:pages | zensical serve alone, browser live reload on http://127.0.0.1:8000; /api/* is absent |
mise run preview | the build, then wrangler dev over site/, the way production serves it |
mise run deploy | the build, then wrangler deploy; CI's and the release tool's job, never by hand |
mise run lock | uv lock, after editing pyproject.toml |
Zensical is pinned in pyproject.toml and resolved into uv.lock;
package.json carries wrangler only.
Use mise run dev for anything that touches /api/*. zensical serve
cannot answer those routes and dl.hivedesktop.com sends no CORS headers, so
on the pages-only server the download buttons and panel stay in their
fallback state and look broken. dev keeps zensical serve rebuilding
site/ on save and puts wrangler dev in front of it, so a save still shows
up on 8788 (refresh by hand; the live-reload socket belongs to 8000).
Pages
A page is docs/<directory>/<slug>.md plus a line in the nav in
zensical.toml. The nav is the site's structure: its order is the tab and
sidebar order, a nested table is a sidebar group, and a page that is not
listed builds without a warning but has no nav entry, no llms.txt line, and
no Markdown twin.
Two tabs beside Home. Getting Started is the reading path:
getting-started/index.md (with the ## Install section), then the sidebar
groups First run (getting-started/sign-in.md, notifications.md,
first-feed.md), Inbox (inbox/), Code (code/), Chats
(chats/), and Resources (getting-started/build-from-source.md,
troubleshooting.md). Configuration is the reference tab:
configuration/settings.md and configuration/keybindings.md. App pages go
in the group for their area. Build and support pages go under Resources.
Frontmatter is icon: lucide/<name> and description:. The body starts with
# Title; do not repeat the frontmatter description below it. Callouts are
admonitions (!!! tip "Title", body indented four spaces), content tabs are
=== "macOS", keys are <kbd>, and internal links are relative
Markdown-file links that the strict build validates.
Keep pages short and task-focused. State facts directly. Avoid em and en dashes, rhetorical contrasts, "Why it matters" headings, staged reveals, and marketing filler. Do not explain every visible control. Summarize ordinary settings and shortcuts by category, and use exact YAML only when a user needs to edit it manually. Keep each fact on the page that owns it and link there instead of repeating it.
Two repo skills govern this site: web-docs (the mechanics of a page) and
docs-audit (whether a change on a branch needs one, and where).
The landing page is docs/index.md, HTML sections styled by
docs/stylesheets/extra.css: a hero, a strip linking to the three showcase
sections (Feeds, Code, Chats), each pairing copy with a demo video, and a
CTA. Files under docs/ that are not Markdown are copied to the site root
unchanged: install.sh, robots.txt, assets/favicon.svg, the demo videos
under assets/demos/ (feeds.mp4, code.mp4, chats.mp4),
javascripts/download.js, which fills the hero and CTA download buttons and
the ## Install section's download panel from /api/latest, and
javascripts/demos.js, which swaps a demo player for its "coming soon"
placeholder when its video file is missing.
After the build, scripts/llms.py derives site/llms.txt (one link per
page), site/llms-full.txt (every page inlined), and a Markdown twin of every
nav page at its URL plus .md (/inbox/flows.md beside /inbox/flows/).
overrides/main.html adds a <link rel="alternate" type="text/markdown">
pointing at /llms.txt to every page.
Worker routes
worker/index.ts runs for /api/* and for anything the asset router did not
match:
/api/latest— proxies a release channel manifest for the download buttons.?channel=stable|beta|dev, stable by default.download.jsasks fordevbecause no stable manifest is published yet.- Old URLs 301-redirect to where their content went.
/docsto/getting-started/;/installto/getting-started/#install;/compareand/compare/*to/; the moved pages/docs/concepts/*to/inbox/*,/code/*, or/chats/*,/docs/help/troubleshootingto/getting-started/troubleshooting/,/docs/help/reporting-a-problemto/getting-started/troubleshooting/#report-a-problem, and/docs/help/updatesto/configuration/settings/#updates; any other/docs/<path>to/<path>/. Old app builds still use those redirects. The current About pane links directly to/getting-started/and/configuration/settings/#updates(desktop/frontend/src/composables/useAboutSettings.ts), so a page move, or a rename of the## Install,## Updates, or## Report a problemheading, means updating the table and direct links (heading ids are lower-cased, so## Updatesstill answers#updates).
CI and deploy
.github/workflows/ci.yml runs mise run install and mise run build in
web/ on every PR (the web-build job), so a broken link or a missing nav
file fails the PR. .github/workflows/deploy-web.yml runs the same two tasks
and then npx wrangler deploy on a push to main that touches web/**. The
release tool (cmd/release/publish.go) also deploys, with mise run install
and mise run deploy from web/, before it uploads a release.
Guardrails
- Never deploy.
mise run deploy,npm run deploy, andnpx wrangler deployall publish to hivedesktop.com. site/is build output;.venv/,node_modules/, and.wrangler/are local state. All are gitignored. Never edit a file undersite/and never commit any of them.- This is user-facing product documentation only.
docs/architecture.md, ADRs, and in-app copy are not this site.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

