Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@
"email": "team@paper.design"
},
"metadata": {
"description": "Paper connects your teams, agents, code, and data on a single design space built on web standards.",
"version": "0.1.0"
"description": "Paper connects your teams, agents, code, and data on a single design space built on web standards."
},
"plugins": [
{
Expand Down
3 changes: 1 addition & 2 deletions .cursor-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@
"email": "team@paper.design"
},
"metadata": {
"description": "Paper connects your teams, agents, code, and data on a single design space built on web standards.",
"version": "0.1.0"
"description": "Paper connects your teams, agents, code, and data on a single design space built on web standards."
},
"plugins": [
{
Expand Down
17 changes: 17 additions & 0 deletions .github/plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"name": "paper",
"owner": {
"name": "Paper",
"email": "team@paper.design"
},
"metadata": {
"description": "Paper connects your teams, agents, code, and data on a single design space built on web standards."
},
"plugins": [
{
"name": "paper-desktop",
"source": "./plugins/paper-desktop",
"description": "Connect to Paper Desktop using its MCP server."
}
]
}
48 changes: 48 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,51 @@ Are we missing one, you have feedback for us, or just want to chat? Join us on o
```sh
/plugin install paper-desktop@paper
```

## Copilot CLI

**Add the custom marketplace**

```sh
copilot plugin marketplace add paper-design/agent-plugins
```

**Install the plugin**

```sh
copilot plugin install paper-desktop@paper
```

Confirm with `copilot mcp list`. Plugins installed this way also appear in VS Code under **Agent Plugins - Installed**.

## VS Code

1. Enable agent plugins: set `chat.plugins.enabled` to `true`.
2. Add the marketplace in settings:

```json
"chat.plugins.marketplaces": [
"paper-design/agent-plugins"
]
```

3. Install **paper-desktop** from the Agent Plugins view (or install via Copilot CLI as above).

### Manual MCP (optional)

If you prefer not to use plugins, add this to your Copilot / VS Code MCP config:

```json
{
"servers": {
"paper": {
"type": "stdio",
"command": "${userHome}/.paper/bin/paper",
"args": ["mcp"]
}
}
}
```

- [About Copilot plugins](https://docs.github.com/en/copilot/concepts/agents/about-plugins)
- [Agent plugins in VS Code](https://code.visualstudio.com/docs/agent-customization/agent-plugins)
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
"type": "module",
"private": true,
"scripts": {
"build": "bun ./scripts/validate-cursor-schema.mjs && bun ./scripts/validate-cursor-structure.mjs"
"build": "bun ./scripts/validate-cursor-schema.mjs && bun ./scripts/validate-cursor-structure.mjs && bun ./scripts/validate-copilot.mjs",
"test": "bun run build"
},
"devDependencies": {
"@types/bun": "latest",
Expand Down
2 changes: 2 additions & 0 deletions plugins/paper-desktop/mcp.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
"mcpServers": {
"paper": {
"type": "stdio",
"command": "${HOME}/.paper/bin/paper",
"args": ["mcp"]
}
Expand Down
27 changes: 27 additions & 0 deletions plugins/paper-desktop/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "paper-desktop",
"version": "0.2.0",
"description": "Design on a canvas that Copilot can read and write to — built on web standards.",
"author": {
"name": "Paper",
"email": "team@paper.design",
"url": "https://paper.design"
},
"homepage": "https://paper.design",
"repository": "https://github.com/paper-design/agent-plugins",
"license": "MIT",
"keywords": [
"paper",
"design",
"ui",
"canvas",
"html",
"css",
"design-to-code",
"code-to-design",
"mcp",
"design-system"
],
"mcpServers": "./mcp.json"
}
120 changes: 120 additions & 0 deletions schemas/agent-plugins/mcp.schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
"title": "Agent Plugins MCP Configuration",
"description": "Machine-readable schema for mcp.json in Agent Plugins 1.0.0. The Agent Plugins specification defines additional semantic and operational requirements.",
"type": "object",
"properties": {
"$schema": {
"const": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
"description": "Canonical identifier of the MCP configuration schema for the Agent Plugins version targeted by this document."
},
"mcpServers": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/server"
}
}
},
"required": ["$schema", "mcpServers"],
"additionalProperties": false,
"$defs": {
"server": {
"title": "MCP server",
"oneOf": [
{
"$ref": "#/$defs/stdioServer"
},
{
"$ref": "#/$defs/streamableHttpServer"
},
{
"$ref": "#/$defs/sseServer"
}
]
},
"stdioServer": {
"title": "stdio MCP server",
"type": "object",
"properties": {
"type": {
"const": "stdio"
},
"command": {
"type": "string",
"minLength": 1,
"description": "Executable token. Resolution rules are defined by the Agent Plugins specification."
},
"args": {
"type": "array",
"items": {
"type": "string"
}
},
"env": {
"type": "object",
"propertyNames": {
"not": {
"enum": ["PLUGIN_ROOT", "PLUGIN_DATA"]
}
},
"additionalProperties": {
"type": "string"
}
},
"cwd": {
"type": "string",
"pattern": "^(?:\\./|\\$\\{PLUGIN_ROOT\\}(?:/|$)|\\$\\{PLUGIN_DATA\\}(?:/|$))",
"description": "Plugin-relative, PLUGIN_ROOT-rooted, or PLUGIN_DATA-rooted working directory. Filesystem containment is validated separately."
}
},
"required": ["type", "command"],
"additionalProperties": false
},
"streamableHttpServer": {
"title": "Streamable HTTP MCP server",
"type": "object",
"properties": {
"type": {
"const": "streamable-http"
},
"url": {
"type": "string",
"minLength": 1,
"description": "MCP endpoint URL. URL semantics are defined by the Agent Plugins specification."
},
"headers": {
"$ref": "#/$defs/headers"
}
},
"required": ["type", "url"],
"additionalProperties": false
},
"sseServer": {
"title": "Legacy HTTP+SSE MCP server",
"type": "object",
"properties": {
"type": {
"const": "sse"
},
"url": {
"type": "string",
"minLength": 1,
"description": "MCP endpoint URL. URL semantics are defined by the Agent Plugins specification."
},
"headers": {
"$ref": "#/$defs/headers"
}
},
"required": ["type", "url"],
"additionalProperties": false
},
"headers": {
"title": "HTTP headers",
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
65 changes: 65 additions & 0 deletions schemas/agent-plugins/plugin.schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"title": "Agent Plugins Manifest",
"description": "Machine-readable schema for plugin.json in Agent Plugins 1.0.0. The Agent Plugins specification defines additional semantic and operational requirements.",
"type": "object",
"properties": {
"$schema": {
"const": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"description": "Canonical identifier of the plugin manifest schema for the Agent Plugins version targeted by this document."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?!.*(?:--|\\.\\.))[a-z0-9](?:[a-z0-9.-]*[a-z0-9])?$",
"description": "Human-readable plugin name."
},
"version": {
"type": "string"
},
"description": {
"type": "string"
},
"author": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"url": {
"type": "string"
}
},
"additionalProperties": false
},
"homepage": {
"type": "string"
},
"repository": {
"type": "string"
},
"license": {
"type": "string"
},
"keywords": {
"type": "array",
"items": {
"type": "string"
}
},
"extensions": {
"type": "object",
"description": "Client-specific manifest data keyed by reverse-domain extension namespace. Agent Plugins assigns no semantics to namespace object contents.",
"additionalProperties": {
"type": "object"
}
}
},
"required": ["$schema", "name"],
"additionalProperties": false
}
Loading
Loading