Install
$ agentstack add skill-gleanwork-pluginpack-authoring-pluginpack-config ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Authoring a pluginpack config
pluginpack compiles one portable source into each app's native plugin format. The config (pluginpack.config.ts) declares the source layout and the targets to emit.
Fastest start
npx @gleanwork/pluginpack init scaffolds a pluginpack.config.ts and an example source plugin. Then edit to taste.
Config shape
import { defineConfig } from "@gleanwork/pluginpack";
export default defineConfig({
name: "acme-plugins",
version: "0.1.0",
source: {
// Recommended: portable skills at the repo-level skills/ directory.
skills: "skills",
rootPlugin: { id: "core", description: "Acme portable skills." },
// Alternatively, richer source plugins live under plugins//.
// plugins: "plugins",
},
metadata: {
description: "Acme agent plugins.",
author: { name: "Acme" },
owner: { name: "Acme", email: "support@acme.com" },
license: "MIT",
},
targets: {
cursor: {
outDir: ".",
plugins: {
acme: {
from: ["core"],
path: "plugins/cursor/acme",
components: ["skills"],
},
},
},
claude: {
outDir: ".",
pluginRoot: "plugins/claude",
plugins: { acme: { from: ["core"] } },
},
antigravity: {
outDir: "plugins/antigravity",
plugins: { acme: { from: ["core"] } },
},
copilot: {
outDir: "plugins/copilot",
plugins: { acme: { from: ["core"] } },
},
codex: {
outDir: "plugins/codex",
plugins: { acme: { from: ["core"] } },
},
},
});
source.skillsis the portable surface;source.rootPlugin.idis the source
plugin name targets reference via from.
- Each emitted plugin's
fromlists the source plugin id(s) to include; multiple
ids merge (a colliding file path is an error).
path/pluginRootcontrol where a target places the emitted plugin.
Critical: avoid output collisions
claude and copilot both write .claude-plugin/marketplace.json, so they cannot share an outDir. Give them distinct roots (e.g. claude at ., copilot at plugins/copilot). pluginpack build errors on overlapping output paths.
MCP servers
Add a .mcp.json ({ "mcpServers": { "name": { ... } } }) at the source plugin root, or an mcpServers key in plugin.pluginpack.json. pluginpack wires it into each target natively.
Verify
After editing: pluginpack build then pluginpack validate --target . See the build-and-verify skill.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: gleanwork
- Source: gleanwork/pluginpack
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.