Build a period-end accrual schedule by computing each accrual, citing support, and drafting journal entries for controller approval. Use during month-end close; this drafts entries only and must not post them.
日本語の概要は準備中です。原文の説明を表示しています。
Use this skill when the user needs advanced Playwright control of an already running browser session through Interpreter's app-managed browser bridge and the `builtin-js-repl` `js_repl` tool, after simple browser page work cannot be handled by the unified `builtin-interpreter` browser page tools.
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
Use this skill when the user needs advanced Playwright control of an already running browser session rather than launch a local dev browser from source.
For simple page inventory and element actions, prefer the unified browser page tools first:
interpreter-app tools builtin-interpreter interpreter_whole_computer_state_get --json '{}'interpreter-app tools builtin-interpreter interpreter_browser_page_inspect --json '{"tab_ref":"<tab_ref>"}'builtin-interpreter browser page trace/click/type/select/scroll tool using the exact tab_ref, frame_id, ref_id, and target_identity fields returned by inventory/inspectUse this skill for advanced Playwright-in-tab work after you have an exact browser-control tab ref or session key, or when the simple builtin-interpreter page primitives cannot express the task.
This skill is for advanced live browser control:
run browser-action JavaScript through the js_repl app tool: interpreter-app tools builtin-js-repl js_repl --json '{"code":"..."}'
for multi-line JavaScript, prefer --stdin-arg code, which reads the raw JavaScript from stdin with no JSON escaping:
interpreter-app tools builtin-js-repl js_repl --stdin-arg code <<'JS'
globalThis.page = await globalThis.ensurePage();
console.log(globalThis.page.url());
JS
actions that trigger navigation or slow network work can outlive the default execution timeout; pass timeout_ms in the same call (--json '{"timeout_ms":300000}' --stdin-arg code <<'JS' ... JS). A timed-out call keeps the kernel and globalThis state, and the action may still have completed in the background, so reread page state before retrying instead of repeating the action blindly
when acting on the browser, put the JavaScript in the code argument of a builtin-js-repl js_repl call; do not answer with a fenced JavaScript block for the user to run, and do not run raw node instead
use the unified builtin-interpreter browser page tools for ordinary page inspect/click/type/select/scroll tasks, and use this Browser Use-shaped browser-control path for advanced Playwright work instead of opening a new Interpreter in-app browser tab
treat js_repl as a persistent JavaScript kernel: top-level let, const, class, and function names remain declared after each call in the same thread; interpreter-app tools builtin-js-repl js_repl_reset --json '{}' clears kernel state
write every browser-control snippet so it can run more than once without Identifier has already been declared
in the desktop app, assume Interpreter should already be running the local browser bridge
import interpreter-browser-control with await import("interpreter-browser-control"); the helper imports playwright-core and exposes raw Playwright as globalThis.playwright, globalThis.chromium, and the live globalThis.page
if the task already names a browser session key or browser-control tab ref, use it directly and skip discovery
inspect the local browser-session status endpoint only when the task did not already tell you which session to use
connect to Interpreter's browser-control bridge with chromium.connectOverCDP(...)
reuse the existing pages from that connection
do not call browser.close() on the user's live browser
do not use Interpreter's built-in browser tools, workstation browser/email tabs, or interpreter-app layout get|set as substitutes for this workflow
use Interpreter layout tools for files, workspace UI layout, and local app previews, not for controlling the user's browser
if the user explicitly asks to try opening a website inside the Interpreter app, warn them first that the in-app browser is a separate session and they should not expect to be signed in there
Because js_repl persists across turns, all browser-control bootstrap code must be idempotent and should store long-lived state on globalThis rather than redeclaring top-level let or const bindings.
127.0.0.1:19988.127.0.0.1:19988.interpreter-app tools builtin-js-repl js_repl must be available.If those preconditions are not met, stop and tell the user what is missing.
js_repl needs no discovery: call interpreter-app tools builtin-js-repl js_repl directly instead of inspecting interpreter-app tools list first.builtin-js-repl js_repl.js_repl browser-control path.interpreter-app layout get|set to open or manipulate an external website as a workaround for browser control.interpreter-app tools builtin-js-repl js_repl is unavailable, say that directly instead of trying a different browser path.js_repl runtime. Re-running bootstrap code must be safe.const or let, including imports, browser, context, page, tab, or selectedBrowserSessionId.globalThis.foo ??= ... for long-lived browser-control state.globalThis.helper ??= async function helper() { ... } so follow-up turns can reuse them safely.globalThis, for example globalThis.browserControlRuntime ??= await import("interpreter-browser-control").let or const bindings like browser, page, or browserBridgeHttpEndpoint across turns.page from globalThis.ensurePage() across turns. Persist the handle on globalThis.page and act through that instead.selectedBrowserSessionId without the globalThis. prefix.globalThis state with the idempotent bootstrap instead of pasting a second conflicting bootstrap.interpreter-app tools builtin-js-repl js_repl. The JavaScript belongs in that tool call's code argument, not in the assistant message.globalThis.selectedBrowserSessionId first if the task already names the exact browser session key or browser-control tab ref.agent.browser, display, and globalThis.ensurePage() exist./extensions/status only if the task did not already name the session.globalThis.page = await globalThis.ensurePage();.agent.browser primitives for Playwright-backed observation and tab management, and use normal Playwright APIs on globalThis.page when you need raw Playwright.globalThis.selectedBrowserSessionId ??= undefined;
globalThis.page ??= undefined;
globalThis.browserControlRuntime ??= await import("interpreter-browser-control");
await globalThis.browserControlRuntime.setupInterpreterBrowserControl({
globals: globalThis,
sessionId: globalThis.selectedBrowserSessionId,
});
globalThis.page = await globalThis.ensurePage();
globalThis.tab = await agent.browser.tabs.selected();
console.log({
browserSessionId: globalThis.selectedBrowserSessionId,
title: await globalThis.page.title().catch(() => ""),
url: globalThis.page.url(),
});
js_repl call small. Do not paste a giant helper when the task already names the session you should use.globalThis.selectedBrowserSessionId = "<stableKey-or-tab-ref>";
then bootstrap if needed,
then globalThis.page = await globalThis.ensurePage();.globalThis.selectedBrowserSessionId = "<that value>" before running globalThis.ensurePage(). Use the exact tab_ref from interpreter_whole_computer_state_get when available, including refs shaped like <profile-key>:chrome-tab:<chrome-tab-id>; when browser policy allows that page, the runtime claims an observed tab for Playwright control and selects the matching page. Use browser_profile_policy_id / extension_stable_key or an exact tab_ref as the control identity; browser_profile_name and browser_profile_path are display context, not CDP session keys.agent.browser.nameSession(name)agent.browser.tabs.selected(), list(), get(id), and new()agent.browser.user.openTabs()goto(url), reload(), back(), forward(), close(), title(), and url()tab.playwright methods matching the Browser Use skill API such as domSnapshot(), screenshot(), getByRole(), getByText(), locator(), waitForLoadState(), and waitForURL()tab.cua methods matching the Browser Use skill API such as click(), double_click(), drag(), get_visible_screenshot(), keypress(), move(), scroll(), and type()tab.dev.logs() and tab.clipboard.*tab.playwright.screenshot() and tab.cua.get_visible_screenshot() are image objects with toBase64(). Use await display(image) to save them; the tool result reports the saved image path, which you can open with view_image when you need to see it.globalThis.page for the live page, globalThis.chromium for the browser type, and globalThis.playwright for the imported playwright-core module.globalThis.ensurePage(), and act.globalThis.page = await globalThis.ensurePage();
then await globalThis.page.locator(...).click();globalThis.ensurePage() exists again before touching page.stableKey or exact tab ref.getByRole, locator, and explicit waits when needed.context.pages() and choose the correct one explicitly.browserAccessPolicy via interpreter_settings_get, but only the user can change it.Before writing a file or giving a final answer from a browser search or form:
globalThis.selectedBrowserSessionId = "<stableKey-or-tab-ref>";
globalThis.page = await globalThis.ensurePage();
globalThis.tab = await agent.browser.tabs.selected();
await globalThis.tab.goto("https://www.wellsfargo.com/");
console.log({
title: await globalThis.tab.title(),
url: await globalThis.tab.url(),
});
await agent.browser.nameSession("Browser task");
globalThis.tab = await agent.browser.tabs.selected();
console.log(await globalThis.tab.playwright.domSnapshot());
await display(await globalThis.tab.cua.get_visible_screenshot());
Identifier has already been declared: reuse globalThis state and do not redeclare top-level names like const page = ... in follow-up turns.X is not defined: initialize that value on globalThis or rerun the idempotent bootstrap. If the missing value is selectedBrowserSessionId, use globalThis.selectedBrowserSessionId.stableKey to use, then set globalThis.selectedBrowserSessionId explicitly.Do not close the user's browser. If you need to discard local handles, do this instead:
globalThis.page = undefined;
globalThis.context = undefined;
globalThis.browser = undefined;
This skill assumes normal Playwright-over-CDP usage. Do not assume extension-specific fork APIs or internal helper utilities unless they are explicitly available in the runtime.
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Build a period-end accrual schedule by computing each accrual, citing support, and drafting journal entries for controller approval. Use during month-end close; this drafts entries only and must not post them.
日本語の概要は準備中です。原文の説明を表示しています。
Audit a spreadsheet for formula accuracy, errors, and common financial-model mistakes. Use for selected ranges, single sheets, or whole-workbook model checks including balance-sheet balance, cash tie-out, roll-forwards, and logic sanity.
日本語の概要は準備中です。原文の説明を表示しています。
Drive a native desktop app through Interpreter's builtin-cua-driver. Use get_app_state, click/type/scroll/drag, and verify by calling get_app_state again when the user asks to operate a real desktop app, browser chrome, native dialog, menu, secure prompt, file chooser, or hidden/background window.
日本語の概要は準備中です。原文の説明を表示しています。
Create, inspect, and edit Word documents (`.docx`) with local code-execution tools. Use for document drafting, structured edits, tables, comments, and layout-sensitive Word deliverables.
日本語の概要は準備中です。原文の説明を表示しています。
Design or revise Interpreter UI for non-developers with an ultra-minimal, utilitarian style inspired by the OpenAI website and ChatGPT, not the developer platform. Use when simplifying settings, onboarding, chat, forms, empty states, or helper copy; when removing extra containers, labels, or visual noise; when replacing technical wording with plain language; when clarifying hierarchy and making the main user action obvious; when making every visible label and status understandable to an average HR admin or other non-technical user; when hiding implementation details such as logs, IDs, endpoints, paths, or protocol names; or when a screen must respect the app's existing CSS variables and light/dark theme behavior.
日本語の概要は準備中です。原文の説明を表示しています。
Use for AI image, video, audio, or 3D generation/editing. Prefer configured media tools when present, estimate cost before running a paid model, and keep provider credentials in the user's environment or provider configuration.
日本語の概要は準備中です。原文の説明を表示しています。