Skip to content

feat(roo): add ZERO-294 Roo Code adapter#53

Closed
spencercharest wants to merge 1 commit into
mainfrom
spencer/zero-312-roo-code-adapter-skills-mcp-marketplace-no-hooks
Closed

feat(roo): add ZERO-294 Roo Code adapter#53
spencercharest wants to merge 1 commit into
mainfrom
spencer/zero-312-roo-code-adapter-skills-mcp-marketplace-no-hooks

Conversation

@spencercharest

@spencercharest spencercharest commented Jun 15, 2026

Copy link
Copy Markdown
Collaborator

Summary

Subtask: ZERO-312

Adds a Roo Code adapter for Zero without touching guides/agent-install.md:

  • project skill at .roo/skills/zero/SKILL.md
  • cross-agent project skill at .agents/skills/zero/SKILL.md
  • project MCP config at .roo/mcp.json
  • Roo Marketplace MCP listing payload at roo/marketplace-mcp.json
  • project rule at .roo/rules/zero.md
  • /zero project command at .roo/commands/zero.md
  • scripts/build-roo.sh packaging into dist/zero-roo/
  • standalone consumer guide at guides/roo-code.md and README install link
  • version bump to 1.4.0 via make minor

Official Sources Used

Human Install / Update Flow

Inside Roo Code:

  1. Run the standalone Zero installer once:
    curl -fsSL https://zero.xyz/install.sh | bash
  2. Build and copy the adapter into the Roo project:
    scripts/build-roo.sh
    cp -R dist/zero-roo/. /path/to/your/project/
  3. Open the project in VS Code with Roo Code installed.
  4. Open Roo Code's MCP settings and confirm the zero server from .roo/mcp.json.
  5. Confirm MCP servers are enabled.
  6. Use /zero or ask Roo to help set up and test Zero.

Updates are manual because Roo has no documented lifecycle hooks:

curl -fsSL https://zero.xyz/install.sh | bash
scripts/build-roo.sh
cp -R dist/zero-roo/. /path/to/your/project/

Proposed guides/agent-install.md Notes

Do not merge these into guides/agent-install.md from this PR. Capture them during the later runbook rework:

  • Roo reads project skills from .roo/skills/{skill}/SKILL.md and .agents/skills/{skill}/SKILL.md.
  • .roo/skills takes precedence over .agents/skills at the same project level.
  • Roo reads project MCP servers from .roo/mcp.json; global MCPs live in Roo's global mcp_settings.json.
  • Zero MCP config for Roo:
    {
      "mcpServers": {
        "zero": {
          "type": "streamable-http",
          "url": "https://mcp.zero.xyz",
          "alwaysAllow": [],
          "disabled": false
        }
      }
    }
  • Leave alwaysAllow empty by default. Only add known read-only Zero MCP tools after verifying their names in Roo.
  • Roo reads project rules from .roo/rules/; use this for the Zero context reminder.
  • Roo reads project slash commands from .roo/commands/; this adapter ships /zero as .roo/commands/zero.md with description and argument-hint frontmatter.
  • Roo Marketplace distributes MCPs and Modes only, not skills or commands. Include the Zero MCP payload as a product-side marketplace listing follow-up.
  • Roo has no SessionStart, UserPromptSubmit, or scriptable PreToolUse hook equivalent. Do not document automatic runner provisioning or automatic adapter updates for Roo.
  • Runner install/update remains the standalone flow: curl -fsSL https://zero.xyz/install.sh | bash.

Verification

Local validation:

make minor
scripts/build-roo.sh --tar dist/zero-roo.tgz
jq . plugins/zero-roo/manifest.json plugins/zero-roo/roo/mcp.json plugins/zero-roo/roo/marketplace-mcp.json dist/zero-roo/.roo/mcp.json
make version
cmp -s plugins/zero/skills/zero/SKILL.md dist/zero-roo/.roo/skills/zero/SKILL.md
cmp -s plugins/zero/skills/zero/SKILL.md dist/zero-roo/.agents/skills/zero/SKILL.md
git diff --check
git diff -- guides/agent-install.md
tar -tzf dist/zero-roo.tgz | sort

Docker validation used copied host auth from ~/.zero:

docker run --rm \
  -v "$PWD":/workspace \
  -v "$HOME/.zero":/host-zero:ro \
  -v "$HOME/zeroclick/env":/tmp/host-env:ro \
  node:22-bookworm bash -lc 'cp -R /host-zero "$HOME/.zero" && npm install -g @zeroxyz/cli@latest && cd /workspace && scripts/build-roo.sh --tar dist/zero-roo-docker.tgz && zero auth whoami --json && zero search "cdn.withzero.xyz upload txt file" --json && zero get cdn-withzero-xyz-static-site-file-cdn-upload-a0d9f22f && zero fetch --json --capability cdn-withzero-xyz-static-site-file-cdn-upload-a0d9f22f https://cdn.withzero.xyz/api/v1/uploads -d @/tmp/zero-cdn-body.json --max-pay 0.001'

Zero E2E result:

Claude-style plugin compatibility and simpler install option

Full Claude Code plugin package support: No. Roo Code uses Roo-specific skill/MCP/rules/commands paths and does not read .claude/skills/ or install Claude Code .claude-plugin packages.

What this means for users:

  • There is no Claude plugin shortcut for native Roo.

  • Consumer-friendly flow should be Roo Marketplace/MCP plus a prebuilt skill/template artifact:

    1. Add Zero MCP from Roo Marketplace or merge the remote MCP config for https://mcp.zero.xyz.
    2. Install/extract the prebuilt Zero Roo skill/template into the project.
    
  • If the custom Roo template is not worth maintaining, the lower-scope alternative is just a Roo skill plus Zero MCP marketplace/listing entry. Build scripts should remain maintainer-only.

GitHub Releases / no-build install check

Result: No native Gemini-style GitHub Release install path. Roo Code's marketplace/listing path is oriented around MCP servers and modes, with project-local skills/rules/commands handled as files. I did not verify a Roo installer that consumes GitHub Release assets for this full template.

Best no-build consumer path:

1. Add Zero MCP from Roo Marketplace or merge the remote MCP entry for https://mcp.zero.xyz.
2. Install/extract the prebuilt Zero Roo skill/template into the project only if rules/commands are needed.

A GitHub Release tarball can remove the local build step, but it is a manual template artifact. If maintaining the full template is too much, ship MCP listing + skill guidance only.

PR State

Draft. The package, Roo config JSON, copied-auth Zero loop, and CDN upload were verified in Docker. Full in-product verification still needs a human VS Code/Roo Code extension session because Roo does not provide a documented local headless Agent CLI or plugin-loader command for this adapter surface.

@spencercharest

Copy link
Copy Markdown
Collaborator Author

Not folded into #63 as a matrix entry: Roo Code shut down on 2026-05-15 — RooCodeInc/Roo-Code is archived with an explicit shutdown notice, docs redirect to a static archive, and the extension is end-of-lifed. Adding it would ship dead detection/skill paths. The research here wasn't wasted: the vendor migration targets, Kilo Code and Cline, both land in #63. The adapter-template work here stays available on this branch if we later ship per-host templates.

spencercharest added a commit that referenced this pull request Jul 2, 2026
* feat(zero): add 15 agents/harnesses to the install matrix

Folds the ZERO-294 adapter PRs (#37-#56, excl. #48/#58) into
plugins/zero/agents.json: amp, antigravity, cline, continue-cli, copilot,
crush, cursor, devin, goose, hermes, kilo-code, opencode, qwen-code, trae,
zed. Roo Code (#53) and Replit Agent (#50) are not addable (product shut
down / no local footprint). Existing kiro (#42) and warp (#46) entries were
re-verified and stand as-is.

qwen-code is plugin-installable (verified live: non-interactive marketplace
install with --consent, native --auto-update); everything else is
standalone-only. Hook fragments added where the host has a JSON hook config
whose semantics tolerate our scripts: continue-cli (full Claude-compatible),
devin (SessionStart+UserPromptSubmit), qwen-code (full, ms timeouts),
copilot/cursor/goose (SessionStart only, host dialects).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* ci(version-check): detect manifests by top-level version key, not grep

agents.json now carries host hook-dialect fragments that legitimately
contain a nested "version" field (Copilot/Cursor hooks files); the grep
matched it and lockstep failed on a non-manifest.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* feat(zero): drop standalone.mcp from new matrix entries

MCP config targets are only needed for ephemeral environments where auth
session data cannot be written to disk; the new entries are all persistent
hosts. kiro/warp keep their pre-existing blocks. The researched per-host
MCP surfaces remain documented in the closed adapter PRs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* feat(zero): drop standalone.mcp from kiro and warp too

MCP config targets are only for ephemeral environments where auth session
data cannot be written to disk; no matrix entry needs one.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant