Back to Wox

Wox Plugin Creator

.agents/skills/wox-plugin-creator/SKILL.md

2.3.04.2 KB
Original Source

Wox Plugin Creator

Quick Start

  • Scaffold a Node.js plugin (clones template repo):
    • python3 scripts/scaffold_wox_plugin.py --type nodejs --output-dir ./MyPlugin --name "My Plugin" --trigger-keywords my
  • Scaffold a Python plugin (clones template repo):
    • python3 scripts/scaffold_wox_plugin.py --type python --output-dir ./MyPlugin --name "My Plugin" --trigger-keywords my
  • Scaffold a script plugin (uses local templates; plugin-id auto-generated; single file output):
    • python3 scripts/scaffold_wox_plugin.py --type script-nodejs --output-dir ./Wox.Plugin.Script.MyScript.js --name "My Script" --trigger-keywords my

Workflow

1) Scaffold plugin files

  • Use scripts/scaffold_wox_plugin.py for nodejs, python, script-nodejs, or script-python.
  • Pass --name and --trigger-keywords for every runtime. The scaffold exits without them.
  • For Node.js and Python, the scaffold clones the official template repos and replaces placeholders like {{.ID}}, {{.Name}}, {{.Description}}, {{.TriggerKeywordsJSON}}, {{.Author}}.
  • Before starting work in a new SDK plugin project, run make init in the project root when the project has not been initialized yet.
  • Script plugins are single-file plugins. Prefer filenames like Wox.Plugin.Script.<Name>.<ext> (e.g., Wox.Plugin.Script.Memos.py).
  • For script plugins, the scaffold copies Wox script templates from ~/.wox/ai/skills/wox-plugin-creator/assets/script_plugin_templates/ and fills metadata placeholders.
  • Prefer standard library features; avoid third-party dependencies unless absolutely necessary.
  • For SDK usage and API details, read references/sdk_nodejs.md or references/sdk_python.md.
  • For plugin.json, SettingDefinitions, QueryRequirements, validators, dynamic settings, and feature flags, read references/plugin_json_schema.md first.
  • When authoring SettingDefinitions, always decide whether each setting is platform-specific before shipping it. Wox cloud sync replicates normal plugin settings across devices, so local paths, executable paths, shell commands, hotkeys, system integrations, browser profiles, and application paths should usually set IsPlatformSpecific: true. Account IDs, API keys, remote service hosts, and cross-platform user preferences should usually keep IsPlatformSpecific: false.
  • Use DisabledInPlatforms only to disable a setting on selected platforms. It does not isolate stored values; use IsPlatformSpecific when the value must differ per platform after cloud sync.
  • When a plugin cannot run a query without required settings such as access keys, declare those requirements in metadata QueryRequirements instead of returning ad hoc setup results from query().
  • For ready-to-copy patterns such as validated textbox/select fields, editable tables, AI model selectors, and dynamic preview settings, read references/settings_patterns.md.
  • For Python settings APIs, note that helper builders are limited; advanced settings are often created by constructing PluginSettingDefinitionItem and value objects directly.

2) Author result and action icons

  • Read references/icons.md for icon selection, inline SVG patterns, and placement rules.
  • When the requested icon semantics already match a bundled generic icon under assets/iconify/, prefer reusing that local reference before searching for a new one.
  • Use scripts/search_iconify.py to search Iconify collections and fetch ready-to-inline SVG constants for icons.ts or icons.py.

3) Package and submit plugin

  • For SDK plugins cloned from templates, run make package inside the template repo.
  • For submitting a plugin to the official Wox store, prefer wox-plugin-submit2store skill.
  • Script plugins do not use plugin.json; they embed a JSON metadata block in the script header comments.

Resources

  • scripts: scripts/scaffold_wox_plugin.py, scripts/search_iconify.py
  • references: references/plugin_overview.md, references/scaffold_nodejs.md, references/scaffold_python.md, references/sdk_nodejs.md, references/sdk_python.md, references/plugin_json_schema.md, references/settings_patterns.md, references/plugin_i18n.md, references/icons.md
  • assets: assets/script_plugin_templates/, assets/iconify/