Last updated: July 28, 2026
As of July 28, 2026, the Chrome Web Store still publishes SkillBridge v1.0.1. That legacy version includes a bundled Puter client used for Gemini translation review and the Claude-powered AI Tutor, and it declares YouTube host access.
A replacement candidate (v4.0.0) is being prepared, but publication is paused and that candidate is not yet available from the Chrome Web Store. The candidate keeps the AI Tutor, runs its bundled Puter client in Chrome's isolated content-script world on the trusted course host, removes YouTube host access, and adds an on-device tutor option:
- AI Tutor (cloud, default): ships in the candidate. Tutor questions go through the bundled Puter client to Claude, and the user signs in to Puter (free) when they first use it. Translation and the local study tools need no account.
- AI Tutor (local/on-device, optional): the user can instead point the Tutor at a local OpenAI-compatible server they run themselves (for example Ollama). In that mode Tutor text goes only to that local server — see "Local AI Engine" below.
- AI Tutor (off): the user can disable the Tutor entirely and use translation only.
Use the section below that matches the version you installed. SkillBridge does not operate a backend server and does not use analytics, telemetry, advertising, or tracking in either version. Third-party services can still process the content described below when their features are used.
| Service | What v1.0.1 sends | Purpose | Privacy policy |
|---|---|---|---|
| Google Translate API | Visible course-page text selected for translation and the requested language | Produce the initial translation | Google Privacy Policy |
| Puter-backed Gemini | Visible course text, the requested language, and, for quality review, the initial Google translation | Review or improve complex translations | Puter Privacy Policy |
| Puter-backed Claude | The user's Tutor question, any text the user explicitly quotes into it, the requested response language, the course title, and up to 5 page headings | Generate an AI Tutor response | Puter Privacy Policy |
The main Puter SDK file in v1.0.1 is bundled inside the extension package, but that SDK also contains lazy remote JavaScript and WebAssembly import paths, including an unpkg-hosted polyfill and remote rustls.js/rustls.wasm assets. v1.0.1 therefore must not be described as a fully self-contained or no-remote-code package. When an AI feature is used, the client also connects to Puter services, which route the request to the selected AI model. The v4.0.0 build removes those unused TLS-socket imports from the packaged SDK and fails the build if executable remote-code patterns remain in the upload artifact.
The bundled Puter client handles its own sign-in and session state. It stores a Puter session token in the course page's local storage and retrieves a Puter User object to resume the AI session. That object can include a username, UUID, email-confirmation status, storage/subscription fields, and a last-activity timestamp. SkillBridge's operator does not receive the token or User object.
v1.0.1 declares https://*.youtube.com/* host access. Its subtitle feature controls an existing embedded player with iframe postMessage commands. The package also contains an unused FETCH_URL background proxy; the v1.0.1 subtitle module does not call that proxy, but, if invoked internally for a YouTube URL, it can make a YouTube request and attach one fixed Cookie header containing technical CONSENT and SOCS values. The unpublished candidate removes both the host permission and that handler.
- Preferences — selected language, auto-translate, dark mode, and onboarding state are stored in
chrome.storage.local. - Translation cache — original and translated course text is cached in IndexedDB (
skillbridge-cache). - Tutor history — Tutor questions, AI answers, language, course heading, page URL, and timestamp are stored in IndexedDB (
skillbridge-tutor) so the user can reopen recent conversations. - Curated dictionaries — packaged with the extension.
The local cache and Tutor history are not sent to the SkillBridge operator. A new Tutor request sends the current question and the limited page context described above, not the saved conversation database.
- Preferences: retained until the user clears extension data or removes the extension.
- Translation cache: entries older than 30 days are no longer used, but v1.0.1 does not delete the stale IndexedDB record during lookup; it may remain until the user clears the relevant browser/site data.
- Tutor history: no automatic expiry; retained locally until the user clears the relevant browser/site data.
- Puter session: the token remains in the course page's local storage until Puter signs out/resets it or the user clears that site's data; the retrieved User object is held in memory for the page session.
- Third-party processing: Google, Puter, and the selected AI provider control their own service logs and retention under their respective policies.
| Permission or site access | v1.0.1 scope |
|---|---|
storage |
Save extension preferences |
activeTab |
Legacy access to the active course tab |
tabs |
Legacy tab/navigation access |
*.skilljar.com |
Run on and translate supported Skilljar course pages |
*.youtube.com |
Legacy YouTube access described above |
translate.googleapis.com |
Send requested course text to Google Translate |
The candidate includes an AI Tutor using Claude — Sonnet 4.6, falling back to Sonnet 4.5 if that model is unavailable — through the bundled Puter client. The client initializes in Chrome's ISOLATED content-script world only on the top-level anthropic.skilljar.com page and exchanges Tutor requests through authenticated extension ports. Its SDK object and extension-port payloads are not exposed to the course page's main JavaScript world. The visible Tutor UI remains in the shared page DOM, however, so course-page scripts may observe keyboard events and rendered questions or answers. The CWS build disables the SDK's unused eager network and host-storage initialization, and no Puter authentication or AI request is made until the user sends a cloud Tutor message. The first such use opens a free Puter sign-in. Puter's HTTPS sign-in returns its result to the opener through browser window messaging, so the course page may also observe that authentication event while sign-in is happening; SkillBridge stores the accepted token only in extension storage. Page translation never invokes Puter, Claude, or the Tutor model: it uses curated dictionaries, the local cache, Google Translate, deterministic protected-term restoration, and structure-preserving HTML reconciliation. Selecting the local or off Tutor engine prevents Tutor messages from going to Puter.
- Preferences and interface state (
chrome.storage.local) — selected language, dark mode, auto-translate, onboarding state, and related display settings. - Learning-tool state (
chrome.storage.local) — flashcard review state, bookmarks, recent lessons, and scroll positions. - Translation cache (IndexedDB) — original text, translated text, target language, and a timestamp are cached in
skillbridge-cachefor up to 30 days. This does not depend on thestorageextension permission. - AI Tutor chat history (IndexedDB) — your question, the tutor's answer, the language, the lesson heading, a timestamp, and the lesson URL are stored on your device so the sidebar can show past conversations. This never leaves your device except as the tutor request itself (to Puter, or to your own local server when the on-device engine is selected).
- Puter session (
chrome.storage.local) — after a successful cloud Tutor sign-in, the accepted session token and application identifier are stored in extension storage so the session can resume. They are not stored in the course site's local storage. - Progress summaries — calculated locally from stored course state; they are not separately persisted or transmitted.
- Curated dictionaries — packaged with the extension.
SkillBridge does not send this locally stored state to its operator or to a third-party analytics service. It can be removed through the browser's extension or site-data controls.
| Service | What is sent | Purpose | Privacy policy |
|---|---|---|---|
| Google Translate API | Course-page text selected for translation and the requested language. For paragraphs that mix text with links, inline code, or emphasis, the block's markup is sent so the structure survives translation — that markup includes the link targets (href) and image addresses (src) inside the block |
Translate text not already covered by the packaged dictionary or local cache | Google Privacy Policy |
| Puter-backed Claude | The user's Tutor question, any text the user explicitly quotes into it, the requested response language, the course title, up to 8 section headings from the page, and up to 2,000 characters of lesson text — a short opening plus the text near your current position in the lesson | Generate an AI Tutor response (cloud engine only; not used when the Tutor is set to local or off) | Puter Privacy Policy |
| Puter authentication | Sign-in and session data handled by the bundled client in an ISOLATED content-script world. Puter returns the sign-in result to the HTTPS opener through browser window messaging, which the course page may be able to observe during sign-in. SkillBridge validates the result and stores the accepted token and application identifier in chrome.storage.local, not course-site storage. The CWS build disables automatic User/profile lookups, so it does not retrieve a username, user UUID, email status, or other User-object fields. SkillBridge's operator does not receive the token or application identifier |
Authenticate and resume the cloud Tutor session | Puter Privacy Policy |
| A local server the user runs (optional) | Same Tutor content as the Claude row, sent only to the user's configured address | Generate an AI Tutor response on-device; see "Local AI Engine" below | Controlled by the user |
The candidate does not transmit course text to YouTube. Auto-subtitles configure an existing embedded player and send it player-control messages; the extension requests no YouTube host permission.
- The operator does not receive your name, email address, Puter session token, Puter application identifier, or payment information. The isolated Tutor broker handles only the authentication/session data described above for the cloud Tutor.
- No browsing history outside the pages where the extension is configured to run
- No analytics, telemetry, advertising identifier, or marketing profile
- Recent-lesson URLs/titles, timestamps, scroll positions, bookmarks, flashcard review activity, and Tutor history are handled locally but are not sent to the operator or an analytics service.
- No AI Tutor conversation is sent to the operator. Tutor chats are kept on your device (see "Data Stored Locally"); only the active Tutor request is sent to Puter/Claude or the local server selected by the user.
| Permission or site access | Purpose |
|---|---|
storage |
Save preferences, Tutor engine settings, flashcard review state, bookmarks, recent lessons, scroll positions, and the accepted Puter session token/application identifier in chrome.storage.local |
alarms |
Run periodic translation-cache cleanup |
*.skilljar.com |
Translate supported AI-course pages hosted on Skilljar |
claude.com/resources/tutorials (content-script match) |
Translate Claude tutorial pages |
translate.googleapis.com |
Send page text to Google Translate when translation is requested |
http://localhost/*, http://127.0.0.1/* (optional) |
Requested only if the user selects the local (on-device) AI Tutor engine, so the extension can reach an OpenAI-compatible server the user runs on their own machine. Not granted at install time; declining leaves the Tutor on its previous engine. |
The candidate lets the user run the AI Tutor against a local OpenAI-compatible server (for example Ollama) instead of the cloud. When that engine is selected:
- The Tutor question, the requested response language, and the same lesson context described above are sent only to the address the user configures (default
http://localhost:11434/v1). Nothing is sent to Puter, Claude, or any other remote service for tutor chat. - The request is made by the extension's service worker because a page context cannot reach
localhostdirectly. It carries no credentials and no cookies. - SkillBridge does not operate, bundle, or control that local server. Whatever the user's own server logs or retains is under the user's control.
- The address and model name are stored locally in
chrome.storage.localalongside the other preferences.
- Translation cache: up to 30 days, unless the user clears it sooner.
- Preferences and learning-tool state: retained locally until the user clears extension or site data.
- Tutor history: retained locally until the user clears extension or site data; older entries can be pruned if browser storage is exhausted.
- Puter session: the token and application identifier remain in
chrome.storage.localuntil Puter resets the session, SkillBridge clears a rejected session, or the user clears the extension's data. - Third-party processing: Google, Puter, and any local server selected by the user control their own logs and retention under their respective policies or configuration.
SkillBridge handles user data only to provide or improve its disclosed, user-facing translation, local study, and Tutor features. It transfers user data only when necessary to provide those features, comply with law, address security, or as part of a merger or asset transfer. SkillBridge does not sell user data, use it for credit decisions, or use or transfer it for personalized advertising. The operator does not allow humans to read handled user data except with the user's affirmative agreement for a specific support purpose, when necessary for security, to comply with law, or after aggregation and anonymization for internal operations.
Requests to Google, Puter, and Claude use HTTPS. A user-selected local Tutor server may use HTTP on localhost or 127.0.0.1; that loopback traffic stays on the user's device. Locally retained preferences, lesson activity, cached translations, and Tutor history use browser-managed storage and are not separately encrypted by SkillBridge, so access to the user's unlocked browser profile may also permit access to that local data.
Unpacked developer builds contain the same user-invoked Tutor gateway. Sending a cloud Tutor message transmits that request to Claude through Puter; page translation does not invoke Puter or an AI model. The raw vendored Puter source still contains SDK features that the CWS build removes during packaging, so the repository root or developer ZIP must not be substituted for the scanned CWS artifact.
SkillBridge does not operate a user database. Google and, when the cloud Tutor is used, Puter and the selected AI provider may process transmitted text in jurisdictions outside the user's country. Users should review the applicable third-party policies for rights and controls.
SkillBridge does not knowingly collect personal information from children under 13.
TODO: Keep the v1.0.1 legacy disclosure on this page while publication is paused. Remove or archive it only after the replacement version is confirmed live in the Chrome Web Store, then update this policy and the store listing together.
Material changes to this policy will be posted in this file and reflected in the published extension information.
For privacy questions, open an issue on GitHub.