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

control-safari

Control the user's existing Safari 26 session through a persistent script-driven JavaScript REPL. Use for inspecting, navigating, clicking, filling, selecting, uploading, or verifying webpages in Safari when an MCP/plugin transport is unavailable.

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

설치 방법 보기

포함된 파일(8)

  • SKILL.md2.7 KB
  • agents/openai.yaml207 B
  • references/captcha.md3.9 KB
  • references/google-accounts.md1.4 KB
  • references/google-docs.md3.3 KB
  • references/google-sheets.md4.1 KB
  • scripts/runtime/safari-repl.jxa.js327.3 KB
  • scripts/safari-repl.mjs14.2 KB

SKILL.md(원문)

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

Control Safari

Use only the bundled script runtime. Do not look for or call MCP tools from this Skill. Every command returns JSON on stdout and is synchronous from the agent's perspective.

Start

Start one isolated session and keep its sessionId for every later command:

node {baseDir}/scripts/safari-repl.mjs start

Check Safari, then read and follow the complete operating guide:

node {baseDir}/scripts/safari-repl.mjs doctor --session SESSION_ID
node {baseDir}/scripts/safari-repl.mjs documentation --session SESSION_ID

Stop if the doctor reports that Safari 26 automation or JavaScript from Apple Events is unavailable.

Run

Run short cells directly:

node {baseDir}/scripts/safari-repl.mjs run \
  --session SESSION_ID \
  --title "Inspect the task tab" \
  --code 'var tabs = browser.tabs.list(); tabs'

For multiline or quote-heavy JavaScript, write it to a temporary file and use --code-file:

node {baseDir}/scripts/safari-repl.mjs run \
  --session SESSION_ID \
  --title "Operate the page" \
  --code-file /absolute/path/to/cell.js

Bindings declared with var persist within the same session. Never reuse a sessionId from another task. Image-producing cells return local paths in the images array; inspect those files with the current agent's image-reading tool.

Use a new task-owned Safari tab by default. Use separate task-owned tabs for different websites, and reuse a user tab only when the user explicitly requests it. Follow all confirmation and safety rules returned by documentation.

Read these references only when applicable:

Reset and cleanup

Reset bindings only when a clean REPL is required:

node {baseDir}/scripts/safari-repl.mjs reset --session SESSION_ID

Before every final response, including failures, release the control indicator and stop the session:

node {baseDir}/scripts/safari-repl.mjs release --session SESSION_ID
node {baseDir}/scripts/safari-repl.mjs stop --session SESSION_ID

Do not leave the background session running and do not mix this script transport with an MCP transport in the same browser task.

리뷰

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

댓글

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

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

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

0 / 1,000자

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

같은 저장소의 스킬

Control the user's existing Safari 26 tabs through a persistent JavaScript REPL with a Playwright-style browser API. Use when a task must inspect, navigate, click, fill, select, or verify a page in Safari while preserving the user's current logins and browser state.

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

citrolabs/safari-browser-use102026년 9월 25일 업데이트

citrolabs의 스킬 모두 보기

이 스킬의 문제 신고