Development
SPEC.md is the full
build brief and the source of truth; CLAUDE.md is the short operating layer on
top of it.
Tasks are wired through mise (mise tasks to list,
mise run <task>); each maps to the underlying pnpm/cargo command, so you can
use either:
mise run dev # load the extension in Chrome (hot-reload)mise run dev:firefox # load the extension in Firefox (hot-reload)mise run cli:install # put the `share-the-mark` binary on PATHmise run serve # run the share-the-mark ingest daemonmise run request <url> # agent flow: open a page, wait for feedback
mise run check # all extension gates (typecheck, lint, test, builds, e2e, size)mise run cli:check # all CLI gates (fmt, clippy, test)mise run check:all # bothThe equivalent raw commands (pnpm typecheck | lint | test | e2e | size, cargo …
in cli/) still work directly.
Local review flow (extension ↔ agent)
mise run dev:firefox(ordev) — loads the extension into the browser.mise run cli:installthenshare-the-mark serve(ormise run serve) — runs the daemon.- The agent runs
share-the-mark request <url>(or you click Send to agent in the panel); annotate the page, click Send to agent, and the brief flows to the agent.
Docs
The documentation site (this site) is an Astro Starlight project in
website/; its
content is the docs/ folder, which is also the source for the generated
README.md. After editing docs/, regenerate the README:
pnpm docs:readme # rewrite README.md from docs/pnpm docs:readme:check # CI guard: fail if README.md is staleThe homepage demo video is generated by driving the embed widget with Playwright and
encoding the recording with ffmpeg (needs ffmpeg on PATH):
pnpm docs:demo # → website/public/demo-annotate.{webm,mp4,png}See CONTRIBUTING.md for the full quality bar, architecture invariants, and the contribution workflow.