From 18ab1f653a2ae9c9260bd2e7fc7192e8f6423237 Mon Sep 17 00:00:00 2001 From: SuperCLI Dev Date: Wed, 24 Jun 2026 00:35:03 +0000 Subject: [PATCH] =?UTF-8?q?feat(plugins):=20add=20vercel,=20directus,=20ka?= =?UTF-8?q?mal=20=E2=80=94=20deployment=20and=20CMS=20CLIs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add three new bundled plugins: - vercel: Vercel CLI for deployment and project management - directus: Directus headless CMS CLI with schema migration support - kamal: Kamal deployment tool for zero-downtime Docker deployments All three are well-known, actively maintained CLI tools from established organizations (Vercel, Directus, 37signals/Basecamp). --- plugins/directus/install-guidance.json | 12 +++ plugins/directus/meta.json | 5 + plugins/directus/plugin.json | 140 ++++++++++++++++++++++++ plugins/kamal/install-guidance.json | 12 +++ plugins/kamal/meta.json | 5 + plugins/kamal/plugin.json | 144 +++++++++++++++++++++++++ plugins/vercel/install-guidance.json | 12 +++ plugins/vercel/meta.json | 5 + plugins/vercel/plugin.json | 114 ++++++++++++++++++++ 9 files changed, 449 insertions(+) create mode 100644 plugins/directus/install-guidance.json create mode 100644 plugins/directus/meta.json create mode 100644 plugins/directus/plugin.json create mode 100644 plugins/kamal/install-guidance.json create mode 100644 plugins/kamal/meta.json create mode 100644 plugins/kamal/plugin.json create mode 100644 plugins/vercel/install-guidance.json create mode 100644 plugins/vercel/meta.json create mode 100644 plugins/vercel/plugin.json diff --git a/plugins/directus/install-guidance.json b/plugins/directus/install-guidance.json new file mode 100644 index 000000000..5931edf73 --- /dev/null +++ b/plugins/directus/install-guidance.json @@ -0,0 +1,12 @@ +{ + "plugin": "directus", + "binary": "directus", + "check": "directus --version", + "install_steps": [ + "npm install -g directus", + "Verify: directus --version", + "Create .env with DIRECTUS_URL and DIRECTUS_TOKEN", + "supercli plugins install ./plugins/directus --on-conflict replace --json" + ], + "note": "Requires Node.js 18+. Configure via DIRECTUS_URL and DIRECTUS_TOKEN environment variables or .env file in the project directory." +} diff --git a/plugins/directus/meta.json b/plugins/directus/meta.json new file mode 100644 index 000000000..993c4bd75 --- /dev/null +++ b/plugins/directus/meta.json @@ -0,0 +1,5 @@ +{ + "description": "CLI for the Directus headless CMS. Manage projects, collections, items, users, roles, files, webhooks, and schema migrations with JSON output support.", + "tags": ["directus", "cms", "headless-cms", "api", "content-management", "cli", "database"], + "has_learn": false +} diff --git a/plugins/directus/plugin.json b/plugins/directus/plugin.json new file mode 100644 index 000000000..e44ccb77d --- /dev/null +++ b/plugins/directus/plugin.json @@ -0,0 +1,140 @@ +{ + "name": "directus", + "version": "0.1.0", + "description": "directus — CLI for the Directus headless CMS. Manage projects, collections, items, users, roles, files, webhooks, and schema migrations. Extensible with flows and custom endpoints. Ideal for content management automation, CI/CD pipelines, and AI agent integration with JSON output support.", + "source": "https://github.com/directus/directus", + "checks": [ + { "type": "binary", "name": "directus" } + ], + "install_guidance": { + "plugin": "directus", + "binary": "directus", + "check": "directus --version", + "install_steps": [ + "npm install -g directus", + "Verify: directus --version", + "supercli plugins install ./plugins/directus --on-conflict replace --json" + ], + "note": "Requires Node.js 18+. Configure via DIRECTUS_URL and DIRECTUS_TOKEN environment variables or .env file." + }, + "commands": [ + { + "namespace": "directus", + "resource": "self", + "action": "version", + "description": "Print directus CLI version", + "adapter": "process", + "adapterConfig": { + "command": "directus", + "baseArgs": ["--version"], + "missingDependencyHelp": "Install directus: npm install -g directus" + }, + "args": [] + }, + { + "namespace": "directus", + "resource": "project", + "action": "list", + "description": "List Directus projects", + "adapter": "process", + "adapterConfig": { + "command": "directus", + "baseArgs": ["projects", "list"], + "timeout_ms": 15000, + "missingDependencyHelp": "Install directus: npm install -g directus" + }, + "args": [] + }, + { + "namespace": "directus", + "resource": "collection", + "action": "list", + "description": "List all collections in the project", + "adapter": "process", + "adapterConfig": { + "command": "directus", + "baseArgs": ["collection", "list"], + "timeout_ms": 15000, + "missingDependencyHelp": "Install directus: npm install -g directus" + }, + "args": [] + }, + { + "namespace": "directus", + "resource": "user", + "action": "list", + "description": "List users in the project", + "adapter": "process", + "adapterConfig": { + "command": "directus", + "baseArgs": ["user", "list"], + "timeout_ms": 15000, + "missingDependencyHelp": "Install directus: npm install -g directus" + }, + "args": [] + }, + { + "namespace": "directus", + "resource": "schema", + "action": "snapshot", + "description": "Export schema snapshot for version control", + "adapter": "process", + "adapterConfig": { + "command": "directus", + "baseArgs": ["schema", "snapshot"], + "positionalArgs": ["output"], + "timeout_ms": 30000, + "missingDependencyHelp": "Install directus: npm install -g directus" + }, + "args": [ + { "name": "output", "type": "string", "required": true, "description": "Output file path (e.g., schema.yaml)" }, + { "name": "--yes", "type": "boolean", "required": false, "description": "Skip confirmation" } + ] + }, + { + "namespace": "directus", + "resource": "schema", + "action": "apply", + "description": "Apply schema snapshot to the project", + "adapter": "process", + "adapterConfig": { + "command": "directus", + "baseArgs": ["schema", "apply"], + "positionalArgs": ["input"], + "timeout_ms": 60000, + "missingDependencyHelp": "Install directus: npm install -g directus" + }, + "args": [ + { "name": "input", "type": "string", "required": true, "description": "Schema file path to apply" }, + { "name": "--yes", "type": "boolean", "required": false, "description": "Skip confirmation" } + ] + }, + { + "namespace": "directus", + "resource": "role", + "action": "list", + "description": "List user roles", + "adapter": "process", + "adapterConfig": { + "command": "directus", + "baseArgs": ["roles", "list"], + "timeout_ms": 15000, + "missingDependencyHelp": "Install directus: npm install -g directus" + }, + "args": [] + }, + { + "namespace": "directus", + "resource": "_", + "action": "_", + "description": "Passthrough to directus CLI for any command", + "adapter": "process", + "adapterConfig": { + "command": "directus", + "passthrough": true, + "missingDependencyHelp": "Install directus: npm install -g directus" + }, + "args": [] + } + ] +} diff --git a/plugins/kamal/install-guidance.json b/plugins/kamal/install-guidance.json new file mode 100644 index 000000000..58ac43ab6 --- /dev/null +++ b/plugins/kamal/install-guidance.json @@ -0,0 +1,12 @@ +{ + "plugin": "kamal", + "binary": "kamal", + "check": "kamal version", + "install_steps": [ + "gem install kamal", + "Verify: kamal version", + "Initialize: kamal init (creates config/deploy.yml)", + "supercli plugins install ./plugins/kamal --on-conflict replace --json" + ], + "note": "Requires Ruby 3.0+, Docker on the deployment target, and SSH access to servers. Uses Traefik for ingress routing." +} diff --git a/plugins/kamal/meta.json b/plugins/kamal/meta.json new file mode 100644 index 000000000..463d8be67 --- /dev/null +++ b/plugins/kamal/meta.json @@ -0,0 +1,5 @@ +{ + "description": "Deploy web apps anywhere from raw Docker images. Zero-downtime deployments with rolling updates, asset bridging, logging, and SSH-based access. From 37signals (Basecamp).", + "tags": ["kamal", "deployment", "docker", "devops", "self-hosted", "ssh", "rails"], + "has_learn": false +} diff --git a/plugins/kamal/plugin.json b/plugins/kamal/plugin.json new file mode 100644 index 000000000..3258ff68b --- /dev/null +++ b/plugins/kamal/plugin.json @@ -0,0 +1,144 @@ +{ + "name": "kamal", + "version": "0.1.0", + "description": "kamal — deploy web apps anywhere from raw Docker images. Zero-downtime deployments with rolling updates, asset bridging, logging, and SSH-based access. Uses Traefik for routing and runs on any Linux host. From 37signals (Basecamp). Ideal for self-hosted deployments without Kubernetes.", + "source": "https://github.com/basecamp/kamal", + "checks": [ + { "type": "binary", "name": "kamal" } + ], + "install_guidance": { + "plugin": "kamal", + "binary": "kamal", + "check": "kamal version", + "install_steps": [ + "gem install kamal", + "Verify: kamal version", + "Configure: kamal init (creates config/deploy.yml)", + "supercli plugins install ./plugins/kamal --on-conflict replace --json" + ], + "note": "Requires Ruby 3.0+, Docker on the deployment target, and SSH access to servers. Uses Traefik for ingress routing. See https://kamal-deploy.org for docs." + }, + "commands": [ + { + "namespace": "kamal", + "resource": "self", + "action": "version", + "description": "Print kamal version", + "adapter": "process", + "adapterConfig": { + "command": "kamal", + "baseArgs": ["version"], + "missingDependencyHelp": "Install kamal: gem install kamal" + }, + "args": [] + }, + { + "namespace": "kamal", + "resource": "deploy", + "action": "run", + "description": "Deploy the application with zero-downtime rolling update", + "adapter": "process", + "adapterConfig": { + "command": "kamal", + "baseArgs": ["deploy"], + "passthrough": true, + "timeout_ms": 120000, + "missingDependencyHelp": "Install kamal: gem install kamal" + }, + "args": [ + { "name": "--version", "type": "string", "required": false, "description": "Specific version tag to deploy" }, + { "name": "--skip-push", "type": "boolean", "required": false, "description": "Skip Docker image push" } + ] + }, + { + "namespace": "kamal", + "resource": "rollback", + "action": "run", + "description": "Rollback to a previous deployment version", + "adapter": "process", + "adapterConfig": { + "command": "kamal", + "baseArgs": ["rollback"], + "positionalArgs": ["version"], + "timeout_ms": 120000, + "missingDependencyHelp": "Install kamal: gem install kamal" + }, + "args": [ + { "name": "version", "type": "string", "required": true, "description": "Version tag to rollback to" } + ] + }, + { + "namespace": "kamal", + "resource": "app", + "action": "logs", + "description": "Show application logs from servers", + "adapter": "process", + "adapterConfig": { + "command": "kamal", + "baseArgs": ["app", "logs"], + "passthrough": true, + "timeout_ms": 30000, + "missingDependencyHelp": "Install kamal: gem install kamal" + }, + "args": [ + { "name": "--since", "type": "string", "required": false, "description": "Show logs since timestamp (e.g., '5m', '2h')" }, + { "name": "--lines", "type": "number", "required": false, "description": "Number of lines to show" } + ] + }, + { + "namespace": "kamal", + "resource": "app", + "action": "details", + "description": "Show application details and status", + "adapter": "process", + "adapterConfig": { + "command": "kamal", + "baseArgs": ["app", "details"], + "timeout_ms": 15000, + "missingDependencyHelp": "Install kamal: gem install kamal" + }, + "args": [] + }, + { + "namespace": "kamal", + "resource": "server", + "action": "bootstrap", + "description": "Bootstrap servers with Docker and dependencies", + "adapter": "process", + "adapterConfig": { + "command": "kamal", + "baseArgs": ["server", "bootstrap"], + "timeout_ms": 120000, + "missingDependencyHelp": "Install kamal: gem install kamal" + }, + "args": [] + }, + { + "namespace": "kamal", + "resource": "config", + "action": "show", + "description": "Show the Kamal configuration", + "adapter": "process", + "adapterConfig": { + "command": "kamal", + "baseArgs": ["config"], + "timeout_ms": 10000, + "missingDependencyHelp": "Install kamal: gem install kamal" + }, + "args": [] + }, + { + "namespace": "kamal", + "resource": "_", + "action": "_", + "description": "Passthrough to kamal CLI for any command", + "adapter": "process", + "adapterConfig": { + "command": "kamal", + "passthrough": true, + "missingDependencyHelp": "Install kamal: gem install kamal" + }, + "args": [] + } + ] +} diff --git a/plugins/vercel/install-guidance.json b/plugins/vercel/install-guidance.json new file mode 100644 index 000000000..f91be1f90 --- /dev/null +++ b/plugins/vercel/install-guidance.json @@ -0,0 +1,12 @@ +{ + "plugin": "vercel", + "binary": "vercel", + "check": "vercel --version", + "install_steps": [ + "npm install -g vercel", + "Verify: vercel --version", + "Authenticate: vercel login", + "supercli plugins install ./plugins/vercel --on-conflict replace --json" + ], + "note": "Requires Node.js 18+. Run 'vercel login' to authenticate. Deploy with 'vercel deploy' or just 'vercel' in a project directory." +} diff --git a/plugins/vercel/meta.json b/plugins/vercel/meta.json new file mode 100644 index 000000000..f26f89bbe --- /dev/null +++ b/plugins/vercel/meta.json @@ -0,0 +1,5 @@ +{ + "description": "Vercel CLI for deployment, environment management, logs, domains, and project configuration. Deploy frontends, serverless functions, and full-stack apps with zero configuration.", + "tags": ["vercel", "deployment", "hosting", "frontend", "serverless", "cli", "devops"], + "has_learn": false +} diff --git a/plugins/vercel/plugin.json b/plugins/vercel/plugin.json new file mode 100644 index 000000000..0f00bedac --- /dev/null +++ b/plugins/vercel/plugin.json @@ -0,0 +1,114 @@ +{ + "name": "vercel", + "version": "0.1.0", + "description": "vercel — Vercel CLI for deployment, environment management, logs, domains, and project configuration. Deploy frontends, serverless functions, and full-stack apps with zero configuration. Integrates with Git for automatic preview deployments. Supports monorepos, environment variables, custom domains, and team collaboration.", + "source": "https://github.com/vercel/vercel", + "checks": [ + { "type": "binary", "name": "vercel" } + ], + "install_guidance": { + "plugin": "vercel", + "binary": "vercel", + "check": "vercel --version", + "install_steps": [ + "npm install -g vercel", + "Verify: vercel --version", + "Authenticate: vercel login", + "supercli plugins install ./plugins/vercel --on-conflict replace --json" + ], + "note": "Requires Node.js 18+. Run 'vercel login' to authenticate. Deploy with 'vercel deploy' or just 'vercel' in a project directory." + }, + "commands": [ + { + "namespace": "vercel", + "resource": "self", + "action": "version", + "description": "Print vercel CLI version", + "adapter": "process", + "adapterConfig": { + "command": "vercel", + "baseArgs": ["--version"], + "missingDependencyHelp": "Install vercel: npm install -g vercel" + }, + "args": [] + }, + { + "namespace": "vercel", + "resource": "deploy", + "action": "run", + "description": "Deploy project to Vercel", + "adapter": "process", + "adapterConfig": { + "command": "vercel", + "baseArgs": ["deploy"], + "passthrough": true, + "timeout_ms": 60000, + "missingDependencyHelp": "Install vercel: npm install -g vercel" + }, + "args": [ + { "name": "--prod", "type": "boolean", "required": false, "description": "Deploy to production" }, + { "name": "--yes", "type": "boolean", "required": false, "description": "Skip confirmation prompts" }, + { "name": "--name", "type": "string", "required": false, "description": "Project name" }, + { "name": "--scope", "type": "string", "required": false, "description": "Team scope" } + ] + }, + { + "namespace": "vercel", + "resource": "env", + "action": "list", + "description": "List environment variables for a project", + "adapter": "process", + "adapterConfig": { + "command": "vercel", + "baseArgs": ["env", "list"], + "timeout_ms": 15000, + "missingDependencyHelp": "Install vercel: npm install -g vercel" + }, + "args": [] + }, + { + "namespace": "vercel", + "resource": "logs", + "action": "tail", + "description": "Tail deployment logs", + "adapter": "process", + "adapterConfig": { + "command": "vercel", + "baseArgs": ["logs"], + "passthrough": true, + "timeout_ms": 30000, + "missingDependencyHelp": "Install vercel: npm install -g vercel" + }, + "args": [ + { "name": "deployment-url", "type": "string", "required": false, "description": "Deployment URL or ID" } + ] + }, + { + "namespace": "vercel", + "resource": "domains", + "action": "list", + "description": "List custom domains for a project", + "adapter": "process", + "adapterConfig": { + "command": "vercel", + "baseArgs": ["domains", "list"], + "timeout_ms": 15000, + "missingDependencyHelp": "Install vercel: npm install -g vercel" + }, + "args": [] + }, + { + "namespace": "vercel", + "resource": "_", + "action": "_", + "description": "Passthrough to vercel CLI for any command", + "adapter": "process", + "adapterConfig": { + "command": "vercel", + "passthrough": true, + "missingDependencyHelp": "Install vercel: npm install -g vercel. Authenticate: vercel login" + }, + "args": [] + } + ] +}