Drop-in design-feedback widget. Click → page freezes → drag a rect → engineer pulls the diagnostic envelope. Self-hostable on localhost.
Project description
annotator
Drop-in design-feedback widget for any web app.
Click the bubble → page freezes → drag a rectangle → type one sentence → an annotation drops onto the engineer's filesystem with the screenshot, the URL, the clicked element selector, console logs, network errors, and JS exceptions captured at the moment of the click.
Self-hostable on localhost. Zero infrastructure.
pipx install vylth-annotator # or: npm i -g vylth-annotator
annotator run # opens dashboard at http://localhost:8092
Drop this into your dev site:
<script src="http://localhost:8092/w.js"
data-project="local"
data-token="local"
data-webhook="http://localhost:8092/v1/feedback"></script>
Done. Submitted annotations appear as a .png + .md pair under ./.annot/local/ and on the dashboard. Run annotator skill install once and Claude Code / Codex / Cursor will pick them up automatically.
How it works
[bubble click]
↓
1. dom-to-image → static PNG of the viewport (≈80ms) ← page freezes
2. PNG becomes the backdrop, you draw rects on a <canvas>
3. Comment + Send → POST diagnostic envelope to the API
↓
4. Server writes:
- SQLite row (queryable)
- .annot/<project>/<id8>-<slug>.png (screenshot with rects baked in)
- .annot/<project>/<id8>-<slug>.md (frontmatter + readable envelope)
- dashboard updates live
- optional: webhook fanout (Slack / Discord / Linear / custom HTTP)
The diagnostic envelope is collected automatically — the user only types the comment. console.log/warn/error, fetch, XHR, window.onerror, and unhandledrejection are tapped the moment w.js loads, ring-buffered, dumped at submit time.
Three install modes for the widget
| Mode | When to use |
|---|---|
<script> tag |
Any web app you control. One line, ≤30KB, vanilla, Shadow DOM isolated. |
| Browser extension | Annotate any third-party site (competitor analysis, design refs). |
@vylth/annotator-react |
React app that wants the widget visible only in dev/staging. |
Mode 1 is shipped. Mode 2 + 3 are scaffolded — see /mnt/vylth/labs/directives/annotator/DIR-0073-productize-annotator.md.
Layout
src/vylth_annotator/ — pip-installable Python service
cli.py — `annotator run | list | pull | resolve | init | skill`
main.py — FastAPI app
models.py — SQLAlchemy (SQLite locally, Postgres for hosted)
sink.py — disk writer (PNG + Markdown per annotation)
fanout.py — Slack / Discord / Linear / HTTP webhook dispatch
templates/dashboard.html
static/w.js — built widget bundle
skill/SKILL.md — agent instructions
packages/
widget/ — TypeScript widget source (Vite single-file)
cli/ — npm shim that forwards to the Python CLI
pyproject.toml — vylth-annotator on PyPI
LICENSE — MIT
Agent integration
annotator skill install --target auto
Drops SKILL.md into the right place for the agents present in your project — .claude/skills/annotator/, AGENTS.md, .cursor/rules/. Now the agent knows how to find new .md files in .annot/, read the diagnostic envelope, fix the underlying issue, and mark the annotation resolved.
License
MIT. Built by Vylth Labs.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vylth_annotator-0.0.1.tar.gz.
File metadata
- Download URL: vylth_annotator-0.0.1.tar.gz
- Upload date:
- Size: 30.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d7380334ff1969c73afc001f60b5592ec7f3c5f71ee3b67bad795e02321d5e2b
|
|
| MD5 |
bc405434788bd64215729c7133688fb1
|
|
| BLAKE2b-256 |
a2db7406aabb8899cd030002826fcc57f86332f8784a5fa0ccd1dc552c151108
|
File details
Details for the file vylth_annotator-0.0.1-py3-none-any.whl.
File metadata
- Download URL: vylth_annotator-0.0.1-py3-none-any.whl
- Upload date:
- Size: 36.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d71b2c5216705da9d0cfc127108fdac0e93a5468d4922409e8b859c340b76a5f
|
|
| MD5 |
eec6d87ca10b2cb2a5ac093d7c8ca24c
|
|
| BLAKE2b-256 |
c33ae5871fdcdf6ff9da2afd05422033458b75abe3dc88484841d2d503e8e01f
|