Skills now ship with the app under /apps/skills/ (sibling of /apps/x).
Forge bundles the directory into Resources/skills/; main resolves it via
process.resourcesPath in production and a workspace-relative path in dev,
then registers it in the DI container. The runtime reads SKILL.md files
directly from the bundle — no copy to ~/.rowboat/skills/, no GitHub
tarball sync.
Drop the override layer (FSSkillsRepo, SkillOverride, edit/diff UI,
skill-update notification) since skills are now read-only and only ship
with app updates. Resolver simplifies to a single source.
Add a placeholder substitution layer so skills that need live data
(currently `tracks`, with {{TRACK_BLOCK_SCHEMA}}) keep dynamic content
without depending on TS-module evaluation.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.4 KiB
| name | description | license | compatibility | metadata | ||||
|---|---|---|---|---|---|---|---|---|
| browser-control | Control Rowboat's embedded browser pane — open sites, inspect the live page, switch tabs, and interact with indexed page elements. Use when the user wants to open a website in-app, search the web in the browser pane, click something on a page, fill a form, or interact with a live webpage inside Rowboat. | MIT | Designed for Rowboat desktop app |
|
Browser Control Skill
You have access to the browser-control tool, which controls Rowboat's embedded browser pane directly.
Use this skill when the user asks you to open a website, browse in-app, search the web in the browser pane, click something on a page, fill a form, or otherwise interact with a live webpage inside Rowboat.
Core Workflow
- Start with
browser-control({ action: "open" })if the browser pane may not already be open. - Use
browser-control({ action: "read-page" })to inspect the current page. - The tool returns:
snapshotId- page
urlandtitle - visible page text
- interactable elements with numbered
indexvalues
- Prefer acting on those numbered indices with
click/type/press. - After each action, read the returned page snapshot before deciding the next step.
Actions
open
Open the browser pane and ensure an active tab exists.
get-state
Return the current browser tabs and active tab id.
new-tab
Open a new browser tab.
Parameters:
target(optional): URL or plain-language search query
switch-tab
Switch to a tab by tabId.
close-tab
Close a tab by tabId.
navigate
Navigate the active tab.
Parameters:
target: URL or plain-language search query
Plain-language targets are converted into a search automatically.
back / forward / reload
Standard browser navigation controls.
read-page
Read the current page and return a compact snapshot.
Parameters:
maxElements(optional)maxTextLength(optional)
click
Click an element.
Prefer:
index: element index fromread-page
Optional:
snapshotId: include it when acting on a recent snapshotselector: fallback only when no usable index exists
type
Type into an input, textarea, or contenteditable element.
Parameters:
text: text to enter- plus the same target fields as
click
press
Send a key press such as Enter, Tab, Escape, or arrow keys.
Parameters:
key- optional target fields if you need to focus a specific element first
scroll
Scroll the current page.
Parameters:
direction:"up"or"down"(optional; defaults down)amount: pixel distance (optional)
wait
Wait for the page to settle, useful after async UI changes.
Parameters:
ms: milliseconds to wait (optional)
Important Rules
- Prefer
read-pagebefore interacting. - Prefer element
indexover CSS selectors. - If the tool says the snapshot is stale, call
read-pageagain. - After navigation, clicking, typing, pressing, or scrolling, use the returned page snapshot instead of assuming the page state.
- Use Rowboat's browser for live interaction. Use web search tools for research where a live session is unnecessary.
- Do not wrap browser URLs or browser pages in ```filepath blocks. Filepath cards are only for real files on disk, not web pages or browser tabs.
- If you mention a page the browser opened, use plain text for the URL/title instead of trying to create a clickable file card.