{"id":51186986,"url":"https://github.com/vishalquantana/klav-snap","last_synced_at":"2026-06-27T11:03:32.551Z","repository":{"id":364868270,"uuid":"1269524750","full_name":"vishalquantana/klav-snap","owner":"vishalquantana","description":"Open-core AI bug reporting \u0026 testing — right-click to file grounded bugs to Jira/Linear/GitHub/Plane, AI personas (Sims) that review your product, and self-healing end-to-end tests.","archived":false,"fork":false,"pushed_at":"2026-06-22T07:19:36.000Z","size":5129,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-06-22T07:27:03.383Z","etag":null,"topics":["ai-agents","ai-testing","bug-reporting","bug-tracker","bun","chrome-extension","developer-tools","end-to-end-testing","feedback-widget","github-issues","jira","linear","open-core","plane","playwright","qa","screenshot","self-healing-tests","typescript","user-personas"],"latest_commit_sha":null,"homepage":"https://klavity.quantana.top","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vishalquantana.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-14T20:24:10.000Z","updated_at":"2026-06-22T07:19:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/vishalquantana/klav-snap","commit_stats":null,"previous_names":["vishalquantana/klav-snap"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vishalquantana/klav-snap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vishalquantana%2Fklav-snap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vishalquantana%2Fklav-snap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vishalquantana%2Fklav-snap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vishalquantana%2Fklav-snap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vishalquantana","download_url":"https://codeload.github.com/vishalquantana/klav-snap/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vishalquantana%2Fklav-snap/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34850578,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-27T02:00:06.362Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agents","ai-testing","bug-reporting","bug-tracker","bun","chrome-extension","developer-tools","end-to-end-testing","feedback-widget","github-issues","jira","linear","open-core","plane","playwright","qa","screenshot","self-healing-tests","typescript","user-personas"],"created_at":"2026-06-27T11:03:31.691Z","updated_at":"2026-06-27T11:03:32.545Z","avatar_url":"https://github.com/vishalquantana.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Klavity Snap ⚡\n\n\u003e **Right-click any page to file a grounded bug** — screenshot, console and network attached — straight into Jira, Linear, GitHub Issues, or Plane. No browser extension required, no tool to open.\n\n[![Chrome Web Store](https://img.shields.io/badge/Chrome%20Web%20Store-install-4285F4.svg?logo=googlechrome\u0026logoColor=white)](https://chromewebstore.google.com/detail/klavity-%E2%80%93-ai-bug-reporter/olahjdcgbdjajbfmgnakjlehgjdmaene)\n[![License: FSL-1.1-ALv2](https://img.shields.io/badge/license-FSL--1.1--ALv2-0f9d6b.svg)](LICENSE)\n[![Live demo](https://img.shields.io/badge/demo-klavity.quantana.top-6366f1.svg)](https://klavity.quantana.top)\n[![Open core](https://img.shields.io/badge/open-core-db2777.svg)](#license)\n\n**Klavity** turns bug reporting, customer research, and end-to-end testing into one continuous loop — built around a recurring cast of AI **Sims** (personas grounded in real customer calls). Snap is **Phase 1**: the in-app reporter that catches a bug the moment a human sees it.\n\n🌐 **Live:** [klavity.quantana.top](https://klavity.quantana.top) \u0026nbsp;·\u0026nbsp; [Snap](https://klavity.quantana.top/snap) · [Sims](https://klavity.quantana.top/sims) · [AutoSim](https://klavity.quantana.top/autosim)\n\n\u003e Named after **Ekalavya**, the self-taught master — Klavity learns your product and tests it the way your users would.\n\n---\n\n## The Klavity arc — Snap → Sims → AutoSim\n\nThree phases, one set of AI Sims walking the same trail through your product:\n\n| Phase | Product | What it does | Status |\n|---|---|---|---|\n| **1** | **[Klavity Snap](https://klavity.quantana.top/snap)** | Right-click → describe → a grounded bug (screenshot + console + network) lands in your tracker. **No extension needed.** | ✅ **Shipped** (this repo) |\n| **2** | **[Klavity Sims](https://klavity.quantana.top/sims)** | Turn customer-call transcripts into AI personas that walk your real pages and react in their own voice — filing grounded bugs carrying the persona + a verbatim quote. | ✅ **Live** |\n| **3** | **[Klavity AutoSim](https://klavity.quantana.top/autosim)** | Your Sims test every release: author a flow once, replay it with **zero AI**, and **self-heal** when the UI changes — never a silent false-green. | ✅ **Shipped** |\n\n\u003e AutoSim was formerly called \"Klavity OS.\" Everywhere you see it now, it's **AutoSim**.\n\n---\n\n## Why Klavity Snap is different\n\n- **No browser extension required.** The first-party widget owns right-click on your own site — your users report bugs without installing anything. (A Chrome extension exists too, for reporting on *any* site.)\n- **Grounded, not AI-slop.** Every report carries real evidence — full-page screenshot, the page URL, and the last 50 console errors + network failures — so a ticket is reproducible, not a guess.\n- **Deduplicated.** A repeat of a known issue bumps its recurrence count instead of spawning a duplicate ticket.\n- **Files where you already work.** Jira, Linear, GitHub Issues, and Plane — directly, or routed through Klavity Cloud.\n- **Open-core \u0026 self-hostable.** Run the whole thing on your own infra.\n\n---\n\n## Features\n\n- **Right-click anywhere** → Report a Bug / Request a Feature / View submissions\n- **Auto screenshot** on open — captures the full rendered page (cross-origin images included)\n- **Region capture** — drag to select any area of the page\n- **Canvas annotation** — pen, rectangle, arrow, text in 4 colours, with undo/clear\n- **Upload + paste** — drag files, paste from clipboard, HEIC/HEIF auto-converted\n- **Context capture** — page URL, browser, screen size, last 50 console errors, last 50 network failures\n- **4 integrations** — Jira · Linear · GitHub Issues · Plane\n- **Cloud switch** — set one backend URL to route submissions through Klavity Cloud or your self-hosted instance\n\n---\n\n## Install\n\n### First-party widget (no extension)\n\nEmbed the report widget on your own site so logged-in users can right-click → report, with the full-page screenshot auto-attached:\n\n```html\n\u003cscript src=\"https://klavity.quantana.top/widget.js\" defer\u003e\u003c/script\u003e\n```\n\n### Chrome extension (report on any site)\n\n**[➜ Install from the Chrome Web Store](https://chromewebstore.google.com/detail/klavity-%E2%80%93-ai-bug-reporter/olahjdcgbdjajbfmgnakjlehgjdmaene)** — Klavity – AI Bug Reporter\n\n**Developer / self-hosted:**\n1. `pnpm install \u0026\u0026 pnpm -r build`\n2. Open `chrome://extensions` → enable **Developer mode** → **Load unpacked** → select `packages/extension/dist`\n3. Click the ⚡ Klavity icon → **Settings** → configure your integration\n\n### Embeddable SDK (`@klavity/snap`)\n\nFor SaaS products that want Klavity Snap built into their own app.\n\n**Script tag:**\n```html\n\u003cscript src=\"https://cdn.klav.io/snap/klavity-snap.umd.js\"\u003e\u003c/script\u003e\n\u003cscript\u003e\n  KlavitySnap.init({\n    integration: 'jira',\n    jira: {\n      baseUrl: 'https://yourorg.atlassian.net',\n      email: 'dev@yourorg.com',\n      token: 'your-api-token',\n      projectKey: 'PROJ'\n    }\n  })\n\u003c/script\u003e\n```\n\n**npm:**\n```bash\nnpm install @klavity/snap\n```\n```js\nimport KlavitySnap from '@klavity/snap'\nKlavitySnap.init({\n  integration: 'linear',\n  linear: { apiKey: 'lin_api_...', teamId: 'team_...' }\n})\n```\n\n---\n\n## Configuration\n\nOpen the extension settings (click the ⚡ icon → **Settings**) or pass config to `KlavitySnap.init()`.\n\n| Setting | Description |\n|---|---|\n| Active integration | `jira`, `linear`, `github`, or `plane` |\n| Jira: Base URL | e.g. `https://yourorg.atlassian.net` |\n| Jira: Email + API Token | From Atlassian account settings |\n| Jira: Project Key | e.g. `PROJ` |\n| Linear: API Key | Personal API key from Linear settings |\n| Linear: Team ID | Your Linear team ID |\n| GitHub: PAT | Personal access token with `repo` scope |\n| GitHub: Repository | `owner/repo` format |\n| Plane: API Token | From Plane account settings |\n| Backend URL | Leave empty for direct mode. Set to your self-hosted URL or Klavity Cloud to route all submissions through the backend. |\n| Auto-file JS errors | Auto-file silent tickets for unhandled JS errors (opt-in) |\n\n---\n\n## Architecture\n\n```\nklav-snap/\n├── packages/core/       # @klavity/core — shared types, integrations, annotator, crop, modal\n├── packages/extension/  # Chrome MV3 extension — background, content script, options, popup\n├── packages/sdk/        # @klavity/snap — embeddable script-tag / npm SDK\n└── prototype/           # Klavity Cloud — Bun backend, dashboards, Sims \u0026 AutoSim engine\n```\n\nThe **cloud switch** is a single `backendUrl` setting. Empty = direct mode (the extension calls Jira/Linear/etc. APIs directly). Non-empty = submissions route through the Klavity backend, which also powers **Klavity Sims** and **Klavity AutoSim**.\n\n---\n\n## Development\n\n```bash\n# OSS packages (extension + SDK + core)\npnpm install          # install all workspace deps\npnpm -r test          # run package tests (vitest)\npnpm -r build         # build extension + SDK\n\n# Load the extension in Chrome:\n# chrome://extensions → Developer mode → Load unpacked → packages/extension/dist\n```\n\nThe `prototype/` Cloud backend runs on **Bun** (`cd prototype \u0026\u0026 bun install \u0026\u0026 bun run server.ts`).\n\n---\n\n## License\n\n[FSL-1.1-ALv2](LICENSE) (Functional Source License) — free for any non-competing use; converts to Apache 2.0 on the second anniversary of each release.\nFor commercial licensing, contact [hello@quantana.com.au](mailto:hello@quantana.com.au).\n\nBuilt by [Quantana](https://quantana.com.au) — an AI-first design and development studio.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvishalquantana%2Fklav-snap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvishalquantana%2Fklav-snap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvishalquantana%2Fklav-snap/lists"}