A high-performance, mobile-optimized course automation extension
Engineered for Google Skills courses. Auto-skips passive videos & documents with customizable controls for quizzes and labs.
Flow is a browser extension built on the modern Manifest V3 standard, crafted specifically to streamline passive workflows on Google Skills learning paths. It completely automates the time-consuming aspects of course completion — such as auto-advancing through embedded video lectures and static reading material — while allowing you full control over whether to skip or manually complete interactive quizzes and hands-on labs.
Designed from the ground up to be mobile-first, Flow is engineered with generous touch targets (exceeding standard 48px hit areas), tap-anywhere toggle cards, vibrant glow states, and an ultra-responsive dark interface that feels native on Android Chromium browsers (Kiwi, Brave, Edge) and Firefox Mobile, as well as desktop Chrome and Firefox.
- Embedded YouTube Player Detection: Intercepts embedded YouTube iframe players within courses.
- Autoplay & Mute Protocol: Automatically mutes the video to bypass browser autoplay security restrictions and initiates playback seamlessly.
- Near-Duration Seek: Instantly fast-forwards the video to
duration - 0.5s, allowing the video player to naturally fire itsendedcompletion event. - Safety Guards: Includes finite duration verification (
isFinite()) and a retry-limit circuit breaker to prevent infinite loops on slow network connections.
- Metadata-Driven Navigation: Unlike brittle button-hunting extensions, Flow parses the structured
modulesJSON attribute directly from the course page DOM (<ql-contents-menu>), determining the exact next activity URL with 100% precision. - SPA Router Synchronization: Hooks into the browser History API (
pushState,replaceState, andpopstate) to detect single-page application route transitions instantly without requiring full page refreshes. - Shadow DOM Piercing: Contains fallback deep click dispatchers to trigger interactive
<ql-button>and<md-elevated-button>Web Components across open shadow boundaries.
- Skip Quizzes (Toggleable): When enabled, quizzes are automatically bypassed so you can proceed with the path. When disabled, Flow halts with a visual indicator (
📝 Quiz — complete manually) to allow manual completion. - Skip Labs (Toggleable): When enabled, hands-on lab pages auto-advance immediately. When disabled, Flow pauses and alerts you (
⏸ Lab — complete manually). - Documents & Reading: Automatically advances through reading materials and text activities.
- Generous Tap Targets: Cards and option rows offer full-width click/touch surfaces for comfortable one-thumb mobile navigation.
- Live Status Feedback: Real-time pulsing status beacon and descriptive activity logs (
Analyzing current activity...,Video detected,Advancing...). - Persistent State: Settings and automation states are synchronized in
chrome.storage.localacross all tabs and browser restarts.
┌─────────────────────────────────────────────────────────────┐
│ YouTube Iframe Context │
│ [youtube-content.js] ── Mutes, seeks to end, captures ended│
└──────────────────────────────┬──────────────────────────────┘
│ (chrome.runtime.sendMessage)
▼
┌─────────────────────────────────────────────────────────────┐
│ Background Service Worker │
│ [background.js] ────── Relays VIDEO_ENDED to Tab & Storage │
└──────────────────────────────┬──────────────────────────────┘
│ (chrome.tabs.sendMessage)
▼
┌─────────────────────────────────────────────────────────────┐
│ Main Course Platform │
│ [course-content.js] ── Reads ql-contents-menu JSON / DOM │
│ Handles SPA routing & auto-nav │
└──────────────────────────────▲──────────────────────────────┘
│ (TOGGLE / SETTINGS_CHANGED)
┌──────────────────────────────┴──────────────────────────────┐
│ Popup Interface │
│ [popup.html / popup.js] ── Mobile touch UI & preferences │
└─────────────────────────────────────────────────────────────┘
| Layer | Technology | Description |
|---|---|---|
| Extension Standard | Manifest V3 | Standardized for Chrome, Edge, Brave, and Firefox (Gecko) |
| Logic & Scripting | Vanilla JavaScript (ES2022) | High-speed, dependency-free content scripts & service worker |
| Styling & Theme | CSS3 & Custom Variables | Glassmorphism, tailored dark palette, CSS Grid & Flexbox |
| Typography | Google Fonts (Inter) | Clean, legible modern sans-serif |
| Storage API | chrome.storage.local |
Asynchronous local preference & state persistence |
- Clone or download this repository:
git clone https://github.com/Vignesh-72/Flow.git
- Open your browser and navigate to the extensions page:
- Chrome:
chrome://extensions/ - Edge:
edge://extensions/ - Brave:
brave://extensions/ - Kiwi Browser (Mobile): Open menu → Extensions
- Chrome:
- Enable Developer mode (toggle in top-right corner).
- Click Load unpacked and select the root directory of this project.
- Pin Flow to your browser toolbar.
-
1-Click Official Store Install: 👉 Install Flow from Mozilla Add-ons (AMO)
-
Manual / Developer Mode:
- Open Firefox and navigate to
about:debugging#/runtime/this-firefox. - Click Load Temporary Add-on....
- Select the
manifest.jsonfile inside the cloned directory (or upload the packagedFlow-v1.3.zip).
- Open Firefox and navigate to
Flow/
├── manifest.json # Unified Manifest V3 specification (Chrome & Firefox)
├── background.js # Service worker: message router & state manager
├── course-content.js # Page orchestration, SPA observer & DOM parser
├── youtube-content.js # Iframe content script for video automation
├── popup.html # Mobile-optimized dark popup interface
├── popup.js # Popup interaction handlers & real-time sync
├── logo_trans.png # Transparent Flow brand icon asset
├── LICENSE # Open source MIT License
└── README.md # Complete project documentation
Flow requests only the minimal set of scoped permissions required for its functionality:
| Permission | Purpose |
|---|---|
storage |
Saves user toggles (automationEnabled, skipQuiz, skipLab) across sessions. |
activeTab |
Sends start/stop commands to the currently active course tab. |
*://skills.google/* |
Scoped strictly to Google Skills platform domains — no broad web access. |
*://*.youtube.com/* |
Allows iframe script execution inside embedded video players. |
This project is licensed under the MIT License — see the LICENSE file for full details.
MIT License — Copyright (c) 2026 Vignesh-72
https://github.com/Vignesh-72/Flow