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

agent-events

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.

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

설치 방법 보기

포함된 파일(1)

  • SKILL.md2.6 KB

SKILL.md(원문)

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

Agent Events

TREAT THESE AS PUSH NOTIFICATIONS — NEVER POLL Target.getTargets TO DETECT OPENS, CLOSES, POPUPS, OR DOWNLOADS.

One events capability per connection; await ready before trusting baseline discovery or download configuration:

import { createEvents, createAgentTabs } from "omowright";

const events = createEvents(connection, {
  downloadBehavior: "allow",
  downloadPath: "/absolute/path/to/downloads",
});
const tabs = createAgentTabs(connection);
await Promise.all([events.ready, tabs.ready]);

Subscribe before acting

Install the listener or waitForEvent() before the action that produces the event. Waits are bounded; predicates may be async:

const opened = events.waitForEvent("popupOpened", {
  timeout: 30_000,
  predicate: tab => tab.openerTargetId === mainTargetId,
});
await mainPage.evaluate("window.open('https://example.com')");
const popup = await opened;

Six push events: tabOpened, tabClosed, popupOpened, downloadStarted, downloadProgress, downloadFinished. Only page targets produce tab events. A popup produces both tabOpened and popupOpened; about:blank is a valid URL and popup placeholder. Download progress is not coalesced; terminals fire exactly once.

Own temporary tabs through the manager

CREATE TABS ONLY THROUGH createAgentTabs(connection). NEVER SEND Target.createTarget YOURSELF, NEVER CALL Target.activateTarget, NEVER BRING A TAB TO THE FRONT. The manager always requests background creation so automation cannot steal focus, and it owns cleanup.

const tab = await tabs.create("about:blank", {
  viewport: { width: 1440, height: 900 },
});
try {
  await tab.page.goto("https://example.com");
  await tabs.repin(tab);
} finally {
  await tabs.close(tab);
}

CloakBrowser headless defers renderer startup for background targets, so the manager activates immediately before attaching — only for connections launched with a --headless argument. Headed connections attach without activation.

tabs.list() / tabs.get(targetId) expose only manager-created tabs. The manager pins the viewport after attach and after main-frame navigation; child-frame navigation needs no re-pin. tabs.repin forces a fresh pin before a coordinate action.

Cleanup: await tabs.closeAll() or await tabs.dispose() (owns its tabs by default); events.dispose() closes neither the browser nor the agent tabs.

리뷰

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

댓글

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

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

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

0 / 1,000자

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

같은 저장소의 스킬

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월 20일 업데이트

chrome

무료

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

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

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

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

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

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

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월 20일 업데이트

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월 20일 업데이트

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월 20일 업데이트

code-yeongyu의 스킬 모두 보기

이 스킬의 문제 신고