# Update Safari Extension

Build, reload, and verify Voyager in Safari for web-extension changes, native...

- Repository: https://github.com/voyager-crew/voyager (20524 stars)
- Category: Testing
- License: GPL-3.0
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add voyager-crew/voyager --skill update-safari-extension -g -a claude-code -y`
Codex: `npx skills add voyager-crew/voyager --skill update-safari-extension -g -a codex -y`
Cursor: `npx skills add voyager-crew/voyager --skill update-safari-extension -g -a cursor -y`
Gemini CLI: `npx skills add voyager-crew/voyager --skill update-safari-extension -g -a gemini-cli -y`

## Description

Build, reload, and verify Voyager in Safari for web-extension changes, native integration, or signed-app testing while preserving installed apps and extension data.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Update Safari Extension

Use the least invasive route that can test the change. A successful build and a successful live Safari check are separate evidence.

## Choose the runtime route

Check `git status --short --branch -uall` and inspect Safari Settings > Developer/Extensions. Record whether Voyager is temporary or app-installed and enabled before changing it.

- **Web extension:** TypeScript, React, CSS, manifest, or bundled assets that stay inside the extension use the temporary route below.
- **Native or signed app:** Swift, entitlements, Sparkle, signing, packaging, or any call to `browser.runtime.sendNativeMessage` require [native-app.md](references/native-app.md). Temporary extensions cannot launch the containing-app handler, including iCloud sync, Safari Google Drive authorization, and native notifications.
- **Native behavior:** For Drive authorization, notification delivery/clicks, or account-scoped sync verification, also read [native-behavior.md](references/native-behavior.md).

## Default: temporary extension

1. Run `bun run build:safari`. This builds `dist_safari` and verifies Safari resource wiring.
2. In Safari Settings > Developer > Temporary Extensions, click Voyager's **Reload**. If absent, choose **Add Temporary Extension…** and select `dist_safari`.
3. Reload the target Gemini, AI Studio, ChatGPT, or Claude tab once to load the current content script.
4. Open the Voyager popup and test the changed behavior.

Safari removes temporary extensions after 24 hours or when Safari quits. Re-add `dist_safari`; a routine UI refresh does not require signed installation.

## Safety and recovery

The rest: https://github.com/voyager-crew/voyager/blob/HEAD/.agents/skills/update-safari-extension/SKILL.md
