Agent skill

Create Voyager Plugin

by voyager-crew in voyager-crew/voyager

Create or change a Voyager declarative plugin, site adapter, or native primitive.

GPL-3.0Auto-check passed

Install Create Voyager Plugin

skills CLI
$ npx skills add voyager-crew/voyager --skill create-voyager-plugin -a claude-code

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

GitHub CLI
$ gh skill install voyager-crew/voyager create-voyager-plugin --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/voyager-crew/voyager.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/create-voyager-plugin .claude/skills/create-voyager-plugin && 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
create-voyager-plugin
GitHub stars
20k
Token cost
~2.7k tokens
SKILL.md length
1,277 words
Files
4 (incl. references)
Skills in repo
7
Repo updated
First seen
Licence
GPL-3.0

At a glance

Create or change a Voyager declarative plugin, site adapter, or native primitive.

  • SKILL.md covers Select the path, Shared constraints, Write your own plugin locally and Verification and completion
  • Calls bun; reaches gemini.google.com

What it does

Create Voyager Plugin is an agent skill from voyager-crew/voyager. Create or change a Voyager declarative plugin, site adapter, or native primitive.

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including reference files (for example `references/declarative.md`, `references/primitive.md` and `references/site-adapter.md`).

It works with Chrome Extensions. The repository describes itself as: Enhancement suite for Gemini, AI Studio, Claude, ChatGPT & DeepSeek — plus a prompt manager for any website, DeepSeek Harness included. / 面向 Gemini、AI Studio、Claude、ChatGPT 与… The licence is GPL-3.0.

Example prompts

  • “/create-voyager-plugin”

What it can do on your machine

Read from SKILL.md and the folder at commit dfb08a6. 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

    Shell commands in SKILL.md call:

    • bun

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

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • gemini.google.com

    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

Create Voyager Plugin loads about 2.7k tokens when it runs, and up to ~4.6k if it reads all its reference files. Until then it costs about 26 tokens; SKILL.md has 1,277 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~26
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.6k

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 voyager-crew/voyager at commit dfb08a6, republished under its GPL-3.0 licence (© voyager-crew). 1,277 words, ~2,667 tokens.

Download SKILL.mdSave it as .claude/skills/create-voyager-plugin/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
create-voyager-plugin
description
Create or change a Voyager declarative plugin, site adapter, or native primitive.
metadata.version
1.3.0

Create a Voyager plugin

Select the path

Read only the matching implementation reference. Paths are relative to src/features/plugins/.

ChangeReferenceDistribution
CSS/JSON plugin using DOM ops or an existing primitiveDeclarative plugincatalog/sites/<site>/plugins/<id>/; bundled and remote
Site selectors, theme, URL matching or a new siteSite adaptercatalog/sites/<site>/site.json; existing-site updates travel remotely
Behavior needing events, state or generated DOMNative primitiveverbs/; packaged executable code, requires an extension release

A new site also requires host permission and content-script registration in an extension release. A primitive needs a declarative plugin that invokes it, so read that reference too when adding the caller.

New features follow .github/CONTRIBUTING.md; a new primitive or site requires explicit maintainer approval of the approach. Reuse a direct maintainer instruction in the current task as approval; loading this skill grants none. A selector fix within an existing site's approved scope needs no new feature approval.

For architecture or distribution changes, read src/features/plugins/README.md and .github/docs/PLUGIN_DISTRIBUTION_PLAN.md. PR preparation uses voyager-contribute; live checks use verify-in-browser (Safari loading uses update-safari-extension).

Shared constraints

  • Every injected class is gv- prefixed; plugin-scoped classes are gv-plugin-<site>-<id>. Nothing leaks to the host page unscoped.
  • CSS loads nothing, not even from the page's origin: no @import, no image-set() / image() / cross-fade() / src(), url() only with a #fragment or a raster data: URI (image/png, jpeg, gif, webp, avif, bmp, icon; never data:image/svg+xml, in any encoding, since an SVG filter resource can load images), and no string that starts with an external URL (--u:"//…"), in the sheet, a setStyle value or a style attribute. validateStyleCss rejects the rest.
  • setAttribute names are an allowlist: data-*, aria-*, title, role, lang, dir, hidden, tabindex, draggable, spellcheck, translate, style. Values may not contain an external URL. Use addClass for classes.
  • Prefer a semantic key over a raw selector: { "kind": "semantic", "key": "userTurn" }. Raw selectors are for what the vocabulary cannot name, and they are the first thing to break on a redesign.
  • A plugin's matches stays inside its site's matches (D18). catalog:build fails otherwise. Patterns are read as Chrome reads them: *.example.com needs a subdomain (the apex host is outside it) and *:// means http or https only; the build and the runtime agree, so a pattern that passes the build also resolves a site.
  • conversationIdPattern, in site.json or as a turnNavigator param, is a plain anchored capture such as ^/c/([^/?#]+): no lookarounds or backreferences, no repeated group that holds a quantifier or |, at most eight quantifiers and 200 characters. It runs on the page's main thread against every URL, so the gate (sites/safeRegex.ts) refuses anything that can backtrack.
  • requires.handlers lists every primitive the plugin invokes, and engine's minimum is at least each primitive's sinceEngine. That ordering is the point: an old build then says "update Voyager" (needs-engine) instead of needs-handler, which is left meaning a real configuration mistake.
  • Ten locales. English lives in the top-level name / description; the other nine sit under i18n.<locale> with name, description, changelog when set, and a label for every setting.
  • marketplace.json gets the entry, and the plugin directory gets a README.md next to the manifest. A test enforces both.
  • params is configuration, not instructions (plan §5, C1): no conditions, no ordering, no code. A selector-valued parameter such as yieldWhen is still data, so do not reject one on its name.
  • Themes come from the site, not from guesswork: site.json's theme block records the host, light and dark selectors. Check both. That block is the only place a host's own dark-mode dialect is ever named: pages/content/platformTheme/scheme.ts resolves it once and stamps html[data-gv-scheme='light'|'dark'] plus html[data-gv-platform='<siteId>'].
  • So scope every light/dark rule — in plugin CSS and in contentStyle.css — with html[data-gv-scheme='…'], never with the host's class (html.dark, body.dark-theme, :root:not(.dark)). Get theme right and a new site inherits every existing Voyager surface with no theme CSS of its own. contentStyleTheme.test.ts fails on a host dialect that slips back in.
  • Accent likewise: brandColor in site.json (or a plugin's theme.brand) becomes --gv-pm-brand, --gv-pm-brand-fg and --gv-pm-brand-h on the root. Voyager UI that should carry the site's colour reads oklch(L C var(--gv-pm-brand-h, var(--gv-pm-brand-h-default))), never a literal — a hard-coded hue is how the Vim HUD stayed Gemini green on DeepSeek. A rule for one platform only keys off html[data-gv-platform='<id>']; gv-platform-themed means "some brand applies" and three sites share it.
  • Never hand-edit dist_* or docs/public/catalog; catalog:build writes the published catalog.
Show full SKILL.md (610 more words)Show less

Write your own plugin locally

A declarative plugin for personal use needs no PR, catalog entry or release. Write plugin.json and its .css as the declarative reference describes, then in the popup open Local plugins (on Claude, ChatGPT and DeepSeek it is on the plugin page; on Gemini and AI Studio it is the last entry of the settings) and use Import files (manifest plus its .css files) or Paste JSON (CSS inlined).

  • The id is stored as local.<id>. Local plugins never replace an official id, are merged last and are outside the remote kill switch.

  • The gate is the remote catalog's (validateManifest, CSS and rendered-sink guards) plus: tier: "declarative" only; native ops only for shipped primitives, with params that fit verbs/contracts.ts and engine at or above their sinceEngine; and matches inside an existing plugin platform (Claude, ChatGPT, DeepSeek) or a native surface (Gemini, AI Studio). No plugin-supplied JS, ever.

  • Gemini and AI Studio accept only local plugins (official plugins and the online catalog never target them). Semantic keys resolve through the native adapters (userTurn, assistantTurn, composer, sidebar); theme is rejected there because those pages keep Voyager's accent, and native ops are rejected because the timeline, formula copy and Vim already run there natively: CSS and reversible DOM ops only. No permission prompt: the manifest already injects these hosts. The page still makes zero catalog requests. Example that tightens your own turns on Gemini:

    json
    {
      "id": "me.gemini-compact-turns",
      "name": "Compact Gemini turns",
      "version": "1.0.0",
      "description": "Tighter spacing between my messages",
      "author": "me",
      "category": "readability",
      "license": "MIT",
      "engine": ">=1.0.0",
      "tier": "declarative",
      "matches": ["https://gemini.google.com/*"],
      "contributes": {
        "styles": [{ "css": ".gv-plugin-compact-turn{margin-block:4px!important}" }],
        "domOps": [
          {
            "op": "addClass",
            "target": { "kind": "semantic", "key": "userTurn" },
            "className": "gv-plugin-compact-turn"
          }
        ]
      }
    }
  • A rejected import lists path: message and keeps the installed version. An accepted import lands disabled with an inspect view of its sites, CSS size, page changes, primitives and settings; enable it from the plugin list. To update, edit and re-import: the new version also lands disabled, so re-inspect and turn it back on. A plugin with a native op that was running keeps its mounted version until the page reloads (D7).

  • Export downloads the manifest with CSS inlined; that file is also the starting point for an official contribution, after renaming the id out of local. and moving it into catalog/sites/<site>/plugins/<id>/.

  • Manifests stay on the device (no Drive backup yet); export to keep a copy.

Implementation: src/features/plugins/local/ and the "Write your own plugin locally" section of src/features/plugins/README.md.

Verification and completion

Use the selected path's validators and focused tests during implementation. Before a code PR, run bun run verify:pr on the final tree per AGENTS.md; reuse covered results for unchanged inputs. Run catalog:build for catalog/contract changes and inspect its generated diff. Keep the evidence tied to the final changed files; later relevant edits invalidate it.

The PR needs:

  • A screenshot or recording on a real conversation in both light and dark themes. Record the site and approximate conversation length; redact conversation/account details from shared evidence.
  • The submitted directory's plugin:check output and the target selector match count, measured in the page (for example document.querySelectorAll('<selector>').length). For pure CSS without countable targets, use visible before/after evidence.
  • For a primitive, passing contract tests and parametric tests against two sites' fixtures.

Confirm the intended extension/catalog version is loaded before collecting evidence. A plugin target count of zero while the adapter's userTurn matches is the no-effect failure (runtime/healthMonitor.ts, design D12); investigate missing selectors. Pure-CSS plugins are not tracked by this counter.

Complete when the selected path's requirements pass and a reviewer can see the real behavior in both themes. Apply the affected-browser requirements in browser-testing.md when preparing a contribution. If coverage is unavailable, report the gap and owner; it remains pending.

© voyager-crew, GPL-3.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 (references) in .agents/skills/create-voyager-plugin of voyager-crew/voyager.

  • SKILL.md
  • references/declarative.md
  • references/primitive.md
  • references/site-adapter.md

Open the folder on GitHubat commit dfb08a6

Compare with similar skills

Create Voyager Plugin 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.

Create Voyager Plugin compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Create Voyager Plugin this skillvoyager-crew/voyager20k—~2.7kAutomated safety check: PassGPL-3.0
Canvas Capture Extensionremotion-dev/remotion63k—~907Automated safety check: PassCustom licence
Adversarial Reviewmengxi-ream/read-frog10k1 repos~905Automated safety check: PassGPL-3.0
Record Extension Demomengxi-ream/read-frog10k—~2.8kAutomated safety check: PassGPL-3.0
Geoflowyaojingang/GEOFlow3.8k—~722Automated safety check: PassAGPL-3.0
Wxt Browser Extensionsvantezzen/skip-silence4692 repos~1.9kAutomated safety check: PassMIT

Similar skills

  • Canvas Capture Extension

    remotion-dev/remotion

    Official

    Rebuild, install, and reload the private Remotion Canvas Capture unpacked Chrome extension.

    63k GitHub stars~907 tokensUpdated today
    Media & CreativeAuto-check passed
  • Adversarial Review

    mengxi-ream/read-frog

    Adversarial code review using cross-model approach. An agent skill from mengxi-ream/read-frog.

    10k GitHub starsUsed in 1 repo~905 tokens
    DevelopmentAuto-check passed
  • Record Extension Demo

    mengxi-ream/read-frog

    Record polished, evidence-backed demos of the Read Frog extension as MP4 (and optional GIF) by driving real Chrome with the built extension, following captioned scene scripts, asserting extension…

    10k GitHub stars~2.8k tokensUpdated today
    DevelopmentAuto-check passed
  • Geoflow

    yaojingang/GEOFlow

    Operate/develop GEOFlow CLI/Laravel/admin/API, topics/专题 and topic tasks, theme libraries/replication, sites/leads/Agent, channel sync and legacy yao-geoflow-cli/design/template migration.

    3.8k GitHub stars~722 tokensUpdated 2 days ago
    Backend & APIsAuto-check passed
  • Wxt Browser Extensions

    vantezzen/skip-silence

    WXT browser extension performance optimization guidelines. An agent skill from vantezzen/skip-silence.

    469 GitHub starsUsed in 2 repos~1.9k tokens
    DevelopmentAuto-check passed
  • Archify

    molvqingtai/WebChat

    Create professional architecture, workflow, sequence, data-flow, and lifecycle/state diagrams as standalone HTML files with SVG graphics, a built-in dark/light theme toggle, and one-click export to…

    2.6k GitHub stars~5.6k tokensUpdated 27 days ago
    DevelopmentAuto-check passed

More from voyager-crew/voyager

  • Release

    voyager-crew/voyager

    Prepare, publish, or recover a Voyager release. An agent skill from voyager-crew/voyager.

    20k GitHub stars~814 tokensUpdated today
    Auto-check passed
  • Voyager Contribute

    voyager-crew/voyager

    Prepare Voyager commits, pull requests, and contribution evidence, or claim an issue and check review readiness.

    20k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Update Safari Extension

    voyager-crew/voyager

    Build, reload, and verify Voyager in Safari for web-extension changes, native integration, or signed-app testing while preserving installed apps and extension data.

    20k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Verify In Browser

    voyager-crew/voyager

    Verify Voyager content-script or injected-CSS behavior in a live browser, including stale-build diagnosis.

    20k GitHub stars~886 tokensUpdated today
    Auto-check passed
  • Issue Review

    voyager-crew/voyager

    Investigate or fix a referenced Voyager GitHub issue, within the requested delivery scope.

    20k GitHub stars~289 tokensUpdated today
    Auto-check passed
  • PR Description

    voyager-crew/voyager

    Write or rewrite a Voyager pull request description. An agent skill from voyager-crew/voyager.

    20k GitHub stars~182 tokensUpdated today
    Auto-check passed

Questions about Create Voyager Plugin

What does Create Voyager Plugin do?

Create or change a Voyager declarative plugin, site adapter, or native primitive. Create Voyager Plugin is an agent skill from voyager-crew/voyager. Create or change a Voyager declarative plugin, site adapter, or native primitive.

How do I install Create Voyager Plugin in Claude Code?

Run `npx skills add voyager-crew/voyager --skill create-voyager-plugin -a claude-code`. Or copy the skill folder (.agents/skills/create-voyager-plugin in voyager-crew/voyager) into .claude/skills/create-voyager-plugin in your project. Claude Code loads it when a task matches its description.

How do I install Create Voyager Plugin in Codex?

Run `npx skills add voyager-crew/voyager --skill create-voyager-plugin -a codex`. Or copy the skill folder (.agents/skills/create-voyager-plugin in voyager-crew/voyager) into .agents/skills/create-voyager-plugin in your project. Codex loads it when a task matches its description.

Can I use Create Voyager Plugin 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 voyager-crew/voyager --skill create-voyager-plugin -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/create-voyager-plugin, .gemini/skills/create-voyager-plugin, .github/skills/create-voyager-plugin and .opencode/skills/create-voyager-plugin in your project.

What does Create Voyager Plugin need to run?

Going by SKILL.md and its folder, Create Voyager Plugin needs the command-line tools its instructions call (bun).

Does Create Voyager Plugin access the network?

SKILL.md names 1 domain. In commands or code: gemini.google.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Create Voyager Plugin 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 Create Voyager Plugin use?

Create Voyager Plugin is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Create Voyager Plugin use?

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 2k tokens, read only when the agent opens those files.

What are the alternatives to Create Voyager Plugin?

Skills that share tags, products or a category with Create Voyager Plugin: Canvas Capture Extension (remotion-dev/remotion, 63k stars), Adversarial Review (mengxi-ream/read-frog, 10k stars), Record Extension Demo (mengxi-ream/read-frog, 10k stars) and Geoflow (yaojingang/GEOFlow, 3.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Create Voyager Plugin?

voyager-crew (a GitHub organization) maintains it in voyager-crew/voyager, which has 20,338 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 10, 2026.

Source: voyager-crew/voyager on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.