Agent skill

Run Freedom

by solardev-xyz in 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.

MPL-2.0Auto-check passedTesting & QA

Install Run Freedom

skills CLI
$ npx skills add solardev-xyz/freedom-browser --skill run-freedom -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install solardev-xyz/freedom-browser run-freedom --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
run-freedom
GitHub stars
163
Token cost
~1.2k tokens
SKILL.md length
562 words
Files
4
Skills in repo
1
Repo updated
First seen
Licence
MPL-2.0

At a glance

Launch and drive the Freedom Electron app headlessly (xvfb + Playwright + the in-process test harness), reach specific UI states, and take screenshots.

  • Asked to run the app
  • SKILL.md covers Prerequisites, Run, Comparing against a baseline and Gotchas (all hit in practice), plus 1 more section
  • Runs JavaScript scripts from its folder; calls node, npm and git
  • Verify a UI change visually

What it does

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.

When your agent uses it

  • Asked to run the app
  • Verify a UI change visually
  • Screenshot a surface
  • Audit the UI for inconsistencies

Example prompts

  • “/run-freedom”

Requirements

  • Node.js

What it can do on your machine

Read from SKILL.md and the folder at commit fb54032. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Ships script files (JavaScript), which the agent can run.

    Shell commands in SKILL.md call:

    • node
    • npm
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    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.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~71
When it runs · the whole SKILL.md, loaded when a task matches
~1.2k

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.

Safety

Auto-check passed

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.

SKILL.md

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.

Download SKILL.mdSave it as .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.
name
run-freedom
description
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.

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.

Prerequisites

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.

Run

Full tour (about 4 minutes per theme):

bash
NODE_PATH=$PWD/node_modules xvfb-run -a -s "-screen 0 1440x900x24" \
  node .claude/skills/run-freedom/tour.js both

Screenshots 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:

js
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.

Comparing against a baseline

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.

Show full SKILL.md (291 more words)Show less

Gotchas (all hit in practice)

  • The Nodes and hamburger menus close on 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.
  • Clicking the sidebar's "Get Started" opens the onboarding modal, which then blocks every sidebar click. dismissOnboarding(win) clicks "Skip for now".
  • dApp/Swarm approval prompts are .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.
  • Keyboard shortcuts only work after clicking the address bar first; native menu accelerators never fire from synthetic keys. Use menuItem(app, id) (zoom-in, zoom-reset, new-private-window).
  • Permission prompt buttons must be clicked with dispatchEvent('click'); a real click right after a guest attaches is swallowed by the guest.
  • Guest webviews surface as separate Playwright pages; pageFor(app, 'settings.html') finds one. Webview elements are replaced on navigation, never cache them.
  • Playwright's raw API has no default action timeout; launch() sets 8 s so a blocked click fails instead of hanging forever.
  • Under xvfb 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.
  • Two app instances at once are fine (separate scratch profiles); the e2e suite itself is workers: 1.

Visual audit checklist

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

Files

SKILL.md and 3 other files in .claude/skills/run-freedom of solardev-xyz/freedom-browser.

  • SKILL.md
  • lib.js
  • recipes.js
  • tour.js

Open the folder on GitHubat commit fb54032

Compare with similar skills

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.

Run Freedom compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Run Freedom this skillsolardev-xyz/freedom-browser163—~1.2kAutomated safety check: PassMPL-2.0
Playwright Debugvoicetreelab/voicetree924—~1.2kAutomated safety check: PassCustom licence
Vasu Playwright Utilsvasu31dev/playwright-ts-template139—~4.7kAutomated safety check: NotesNone
Take Screenshotsankitvgupta/exo495—~1.2kAutomated safety check: PassCustom licence
Test Electron AppPostHog/code179—~2.9kAutomated safety check: PassMIT
Test Electron AppPostHog/posthog40k—~3kAutomated safety check: PassCustom licence

Similar skills

  • 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…

    924 GitHub stars~1.2k tokensUpdated 3 days ago
    Testing & QAAuto-check passed
  • Vasu Playwright Utils

    vasu31dev/playwright-ts-template

    Use the vasu-playwright-utils library for Playwright browser automation with simplified action, assertion, locator, element, page, and API utilities.

    139 GitHub stars~4.7k tokensUpdated 6 mo ago
    Testing & QAAuto-check: notes
  • Take Screenshots

    ankitvgupta/exo

    Capture screenshots of the Exo Electron app workflows using Playwright in demo mode.

    495 GitHub stars~1.2k tokensUpdated 1 mo ago
    Testing & QAAuto-check passed
  • Test Electron App

    PostHog/code

    Official

    Drive the real running PostHog Electron app (live tRPC, workspace-server, real data) over CDP with agent-browser.

    179 GitHub stars~2.9k tokensUpdated 2 mo ago
    Testing & QAAuto-check passed
  • Test Electron App

    PostHog/posthog

    Official

    Drive the real running PostHog Electron app (live tRPC, workspace-server, real data) over CDP with agent-browser.

    40k GitHub stars~3k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Electron Best Practices

    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.

    170 GitHub stars~3.1k tokensUpdated 7 mo ago
    MobileAuto-check passed

Categories

Questions about Run Freedom

What does Run Freedom do?

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.

When should I use Run Freedom?

Run Freedom fits situations like: asked to run the app; verify a UI change visually; screenshot a surface; audit the UI for inconsistencies.

How do I install Run Freedom in Claude Code?

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.

How do I install Run Freedom in Codex?

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.

Can I use Run Freedom in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Run Freedom need to run?

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.

Does Run Freedom access the network?

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.

Is Run Freedom safe to install?

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.

What licence does Run Freedom use?

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.

How many tokens does Run Freedom use?

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.

What are the alternatives to Run Freedom?

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.

Who maintains Run Freedom?

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.