Reading the repo
Reading the repo
Assembly instructions
🎬 A browser extension and desktop app that turns your clicks into step-by-step guides with annotated screenshots 📖
Saved setup from 2 h ago
Will it work on macOS?
CONTRIBUTING.mdThanks for your interest in contributing! Bug reports, feature requests, PRs, and translations are all welcome.
By submitting a pull request or any contribution to this repository, you agree that your contribution will be licensed under the MIT License.
You represent that you have the right to submit the contribution and that it does not infringe any third-party rights.
git clone https://github.com/westpoint-io/mimik.git
cd mimik
pnpm install
pnpm dev # Chrome (MV3) with HMR
pnpm dev:firefox # Firefox (MV3) with HMR
WXT launches a fresh browser instance with the extension loaded.
pnpm build # Chrome → apps/extension/.output/chrome-mv3/
pnpm build:firefox # Firefox → apps/extension/.output/firefox-mv3/
pnpm zip:all # package both browsers
pnpm test # run all tests once
pnpm test:watch # watch mode
pnpm test:cov # coverage report
pnpm lint # check
pnpm lint:fix # auto-fix
pnpm format # format only
Biome handles formatting and linting. Run pnpm lint:fix and it sorts out indentation, quotes, semicolons and import order for you.
One rule Biome cannot check: do not write comments. Name things so the code explains itself. The exceptions are pragmas and directives the toolchain reads, such as @ts-expect-error or biome-ignore. When a piece of logic looks like it needs a comment to be understood, it usually wants a clearer name or a smaller function instead.
apps/extension/ # The browser extension (WXT): entrypoints, capture, blur, guideme, lib, ui
apps/desktop/ # The Electron desktop app: main, preload, renderer
packages/core/ # Logic both apps share: capture, guides, export, screenshot, blur
packages/ui/ # React components both apps share
packages/locales/ # YAML translation files
packages/capture-native/ # Rust addon for the desktop: accessibility lookup and input hook
scripts/ # Repository checks run by pnpm lint
| Layer | Technology | |-------|-----------| | Extension framework | WXT (Manifest V3) | | Language | TypeScript | | UI | React 19 + Tailwind CSS v4 | | Components | shadcn/ui | | State (capture) | XState | | State (UI) | Zustand | | Storage | Dexie.js (IndexedDB) | | Messaging | webext-core | | Session recording | rrweb | | Export | jsPDF, docx, mediabunny, gifenc, fflate + HTML/Markdown | | AI (optional) | Vercel AI SDK (OpenAI, Anthropic) | | i18n | @wxt-dev/i18n + YAML locales | | Testing | Vitest + Testing Library |
git checkout -b feat/your-featurepnpm lint && pnpm test && pnpm build && pnpm build:firefox
feat: new featurefix: bug fixdocs: documentationtest: tests onlychore: tooling/depsCI (pr-test.yml) will run lint, tests, and both browser builds on every PR.
AI-assisted contributions are welcome here.
Name the models you used on the "AI model(s) used" line at the top of the pull request template, or write "None". Saying so costs you nothing. Passing off output you have not read is what gets a PR closed.
That line is the only place AI use is disclosed. Commits are authored by you: do not let a tool set itself as the commit author or add Co-Authored-By, Assisted-by or session-link trailers. If your tool adds them by default, turn that off in its settings.
You are responsible for every line you submit. If a reviewer asks why something is there, "the model wrote it" is not an answer. Be ready to debug it without going back to the tool.
Write the pull request description yourself. Generated summaries run long and restate the diff, which reviewers can already read. Two sentences on what changed and why beats ten paragraphs. Same for issue reports and review comments.
Reproduce a bug before you file it. Issues written by pointing a tool at the codebase, with no real reproduction, get closed unread.
Leave good first issue alone. Those exist for people learning the codebase by hand.
Do not run automated AI reviews on pull requests in this repo. Your own fork is fine.
Repeat submissions of unread AI output will get you blocked.
To add a new language:
packages/locales/{lang-code}.yml (e.g., packages/locales/de.yml)packages/locales/en.yml$1, $2) in the same positionspnpm build:firefox (WXT generates types for new locale keys automatically)Open an issue with:
chrome://extensions → Mimik → "service worker" → Console, or Firefox about:debugging → Inspect)Then run bash setup.sh. It stops at the first error and is safe to run again. Servers and tests aren't started; it lists them at the end. Read it first.
Needs Git: xcode-select --install
git clone https://github.com/westpoint-io/mimik.git cd mimik
Node.js 22
# needs nvm: brew install nvm (or https://github.com/nvm-sh/nvm) nvm install 22
corepack enable pnpm install
pnpm dev
pnpm test
Mimik turns any repetitive browser task into a documented, shareable guide in seconds. It runs entirely in your browser. No backend, no account, no telemetry, and nothing ever leaves your device.
Whether you're documenting internal tools, writing product tutorials, or onboarding a teammate, Mimik captures every click, keystroke, and navigation automatically so you can focus on the work.
Every meaningful action becomes a step: clicks on buttons and links, form inputs, keyboard shortcuts, clipboard actions, drag events, and page navigations. Rapid clicks on nearby elements are merged so guides stay clean, and clicks are intercepted before the page navigates away, so nothing is lost on SPAs or full page loads.
Each step gets a screenshot with the clicked element highlighted and zoomed in. No manual cropping, no annotation tools to learn.
Need the recording to look away for a moment? Pause stops capture without ending the recording, and Resume picks up where you left off. Entering Smart blur pauses it the same way.
| Browser | Version | Install | | ------- | ------- | ------- | | Chrome | [![Chrome Version][chrome-version-shield]][chrome-link] | [Chrome Web Store][chrome-link] | | Firefox | [![Firefox Version][firefox-version-shield]][firefox-link] | [Firefox Add-ons][firefox-link] | | Edge | [![Edge Version][edge-version-shield]][edge-link] | [Microsoft Edge Add-ons][edge-link] |
Available in English, Spanish, Brazilian Portuguese, French, German, and Simplified Chinese. The AI description language is set separately, so you can run Mimik in English and generate guides in Spanish, or any combination.
<a href="https://github.com/westpoint-io/mimik"> <img width="100%" alt="Star Mimik on GitHub" src="https://github.com/user-attachments/assets/80d304da-a765-4bde-bf49-b1bdcb4fe804" /> </a> <div align="right"> </div>[!IMPORTANT]
⭐️ Star the repo if Mimik saves you time. It helps other people discover it!
No reports for macOS yet.
Opens a chat with this manual already filled in, for macOS. It uses your own account; gitmanual sends nothing.