Manifest
An extension is an npm-shaped package. package.json names it and holds the manifest under napdock; other keys are ignored. Commands, slots, themes and keys aren't declared here: the ui part adds them at run time.
{ "name": "@acme/tasks", "version": "1.2.0", "napdock": { "schema": 1, "id": "tasks", "title": "Tasks", "description": "What's left on this branch.", "icon": "list-check", "platforms": ["macos-arm64"], "ui": { "entry": "dist/ui.js", "scopes": { "default": "session", "allowed": ["session", "workspace"] } }, "main": { "entry": "dist/main.js", "permissions": { "network": ["api.linear.app"], "workspace": "read" } }, "connections": [{ "kind": "github", "reason": "Lets Tasks read the pull request's checks" }] }}
package.json
| Key | Type | Limits |
|---|---|---|
name
| string, required | 1–214 characters |
version
| string, required |
Semantic version such as 1.2.0 or 1.2.0-beta.1, 64 characters
|
napdock
| manifest, required | Below |
napdock
| Key | Type | Limits and meaning |
|---|---|---|
schema
|
1, required
| The manifest's version |
id
| string, required |
^[a-z][a-z0-9-]*$, 64 characters; unique among installed extensions
|
title
| string, required | 1–80 characters, shown in the rail and Settings |
description
| string | 280 characters |
icon
| icon name | One of the app's 47 icons (see Tokens) |
platforms
| array |
1–4 of macos-arm64, macos-x64, linux-x64, linux-arm64; absent means every platform
|
ui
| object |
entry, scopes, and panel: false for a part with no rail entry
|
main
| object |
entry and permissions (below)
|
helpers
| array | Up to 8 native programs, names distinct |
agent
| object | Tools, hooks and skills for agents |
connections
| array | Up to 4 accounts it asks the user for |
| Rule | Value |
|---|---|
| Entries and helper paths |
Relative, /-separated, no ., .. or empty segment, 512 characters
|
| Part and helper names |
^[a-z][a-z0-9-]*$, 32 characters; main is reserved
|