Skip to content

feat(warp): add ZERO-294 Warp adapter#46

Closed
spencercharest wants to merge 1 commit into
mainfrom
spencer/zero-306-warp-adapter-skill-mcp-no-hooks
Closed

feat(warp): add ZERO-294 Warp adapter#46
spencercharest wants to merge 1 commit into
mainfrom
spencer/zero-306-warp-adapter-skill-mcp-no-hooks

Conversation

@spencercharest

@spencercharest spencercharest commented Jun 15, 2026

Copy link
Copy Markdown
Collaborator

Summary

Subtask: ZERO-306, under ZERO-294.

Adds a Warp adapter for Zero:

  • plugins/zero-warp overlay with Warp MCP project config and versioned adapter metadata.
  • scripts/build-warp.sh to assemble dist/zero-warp/.
  • guides/warp.md and README install/repo-structure entries.
  • Shared manifest bump to 1.4.0 via make minor.

Important: this PR does not modify guides/agent-install.md. Proposed runbook text is documented below for the later runbook rework.

Official sources used

Install/update surfaces

Warp has no in-session plugin installer for local skills and no lifecycle hooks for runner provisioning. The install surface is terminal/project-template based:

curl -fsSL https://zero.xyz/install.sh | bash
rm -rf /tmp/zero-plugins
git clone --depth 1 https://github.com/officialzeroxyz/zero-plugins /tmp/zero-plugins
/tmp/zero-plugins/scripts/build-warp.sh
cp -R /tmp/zero-plugins/dist/zero-warp/. .

The adapter installs:

  • .warp/skills/zero/SKILL.md and .agents/skills/zero/SKILL.md for Warp/native plus portable skill discovery.
  • .warp/.mcp.json for the Zero streamable HTTP MCP server.

Updates:

  • Rerun curl -fsSL https://zero.xyz/install.sh | bash to update the Zero runner.
  • Rerun the terminal project-template commands to update the Warp files.

Proposed guides/agent-install.md notes

Do not apply in this PR; collect for the later runbook rework:

### Warp

Warp has no plugin bundle or lifecycle hooks for Zero. Install the Zero runner
with the standalone installer, then copy the Warp project template at the repo
root:

```bash
curl -fsSL https://zero.xyz/install.sh | bash
rm -rf /tmp/zero-plugins
git clone --depth 1 https://github.com/officialzeroxyz/zero-plugins /tmp/zero-plugins
/tmp/zero-plugins/scripts/build-warp.sh
cp -R /tmp/zero-plugins/dist/zero-warp/. .

This installs the Zero skill under .warp/skills/ and .agents/skills/ and
configures the Zero MCP server in .warp/.mcp.json. Warp exposes skills as
slash commands, so /zero invokes the Zero skill. Configure any Zero command
allowlist manually in Warp Agent Profiles and Permissions; the adapter does not
ship hooks or command approval code.


## Verification

Local checks:

```bash
./scripts/build-warp.sh
./scripts/build-warp.sh --tar /tmp/zero-warp.tar.gz
make version
jq . plugins/zero-warp/manifest.json plugins/zero-warp/warp/.mcp.json >/dev/null
jq . dist/zero-warp/manifest.json dist/zero-warp/.warp/.mcp.json >/dev/null
git diff --check
git diff --cached --check

Results:

  • make version -> 1.4.0
  • Build output included .warp/.mcp.json, .warp/skills/zero/SKILL.md, and .agents/skills/zero/SKILL.md.
  • Confirmed guides/agent-install.md has no diff.

Docker project-template and copied-auth Zero loop:

docker run --rm \
  -v "$PWD":/workspace:ro \
  -v "$HOME/.zero":/host-zero:ro \
  node:24-bookworm bash -lc '...
  npm install -g @zeroxyz/cli@latest
  cp -R /workspace/dist/zero-warp/. /tmp/project/
  cp -R /host-zero "$HOME/.zero"
  cd /tmp/project
  jq . .warp/.mcp.json manifest.json
  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
  curl -fsSL "$URL"
  ...'

Results:

  • Copied host ~/.zero into container as $HOME/.zero.
  • Installed container-local @zeroxyz/cli@latest because the copied host runtime shim points at a host Node path that does not exist in Docker.
  • Verified adapter file layout and copied-auth Zero identity.
  • Direct Zero loop passed:

Full Warp-agent E2E was not run: Warp is a GUI terminal/agent surface and I did not find a documented headless Warp agent CLI suitable for Docker. There are also no Warp lifecycle hooks to exercise in a container.

Claude-style plugin compatibility and simpler install option

Full Claude Code plugin package support: No. Warp can read Claude-compatible skills, including .claude/skills/, but it has no documented Claude Code .claude-plugin installer and no lifecycle hook system for this adapter.

What this means for users:

  • A Warp-specific adapter should stay very small: skill + remote MCP + optional Agent Profile guidance.

  • The simplest consumer path is:

    curl -fsSL https://zero.xyz/install.sh | bash
    # install/copy the Zero skill into .claude/skills/zero, .agents/skills/zero, or .warp/skills/zero
    # add https://mcp.zero.xyz using Warp's MCP settings
  • Build scripts should be maintainer-only packaging. If this PR remains custom, publish a prebuilt zero-warp artifact so users copy/extract rather than build.

GitHub Releases / no-build install check

Result: No native Gemini-style GitHub Release install path. Warp's docs support MCP setup through settings, file-based MCP configs, and the built-in /agent-add-mcp skill. They do not document installing agent skill/plugin bundles from GitHub Release assets.

Best no-build consumer path:

curl -fsSL https://zero.xyz/install.sh | bash
# add Zero MCP in Warp settings or ask /agent-add-mcp to write .warp/.mcp.json
# install/copy the Zero skill into a Warp-supported skill directory

A GitHub Release asset can still bundle the ready-to-copy .warp / skills files, but it would be a manual download/extract fallback. The simpler maintenance path is likely skill + MCP instructions rather than a heavier Warp-specific artifact.

Status

Draft. Project-template layout and direct copied-auth Zero loop passed in Docker; full Warp-agent E2E requires a real Warp desktop/agent session.

spencercharest added a commit that referenced this pull request Jul 1, 2026
Add a Warp entry to the agents matrix so zero init provisions Warp.
Warp has no plugin installer or lifecycle hooks (see #46), so it is a
kiro-style standalone-only entry: home-level skill dirs (.warp/skills,
.agents/skills) plus the global MCP config at .warp/.mcp.json. Warp's
MCP entries carry a bare url with no type field, so the shape is
"http-url" rather than kiro's "http-type-url".

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
@spencercharest

Copy link
Copy Markdown
Collaborator Author

Reconciled against #63: the existing warp entry was re-verified and stands as-is — hooks feature request warpdotdev/warp#7834 is still open (no hook system), no non-interactive install exists, and this PR's finding of ~/.warp/.mcp.json is now explicitly confirmed by Warp's docs as the user-level MCP file. Nothing further to fold. 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