Getting Started
This guide walks you through setting up a local development environment so you can build, test, and iterate on Skeeditor.
Prerequisites
| Tool | Minimum version | Notes |
|---|---|---|
| Node.js | 20.x | LTS recommended |
| pnpm | 10.x | npm install -g pnpm |
| task | 3.x | go-task — brew install go-task |
| Chrome | 120+ | For extension development and Playwright E2E |
| Firefox | 125+ | Nightly / Developer Edition required for manual extension loading |
| Git | 2.x | — |
macOS users
Install Node.js via nvm or mise to avoid system-Python conflicts. pnpm can be installed with npm install -g pnpm or via brew install pnpm.
Clone and install
git clone https://github.com/selfagency/skeeditor.git
cd skeeditor
pnpm installThis installs all workspace dependencies, including the build toolchain, test runners, and Playwright browsers.
Build
Development build (watch mode)
# Chrome
task build:watch:chrome
# Firefox
task build:watch:firefoxBoth commands start Vite in watch mode. Changes to src/ files trigger an incremental rebuild immediately.
Production build
task build:chrome # outputs to dist/chrome/
task build:firefox # outputs to dist/firefox/
task build:safari # outputs to dist/safari/ (macOS only, requires Xcode)To build all targets at once:
task build:allNote: Prefer direct Task commands (
task <name>) for day-to-day development.
Load the extension in your browser
Chrome
- Run
task build:watch:chrome(ortask build:chrome). - Open
chrome://extensions. - Enable Developer mode.
- Click Load unpacked → select
dist/chrome/.
The extension reloads automatically when files in dist/chrome/ change (i.e. when the watch build rebuilds).
Firefox
- Run
task build:watch:firefox(ortask build:firefox). - Open
about:debugging#/runtime/this-firefox. - Click Load Temporary Add-on… → select
dist/firefox/manifest.json.
If you have web-ext installed globally you can also run:
task webext:run:firefoxSafari (macOS)
Safari extensions require an Xcode app wrapper. Build the converter output first:
task build:safariThen open the generated Xcode project under dist/safari/ and run it. See Cross-Browser Platform for full instructions.
Run tests
task test # unit + integration (Vitest)
task test:e2e # E2E (Playwright, requires Chrome and Firefox)
task test:coverage # unit + integration with coverage reportSee Testing for full details on the test suite.
Lint and type-check
task lint
task typecheckBoth must pass before opening a pull request. CI enforces them on every push.