mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-11-13 12:13:42 +01:00
Add Claude Code and Codex plugin manifests and MCP registry metadata (#756)
This commit is contained in:
1 parent
9b3715024d
commit
b01c9c34c7
9 files changed
+165
-2
No files matched your search
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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
|
- `--verbose` mode for extracting debug info while sending requests
|
||||||
- The ability to send entire workspaces and folders (Supports `--parallel` and `--fail-fast`)
|
- 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
|
### Example Prompts
|
||||||
|
|
||||||
Use the `yaak` CLI with agents like Claude or Codex to do useful things for you.
|
Use the `yaak` CLI with agents like Claude or Codex to do useful things for you.
|
||||||
|
|||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -184,6 +184,14 @@ fn installed_version(dir: &Path) -> Option<String> {
|
|||||||
.filter(|v| !v.is_empty() && v != VERSION_PLACEHOLDER)
|
.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
|
/// 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
|
/// 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.
|
/// 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;
|
let mut installed = 0usize;
|
||||||
for target in &targets {
|
for target in &targets {
|
||||||
let dir = target.skills_dir.join(SKILL_NAME);
|
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;
|
continue;
|
||||||
}
|
}
|
||||||
installed += 1;
|
installed += 1;
|
||||||
|
|||||||
@@ -22,5 +22,6 @@
|
|||||||
"@yaakapp/cli-linux-x64": "0.0.1",
|
"@yaakapp/cli-linux-x64": "0.0.1",
|
||||||
"@yaakapp/cli-win32-arm64": "0.0.1",
|
"@yaakapp/cli-win32-arm64": "0.0.1",
|
||||||
"@yaakapp/cli-win32-x64": "0.0.1"
|
"@yaakapp/cli-win32-x64": "0.0.1"
|
||||||
}
|
},
|
||||||
|
"mcpName": "io.github.mountain-loop/yaak"
|
||||||
}
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -74,4 +74,12 @@ for (const pkg of packages) {
|
|||||||
writeFileSync(filepath, `${JSON.stringify(json, null, 2)}\n`);
|
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}`);
|
console.log(`Prepared @yaakapp/cli npm packages for ${version}`);
|
||||||
Reference in new issue
Block a user