Kunkun
Reference

Manifest Reference

Every field of the kunkun manifest, plus an interactive validator.

Your extension's manifest is the kunkun field of its package.json. It's validated by a Valibot schema shipped in @kunkunsh/sdk/manifest — the same schema powers the validator below.

Interactive validator

Paste or edit a package.json and it's checked live against the real schema:

Manifest validator● valid

This validates the whole package.json (the top-level fields plus kunkun). Errors show the field path and message.

Top-level package.json

FieldTypeNotes
namestringnpm package name (required)
versionstringsemver (required)
licensestringrequired
$schemastringhttps://schema.kunkun.sh/ for editor hints
author, contributors, repository, descriptionstandard npm fields
filesstring[]what ships in the tarball (e.g. ["dist"])
kunkunobjectthe manifest (below)

kunkun manifest

FieldTypeNotes
identifierstringRequired. Stable, unique id (e.g. com.you.tool). Keys installs, storage, grants — never change it.
namestringDisplay name (falls back to package name)
shortDescription / longDescriptionstringStore listing
iconIconsee below
commandsCommand[]Required. One entry per command
permissionsPermission[]see Permissions
preferencesPreference[]extension-wide preferences
demoImagesstring[]screenshots for the store
categoriesCategory[]store categories
platforms("linux"|"macos"|"windows")[]restrict to platforms
servicesService[]exposed services
serviceDependenciesServiceDependency[]services you consume
bindingsobjecthost LLM/resource bindings
binaryDependenciesBinaryDependency[]host-managed binaries

Icon

{ "type": "iconify", "value": "mdi:puzzle", "invert": true }

type: "iconify" uses an Iconify id; invert flips for dark mode.

Command

FieldTypeNotes
namestringinternal command id
titlestringshown in the palette
descriptionstring
modeCommandModesee below
mainstringentry: route (/), dist/App.js, or dist/node/App.js
diststringbuild output dir (custom-view)
devMainstringdev server URL (HMR)
iconIconper-command icon
windowWindowConfigcustom-/node-view window options
runtime"auto"|"deno"|"node"Node-mode runtime override
intervalnumber | "5m"schedule (headless)
cronstringcron schedule (headless)
argumentsArgument[]user inputs
preferencesPreference[]per-command preferences
keywordsstring[]extra search terms
platformsOSPlatform[]restrict this command

mode — one of:

ValueRuntimeNotes
custom-viewBrowserWindowyour own SPA
worker-viewWeb WorkerReact via Uniview
node-viewNode/DenoReact + system access
worker-headlessWeb Workerno UI
node-headlessNode/Denono UI + system access
menu-barTraymenu-bar command
quicklinknavigate to a link
view / no-viewRaycast aliases → node-view / node-headless

Window config (custom-/node-view)

{ "titleBarStyle": "overlay", "transparent": true, "vibrancy": "sidebar", "width": 700, "height": 550 }

Service

{
  "name": "math",
  "description": "Math operations",
  "main": "dist/node/MathService.js",
  "serviceMode": "node-headless",
  "methods": [
    { "name": "add", "description": "Add", "inputSchema": { /* JSON Schema */ }, "outputSchema": { /* JSON Schema */ } }
  ]
}

See Services for the full pattern.

Permissions

Simple strings or scoped objects — the complete catalogue and scope shapes are in Permissions. Quick shape reminder:

{
  "permissions": [
    "clipboard-read",
    { "permission": "fs-read", "allow": ["$EXTENSION_SUPPORT/**"] },
    { "permission": "network", "domains": ["*.github.com"] },
    { "permission": "shell", "commands": [{ "program": "git", "args": ["status"] }] },
    { "permission": "backend", "allow": [{ "script": "$EXTENSION/dist/backend.js", "runtime": "node" }] }
  ]
}

Minimal valid manifest

{
  "name": "hello",
  "version": "0.1.0",
  "license": "MIT",
  "kunkun": {
    "identifier": "com.you.hello",
    "commands": [{ "name": "main", "title": "Hello", "mode": "worker-view", "main": "dist/App.js" }]
  }
}

On this page