plugin-module

A guide for packaging a connector as an external Wick plugin: a separate program that Wick downloads and runs outside its main process. It covers the plugin's repository structure, startup code, packaging, and runtime communication.

In plain words
What is it for?
Use it to build, package, release, or update an external connector plugin.
Why use it?
It explains the extra steps required when a connector is shipped separately instead of compiled into Wick.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/yogasw/wick/plugin-module
Any agent
npx skills add yogasw/wick --skill plugin-module
Clone the repo
git clone --depth 1 https://github.com/yogasw/wick

Made for: Claude Code, Codex.

Per session 206 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 4,736 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00206 $0.04736
Opus 5 $0.00103 $0.02368
Sonnet 5 $0.00041 $0.00947
Haiku 4.5 $0.00021 $0.00474

Measured yesterday against content hash bcf5f4f08edc, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

plugin-module scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.claude/skills/plugin-module/SKILL.md · 330 lines

How it starts

The opening of the file, as written. The whole thing — 330 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Plugin Module — connectors (and later tools/jobs) shipped as external plugins

Scope: this skill is the packaging + shipping layer. A plugin's moduleMeta, Configs, Operations, Ctx, the wick:"..." tag grammar, destructive-opt-in, http.NewRequestWithContext, typed responses — is exactly the same as an in-tree connector. For all of that, use the connector-module skill (or tool-module for tools). This skill covers only what's different when the module is a separate binary wick downloads and runs, not code compiled into wick.

Mental model: in-tree module vs plugin

In-tree (connector-module skill) Plugin (this skill)
Lives in internal/connectors/<name>/ plugins/connector/<key>/ (nested module in the wick repo)
Registered by RegisterBuiltins() at compile time downloaded → scanned from ~/.<appName>/plugins/connectors/<key>/ at runtime
Runs in the wick process (function call) own subprocess, gRPC over UDS (hashicorp/go-plugin)
main() none — it's a package package mainwickplugin.Serve(Module())
Ships as part of the wick binary <key>-<ver>-<os>-<arch>.zip (binary + plugin.json)

The module value is identical — a plugin's connector.Module is built the same way. The only code difference is the main.go wrapper and that it's a separate Go module. So: write the connector exactly as connector-module teaches, then wrap + package per below.

The plugins repo

plugins/
├── go.mod                 # ONE module; repo-root go.work wires it to local wick
│                          # (pkg/plugin isn't in a published wick release yet, so
│                          #  there is NO `replace` in go.mod — go.work handles it)
├── plugins.json           # the marketplace CATALOG (see below)
├── connector/
│   ├── _template/         # scaffold — copy this; skipped by tooling (leading _)
│   │   ├── main.go        #   wickplugin.Serve(Module())
│   │   ├── connector.go   #   the connector.Module (this is the connector-module part)
│   │   └── VERSION        #   source of truth for the plugin version
│   └── httpbin/           # a real, working sample
├── tool/                  # (later) kind=tool, same flow
├── job/                   # (later) kind=job, same flow
├── README.md  RELEASE.md  POLYGLOT.md

Read the full file on GitHub · 330 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. yesterday First seen · 330 lines · 206 tokens per session scan A bcf5f4f08edc

Subscribe to this mod's changes

plugin-module is a skill published in the GitHub repository yogasw/wick (5 stars, last pushed 4d ago), licensed MIT. It adds 206 tokens to every session and 4,736 once invoked, about $0.0010 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.