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:
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.
chrome.storage.local.
skillbridge-cache).
skillbridge-tutor) so the user can reopen recent conversations.
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.
| 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 and academy.claude.com pages — Anthropic's
own course platforms — and exchanges Tutor requests through authenticated extension ports. Those two hosts are the
entire list, checked in the extension's service worker; no other page, subdomain, or frame can reach the Tutor
transport. On Academy the check also requires a course unit path, so the learner's account, settings and catalog
pages are outside it. On an assessment page the Tutor is additionally told not to answer questions, and the lesson
body — which is where answer choices live — is withheld from its context entirely. 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. Baseline 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. Translation Refinement is a separate, optional feature that is off by
default and has its own consent: when it is explicitly enabled AND consented, already-translated paragraphs near
what you are reading may additionally be sent to the model you selected for post-editing, up to a per-page limit.
Turning it off, or withdrawing that consent, stops any request already in flight. Selecting the local or off Tutor
engine prevents Tutor messages from going to Puter.
chrome.storage.local) — selected language, dark
mode, auto-translate, onboarding state, and related display settings.
chrome.storage.local) — flashcard review state, bookmarks,
recent lessons, and scroll positions.
skillbridge-cache for up to 30 days. This does not depend on the
storage extension permission.
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.
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-backed Claude, or the local server you configure | Translated course paragraphs plus their English source, when the optional translation refinement setting is on and separately consented to. Off by default; nothing is sent otherwise. The correction is discarded unless every protected term, number, URL, code span and link survives it unchanged | Post-edit a Google Translate result | 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 the Local AI Engine section 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.
| 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 |
academy.claude.com/courses (content-script match) |
Translate lesson pages on Anthropic's Claude Academy. Scoped to course routes, so the learner's account, settings and catalog pages are outside the extension's reach. On assessment pages the answer choices are excluded from translation, so their text is never sent anywhere; where the page is already published in one of Academy's own locales, SkillBridge preserves the official copy: for locales whose script makes English residue identifiable (Korean, Japanese, Chinese) only that residue is sent, and where residue cannot be told apart from official copy (Spanish, French) nothing is sent at all |
academy.claude.com/*/courses (content-script match) |
The same course routes under a locale prefix, which is how Academy serves its non-English locales |
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. |
Separate from the AI Tutor, and separately consented to. The AI Tutor sends what the user types; refinement would
send paragraphs the user is reading, so agreeing to one is not agreeing to the other and the extension does not
treat it as such. Both a mode (Off / Cloud / Local /
Same as AI Tutor) and an explicit consent checkbox must be set before any request is made;
Same as AI Tutor resolves to nothing when the Tutor is off.
When it is on:
Cloud, or the user's own server for Local, where nothing leaves the device.
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:
http://localhost:11434/v1).
Nothing is sent to Puter, Claude, or any other remote service for tutor chat.
localhost directly. It carries no credentials and no cookies.
chrome.storage.local alongside the other
preferences.
chrome.storage.local until Puter resets the session, SkillBridge clears a rejected session, or the
user clears the extension's data.
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 here and reflected in the published extension information.