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
|
||||
- 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.
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
/// 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;
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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`);
|
||||
}
|
||||
|
||||
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}`);
|
||||
Reference in new issue
Block a user