Playwright Debug
voicetreelab/voicetree
This skill should be used when the user asks to "debug the electron app", "connect playwright to VoiceTree", "take screenshots of the running app", "interact with the live UI", "inspect the running…
Launch and drive the Freedom Electron app headlessly (xvfb + Playwright + the in-process test harness), reach specific UI states, and take screenshots.
$ npx skills add solardev-xyz/freedom-browser --skill run-freedom -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install solardev-xyz/freedom-browser run-freedom --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/solardev-xyz/freedom-browser.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/run-freedom .claude/skills/run-freedom && 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 "run-freedom" agent skill from https://github.com/solardev-xyz/freedom-browser/tree/main/.claude/skills/run-freedom into .claude/skills/run-freedom/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "run-freedom", 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/solardev-xyz/freedom-browser/tree/main/.claude/skills/run-freedomType 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 solardev-xyz/freedom-browser --skill run-freedom -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install solardev-xyz/freedom-browser run-freedom --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/solardev-xyz/freedom-browser.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/run-freedom .agents/skills/run-freedom && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "run-freedom" agent skill from https://github.com/solardev-xyz/freedom-browser/tree/main/.claude/skills/run-freedom into .agents/skills/run-freedom/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "run-freedom", 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 solardev-xyz/freedom-browser --skill run-freedom -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install solardev-xyz/freedom-browser run-freedom --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/solardev-xyz/freedom-browser.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/run-freedom .cursor/skills/run-freedom && 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 "run-freedom" agent skill from https://github.com/solardev-xyz/freedom-browser/tree/main/.claude/skills/run-freedom into .cursor/skills/run-freedom/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "run-freedom", 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/solardev-xyz/freedom-browser.git --path .claude/skills/run-freedom--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 solardev-xyz/freedom-browser --skill run-freedom -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install solardev-xyz/freedom-browser run-freedom --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/solardev-xyz/freedom-browser.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/run-freedom .gemini/skills/run-freedom && 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 "run-freedom" agent skill from https://github.com/solardev-xyz/freedom-browser/tree/main/.claude/skills/run-freedom into .gemini/skills/run-freedom/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "run-freedom", 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 solardev-xyz/freedom-browser run-freedomInstalls 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 solardev-xyz/freedom-browser --skill run-freedom -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/solardev-xyz/freedom-browser.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/run-freedom .github/skills/run-freedom && 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 "run-freedom" agent skill from https://github.com/solardev-xyz/freedom-browser/tree/main/.claude/skills/run-freedom into .github/skills/run-freedom/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "run-freedom", 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 solardev-xyz/freedom-browser --skill run-freedom -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install solardev-xyz/freedom-browser run-freedom --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/solardev-xyz/freedom-browser.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/run-freedom .opencode/skills/run-freedom && 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 "run-freedom" agent skill from https://github.com/solardev-xyz/freedom-browser/tree/main/.claude/skills/run-freedom into .opencode/skills/run-freedom/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "run-freedom", 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.
run-freedomLaunch and drive the Freedom Electron app headlessly (xvfb + Playwright + the in-process test harness), reach specific UI states, and take screenshots.
Run Freedom is an agent skill from solardev-xyz/freedom-browser. Launch and drive the Freedom Electron app headlessly (xvfb + Playwright + the in-process test harness), reach specific UI states, and take screenshots. Use when asked to run the app, verify a UI change visually, screenshot a surface, or audit the UI for inconsistencies.
Its SKILL.md is about 1.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files (for example `lib.js`, `recipes.js` and `tour.js`).
It sits in Testing & QA, covering Browser testing. It works with Playwright and Electron. The repository describes itself as: Freedom Browser — decentralized web browsing with Swarm, IPFS, Radicle, ENS, and Tezos Domains. The licence is MPL-2.0.
Read from SKILL.md and the folder at commit fb54032. 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.
Ships script files (JavaScript), which the agent can run.
Shell commands in SKILL.md call:
nodenpmgitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm and git, which can reach the network depending on how they are called.
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.
Run Freedom loads about 1.2k tokens when it runs. Until then it costs about 71 tokens; SKILL.md has 562 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 no risky patterns in SKILL.md.
Automated 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 solardev-xyz/freedom-browser at commit fb54032, republished under its MPL-2.0 licence (© solardev-xyz). 562 words, ~1,246 tokens.
.claude/skills/run-freedom/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.Freedom is an Electron app. On a headless Linux box it runs under xvfb-run
through Playwright's _electron launcher with FREEDOM_TEST_MODE=1, which
stubs Ant/IPFS/Radicle/Myotis and the network, so every surface can be reached
in seconds with no live services. Everything here lives in this directory:
lib.js — launch, screenshot, navigate, find a guest page, close menus,
close the sidebar, harness fixtures, application-menu clicks.recipes.js — functions that put the app into a state (find bar, permission
prompt, download shelf, muted tab, private window, settings sections,
shortcut conflict, wallet Send/dApp/Swarm screens, onchain app + trust
popover, Tezos interstitials, error page).tour.js — screenshots every surface above in dark and light theme.Repo deps installed (npm ci) and xvfb-run available. Node is not on PATH in
some shells: export PATH="$HOME/.nvm/versions/node/v24.8.0/bin:$PATH" (or
~/node/bin). Scripts outside node_modules need
NODE_PATH=$PWD/node_modules to resolve @playwright/test.
Full tour (about 4 minutes per theme):
NODE_PATH=$PWD/node_modules xvfb-run -a -s "-screen 0 1440x900x24" \
node .claude/skills/run-freedom/tour.js bothScreenshots land in /tmp/freedom-shots/ (override with SHOTS_DIR), named
<d|l>-<nn>-<surface>.png. The tour never stops on a failed step; it prints
STEP FAIL <theme> <step> <reason> and continues, then repeats the list in a
final N STEP FAIL: ... line and exits non-zero. Treat any failure as
invalidating the shots after it too — a step that leaves a prompt, menu or
shelf on screen contaminates every later surface.
One state, ad hoc:
const { launch, shot, closeMenus } = require('./.claude/skills/run-freedom/lib');
const r = require('./.claude/skills/run-freedom/recipes');
(async () => {
const ctx = await launch({ theme: 'light' }); // seeds settings.json
await r.permissionPrompt(ctx, 'geolocation');
await shot(ctx.win, 'geo-prompt');
await ctx.app.close();
})();launch(seed) accepts any settings key (theme, showBookmarkBar,
shortcutOverrides, adblockEnabled, ...). theme: 'dark' removes the
data-theme attribute; 'light' sets it.
To tell a regression from a pre-existing quirk, run the same script against
an older tag: git worktree add /tmp/fb-base v0.8.0, symlink node_modules,
ant-bin, arti-bin, myotis-bin, radicle-bin, native into it, and run
with FB_ROOT=/tmp/fb-base. Remove the worktree afterwards.
Escape (#306), which also drops
#menu-backdrop. closeMenus(win) presses it and falls back to clicking the
backdrop, so it works on older checkouts too.dismissOnboarding(win) clicks "Skip for now"..sidebar-modal subscreens covering the
whole sidebar, #sidebar-close included, so the sidebar cannot be closed
while one is pending. Use closeSidebar(win): it clicks each prompt's Back
button (which rejects the request) and throws if the sidebar is still open,
rather than leaving a prompt in every later screenshot. Prompts ignore
clicks for 500 ms after appearing (input protection), so dismissals retry.
It returns immediately when the sidebar is already collapsed, so an earlier
failed step cannot cascade into a timeout on the hidden #sidebar-close.menuItem(app, id)
(zoom-in, zoom-reset, new-private-window).dispatchEvent('click');
a real click right after a guest attaches is swallowed by the guest.pageFor(app, 'settings.html') finds one. Webview elements are replaced on navigation,
never cache them.launch() sets 8 s so
a blocked click fails instead of hanging forever.prefers-color-scheme is always light regardless of
nativeTheme, and the braille drag-handle glyph in Name Resolution renders
as a box because the font is missing. Neither is a product bug.workers: 1.When using this to hunt inconsistencies, apply
docs/agent-playbooks/ui-consistency.md to every screenshot pair.
© solardev-xyz, MPL-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files in .claude/skills/run-freedom of solardev-xyz/freedom-browser.
Open the folder on GitHubat commit fb54032
Run Freedom 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 |
|---|---|---|---|---|---|---|
| Run Freedom this skillsolardev-xyz/freedom-browser | 163 | — | ~1.2k | Automated safety check: Pass | MPL-2.0 | |
| Playwright Debugvoicetreelab/voicetree | 924 | — | ~1.2k | Automated safety check: Pass | Custom licence | |
| Vasu Playwright Utilsvasu31dev/playwright-ts-template | 139 | — | ~4.7k | Automated safety check: Notes | None | |
| Take Screenshotsankitvgupta/exo | 495 | — | ~1.2k | Automated safety check: Pass | Custom licence | |
| Test Electron AppPostHog/code | 179 | — | ~2.9k | Automated safety check: Pass | MIT | |
| Test Electron AppPostHog/posthog | 40k | — | ~3k | Automated safety check: Pass | Custom licence |
voicetreelab/voicetree
This skill should be used when the user asks to "debug the electron app", "connect playwright to VoiceTree", "take screenshots of the running app", "interact with the live UI", "inspect the running…
vasu31dev/playwright-ts-template
Use the vasu-playwright-utils library for Playwright browser automation with simplified action, assertion, locator, element, page, and API utilities.
ankitvgupta/exo
Capture screenshots of the Exo Electron app workflows using Playwright in demo mode.
PostHog/code
Drive the real running PostHog Electron app (live tRPC, workspace-server, real data) over CDP with agent-browser.
PostHog/posthog
Drive the real running PostHog Electron app (live tRPC, workspace-server, real data) over CDP with agent-browser.
jwynia/agent-skills
Guide AI agents through Electron app development with React including security patterns, type-safe IPC, React integration, packaging with code signing, and testing.
Works with
Categories
Launch and drive the Freedom Electron app headlessly (xvfb + Playwright + the in-process test harness), reach specific UI states, and take screenshots. Run Freedom is an agent skill from solardev-xyz/freedom-browser. Launch and drive the Freedom Electron app headlessly (xvfb + Playwright + the in-process test harness), reach specific UI states, and take screenshots.
Run Freedom fits situations like: asked to run the app; verify a UI change visually; screenshot a surface; audit the UI for inconsistencies.
Run `npx skills add solardev-xyz/freedom-browser --skill run-freedom -a claude-code`. Or copy the skill folder (.claude/skills/run-freedom in solardev-xyz/freedom-browser) into .claude/skills/run-freedom in your project. Claude Code loads it when a task matches its description.
Run `npx skills add solardev-xyz/freedom-browser --skill run-freedom -a codex`. Or copy the skill folder (.claude/skills/run-freedom in solardev-xyz/freedom-browser) into .agents/skills/run-freedom 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 solardev-xyz/freedom-browser --skill run-freedom -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/run-freedom, .gemini/skills/run-freedom, .github/skills/run-freedom and .opencode/skills/run-freedom in your project.
Going by SKILL.md and its folder, Run Freedom needs JavaScript for the scripts in its folder and the command-line tools its instructions call (node, npm and git). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use npm and git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Run Freedom is published under the MPL-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.2k tokens (SKILL.md is roughly 5k 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 Run Freedom: Playwright Debug (voicetreelab/voicetree, 924 stars), Vasu Playwright Utils (vasu31dev/playwright-ts-template, 139 stars), Take Screenshots (ankitvgupta/exo, 495 stars) and Test Electron App (PostHog/code, 179 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
solardev-xyz (a GitHub organization) maintains it in solardev-xyz/freedom-browser, which has 163 GitHub stars. The repository was last updated on October 10, 2026.
Source: solardev-xyz/freedom-browser on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.