Release Extension
Yorick-Ryu/deep-share
Release browser extensions or similar small packaged apps by upgrading a semantic version, packaging build artifacts, creating a git commit and tag, pushing to the remote, and publishing a GitHub…
Control, debug, and test the live dev browser extension UI (Options, Popup, Sidepanel) via CDP with persistent login states and accounts.
$ npx skills add qixing-jk/all-api-hub --skill live-extension-ui-automation -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install qixing-jk/all-api-hub live-extension-ui-automation --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/qixing-jk/all-api-hub.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/live-extension-ui-automation .claude/skills/live-extension-ui-automation && 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 "live-extension-ui-automation" agent skill from https://github.com/qixing-jk/all-api-hub/tree/main/.agents/skills/live-extension-ui-automation into .claude/skills/live-extension-ui-automation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "live-extension-ui-automation", 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/qixing-jk/all-api-hub/tree/main/.agents/skills/live-extension-ui-automationType 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 qixing-jk/all-api-hub --skill live-extension-ui-automation -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install qixing-jk/all-api-hub live-extension-ui-automation --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/qixing-jk/all-api-hub.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/live-extension-ui-automation .agents/skills/live-extension-ui-automation && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "live-extension-ui-automation" agent skill from https://github.com/qixing-jk/all-api-hub/tree/main/.agents/skills/live-extension-ui-automation into .agents/skills/live-extension-ui-automation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "live-extension-ui-automation", 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 qixing-jk/all-api-hub --skill live-extension-ui-automation -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install qixing-jk/all-api-hub live-extension-ui-automation --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/qixing-jk/all-api-hub.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/live-extension-ui-automation .cursor/skills/live-extension-ui-automation && 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 "live-extension-ui-automation" agent skill from https://github.com/qixing-jk/all-api-hub/tree/main/.agents/skills/live-extension-ui-automation into .cursor/skills/live-extension-ui-automation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "live-extension-ui-automation", 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/qixing-jk/all-api-hub.git --path .agents/skills/live-extension-ui-automation--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 qixing-jk/all-api-hub --skill live-extension-ui-automation -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install qixing-jk/all-api-hub live-extension-ui-automation --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/qixing-jk/all-api-hub.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/live-extension-ui-automation .gemini/skills/live-extension-ui-automation && 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 "live-extension-ui-automation" agent skill from https://github.com/qixing-jk/all-api-hub/tree/main/.agents/skills/live-extension-ui-automation into .gemini/skills/live-extension-ui-automation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "live-extension-ui-automation", 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 qixing-jk/all-api-hub live-extension-ui-automationInstalls 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 qixing-jk/all-api-hub --skill live-extension-ui-automation -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/qixing-jk/all-api-hub.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/live-extension-ui-automation .github/skills/live-extension-ui-automation && 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 "live-extension-ui-automation" agent skill from https://github.com/qixing-jk/all-api-hub/tree/main/.agents/skills/live-extension-ui-automation into .github/skills/live-extension-ui-automation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "live-extension-ui-automation", 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 qixing-jk/all-api-hub --skill live-extension-ui-automation -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install qixing-jk/all-api-hub live-extension-ui-automation --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/qixing-jk/all-api-hub.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/live-extension-ui-automation .opencode/skills/live-extension-ui-automation && 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 "live-extension-ui-automation" agent skill from https://github.com/qixing-jk/all-api-hub/tree/main/.agents/skills/live-extension-ui-automation into .opencode/skills/live-extension-ui-automation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "live-extension-ui-automation", 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.
live-extension-ui-automationControl, debug, and test the live dev browser extension UI (Options, Popup, Sidepanel) via CDP with persistent login states and accounts.
Live Extension UI Automation is an agent skill from qixing-jk/all-api-hub. Control, debug, and test the live dev browser extension UI (Options, Popup, Sidepanel) via CDP with persistent login states and accounts.
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/session-reuse.md`).
It sits in Development, covering Browser extensions and Git worktrees. It works with Chrome Extensions and OpenAI. The repository describes itself as: All-in-one New-API/Sub2API account hub: balance/usage dashboard, auto check-in, one-click keys, price comparison, health checks, plus advanced channel management | 一站式…. The licence is AGPL-3.0.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 220dceb. 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:
pnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pnpm, 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.
Live Extension UI Automation loads about 2.7k tokens when it runs, and up to ~4.3k if it reads all its reference files. Until then it costs about 42 tokens; SKILL.md has 1,157 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 qixing-jk/all-api-hub at commit 220dceb, republished under its AGPL-3.0 licence (© qixing-jk). 1,157 words, ~2,727 tokens.
.claude/skills/live-extension-ui-automation/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Automate and test the development browser extension UI against real accounts and logged-in states without closing or disturbing the user's daily primary browser.
Chromium blocks --remote-debugging-port on the system default user data directory. To preserve daily browser workflows while enabling CDP automation, tests run in a dedicated dev profile (AllApiHub/dev-browser) that shares accounts and sessions across all Git worktrees.
By default every worktree mounts the single shared profile (AllApiHub/dev-browser) on CDP port 9222. This reuses one account login across worktrees but couples their browser instances: a --restart mounts a different worktree's build and closes another session's tabs, and discovery by title can target the wrong extension.
When concurrent worktrees must not interfere (multi-agent runs), mount a per-worktree profile with --isolate. The profile resolves to AllApiHub/dev-browser-<worktree>-<path-hash>, using the canonical checkout path to distinguish same-named worktrees. Its default CDP port is a stable offset from 9222 based on the resolved profile path. Hash collisions remain possible; isolated clients and the launcher verify the listening browser uses the expected profile before reuse, reload or restart. On a collision, choose a free explicit CDP_PORT. Assess existing sessions before seeding an isolated profile:
| Goal | Command |
|---|---|
| Isolated browser (own profile + port) | pnpm browser:cdp:isolate |
| Offline sync when both browsers are already closed | pnpm browser:sync:isolate -- --cookies |
| Env-var equivalents | AAH_DEV_PROFILE_PER_WORKTREE=1 (or --isolate); explicit AAH_DEV_PROFILE_DIR / CDP_PORT still win. |
Live suites (e2e:cdp:*) compute their default CDP URL from the same resolver, so launching and driving under --isolate need no extra flags. The trade-off: each isolated profile needs its own first login or sync, and each buys an extra resident browser process. The shared-profile default is unchanged.
All commands are cross-platform (Windows, macOS, Linux) and runnable directly via pnpm:
| Command | Script | Description |
|---|---|---|
pnpm browser:sync | scripts/sync-extension-profile.mjs | Discovers extension storage sources (--list); copies databases only with browsers closed. Website sessions require --cookies. |
pnpm browser:cdp | scripts/launch-cdp-browser.mjs | Launches (or connects to) the dedicated debug browser on port 9222 with the current worktree extension mounted. |
pnpm e2e:cdp | scripts/e2e-cdp-control.mjs | Connects via CDP, detects the current worktree extension, opens its UI, and automates interactions. |
Always ensure the extension is built for the current branch:
pnpm buildpnpm browser:cdp.output/chrome-mv3-dev). If WXT dev server is not running, it automatically and silently launches it in the background, waits for the initial pre-rendering to finish, and mounts the hot dev extension.wxt.config.ts disables the built-in runner (webExt.disabled = true unless WXT_OPEN_BROWSER=1), and the launcher passes environment guards. Dev server logs stream silently to .scratch/wxt-dev.log.3000, 3001, 3002...). The launcher inspects .output/chrome-mv3-dev/options.html and probes the Vite client to bind cleanly to the current worktree's assigned port over IPv4 (127.0.0.1).pnpm browser:cdp instantly triggers chrome.runtime.reload() over CDP and refreshes open extension tabs without restarting the browser.pnpm browser:cdp -- --reload: Instantly trigger chrome.runtime.reload() in the running browser.pnpm browser:cdp -- --stop-dev: Terminate the background WXT dev server process.pnpm browser:cdp -- --prod: Force standalone production build mode (.output/chrome-mv3).pnpm browser:cdp -- --build: Force a full production rebuild before launching.pnpm browser:cdp -- --restart: Terminate the running debug browser and start a fresh instance.Checking readiness is required; synchronizing state is conditional. Use the site's authenticated identity endpoint in the selected dev profile, not a saved extension account, tab title or Cookie count. Reuse a valid target session immediately, checking the expected account ID when known.
If the target is unauthenticated, inspect task-authorized source sessions and select an applicable sync method before asking the user to log in. A target 401 establishes only that the target lacks authentication. A closed-browser requirement applies to database copying, not to all session reuse. Network failures, challenges and identity mismatches require diagnosis rather than a login request.
Read session assessment and reuse for the shared preflight helper, origin-scoped live transfer and offline sync commands. After transfer, re-read the target identity and compare it with the source. Request manual login only after authorized sources and applicable transfer methods have been checked and found unusable; report missing evidence as uninspected, not unavailable. Do not replace an authenticated but mismatched account silently.
Run the default smoke runner:
pnpm e2e:cdpWhen implementing a new feature or reproducing UI bugs, author or extend a CDP automation script following this pattern:
import path from "node:path"
import { chromium } from "@playwright/test"
const browser = await chromium.connectOverCDP("http://127.0.0.1:9222")
const context = browser.contexts()[0]
// 1. Locate the extension (CDP Target inspection works even if the service worker is dormant)
const session = await browser.newBrowserCDPSession()
const { targetInfos } = await session.send("Target.getTargets")
const extTarget = targetInfos.find((t) => t.url?.startsWith("chrome-extension://"))
const extensionId = new URL(extTarget.url).hostname
await session.detach()
// 2. Open any extension entrypoint
const page = await context.newPage()
await page.goto(`chrome-extension://${extensionId}/options.html#account`)
await page.waitForLoadState("domcontentloaded")
// 3. Interact with UI primitives via testId or role
const root = page.locator('[data-testid="options-app"]')
await root.waitFor({ state: "attached", timeout: 10000 })
// 4. Inspect or mutate extension storage directly via service worker
// NOTE: Plasmo Storage serializes envelopes as JSON strings (e.g. { accounts: [...] })
const sw = context.serviceWorkers().find((w) => w.url().includes(extensionId))
const accounts = await sw.evaluate(() => {
return new Promise((resolve) => {
chrome.storage.local.get("site_accounts", (res) => {
const data = typeof res.site_accounts === "string" ? JSON.parse(res.site_accounts) : res.site_accounts
resolve(data?.accounts || [])
})
})
})For account integrations, use the authentication and guidance contract in account sites. Drive a fresh add-account form with its normal authentication default through automatic detection, any credential guidance, verification, save, and refresh. Manually preselecting another method or pre-seeding a saved account only validates that alternate path; it does not establish that ordinary onboarding works.
When credentials require user interaction, assert that detection preserves the discovered account context, offers the official acquisition page and a clear return/paste action, and reaches an actionable state. Exercise the persistent UI handoff when starting from a popup. Record the authentication mode and starting state in the reusable runner's evidence. If the credential is unavailable, validate the guide independently and report save/refresh as unverified; do not count a successful Cookie fallback as proof of the preferred token path.
For native resource editors, a visible modal may still contain only the opening/loading shell while fresh provider data is fetched. Wait for an always-present field from the accepted editor before reading values or asserting secret retention, with a bounded timeout suitable for live provider requests. Modal visibility alone and the default short DOM assertion timeout do not establish that the editor has loaded; avoid replacing this check with a fixed sleep. Once the editor is ready, a missing conditional control may indicate an incomplete detail projection or incorrect visibility state; compare the saved configuration and controlling value before increasing timeouts or forcing the control visible.
For site adaptation or a requested visual handoff, follow visual previews. Persist screenshots at meaningful asserted states in the site-specific runner, inspect them, and display representative images directly with brief captions. Local developer evidence is raw and unmasked by default, lives outside Git, and uses the shared evidence storage rules. Keep automatic CI/real-site capture settings unchanged; report missing live access or image-rendering limitations explicitly.
%LOCALAPPDATA%\AllApiHub\dev-browser on Windows, ~/Library/Application Support/AllApiHub/dev-browser on macOS). Accounts and cookies persist across branch switches.scripts/e2e-cdp-control.mjs checks process.cwd() against extension manifest titles to ensure it controls the extension belonging to the active worktree when multiple branches are mounted.© qixing-jk, AGPL-3.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 1 other file (references) in .agents/skills/live-extension-ui-automation of qixing-jk/all-api-hub.
Open the folder on GitHubat commit 220dceb
Live Extension UI Automation 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 |
|---|---|---|---|---|---|---|
| Live Extension UI Automation this skillqixing-jk/all-api-hub | 4.9k | — | ~2.7k | Automated safety check: Pass | AGPL-3.0 | |
| Release ExtensionYorick-Ryu/deep-share | 144 | — | ~1.3k | Automated safety check: Pass | Custom licence | |
| Canvas Capture Extensionremotion-dev/remotion | 63k | — | ~907 | Automated safety check: Pass | Custom licence | |
| Md2docxYorick-Ryu/deep-share | 144 | — | ~1.9k | Automated safety check: Pass | Custom licence | |
| Wxt Browser Extensionsvantezzen/skip-silence | 469 | 2 repos | ~1.9k | Automated safety check: Pass | MIT | |
| DevSpace Manual QA SetupWaishnav/devspace | 5.2k | — | ~440 | Automated safety check: Pass | MIT |
Yorick-Ryu/deep-share
Release browser extensions or similar small packaged apps by upgrading a semantic version, packaging build artifacts, creating a git commit and tag, pushing to the remote, and publishing a GitHub…
remotion-dev/remotion
Rebuild, install, and reload the private Remotion Canvas Capture unpacked Chrome extension.
Yorick-Ryu/deep-share
Convert Markdown to Word (DOCX) documents. An agent skill from Yorick-Ryu/deep-share.
vantezzen/skip-silence
WXT browser extension performance optimization guidelines. An agent skill from vantezzen/skip-silence.
Waishnav/devspace
Prepares the current DevSpace checkout or worktree for isolated local manual QA, covering QA state seeding, UI asset builds and snapshot resets.
MoonshotAI/kimi-code
Kimi Browser Extension(Kimi 浏览器扩展,原 Kimi WebBridge)lets AI control the user's real browser — navigate, click, type, read, screenshot, and interact with any website using the user's actual login…
qixing-jk/all-api-hub
Maintain all-api-hub sponsor catalogs, affiliate content, assets, and coordinated README/docs listings.
qixing-jk/all-api-hub
Add or extend account, managed-site or check-in integrations, improve native editors or compare their UX, or decide site-type boundaries.
qixing-jk/all-api-hub
Add a supported application language or regional locale to all-api-hub across application and extension runtimes.
Works with
Categories
Control, debug, and test the live dev browser extension UI (Options, Popup, Sidepanel) via CDP with persistent login states and accounts. Live Extension UI Automation is an agent skill from qixing-jk/all-api-hub. Control, debug, and test the live dev browser extension UI (Options, Popup, Sidepanel) via CDP with persistent login states and accounts.
Live Extension UI Automation fits situations like: tasks that involve Browser extensions; tasks that involve Git worktrees.
Run `npx skills add qixing-jk/all-api-hub --skill live-extension-ui-automation -a claude-code`. Or copy the skill folder (.agents/skills/live-extension-ui-automation in qixing-jk/all-api-hub) into .claude/skills/live-extension-ui-automation in your project. Claude Code loads it when a task matches its description.
Run `npx skills add qixing-jk/all-api-hub --skill live-extension-ui-automation -a codex`. Or copy the skill folder (.agents/skills/live-extension-ui-automation in qixing-jk/all-api-hub) into .agents/skills/live-extension-ui-automation 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 qixing-jk/all-api-hub --skill live-extension-ui-automation -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/live-extension-ui-automation, .gemini/skills/live-extension-ui-automation, .github/skills/live-extension-ui-automation and .opencode/skills/live-extension-ui-automation in your project.
Going by SKILL.md and its folder, Live Extension UI Automation needs the command-line tools its instructions call (pnpm).
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 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.
Live Extension UI Automation is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.6k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Live Extension UI Automation: Release Extension (Yorick-Ryu/deep-share, 144 stars), Canvas Capture Extension (remotion-dev/remotion, 63k stars), Md2docx (Yorick-Ryu/deep-share, 144 stars) and Wxt Browser Extensions (vantezzen/skip-silence, 469 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
qixing-jk (a GitHub user) maintains it in qixing-jk/all-api-hub, which has 4,934 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 11, 2026.
Source: qixing-jk/all-api-hub on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.