본문으로 건너뛰기
cccskills
무료GitHub에 공개

chrome

Read this when you need Chrome MV3-shaped APIs — bookmarks, tabs, windows, history, downloads, or top sites — in standalone OmOWright.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(1)

  • SKILL.md3.7 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Chrome MV3 APIs (standalone)

createChromeApi(connection, options?) returns MV3-shaped namespaces backed by CDP and the browser's own profile files — no extension required.

import { createChromeApi } from "omowright";

const chrome = createChromeApi(connection, {
  profilePath: "/path/to/user-data-dir",  // enables bookmarks/history/topSites/downloads.search
  downloadDir: "/path/to/downloads",      // optional, defaults to a temp dir
});

PROFILE-BACKED METHODS THROW UnsupportedOperationError WITHOUT profilePath. A connectPipe browser gets a fresh profile, so bookmarks and history are empty there — these APIs matter when attaching to a real user browser via connect() or reading a real profile directory. Profile reads are read-only and WAL-safe against a running browser.

tabs — CDP Target.getTargets

  • chrome.tabs.query({ url?: string | string[], title?, windowId? }) — url takes MV3 match patterns (*://*.example.com/*), title is a substring match. THESE THREE ARE THE ONLY HONORED FILTERS.
  • chrome.tabs.get(tabId) — tabId is a string; throws when no tab has it.
  • Returns { id, url, title, windowId, active, pinned, audible, discarded, groupId, index }. IDS ARE CDP TARGET-ID STRINGS, NOT MV3 NUMBERS, and the last six fields are fixed defaults — they are not observable over CDP.

Tab lifecycle stays on connection.newTab(url) / page.close(); interaction on page.goto() / page.locator().

windows — CDP Browser.getWindowForTarget

get(windowId, queryOptions?), getCurrent(queryOptions?), getLastFocused(queryOptions?), getAll(queryOptions?).

  • queryOptions: { populate?: boolean } — populate: true adds a tabs array.
  • Returns { id, focused, type, state, alwaysOnTop, incognito, tabs? }.
  • Headless sessions have exactly one window; getCurrent/getLastFocused return the first.

bookmarks — profile Bookmarks JSON, read-only

get(idOrIdList), getChildren(id), getRecent(numberOfItems), getSubTree(id), getTree(), search(query) where query is a string or { query?, url?, title? }.

Nodes: { id, title, type: "url" | "folder", url?, dateAdded?, children? }.

history — profile History SQLite, read-only

  • search({ text, startTime?, endTime?, maxResults? }) — times are Unix ms. Returns [{ id, url, title, visitCount, lastVisitTime }], newest first.
  • getVisits({ url }) — returns [{ id, url, visitTime, transition }].

downloads — History SQLite + Browser.setDownloadBehavior

  • search({ url?, filename?, limit? }) — returns [{ id, url, filename, startTime, bytesReceived, totalBytes, state }]; state is complete | canceled | interrupted | in_progress. Needs profilePath.
  • download({ url, filename? }) — downloads through the real browser and resolves { id, url, filename, state: "complete" } with filename as the absolute saved path. 30s timeout; rejects when the URL starts no download. It uses an in-page anchor click rather than Page.navigate, which hangs on download navigations, and re-asserts the download behavior on every call because tab initialization resets it.

topSites — profile Top Sites SQLite

get() returns [{ url, title }] ordered by rank, max 50.

Write methods require the extension bridge

These throw UnsupportedOperationError because they would mutate the user's own browser state: bookmarks.create/update/move/remove/removeTree, history.addUrl/deleteUrl/deleteRange, downloads.pause/resume/cancel/erase, and all of chrome.tabGroups.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Push browser tab and download lifecycle events plus manager-owned background tabs. Read this when an agent needs lifecycle notifications or a temporary tab without polling.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

code-yeongyu/omowright52026년 10월 16일 업데이트

captcha

무료

Interact with challenge widgets in an authorized automation flow using checkbox clicks, slider drags, text OCR, and image-grid input. Verify completion with an application-specific condition.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

code-yeongyu/omowright52026년 10월 16일 업데이트

Use when a user-driven CloakBrowser profile needs MV3 Chrome writes/events through the native messaging bridge.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

code-yeongyu/omowright52026년 10월 16일 업데이트

network

무료

Read the network instead of the DOM. Snoop JSON API responses, wait for a request instead of sleeping, collect items while scrolling, record a QA flight trace (jsonl, HAR, screenshots), and intercept requests with routes.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

code-yeongyu/omowright52026년 10월 16일 업데이트

omowright

무료

The default code-driven browser path for interactive browsing work: drives any browser from code with token-efficient a11y snapshots (57% smaller via compactSnapshot), ref-based clicks, coordinate control (CUA), viewport pinning, CAPTCHA solving (reCAPTCHA, Turnstile, hCaptcha, slider, OCR), Chrome MV3 APIs (tabs/bookmarks/history/downloads/topSites), network snoop (read API JSON instead of DOM), flight-recorder trace (jsonl + HAR + screenshots), OOPIF-aware snapshots, dialog policy, human handoff for login/OTP, device emulation, request routes, stealth via CloakBrowser as the default owned engine with zero exposed CDP ports, and an attached engine that drives the user's own signed-in browser through BrowserSkill (connectBrowserSkill, bskSnapshot, one-click onboarding via bskOnboard). MUST USE for interactive browser work: scraping, blocked/WAF/JS-rendered pages, logins, the user's logged-in sites and open tabs, extension popups, form filling, screenshots, web QA, CAPTCHAs. The ulw-research browsing lane runs on ultimate-browsing, not this skill.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

code-yeongyu/omowright52026년 10월 16일 업데이트

Coordinate-level browser control for UI that snapshots, refs, and locators cannot target - canvas apps, extension popups, OS-drawn dialogs, custom drag surfaces. Read this when a DOM-targeted action fails twice, when the next decision depends on rendered pixels, or when CUA clicks land on the wrong element.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

code-yeongyu/omowright52026년 10월 16일 업데이트

code-yeongyu의 스킬 모두 보기

이 스킬의 문제 신고