Profile
ccusage/ccusage
Profiles ccusage performance. An agent skill from ccusage/ccusage.
Use a paired browser: the user's signed-in profile, reaching any site they are logged into (calendar, mail, dashboards) with no integration.
The automated check flagged lines worth reading first. See the safety section below.
$ npx skills add deathbyknowledge/gsv --skill browser-target -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install deathbyknowledge/gsv browser-target --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/deathbyknowledge/gsv.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/browser-target .claude/skills/browser-target && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "browser-target" agent skill from https://github.com/deathbyknowledge/gsv/tree/main/skills/browser-target into .claude/skills/browser-target/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "browser-target", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/deathbyknowledge/gsv/tree/main/skills/browser-targetType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add deathbyknowledge/gsv --skill browser-target -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install deathbyknowledge/gsv browser-target --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/deathbyknowledge/gsv.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/browser-target .agents/skills/browser-target && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "browser-target" agent skill from https://github.com/deathbyknowledge/gsv/tree/main/skills/browser-target into .agents/skills/browser-target/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "browser-target", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add deathbyknowledge/gsv --skill browser-target -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install deathbyknowledge/gsv browser-target --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/deathbyknowledge/gsv.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/browser-target .cursor/skills/browser-target && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "browser-target" agent skill from https://github.com/deathbyknowledge/gsv/tree/main/skills/browser-target into .cursor/skills/browser-target/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "browser-target", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/deathbyknowledge/gsv.git --path skills/browser-target--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add deathbyknowledge/gsv --skill browser-target -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install deathbyknowledge/gsv browser-target --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/deathbyknowledge/gsv.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/browser-target .gemini/skills/browser-target && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "browser-target" agent skill from https://github.com/deathbyknowledge/gsv/tree/main/skills/browser-target into .gemini/skills/browser-target/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "browser-target", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install deathbyknowledge/gsv browser-targetInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add deathbyknowledge/gsv --skill browser-target -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/deathbyknowledge/gsv.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/browser-target .github/skills/browser-target && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "browser-target" agent skill from https://github.com/deathbyknowledge/gsv/tree/main/skills/browser-target into .github/skills/browser-target/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "browser-target", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add deathbyknowledge/gsv --skill browser-target -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install deathbyknowledge/gsv browser-target --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/deathbyknowledge/gsv.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/browser-target .opencode/skills/browser-target && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "browser-target" agent skill from https://github.com/deathbyknowledge/gsv/tree/main/skills/browser-target into .opencode/skills/browser-target/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "browser-target", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
browser-targetUse a paired browser: the user's signed-in profile, reaching any site they are logged into (calendar, mail, dashboards) with no integration.
Browser Target is an agent skill from deathbyknowledge/gsv. Use a paired browser: the user's signed-in profile, reaching any site they are logged into (calendar, mail, dashboards) with no integration. Load for any website or web app question; if none is paired, offer pairing.
Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The repository describes itself as: Personal AI computer / distributed OS across all your devices. The licence is MIT.
Read from SKILL.md and the folder at commit d9c5746. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
jqFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Browser Target loads about 3.1k tokens when it runs. Until then it costs about 58 tokens; SKILL.md has 1,372 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found patterns that need a careful read before installing.
without an MCP server or OAuth account. Do not tell the user GSV cannot reach a web service before checking `targets lisAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from deathbyknowledge/gsv at commit d9c5746, republished under its MIT licence (© deathbyknowledge). 1,372 words, ~3,099 tokens.
.claude/skills/browser-target/SKILL.md (or your agent's skills folder).Use this skill when a target is listed as kind browser, has platform
browser or browser-extension, or when the user asks you to act on an active
browser target. Browser target ids are user-configured and may look like
browser:chrome, rearden:brave, or another device id. Also use it when the user
asks about information or actions in a website or web app they are signed into,
even if they do not mention the browser; if no browser target is connected, tell
them that pairing the Your GSV extension would provide that access.
tabs open and page text without an MCP server or OAuth account. Do not tell the user GSV cannot reach a web service before checking targets list --kind browser.Shell with the browser target id, and Read, Write, Edit, Delete, or Search with the same target./README.txt, help, and <command> --help output as authoritative.From the native gsv target, identify the browser target and inspect its
descriptor:
targets list --kind browser
targets show rearden:braveThen run small inspection commands on the browser target itself:
cat /README.txt
help
commands --json
tabs --help
page --help
network --help
media --helpDo not assume commands beyond what the active target advertises. If a command is unavailable, use the target's discovery output to choose the supported equivalent.
Useful read-only runtime paths usually include:
cat /proc/browser.json
cat /proc/tabs.json
cat /proc/tabs/<tabId>/text.txt
cat /proc/tabs/<tabId>/resources/index.json
cat /proc/network/status.json
cat /proc/network/events.jsonlEach tab's resources directory exposes the HTML, JavaScript, CSS, images,
fonts, and other resources currently known to Chrome. Listing the directory or
reading index.json loads only resource metadata. Reading an individual file
loads only that resource body:
find /proc/tabs/<tabId>/resources -type f
cat /proc/tabs/<tabId>/resources/https/example.com/app~<hash>.jsPaths are collision-safe filesystem names; use index.json to map them to
their exact URLs, frames, MIME types, and reported sizes. Resource files are
ephemeral views of the live tab. Copy one to /home/browser when the task needs
a stable snapshot. For recursive content lookup, use the normal Search tool
with the browser target and a path under the tab's resources directory; it
uses Chrome's resource search without reading every body. Shell rg reads the
files it examines and is better reserved for a small resource directory or a
copied snapshot. A resource body may be unavailable after eviction or
navigation; start browser network capture before reproducing a request when an
exact fetch/XHR response must be retained.
Writable browser-local paths usually include /tmp, /tmp/render,
/home/browser, /home/browser/screenshots, /home/browser/network, and
/home/browser/recordings. Use these for artifacts created by browser
commands, viewer inputs, network captures, screenshots, recordings, and
temporary transfer files.
Use target-qualified paths when moving files to or from a browser target:
cp macbook:/home/hank/report.pdf [rearden:brave]:/tmp/report.pdf
cp [rearden:brave]:/tmp/report.pdf gsv:/home/hank/report.pdfTarget-qualified paths use target:/absolute/path. Plain target ids such as
macbook do not need brackets. Target ids containing : must be bracketed,
such as [rearden:brave]:/tmp/page.html.
Run target-qualified cp from the native GSV shell or target-aware filesystem
tools. The browser target's just-bash cp is local to the browser filesystem.
Use target-aware cp for large files. Do not base64 large files through model output.
Start with tab discovery, then inspect page content before mutating anything:
tabs list
tabs active
page snapshot --tab <tabId>
page text --tab <tabId>page snapshot returns a readable accessibility outline. Actionable elements
and scroll regions carry snapshot-scoped refs such as @s4k2e7. The leading
@ is part of the canonical ref; commands also accept the bare generated form
s4k2e7. Refs are pinned to the tab and document that produced them:
textbox @s4k2e1 "Search or start new chat"
scroll-region @s4k2e2 "English Mamá: Hello" [scrollable=y]
row @s4k2e3 "English"
textbox @s4k2e4 "Type a message" [editable focusable]page click --tab <tabId> @s4k2e3
page type --tab <tabId> @s4k2e4 'Draft text'
page scroll --tab <tabId> @s4k2e2 down
page scroll --tab <tabId> @s4k2e2 topTaking another snapshot does not itself expire refs from recent snapshots. Refs expire when their bounded snapshot is evicted, the extension restarts, the node disappears, its semantics change, or its document navigates. If an action reports an unknown or stale ref, take a new snapshot instead of guessing which element replaced it. Prefer the newest refs for virtualized rows because a framework may reuse a node for different content.
Page actions return compact JSON with separate delivered and observed
sections. delivered.accepted means Chrome accepted the CDP input, and
delivered.receiver identifies the hit-tested or focused receiver.
observed.status is changed or no-change-detected; observation covers
navigation, focus, selection, DOM mutations, and target state. Accepted input
with no detected change may be a no-op or an effect outside the observer;
inspect the warning and snapshot again rather than treating it as a transport
failure.
CSS selectors remain useful as an explicit fallback when the page's semantic tree omits a target:
page click --tab <tabId> 'button[type=submit]'
page type --tab <tabId> 'input[name=email]' 'hank@example.com'
page key --tab <tabId> Enter
page wait --tab <tabId> '.result' --timeout 10000
page screenshot --tab <tabId>Selector clicks and typing still use Chrome's input pipeline. Use
page snapshot --dom [selector] for a bounded raw-DOM debugging view when
semantic names are insufficient. Use a snapshot ref with page scroll to
target nested virtualized lists; an untargeted scroll acts at the viewport
center and may be received by whichever scrollable element is under that point.
Targeted top and bottom repeat native wheel input and report
observed.scroll.boundaryReached; check that field instead of assuming an
accepted wheel event reached the boundary. If the target is already there, the
action reports delivered.skipped=already-at-boundary with zero events and
does not dispatch input.
Virtualized lists expose only their currently materialized rows. To read one completely, record the visible semantic rows, scroll the list by its ref, snapshot again, and deduplicate rows until the reported scroll position stops changing. Use refs from the newest snapshot for row actions because frameworks may reuse one DOM node for different rows after scrolling.
page type inserts text but does not submit a form or send a message. Treat
Enter, submit buttons, and send controls as separate mutations and invoke them
only when the task authorizes submission.
Use JavaScript evaluation only when page snapshot/text/click/type/wait cannot express the task:
page js --tab <tabId> 'document.title'
page js --tab <tabId> 'Array.from(document.querySelectorAll("button")).map((button) => button.textContent)'Prefer semantic refs, then selectors, over coordinates. Always pass --tab for
work on an agent-opened tab so a user changing their active tab cannot redirect
selector, key, screenshot, text, wait, or JavaScript commands. Ref actions also
validate that an explicitly supplied tab matches the ref's original tab.
tabs open creates a background tab and returns its id. Capture that id and
pass it to every command that operates on the new tab:
opened="$(tabs open https://example.com)"
tab_id="$(printf '%s\n' "$opened" | tail -n 1 | jq -r '.tab.id')"
page snapshot --tab "$tab_id"
page click --tab "$tab_id" 'a.more-information'Use tabs open --active only when the user explicitly asks to see or switch to
new content. For example:
tabs open --active /home/browser/screenshots/tab-123.png
printf '<h1>Report</h1>' | tabs open --active --mime text/html -For a remote file, first copy it into /tmp or /tmp/render on the browser
target from the native GSV shell, then run tabs open on the browser-local
path. Use --mime when stdin or an extensionless file needs an explicit
content type.
Browser profile commands can inspect or mutate real profile state:
cookies list example.com
storage local get
history search --limit 20 query
bookmarks search queryMutation examples:
cookies set https://example.com name value
history delete https://example.com/
bookmarks create <parentId> https://example.com "Example"For browser downloads, use the browser target's downloads command. Browser
downloads are real browser-profile downloads, while /tmp and /home/browser
are the target filesystem exposed through GSV.
downloads list --limit 20
downloads start https://example.com/file.pdf --filename file.pdf
downloads get <downloadId>network start --tab <tabId> --bodies --persist
network status --tab <tabId>
network events --tab <tabId> --limit 50
network get <requestId> --body
network export har --tab <tabId> --path /home/browser/network/capture.har
network stop --tab <tabId>Use --persist when the capture should create files under
/home/browser/network/sessions/.... Without persistence, inspect through the
network command output or the /proc/network/* runtime files.
Use media record to capture tab audio or video into the browser target filesystem:
media record start --tab <tabId> --path /home/browser/recordings/demo.webm
media record start --tab <tabId> --video --path /home/browser/recordings/demo-video.webm
media record status
media record stop
tabs open /home/browser/recordings/demo.webmAudio recordings are WebM/Opus when supported. Use --video or
--mode video for tab video with audio; video recordings are WebM when
supported and can grow quickly, so set --max-bytes explicitly for longer
captures. Chrome only lets the extension record a tab the person has invoked
it on, so a first media record start on a tab may be refused. When it is,
ask the person to focus that tab, open Your GSV from the toolbar, and choose
Allow recording, then run the command again; each allowance starts one
recording. By default, captured tab audio remains audible; use --monitor off
only when the task calls for disabling playback. To move a finished recording
to another target, copy it from the native GSV shell after recording stops.
Use clipboard commands for small text handoffs:
clipboard read
clipboard write "copied text"
printf '%s\n' "copied text" | clipboard writeClipboard access may be unavailable in MV3 service-worker contexts until an offscreen document bridge is enabled. Treat command errors as capability signals, not as proof that the browser target is disconnected.
© deathbyknowledge, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/browser-target of deathbyknowledge/gsv.
Open the folder on GitHubat commit d9c5746
Browser Target next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Browser Target this skilldeathbyknowledge/gsv | 125 | — | ~3.1k | Automated safety check: Warn | MIT | |
| Profileccusage/ccusage | 19k | — | ~430 | Automated safety check: Pass | Custom licence | |
| Document Signingasgeirtj/system_prompts_leaks | 69k | — | ~1.5k | Automated safety check: Pass | CC0-1.0 | |
| Codex Profilessickn33/agentic-awesome-skills | 47k | 1 repos | ~1.7k | Automated safety check: Pass | MIT | |
| Collectors Snmp Profilesnetdata/netdata | 81k | — | ~3.1k | Automated safety check: Pass | GPL-3.0 | |
| Competitor Profilingsickn33/agentic-awesome-skills | 47k | 1 repos | ~3.6k | Automated safety check: Pass | MIT |
ccusage/ccusage
Profiles ccusage performance. An agent skill from ccusage/ccusage.
asgeirtj/system_prompts_leaks
Review documents for signature or prepare a signing packet; verify fields and recipients while keeping sending and signing under explicit user authorization.
sickn33/agentic-awesome-skills
Use codex-profiles to run Codex CLI or Codex Desktop with isolated CODEXHOME profiles for separate accounts, projects, and local state.
netdata/netdata
Author or review Netdata SNMP polling profiles, ddsnmp parsing, topology/licensing/BGP rows and profile-format documentation.
sickn33/agentic-awesome-skills
When the user wants to research, profile, or analyze competitors from their URLs.
sgl-project/sglang
Generate an e2e profiling trace of an SGLang server run. An agent skill from sgl-project/sglang.
deathbyknowledge/gsv
Retrieve and maintain the memory. An agent skill from deathbyknowledge/gsv.
deathbyknowledge/gsv
Choose and use GSV delegation, subprocess, IPC, scheduling, and cron workflows.
deathbyknowledge/gsv
Create or revise reusable GSV agent workflows under skills.d.
deathbyknowledge/gsv
Consult the GSV Manual before saying GSV cannot do something, and for questions about its operating model, workflows, settings, devices, agents, automation, integrations, filesystem, desktop, shell…
deathbyknowledge/gsv
Read and analyze images on GSV or connected targets with img2txt.
Use a paired browser: the user's signed-in profile, reaching any site they are logged into (calendar, mail, dashboards) with no integration. Browser Target is an agent skill from deathbyknowledge/gsv. Use a paired browser: the user's signed-in profile, reaching any site they are logged into (calendar, mail, dashboards) with no integration.
Run `npx skills add deathbyknowledge/gsv --skill browser-target -a claude-code`. Or copy the skill folder (skills/browser-target in deathbyknowledge/gsv) into .claude/skills/browser-target in your project. Claude Code loads it when a task matches its description.
Run `npx skills add deathbyknowledge/gsv --skill browser-target -a codex`. Or copy the skill folder (skills/browser-target in deathbyknowledge/gsv) into .agents/skills/browser-target in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add deathbyknowledge/gsv --skill browser-target -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/browser-target, .gemini/skills/browser-target, .github/skills/browser-target and .opencode/skills/browser-target in your project.
Going by SKILL.md and its folder, Browser Target needs the command-line tools its instructions call (jq).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md flagged 1 warning(s): contains instruction-override wording (e.g. “without asking the user”). Read the flagged lines before installing; the check is not a guarantee either way.
Browser Target is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.1k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Browser Target: Profile (ccusage/ccusage, 19k stars), Document Signing (asgeirtj/system_prompts_leaks, 69k stars), Codex Profiles (sickn33/agentic-awesome-skills, 47k stars) and Collectors Snmp Profiles (netdata/netdata, 81k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
deathbyknowledge (a GitHub user) maintains it in deathbyknowledge/gsv, which has 125 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on October 6, 2026.
Source: deathbyknowledge/gsv on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.