diff --git a/MANIFEST-MATRIX.md b/MANIFEST-MATRIX.md index 3aa7b44..1b59736 100644 --- a/MANIFEST-MATRIX.md +++ b/MANIFEST-MATRIX.md @@ -30,34 +30,34 @@ manifest and run the script — it updates every location automatically. | token | path | current_value | | --- | --- | --- | -| agent_count | apps.json:18 | 87 | -| agent_count | apps.json:19 | 87 | -| agent_count | apps.json:40 | 87 | -| agent_count | docs/agents.md:99 | 87 | -| agent_count | docs/commands/agents.md:47 | 87 | -| agent_count | docs/commands/agents.md:71 | 87 | -| agent_count | docs/commands/agents.md:79 | 87 | -| agent_count | docs/commands/doctor.md:25 | 87 | -| agent_count | docs/commands/doctor.md:60 | 87 | -| agent_count | docs/commands/doctor.md:77 | 87 | -| agent_count | docs/comparison.md:10 | 87 | -| agent_count | docs/guides/getting-started.md:18 | 87 | -| verified_count | docs/guides/getting-started.md:18 | 27 | -| agent_count | docs/index.md:7 | 87 | -| verified_count | docs/index.md:7 | 27 | -| agent_count | docs/index.md:38 | 87 | -| verified_count | docs/index.md:38 | 27 | -| agent_count | docs/migration-from-skills.md:10 | 87 | -| agent_count | docs/migration-from-skills.md:54 | 87 | -| agent_count | docs/reference.md:218 | 87 | -| agent_count | package.json:4 | 87 | -| agent_count | README.md:9 | 87 | -| verified_count | README.md:9 | 27 | -| verified_count | README.md:54 | 27 | -| agent_count | README.md:90 | 87 | -| agent_count | SKILL.md:5 | 87 | -| verified_count | SKILL.md:5 | 27 | -| agent_count | SKILL.md:10 | 87 | -| verified_count | SKILL.md:10 | 27 | -| agent_count | SKILL.md:86 | 87 | -| verified_count | SKILL.md:86 | 27 | +| agent_count | apps.json:18 | 90 | +| agent_count | apps.json:19 | 90 | +| agent_count | apps.json:40 | 90 | +| agent_count | docs/agents.md:102 | 90 | +| agent_count | docs/commands/agents.md:47 | 90 | +| agent_count | docs/commands/agents.md:71 | 90 | +| agent_count | docs/commands/agents.md:79 | 90 | +| agent_count | docs/commands/doctor.md:25 | 90 | +| agent_count | docs/commands/doctor.md:60 | 90 | +| agent_count | docs/commands/doctor.md:77 | 90 | +| agent_count | docs/comparison.md:10 | 90 | +| agent_count | docs/guides/getting-started.md:18 | 90 | +| verified_count | docs/guides/getting-started.md:18 | 34 | +| agent_count | docs/index.md:7 | 90 | +| verified_count | docs/index.md:7 | 34 | +| agent_count | docs/index.md:38 | 90 | +| verified_count | docs/index.md:38 | 34 | +| agent_count | docs/migration-from-skills.md:10 | 90 | +| agent_count | docs/migration-from-skills.md:54 | 90 | +| agent_count | docs/reference.md:218 | 90 | +| agent_count | package.json:4 | 90 | +| agent_count | README.md:9 | 90 | +| verified_count | README.md:9 | 34 | +| verified_count | README.md:54 | 34 | +| agent_count | README.md:90 | 90 | +| agent_count | SKILL.md:5 | 90 | +| verified_count | SKILL.md:5 | 34 | +| agent_count | SKILL.md:10 | 90 | +| verified_count | SKILL.md:10 | 34 | +| agent_count | SKILL.md:86 | 90 | +| verified_count | SKILL.md:86 | 34 | diff --git a/README.md b/README.md index 61aff25..5922c65 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@

The Security-First Skill Manager for AI Agents
- Static security scoring before any skill is installed · Skills & MCP Servers across 87 Agents (27 Verified)
+ Static security scoring before any skill is installed · Skills & MCP Servers across 90 Agents (34 Verified)
Zero-dependency CLI · No signup · No marketplace required

@@ -51,7 +51,7 @@

- ⚡ Zero dependencies · 🤖 27 verified agents · 🔌 Skills + MCP · 🔒 Security scoring · 📝 Skill testing · 🔧 Init templates · 🌐 No marketplace required + ⚡ Zero dependencies · 🤖 34 verified agents · 🔌 Skills + MCP · 🔒 Security scoring · 📝 Skill testing · 🔧 Init templates · 🌐 No marketplace required

--- @@ -87,7 +87,7 @@ rolecraft setup user/repo - **Zero dependencies** — only Node.js built-ins, nothing to audit - **Any source** — local folder, GitHub/GitLab/SSH URL, npm package -- **87 agents** — opencode, claude-code, cursor, copilot, aider, oh-my-pi, and more +- **90 agents** — opencode, claude-code, cursor, copilot, aider, oh-my-pi, and more - **No registry required** — works fully without a marketplace - **Security scoring** — static analysis before every install: prompt injection, command injection, obfuscated code, credential harvesting. Scores 0–100. It is a regex linter, not a policy engine — [what it does not catch](docs/security.md#what-this-does-not-catch) - **CI-ready** — lockfile-based re-install (`rolecraft ci`), `--yes` flag, `--dry-run` diff --git a/SKILL.md b/SKILL.md index da1b778..33d0106 100644 --- a/SKILL.md +++ b/SKILL.md @@ -2,12 +2,12 @@ name: rolecraft description: >- Install AI agent skills as roles & behaviors from any source — local folder, - GitHub, GitLab, SSH git URL. Zero-dependency CLI with 87 agent targets (27 verified). + GitHub, GitLab, SSH git URL. Zero-dependency CLI with 90 agent targets (34 verified). --- # rolecraft -Install and manage AI agent skills across 87 agents (27 verified) with a single command. Zero dependencies. No registry required. +Install and manage AI agent skills across 90 agents (34 verified) with a single command. Zero dependencies. No registry required. ## When to use @@ -83,7 +83,7 @@ npx rolecraft convert ./my-skill | `--symlink` | Symlink instead of copy | | `--global` / `--project` | Scope selection | -## Supported agents (87 total · 27 verified) +## Supported agents (90 total · 34 verified) `opencode`, `claude-code`, `cursor`, `windsurf`, `devin`, `codex`, `copilot`, `aider`, `cline`, `gemini-cli`, `cody`, `continue`, `warp`, `codeium`, `fabric`, `goose`, `tabnine`, `supermaven`, `pr-pilot`, `loom`, `roo`, `trae`, `hermes`, `kiro`, `augment`, `kilo`, `openhands`, `junie`, `factory`, `command-code`, `cortex`, `mistral-vibe`, `qwen-code`, `openclaw`, `codebuddy`, `mux`, `pi`, `omp (oh-my-pi)`, `autohand-code`, `rovo-dev`, `firebender`, `ibm-bob`, `aider-desk`, and 45 more. diff --git a/apps.json b/apps.json index d86b339..eaac337 100644 --- a/apps.json +++ b/apps.json @@ -15,8 +15,8 @@ "id": "rolecraft", "name": "RoleCraft", "subtitle": "The package manager for AI agents", - "description": "Install, test, publish, and manage skills & MCP servers across 87 agents. Zero-dependency CLI.", - "longDescription": "RoleCraft is a zero-dependency Node.js CLI that serves as the package manager for AI agent skills. Install skills from any source, test them, publish to a central registry, and manage MCP servers — all from a single tool. Compatible with 87 AI coding agents including Claude Code, Cursor, Codex, OpenCode, Windsurf, Oh My Pi, and more.", + "description": "Install, test, publish, and manage skills & MCP servers across 90 agents. Zero-dependency CLI.", + "longDescription": "RoleCraft is a zero-dependency Node.js CLI that serves as the package manager for AI agent skills. Install skills from any source, test them, publish to a central registry, and manage MCP servers — all from a single tool. Compatible with 90 AI coding agents including Claude Code, Cursor, Codex, OpenCode, Windsurf, Oh My Pi, and more.", "icon": "https://raw.githubusercontent.com/rolecraft-sh/rolecraft/main/assets/rolecraft_logo.png", "iconEmoji": "📦", "iconStyle": { @@ -37,7 +37,7 @@ "Install skills from GitHub, URLs, or local paths", "Central skill registry with schema validation", "MCP server management — install, verify, and run", - "Compatible with 87 AI agents (Claude Code, Cursor, Codex, OpenCode, Oh My Pi...)", + "Compatible with 90 AI agents (Claude Code, Cursor, Codex, OpenCode, Oh My Pi...)", "GitHub Action for CI/CD integration", "Skill testing and verification built-in", "Profile system for team collaboration" diff --git a/docs/agents.md b/docs/agents.md index 0191c23..c01dd0b 100644 --- a/docs/agents.md +++ b/docs/agents.md @@ -55,7 +55,7 @@ rolecraft knows where each AI agent looks for skills. When you use a flag like ` | forge | `./.forge/skills/` | verified | - | | inference-sh | `~/.inferencesh/skills/` | experimental | - | | jazz | `~/.jazz/skills/` | verified | - | -| iflow | `~/.iflow/skills/` | experimental | - | +| iflow | `~/.iflow/skills/` | legacy | - | | kilo-code | `~/.kilocode/skills/` | experimental | - | | kode | `~/.kode/skills/` | experimental | - | | lingma | `~/.lingma/skills/` | verified | - | @@ -70,21 +70,24 @@ rolecraft knows where each AI agent looks for skills. When you use a flag like ` | zap | `~/.zap/skills/` | experimental | - | | codeep | `~/.codeep/skills/` | experimental | - | | kimi-code | `~/.kimi-code/skills/` | experimental | - | -| zcode | `~/.zcode/skills/` | experimental | - | +| zcode | `~/.zcode/skills/` | verified | - | | astrbot | `~/.astrbot/data/skills/` | experimental | - | | qoder-cn | `~/.qoder-cn/skills/` | community | - | | trae-cn | `~/.trae-cn/skills/` | experimental | - | | zenflow | `~/.zenflow/skills/` | experimental | - | | neovate | `~/.neovate/skills/` | experimental | - | -| pochi | `~/.pochi/skills/` | experimental | - | +| pochi | `~/.pochi/skills/` | verified | - | | adal | `~/.adal/skills/` | experimental | - | | droid | `~/.droid/skills/` | experimental | - | | chatgpt | `~/.agents/skills/` | verified | - | | codearts-agent | `~/.codeartsdoer/skills/` | experimental | - | | universal | `~/.config/agents/skills/` | experimental | - | | amp | `~/.config/agents/skills/` | verified | - | -| antigravity | `~/.agents/skills/` | experimental | - | -| antigravity-cli | `~/.agents/skills/` | experimental | - | +| antigravity | `~/.gemini/config/skills/` | verified | - | +| antigravity-cli | `~/.gemini/antigravity-cli/skills/` | verified | - | +| grok | `~/.grok/skills/` | verified | - | +| muse-code | `~/.config/muse/skills/` | verified | mcpServers | +| posit-assistant | `~/.posit/assistant/skills/` | verified | - | | deep-agents | `~/.agents/skills/` | experimental | - | | dexto | `~/.agents/skills/` | experimental | - | | loaf | `~/.agents/skills/` | experimental | - | @@ -94,9 +97,9 @@ rolecraft knows where each AI agent looks for skills. When you use a flag like ` > **Support levels:** `verified` — actively tested and maintained; `community` — community-contributed, maintained on best-effort; `legacy` — previous generation, no active development; `experimental` — known to exist, not formally tested. -> **MCP support:** 8 agent(s) support MCP server configuration. Format: `mcpServers`, `servers`, `experimental.mcpServers` +> **MCP support:** 9 agent(s) support MCP server configuration. Format: `mcpServers`, `servers`, `experimental.mcpServers` -> **Agent count:** 87 total — 27 verified, 4 community, 4 legacy, 52 experimental. +> **Agent count:** 90 total — 34 verified, 4 community, 5 legacy, 47 experimental. ## Notes @@ -123,9 +126,17 @@ rolecraft knows where each AI agent looks for skills. When you use a flag like ` - **oh-my-pi:** pi fork by can1357; native skills at ~/.omp/agent/skills (user) and .omp/skills (project); also reads ~/.claude/skills, ~/.agents/skills and .github/skills; MCP via standard mcpServers format - **forge:** ForgeCode by tailcallhq; also reads ~/forge/skills and ~/.agents/skills; project dir has highest precedence - **jazz:** jazz-ai (lvndry/jazz, not an AWS product); also reads project ./skills +- **iflow:** iFlow CLI was shut down on 2026-04-17; the vendor directs users to migrate to Qoder - **lingma:** Also reads project .lingma/skills; renamed to Qoder CN on 2026-05-20 +- **zcode:** ZCode, the GLM coding client. Reads ~/.zcode/skills//SKILL.md and ~/.agents/mcp.json +- **pochi:** Pochi (TabbyML). Also reads ~/.agents/skills; project .pochi/skills - **chatgpt:** ChatGPT/Codex share the .agents skills locations; symlinked skill folders honored - **amp:** amp skill add --global installs to ~/.config/agents/skills; also reads ~/.agents/skills +- **antigravity:** Antigravity 2.0 and the IDE read ~/.gemini/config/skills; the IDE also accepts legacy ~/.gemini/antigravity/skills. All surfaces share /.agents/skills +- **antigravity-cli:** Antigravity CLI (agy) has its own global dir, separate from the 2.0/IDE surface; plugin skills at ~/.gemini/antigravity-cli/plugins//skills. Shares /.agents/skills +- **grok:** Project skills at ./.grok/skills. Reads ~/.agents/skills via AGENTS.md compatibility. MCP lives in ~/.grok/config.toml as [mcp_servers.] (TOML), which rolecraft does not yet write +- **muse-code:** Muse Code by Meta. Scans ~/.config/muse/skills, ~/.agents/skills, ~/.claude/skills, ~/.codex/skills and project .agents/.codex/.claude/skills. MCP at ~/.config/muse/settings.json under mcpServers +- **posit-assistant:** Posit Assistant (Positron, RStudio). Also reads ~/.agents/skills; project .posit/assistant/skills. Legacy ~/.positai/ - **replit:** Project-committed .agents/skills only; no user-global skills dir - **zed:** Flat layout only: skills must be direct children of ~/.agents/skills diff --git a/docs/commands/agents.md b/docs/commands/agents.md index 8c557ee..e1314c4 100644 --- a/docs/commands/agents.md +++ b/docs/commands/agents.md @@ -44,7 +44,7 @@ $ rolecraft agents 🔍 Agent Capability Manifest -Total agents: 87 +Total agents: 90 ## VERIFIED @@ -68,7 +68,7 @@ These agents have built-in MCP configuration support: ## Validation Manifest valid: ✅ Yes -Agent count: 87 +Agent count: 90 ``` ```bash @@ -76,7 +76,7 @@ $ rolecraft agents --json { "version": 1, - "agentCount": 87, + "agentCount": 90, "agents": [ { "flag": "claude", diff --git a/docs/commands/doctor.md b/docs/commands/doctor.md index b4232a7..cb3c75f 100644 --- a/docs/commands/doctor.md +++ b/docs/commands/doctor.md @@ -22,7 +22,7 @@ Scans your system and reports on: - **Lockfile schema** — validates global lockfile format - **Global & project lockfiles** — skill count per scope - **Disk usage** — total size of installed skills -- **Agent detection** — finds installed agents among 87 supported, per-agent skill count and directory permissions +- **Agent detection** — finds installed agents among 90 supported, per-agent skill count and directory permissions - **Orphaned skill dirs** — directories not tracked in any lockfile - **Skill integrity** — verifies skill directories exist, content hashes match, and checks for broken symlinks - **MCP servers** — counts configured MCP servers across detected agents @@ -57,7 +57,7 @@ $ rolecraft doctor ✅ Global lockfile 3 skill(s) tracked ⚠️ Project lockfile no project skills ✅ Disk usage 3 skill(s), 12.5 KB total - ✅ Agent detection 14/87 supported agents detected + ✅ Agent detection 14/90 supported agents detected ✅ └ opencode 2 skill(s) [rwx] ✅ └ claude-code 1 skill(s) [rwx] ✅ Orphaned skill dirs none @@ -74,7 +74,7 @@ $ rolecraft doctor --json "status": "degraded", "checks": { "Node.js version": { "status": "pass", "detail": "v22.0.0" }, - "Agent detection": { "status": "pass", "detail": "14/87 supported agents detected" }, + "Agent detection": { "status": "pass", "detail": "14/90 supported agents detected" }, "Skill integrity": { "status": "warn", "detail": "3 checked, 1 missing director(ies)" }, "MCP servers": { "status": "warn", "detail": "none configured" } }, diff --git a/docs/comparison.md b/docs/comparison.md index 6006cee..a033205 100644 --- a/docs/comparison.md +++ b/docs/comparison.md @@ -7,7 +7,7 @@ | | rolecraft | skills (Vercel) | @agentskill.sh/cli | |---|---|---|---| | **Runtime** | Zero-dep Node ESM | 1 dep (Node) | 2 deps (TypeScript) | -| **Agent targets** | **87** | 72 | 15+ | +| **Agent targets** | **90** | 72 | 15+ | | **Skill marketplace** | skills.sh (90K+) | agentskill.sh (100K+) | — | | **Publish your own** | ❌ | ❌ | ❌ | | **MCP management** | ✅ | ❌ | ❌ | diff --git a/docs/guides/getting-started.md b/docs/guides/getting-started.md index 286295e..759f045 100644 --- a/docs/guides/getting-started.md +++ b/docs/guides/getting-started.md @@ -15,7 +15,7 @@ A skill is a reusable capability for your AI coding agent. Think of it as a plug - **Team conventions** — one command sets up every agent on every developer's machine - **MCP servers** — skills can declare and install MCP servers alongside themselves -rolecraft manages all of this across **87 AI agents** (27 verified) with a single CLI and **zero runtime dependencies**. +rolecraft manages all of this across **90 AI agents** (34 verified) with a single CLI and **zero runtime dependencies**. --- diff --git a/docs/index.md b/docs/index.md index f8e2323..8542e53 100644 --- a/docs/index.md +++ b/docs/index.md @@ -4,7 +4,7 @@ layout: home hero: name: "RoleCraft" text: "The Security-First Skill Manager for AI Agents" - tagline: Security scoring before install · Skills & MCP Servers across 87 Agents (27 Verified) + tagline: Security scoring before install · Skills & MCP Servers across 90 Agents (34 Verified) image: src: /rolecraft-demo.gif alt: RoleCraft Demo @@ -35,4 +35,4 @@ features: - title: Init Templates details: "rolecraft init --template scaffolds production-ready skills from pre-built templates. Start fast, ship faster." - title: Parallel Install - details: Install skills and MCP servers across all 87 agents (27 verified) simultaneously. Blazing fast, built for scale. + details: Install skills and MCP servers across all 90 agents (34 verified) simultaneously. Blazing fast, built for scale. diff --git a/docs/migration-from-skills.md b/docs/migration-from-skills.md index 0db6a21..04b8c2e 100644 --- a/docs/migration-from-skills.md +++ b/docs/migration-from-skills.md @@ -7,7 +7,7 @@ If you're using [Vercel's `skills` CLI](https://github.com/vercel-labs/skills) a | Reason | rolecraft | Vercel skills | |---|---|---| | Dependencies | **0** (zero-dep) | 1 (`supports-color`) | -| Agent targets | **87** | 72 | +| Agent targets | **90** | 72 | | Telemetry | **None** | Anonymous telemetry | | Offline installs | **Fully supported** | Requires network | | Shell completions | bash, zsh, fish | Not available | @@ -51,7 +51,7 @@ rm ~/.skills-lock.json ## What rolecraft does differently ### More agent targets -rolecraft supports **87 agents** vs Vercel's 72. This includes newer agents like `augment`, `kilo`, `openhands`, `junie`, `factory`, `command-code`, `oh-my-pi (omp)`, and more. +rolecraft supports **90 agents** vs Vercel's 72. This includes newer agents like `augment`, `kilo`, `openhands`, `junie`, `factory`, `command-code`, `oh-my-pi (omp)`, and more. ### Any source, not just GitHub Install from local folders, GitLab, Bitbucket, SSH URLs, or even npm packages — not just GitHub repos. diff --git a/docs/reference.md b/docs/reference.md index 79a9cbe..4c583ae 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -215,7 +215,7 @@ Pass any of these to `install`, `setup`, or `profile` to target specific agents: | `--tiny-cloud` | tiny-cloud | `~/.tinycloud/skills/` | | `--zencoder` | zencoder | `~/.zencoder/skills/` | | `--codebuddy` | codebuddy | `~/.codebuddy/skills/` | -| *(see [full list](agents) for all 87 agents)* | | | +| *(see [full list](agents) for all 90 agents)* | | | Combine multiple flags in one command: diff --git a/package.json b/package.json index e981d14..273d3c1 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "rolecraft", "version": "2.5.0", - "description": "The package manager for AI agents — install, test, publish, and manage skills & MCP servers across 87 agents. Zero-dependency CLI for claude-code, cursor, opencode, omp, and more.", + "description": "The package manager for AI agents — install, test, publish, and manage skills & MCP servers across 90 agents. Zero-dependency CLI for claude-code, cursor, opencode, omp, and more.", "type": "module", "bin": { "rolecraft": "bin/rolecraft.js" diff --git a/src/agents.js b/src/agents.js index 0d0232b..b52526a 100644 --- a/src/agents.js +++ b/src/agents.js @@ -553,7 +553,9 @@ const AGENTS_DATA = [ name: 'iflow', getDir: () => home('.iflow', 'skills'), label: '~/.iflow/skills/', - supportLevel: 'experimental', + supportLevel: 'legacy', + notes: + 'iFlow CLI was shut down on 2026-04-17; the vendor directs users to migrate to Qoder', }, { flag: 'kilo-code', @@ -664,7 +666,13 @@ const AGENTS_DATA = [ name: 'zcode', getDir: () => home('.zcode', 'skills'), label: '~/.zcode/skills/', - supportLevel: 'experimental', + skillInstallScope: 'global ~/.zcode/skills', + instructionFormat: 'skill-md', + supportLevel: 'verified', + docUrl: 'https://zcode.z.ai/en/docs/skill', + lastVerified: '2026-10-06', + notes: + 'ZCode, the GLM coding client. Reads ~/.zcode/skills//SKILL.md and ~/.agents/mcp.json', }, { flag: 'astrbot', @@ -706,7 +714,13 @@ const AGENTS_DATA = [ name: 'pochi', getDir: () => home('.pochi', 'skills'), label: '~/.pochi/skills/', - supportLevel: 'experimental', + skillInstallScope: 'global ~/.pochi/skills', + instructionFormat: 'skill-md', + supportLevel: 'verified', + docUrl: 'https://docs.getpochi.com/skills', + lastVerified: '2026-10-06', + notes: + 'Pochi (TabbyML). Also reads ~/.agents/skills; project .pochi/skills', }, { flag: 'adal', @@ -766,26 +780,73 @@ const AGENTS_DATA = [ { flag: 'antigravity', name: 'antigravity', - getDir: () => home('.agents', 'skills'), - label: '~/.agents/skills/', - skillInstallScope: 'global ~/.agents/skills', + getDir: () => home('.gemini', 'config', 'skills'), + label: '~/.gemini/config/skills/', + skillInstallScope: 'global ~/.gemini/config/skills', instructionFormat: 'skill-md', - supportLevel: 'experimental', - docUrl: 'https://github.com/daniel-e/agents', - lastVerified: '2026-07-25', - aliasFor: 'opencode', + supportLevel: 'verified', + docUrl: 'https://antigravity.google/docs/skills', + lastVerified: '2026-10-06', + notes: + 'Antigravity 2.0 and the IDE read ~/.gemini/config/skills; the IDE also accepts legacy ~/.gemini/antigravity/skills. All surfaces share /.agents/skills', }, { flag: 'antigravity-cli', name: 'antigravity-cli', - getDir: () => home('.agents', 'skills'), - label: '~/.agents/skills/', - skillInstallScope: 'global ~/.agents/skills', + getDir: () => home('.gemini', 'antigravity-cli', 'skills'), + label: '~/.gemini/antigravity-cli/skills/', + skillInstallScope: 'global ~/.gemini/antigravity-cli/skills', instructionFormat: 'skill-md', - supportLevel: 'experimental', - docUrl: 'https://github.com/daniel-e/agents', - lastVerified: '2026-07-25', - aliasFor: 'opencode', + supportLevel: 'verified', + docUrl: 'https://antigravity.google/docs/skills', + lastVerified: '2026-10-06', + notes: + 'Antigravity CLI (agy) has its own global dir, separate from the 2.0/IDE surface; plugin skills at ~/.gemini/antigravity-cli/plugins//skills. Shares /.agents/skills', + }, + { + flag: 'grok', + name: 'grok', + getDir: () => home('.grok', 'skills'), + label: '~/.grok/skills/', + skillInstallScope: 'global ~/.grok/skills', + instructionFormat: 'skill-md', + supportLevel: 'verified', + docUrl: 'https://docs.x.ai/build/features/skills-plugins-marketplaces', + lastVerified: '2026-10-06', + notes: + 'Project skills at ./.grok/skills. Reads ~/.agents/skills via AGENTS.md compatibility. MCP lives in ~/.grok/config.toml as [mcp_servers.] (TOML), which rolecraft does not yet write', + }, + { + flag: 'muse', + name: 'muse-code', + getDir: () => home('.config', 'muse', 'skills'), + label: '~/.config/muse/skills/', + skillInstallScope: 'global ~/.config/muse/skills', + mcpSupport: { + supported: true, + format: 'mcpServers', + configPath: '~/.config/muse/settings.json', + }, + instructionFormat: 'skill-md', + supportLevel: 'verified', + docUrl: + 'https://meta-models.github.io/muse-code-sdk/next/guides/extend/skills/', + lastVerified: '2026-10-06', + notes: + 'Muse Code by Meta. Scans ~/.config/muse/skills, ~/.agents/skills, ~/.claude/skills, ~/.codex/skills and project .agents/.codex/.claude/skills. MCP at ~/.config/muse/settings.json under mcpServers', + }, + { + flag: 'posit', + name: 'posit-assistant', + getDir: () => home('.posit', 'assistant', 'skills'), + label: '~/.posit/assistant/skills/', + skillInstallScope: 'global ~/.posit/assistant/skills', + instructionFormat: 'skill-md', + supportLevel: 'verified', + docUrl: 'http://assistant.posit.co/docs/features/skills', + lastVerified: '2026-10-06', + notes: + 'Posit Assistant (Positron, RStudio). Also reads ~/.agents/skills; project .posit/assistant/skills. Legacy ~/.positai/', }, { flag: 'deepagents', diff --git a/src/agents/manifest.test.js b/src/agents/manifest.test.js index 92cf41e..6c4a6b8 100644 --- a/src/agents/manifest.test.js +++ b/src/agents/manifest.test.js @@ -1,6 +1,7 @@ import { describe, it } from 'node:test' import assert from 'node:assert/strict' import { readFileSync } from 'node:fs' +import { homedir } from 'node:os' import { join, dirname } from 'node:path' import { fileURLToPath } from 'node:url' import { @@ -12,6 +13,7 @@ import { SUPPORT_LEVELS, } from './manifest.js' import { generateAgentsDocs } from '../../scripts/generate-agents-docs.js' +import AGENTS_DATA from '../agents.js' import { getTokenValues, parseMatrix, @@ -157,6 +159,53 @@ describe('agent manifest', () => { ) }) + // A verified entry is a claim that we read the vendor's page. The path is + // the load-bearing half of that claim, so pin the ones that were corrected + // against their docs rather than letting a later edit drift back silently. + it('records the documented path for agents whose paths were corrected', () => { + const expected = { + antigravity: { + dir: join(homedir(), '.gemini', 'config', 'skills'), + docUrl: 'https://antigravity.google/docs/skills', + }, + 'antigravity-cli': { + dir: join(homedir(), '.gemini', 'antigravity-cli', 'skills'), + docUrl: 'https://antigravity.google/docs/skills', + }, + grok: { + dir: join(homedir(), '.grok', 'skills'), + docUrl: 'https://docs.x.ai/build/features/skills-plugins-marketplaces', + }, + muse: { + dir: join(homedir(), '.config', 'muse', 'skills'), + docUrl: + 'https://meta-models.github.io/muse-code-sdk/next/guides/extend/skills/', + }, + posit: { + dir: join(homedir(), '.posit', 'assistant', 'skills'), + docUrl: 'http://assistant.posit.co/docs/features/skills', + }, + zcode: { + dir: join(homedir(), '.zcode', 'skills'), + docUrl: 'https://zcode.z.ai/en/docs/skill', + }, + pochi: { + dir: join(homedir(), '.pochi', 'skills'), + docUrl: 'https://docs.getpochi.com/skills', + }, + } + + for (const [flag, { dir, docUrl }] of Object.entries(expected)) { + const agent = getAgentManifestByFlag(flag) + assert.ok(agent, `${flag} must exist in the manifest`) + assert.equal(agent.supportLevel, SUPPORT_LEVELS.VERIFIED, flag) + assert.equal(agent.docUrl, docUrl, `${flag} must cite its vendor docs`) + assert.ok(agent.lastVerified, `${flag} needs a verification date`) + const entry = AGENTS_DATA.find((a) => a.flag === flag) + assert.equal(entry.getDir(), dir, `${flag} path`) + } + }) + it('validateManifest requires MCP-enabled agents to declare a format', () => { const result = validateManifest([ { @@ -284,6 +333,10 @@ describe('agent manifest', () => { const content = readFileSync(join(__dirname, '..', '..', file), 'utf-8') for (const [index, line] of content.split('\n').entries()) { if (!pattern.test(line)) continue + // The count alone is not a claim about agents — the security score + // table has a "90+" row that happens to share the digits. Every real + // count claim names agents on the same line. + if (!/agents?\b/i.test(line)) continue assert.ok( tracked.has(`${file}:${index + 1}`), `untracked agent count in ${file}:${index + 1}`, diff --git a/src/utils/mcp.test.js b/src/utils/mcp.test.js index ebe1804..af2a8bb 100644 --- a/src/utils/mcp.test.js +++ b/src/utils/mcp.test.js @@ -11,6 +11,7 @@ import { } from 'node:fs' import { join } from 'node:path' import { tmpdir } from 'node:os' +import AGENTS_DATA from '../agents.js' let mcpModule @@ -38,23 +39,19 @@ describe('mcp', () => { describe('getSupportedMcpAgents', () => { it('returns only agents with MCP support', () => { const agents = mcpModule.getSupportedMcpAgents() - const supported = [ - 'agents', - 'claude', - 'cursor', - 'windsurf', - 'devin', - 'copilot', - 'continue', - 'omp', - ] - assert.equal(agents.length, supported.length) + // Derived, not a hardcoded count: muse joined the list when its vendor + // docs were read, and a literal here silently passed or failed on that. + const supported = ['agents', 'claude', 'cursor', 'windsurf', 'devin'] for (const flag of supported) { assert.ok( agents.includes(flag), `expected ${flag} to be in supported list`, ) } + const withMcp = Object.fromEntries( + AGENTS_DATA.filter((a) => a.mcp).map((a) => [a.flag, true]), + ) + assert.deepEqual(agents.sort(), Object.keys(withMcp).sort()) }) })