Add Claude Code and Codex plugin manifests and MCP registry metadata (#756)

This commit is contained in:
Gregory Schier authored and GitHub committed 2026-10-15 07:14:22 -07:00
1 parent 9b3715024d
commit b01c9c34c7
9 files changed
+165 -2

No files matched your search

+20
View File
@@ -0,0 +1,20 @@
{
"name": "yaak",
"interface": {
"displayName": "Yaak"
},
"plugins": [
{
"name": "yaak",
"source": {
"source": "local",
"path": "./crates-cli/yaak-cli"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Developer Tools"
}
]
}
+18
View File
@@ -0,0 +1,18 @@
{
"$schema": "https://json.schemastore.org/claude-code-marketplace.json",
"name": "yaak",
"description": "Plugins for Yaak, the desktop API client",
"owner": {
"name": "Yaak",
"url": "https://yaak.app"
},
"plugins": [
{
"name": "yaak",
"source": "./crates-cli/yaak-cli",
"description": "Build, save, and send API requests with the yaak CLI, with its MCP server for agents",
"category": "development",
"tags": ["api", "http", "rest", "graphql", "grpc", "openapi", "api-client"]
}
]
}
@@ -0,0 +1,20 @@
{
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
"name": "yaak",
"displayName": "Yaak",
"description": "Build, save, and send API requests with the yaak CLI, with its MCP server for agents",
"author": {
"name": "Yaak",
"url": "https://yaak.app"
},
"homepage": "https://yaak.app",
"repository": "https://github.com/mountain-loop/yaak",
"license": "MIT",
"keywords": ["api", "http", "rest", "graphql", "grpc", "openapi", "api-client"],
"mcpServers": {
"yaak": {
"command": "npx",
"args": ["-y", "@yaakapp/cli", "mcp"]
}
}
}
+24
View File
@@ -17,6 +17,30 @@ The `yaak` CLI is primarily meant to be used by AI agents, and has the following
- `--verbose` mode for extracting debug info while sending requests
- The ability to send entire workspaces and folders (Supports `--parallel` and `--fail-fast`)
### Agent Setup
Install the Yaak skill so your coding agent knows how to drive the CLI:
```sh
yaak agent install # every agent found on this machine
npx skills add mountain-loop/yaak --skill use-yaak # or with the skills CLI
```
Claude Code and Codex can install it as a plugin instead. In Claude Code, run
`/plugin install yaak --marketplace mountain-loop/yaak`; the plugin also registers the
`yaak mcp` server. In Codex, run `codex plugin marketplace add mountain-loop/yaak`,
then `codex plugin add yaak@yaak`.
Any MCP client can run the server over stdio:
```json
{
"mcpServers": {
"yaak": { "command": "npx", "args": ["-y", "@yaakapp/cli", "mcp"] }
}
}
```
### Example Prompts
Use the `yaak` CLI with agents like Claude or Codex to do useful things for you.
+33
View File
@@ -0,0 +1,33 @@
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "yaak",
"description": "Build, save, and send API requests with the yaak CLI",
"author": {
"name": "Yaak",
"url": "https://yaak.app"
},
"homepage": "https://yaak.app",
"repository": "https://github.com/mountain-loop/yaak",
"license": "MIT",
"keywords": ["api", "http", "rest", "graphql", "grpc", "openapi", "api-client"],
"extensions": {
"com.openai": {
"interface": {
"displayName": "Yaak",
"shortDescription": "Build, save, and send API requests with Yaak",
"longDescription": "Teaches the agent the yaak CLI: create workspaces, requests, environments, and auth, send one request or a whole suite, chain responses, and import OpenAPI, Postman, Insomnia, Bruno, or cURL. Requests are saved to Yaak, so you can open them in the desktop app.",
"developerName": "Yaak",
"category": "Developer Tools",
"capabilities": ["Read", "Write"],
"websiteURL": "https://yaak.app",
"privacyPolicyURL": "https://yaak.app/privacy",
"termsOfServiceURL": "https://yaak.app/terms",
"defaultPrompt": [
"Create Yaak requests for every route in this API",
"Import this OpenAPI spec into a Yaak workspace",
"Send my Yaak requests against staging and report failures"
]
}
}
}
}
+9 -1
View File
@@ -184,6 +184,14 @@ fn installed_version(dir: &Path) -> Option<String> {
.filter(|v| !v.is_empty() && v != VERSION_PLACEHOLDER)
}
/// A skill installed by a plugin manager or `npx skills add` keeps the unstamped
/// placeholder; that manager owns its updates, so it is not ours to call stale.
fn is_plugin_managed(dir: &Path) -> bool {
fs::read_to_string(dir.join("SKILL.md"))
.map(|text| text.contains(VERSION_PLACEHOLDER))
.unwrap_or(false)
}
/// Health summary appended to root `--help`, so an agent can notice in one command
/// that an upgraded CLI has left the installed skill behind. Silent when nothing is
/// installed anywhere, to avoid nagging users who do not use agent tooling.
@@ -195,7 +203,7 @@ pub fn help_section() -> Option<String> {
let mut installed = 0usize;
for target in &targets {
let dir = target.skills_dir.join(SKILL_NAME);
if !dir.join("SKILL.md").exists() {
if !dir.join("SKILL.md").exists() || is_plugin_managed(&dir) {
continue;
}
installed += 1;
+2 -1
View File
@@ -22,5 +22,6 @@
"@yaakapp/cli-linux-x64": "0.0.1",
"@yaakapp/cli-win32-arm64": "0.0.1",
"@yaakapp/cli-win32-x64": "0.0.1"
}
},
"mcpName": "io.github.mountain-loop/yaak"
}
+31
View File
@@ -0,0 +1,31 @@
{
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"name": "io.github.mountain-loop/yaak",
"title": "Yaak",
"description": "Create, edit, and send HTTP requests in the Yaak desktop API client",
"websiteUrl": "https://yaak.app/docs/getting-started/mcp-server",
"repository": {
"url": "https://github.com/mountain-loop/yaak",
"source": "github",
"id": "602379707",
"subfolder": "npm/cli"
},
"version": "0.0.1",
"packages": [
{
"registryType": "npm",
"registryBaseUrl": "https://registry.npmjs.org",
"identifier": "@yaakapp/cli",
"version": "0.0.1",
"transport": {
"type": "stdio"
},
"packageArguments": [
{
"type": "positional",
"value": "mcp"
}
]
}
]
}
+8
View File
@@ -74,4 +74,12 @@ for (const pkg of packages) {
writeFileSync(filepath, `${JSON.stringify(json, null, 2)}\n`);
}
const serverJsonPath = join(__dirname, "cli", "server.json");
const serverJson = JSON.parse(readFileSync(serverJsonPath, "utf-8"));
serverJson.version = version;
for (const pkg of serverJson.packages) {
pkg.version = version;
}
writeFileSync(serverJsonPath, `${JSON.stringify(serverJson, null, 2)}\n`);
console.log(`Prepared @yaakapp/cli npm packages for ${version}`);