diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json new file mode 100644 index 0000000..528ebe3 --- /dev/null +++ b/.claude-plugin/marketplace.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://www.schemastore.org/claude-code-marketplace.json", + "name": "webcmd", + "description": "Turn websites, browser sessions, desktop apps, and local tools into deterministic CLI surfaces for humans and AI agents.", + "owner": { + "name": "AgentRHQ", + "url": "https://github.com/agentrhq" + }, + "plugins": [ + { + "name": "webcmd", + "description": "Webcmd CLI, browser, search, authoring, sitemap, and repair skills. Requires the @agentrhq/webcmd npm CLI.", + "source": "./", + "category": "productivity" + } + ] +} diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..abc91a4 --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,18 @@ +{ + "name": "webcmd", + "version": "0.6.0", + "description": "Turn websites, browser sessions, desktop apps, and local tools into deterministic CLI surfaces for humans and AI agents.", + "author": { + "name": "AgentRHQ", + "url": "https://github.com/agentrhq" + }, + "homepage": "https://webcmd.dev/docs", + "repository": "https://github.com/agentrhq/webcmd", + "license": "Apache-2.0", + "keywords": [ + "webcmd", + "browser-automation", + "cli", + "agent-skills" + ] +} diff --git a/docs/agents/claude-code.md b/docs/agents/claude-code.md index ec7253d..f7b61e0 100644 --- a/docs/agents/claude-code.md +++ b/docs/agents/claude-code.md @@ -18,7 +18,18 @@ Fetch and follow https://raw.githubusercontent.com/agentrhq/webcmd/main/start.md * Claude Code (`claude`), installed globally or in the project * A browser runtime; confirm with `webcmd doctor` before browser work -### Install and configure +### Install the plugin + +```bash +claude plugin marketplace add agentrhq/webcmd +claude plugin install webcmd@webcmd +``` + +This installs all seven bundled Webcmd skills. Do not also add those skills with `webcmd skills add`; running both leaves two copies that can sit at different versions. + +Plugin updates are version-gated, not commit-gated. Run `claude plugin update webcmd@webcmd` to pick up a new release; it is separate from `webcmd update`, which upgrades only the npm CLI. + +### Install and configure without the plugin Install Webcmd and its skills: @@ -57,7 +68,8 @@ Denying these tools does not affect the Bash tool, which is how `webcmd` is driv | Symptom | What to try | | --- | --- | | `webcmd doctor` is red | Fix the browser runtime first; browser commands depend on it. | -| Skills not loading in Claude Code | Run `webcmd skills add` with the `claude` provider, then restart `claude`. | +| Skills not loading in Claude Code | Run `webcmd skills add` with the `claude` provider, then restart `claude`. With the plugin, run `claude plugin install webcmd@webcmd` and restart. | +| Skill text looks out of date | `webcmd update` upgrades only the CLI. Run `claude plugin update webcmd@webcmd` to refresh plugin skills. | | Claude Code still uses `WebFetch` / `WebSearch` | Confirm `permissions.deny` lists both in the active settings file, then restart `claude`. | | `claude` requires permission prompts for `webcmd` | The Bash tool still asks before non-approved commands; run `claude --dangerously-skip-permissions` or allow the shell command if you accept the risk. | | Browser sessions stop working after idle | Ask the agent to open a fresh session or re-bind with `tabs` and `bind --page`. | diff --git a/docs/quickstart.mdx b/docs/quickstart.mdx index 94613eb..adbde84 100644 --- a/docs/quickstart.mdx +++ b/docs/quickstart.mdx @@ -15,6 +15,16 @@ the npm CLI automatically if `webcmd` is missing. The plugin includes all seven bundled Webcmd skills. Do not also add those skills with `webcmd skills add` in Codex. +## Install the Claude Code Plugin + +```bash +claude plugin marketplace add agentrhq/webcmd +claude plugin install webcmd@webcmd +``` + +This installs all seven bundled Webcmd skills. Do not also add those skills +with `webcmd skills add` in Claude Code. + ## Other Agents or Plugin-Free Setup Webcmd requires Node.js 20.6+ and a place where your agent harness can run its diff --git a/release-please-config.json b/release-please-config.json index b437fff..01f862f 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -12,6 +12,11 @@ "type": "json", "path": ".codex-plugin/plugin.json", "jsonpath": "$.version" + }, + { + "type": "json", + "path": ".claude-plugin/plugin.json", + "jsonpath": "$.version" } ] } diff --git a/scripts/check-codex-plugin.mjs b/scripts/check-codex-plugin.mjs index d5596f1..d6e9c8b 100644 --- a/scripts/check-codex-plugin.mjs +++ b/scripts/check-codex-plugin.mjs @@ -13,6 +13,9 @@ const packageJson = readJson('package.json'); const manifest = readJson('.codex-plugin/plugin.json'); const marketplace = readJson('.agents/plugins/marketplace.json'); const marketplacePlugin = marketplace.plugins?.[0]; +const claudeManifest = readJson('.claude-plugin/plugin.json'); +const claudeMarketplace = readJson('.claude-plugin/marketplace.json'); +const claudeMarketplacePlugin = claudeMarketplace.plugins?.[0]; assert.equal(manifest.name, 'webcmd'); assert.equal(manifest.version, packageJson.version); @@ -27,6 +30,15 @@ assert.deepEqual(marketplacePlugin?.source, { url: './', }); +assert.equal(claudeManifest.name, 'webcmd'); +assert.equal(claudeManifest.version, packageJson.version); +assert.equal(claudeManifest.author?.name, 'AgentRHQ'); +assert.equal(claudeMarketplace.name, 'webcmd'); +assert.equal(claudeMarketplace.owner?.name, 'AgentRHQ'); +assert.equal(claudeMarketplace.plugins?.length, 1); +assert.equal(claudeMarketplacePlugin?.name, 'webcmd'); +assert.equal(claudeMarketplacePlugin?.source, './'); + const expectedSkills = [ 'smart-search', 'webcmd-adapter-author', @@ -54,4 +66,6 @@ assert.match(usageSkill, /## CLI Preflight/); assert.match(usageSkill, /webcmd --version/); assert.match(usageSkill, /npm install -g @agentrhq\/webcmd/); -console.log(`Codex plugin metadata valid: ${actualSkills.length} skills`); +console.log( + `Codex and Claude Code plugin metadata valid: ${actualSkills.length} skills`, +);