Skip to content
/

Zed

zed · zed-industries/zed · ★ 84k · last commit 2026-05-26

Primitive shape 1 total
Skills 1
00

Summary

Zed — Summary

Zed is a high-performance, open-source code editor (written in Rust, 83,799 stars, GPL/AGPL license) built by the creators of Atom and Tree-sitter. Its AI Agent ("Zed AI") is a fully integrated coding agent panel within the editor, distinct from the editor itself. The agent has: a production system prompt (Handlebars template, conditionally includes tool guides, multi-agent delegation section, skills catalog, user AGENTS.md); a comprehensive tool suite (26 named tools including spawn_agent for subagent delegation); a SKILL.md system using .agents/skills/ convention; an update_plan tool for visible task tracking; and a user_agents_md.rs module for reading AGENTS.md from the user's home directory.

The skills system is compiled-in with a built-in create-skill skill and supports both global (~/.agents/skills/) and project-local (.agents/skills/) skill directories. Skills are surfaced to the model as a catalog in the system prompt; the skill tool retrieves full instructions on demand. Parallel tool calls are explicitly encouraged in the system prompt.

Closest seed: kiro — both are closed/proprietary IDE products with a skills/spec system. Zed differs by being open-source, Rust-based, having an explicit Agent Client Protocol-like spawnable subagent system, and having skills as SKILL.md files rather than kiro's steering documents.

01

Overview

Zed — Overview

Origin

Zed is built by Zed Industries, founded by Nathan Sobo and Antonio Scandurra (creators of Atom editor and Tree-sitter). First public release 2024. 83,799 GitHub stars. Written entirely in Rust. License: GPL (core), AGPL (server components), with some Apache-2.0 components.

Philosophy

"Code at the speed of thought" — Zed's tagline. The editor is built for performance (GPU-rendered, zero-frame rendering latency) and collaboration (built-in multiplayer). The AI agent is designed as a native part of the editor experience, not a bolt-on.

From the agent system prompt:

  • "Be accurate and truthful. Ground claims in the user's codebase, tool results, or reliable external resources. Do not fabricate details."
  • "Prioritize technical correctness over affirming the user's assumptions."
  • "Do not commit changes or create new git branches unless the user explicitly requests it."
  • "Do not add comments that merely restate the code."
  • For multi-agent delegation: "Create concrete, self-contained subtasks and include all context the sub-agent needs. Assign disjoint write scopes."

Key Design Decisions

  1. System prompt is a Handlebars template — conditional sections (tools available, planning tool available, skills catalog) are rendered at runtime based on actual configuration
  2. Skills as on-demand instructions — model sees only name + description in system prompt; full SKILL.md loaded via skill tool on demand
  3. update_plan tool — agent maintains a visible plan in the UI, updating it throughout task execution
  4. AGENTS.md hierarchy — personal ~/AGENTS.md, project-level rules, user-specified rules all merged with explicit precedence

Connection to Agent Skills Open Standard

Zed's .agents/skills/<name>/SKILL.md convention uses the same path and file name as the Agent Skills open standard referenced by Devin and Mistral Vibe — evidence of emerging cross-product standardization.

02

Architecture

Zed — Architecture

Distribution

  • Type: Desktop app (cross-platform: macOS, Linux, Windows)
  • Language: Rust
  • License: GPL/AGPL (core), Apache-2.0 (some libs)
  • Stars: 83,799 | Forks: 8,707

Install

# macOS
brew install zed
# Linux
curl -f https://zed.dev/install.sh | sh
# Windows
winget install Zed.Zed

Agent Crate Structure (crates/agent/)

crates/agent/src/
├── agent.rs              — Agent struct, main loop
├── thread.rs             — Thread (conversation) management
├── thread_store.rs       — Persistent thread storage
├── tools.rs              — Tool registry
├── tools/
│   ├── apply_code_action_tool.rs
│   ├── create_directory_tool.rs
│   ├── delete_path_tool.rs
│   ├── diagnostics_tool.rs
│   ├── edit_file_tool.rs
│   ├── fetch_tool.rs
│   ├── find_path_tool.rs
│   ├── find_references_tool.rs
│   ├── get_code_actions_tool.rs
│   ├── go_to_definition_tool.rs
│   ├── grep_tool.rs
│   ├── list_directory_tool.rs
│   ├── move_path_tool.rs
│   ├── read_file_tool.rs
│   ├── rename_tool.rs
│   ├── skill_tool.rs         — Loads SKILL.md content on demand
│   ├── spawn_agent_tool.rs   — Spawns subagents
│   ├── terminal_tool.rs
│   ├── update_plan_tool.rs
│   ├── update_title_tool.rs
│   ├── web_search_tool.rs
│   └── write_file_tool.rs
├── templates/
│   ├── system_prompt.hbs            — Primary agent prompt
│   ├── experimental_system_prompt.hbs
│   ├── create_file_prompt.hbs
│   ├── edit_file_prompt_diff_fenced.hbs
│   ├── edit_file_prompt_xml.hbs
│   └── diff_judge.hbs
└── user_agents_md.rs     — Reads ~/AGENTS.md

Agent Skills Crate (crates/agent_skills/)

agent_skills/
├── agent_skills.rs       — Skill discovery, parsing, validation
└── builtin/
    └── create-skill/
        └── SKILL.md      — Only built-in skill

Config Files

  • ~/.agents/skills/<name>/SKILL.md — global skills
  • <project>/.agents/skills/<name>/SKILL.md — project skills
  • ~/AGENTS.md — personal agent instructions (read by all Zed agent sessions)
  • <project>/AGENTS.md (or .cursor/rules, .github/copilot-instructions.md) — project rules
  • ~/.zed/settings.json — editor + agent settings

Target AI Tools

  • Zed itself (native)
  • Any AI provider with Zed API integration (Claude, GPT-4, Gemini, local via Ollama)
03

Components

Zed — Components

Agent Tools (26 confirmed from source)

Tool Description
apply_code_action Apply LSP code actions
context_server_registry List available context servers
copy_path Copy a path to clipboard
create_directory Create a directory
delete_path Delete file or directory
diagnostics Get LSP diagnostics for files
edit_file Edit file with diff-based or XML-based edits
fetch HTTP fetch (web browsing)
find_path Find files by name pattern
find_references LSP find-references
get_code_actions List LSP code actions available
go_to_definition LSP go-to-definition
grep Ripgrep-based code search
list_directory List directory contents
move_path Move/rename path
read_file Read file contents
rename LSP rename refactoring
skill Load a skill's full SKILL.md content
spawn_agent Spawn a subagent for delegated tasks
terminal Run terminal commands
update_plan Create/update visible task plan in UI
update_title Set session title in UI
web_search Web search
write_file Write/create file
copy_path Copy path value
edit_session Edit session management

System Prompt Templates (Handlebars, 6)

Template Description
system_prompt.hbs Primary agent system prompt (conditionally sections for tools, planning, skills, AGENTS.md)
experimental_system_prompt.hbs Experimental variant
create_file_prompt.hbs Prompt for file creation guidance
edit_file_prompt_diff_fenced.hbs Diff-fenced edit format prompt
edit_file_prompt_xml.hbs XML edit format prompt
diff_judge.hbs Prompt for evaluating diffs

Skills System

  • Built-in: create-skill (only built-in skill, helps users create new skills)
  • Global scope: ~/.agents/skills/<name>/SKILL.md
  • Project scope: .agents/skills/<name>/SKILL.md
  • Format: YAML frontmatter (name, description, disable-model-invocation) + Markdown body
  • Max file size: 100KB per SKILL.md
  • Max descriptions in system prompt: 50KB total
  • Invocation: skill tool loads full content; slash command for user-forced activation

AGENTS.md Support

  • ~/AGENTS.md — personal instructions, applied to every project
  • <project>/AGENTS.md — project-specific rules (override personal)
  • User-specified rules — highest priority
  • Also reads: .cursor/rules, .github/copilot-instructions.md (cross-tool compatibility)

Subagent (spawn_agent)

  • Tool: spawn_agent
  • Use cases documented in system prompt: parallel work, large tasks, reviews, test summarization
  • Context is provided explicitly; subagent receives fresh context
05

Prompts

Zed — Prompts

System Prompt Excerpt 1: Core Identity + Tool Use (from system_prompt.hbs)

You are the Zed coding agent running inside the Zed editor. You help users complete 
software engineering tasks by understanding their codebase, making careful changes, and 
explaining your work clearly.

## Tool Use

- Follow the available tool schemas exactly and provide every required argument.
- Use only the tools that are currently available. Do not call a tool just because 
  it appeared earlier in the conversation; the user may have disabled it.
- You can call multiple tools in a single response. If you intend to call multiple 
  tools and there are no dependencies between them, make all independent tool calls 
  in parallel. Maximize use of parallel tool calls where possible to increase efficiency.
- When running commands that may run indefinitely or for a long time, such as builds, 
  tests, servers, or file watchers, specify `timeout_ms` to bound runtime.

Prompting technique: Explicit parallel tool call instruction — "Maximize use of parallel tool calls where possible." Also: timeout_ms awareness for long-running commands (unusual in agent prompts).


System Prompt Excerpt 2: Planning + Skills (from system_prompt.hbs)

{{#if (contains available_tools 'update_plan') }}
## Planning

- You have access to an `update_plan` tool that tracks steps and progress and renders 
  them to the user.
- Use it to show that you understand the task and to make complex, ambiguous, or 
  multi-phase work easier to follow.
- A good plan is short, concrete, logically ordered, and easy to verify.
- After calling `update_plan`, do not repeat the full plan in your response. The UI 
  already displays it.
{{/if}}

{{#if has_skills}}
## Agent Skills

You have access to the following Skills - modular capabilities that provide specialized 
instructions for specific tasks. When a user's request matches a Skill's description, 
use the `skill` tool to retrieve the full instructions.

<available_skills>
{{#each skills}}
  <skill>
    <name>{{name}}</name>
    <description>{{description}}</description>
    <location>{{{location}}}</location>
  </skill>
{{/each}}
</available_skills>

Prompting technique: Conditional Handlebars sections — tools/features are described only when available. Skills catalog uses XML-style tags within the Handlebars template. The {{{location}}} uses triple-braces (no HTML escaping) because it's a filesystem path.


System Prompt Excerpt 3: Multi-Agent Delegation (from system_prompt.hbs)

{{#if (contains available_tools 'spawn_agent') }}
## Multi-agent delegation

Sub-agents can help you move faster on large tasks when you use them thoughtfully. 
This is most useful for:

- Very large tasks with multiple well-defined scopes.
- Plans with independent steps that can be executed in parallel.
- Requesting a review or fresh perspective on your work.
- Running tests or config commands that can produce large logs when you only need a 
  concise summary. Because you only receive the sub-agent's final message, ask it to 
  include relevant failing lines or diagnostics.

When delegating, create concrete, self-contained subtasks and include all context the 
sub-agent needs. If multiple agents may edit files, assign disjoint write scopes.
{{/if}}

Prompting technique: Conditional multi-agent guidance with explicit anti-patterns (don't duplicate work, assign disjoint write scopes). The note "you only receive the sub-agent's final message" sets realistic expectations about subagent communication.


Built-in Skill: create-skill (verbatim excerpt)

---
name: create-skill
description: Helps you create new agent skills for Zed. Use this to create a skill, 
             ask about SKILLs.md, or package reusable agent instructions.
---

| Scope | Path | When to use |
|-------|------|-------------|
| Global | `~/.agents/skills/<skill-name>/SKILL.md` | Personal skills |
| Project-local | `<project>/.agents/skills/<skill-name>/SKILL.md` | Shared via git |

### Required Frontmatter Fields
- **`name`** (required): 1–64 chars, lowercase alphanumeric with hyphens
- **`description`** (required): 1–1024 chars — what the agent sees when deciding to use the skill

Prompting technique: Self-describing skill — the create-skill skill teaches the model how to create more skills, a recursive bootstrapping pattern.

09

Uniqueness

Zed — Uniqueness

Differs From Seeds

Closest seed is kiro — both are IDE products with proprietary agent primitives and a spec/skills system. Key deltas: (1) Zed is open-source (GPL/Rust) while kiro is closed-source; (2) Zed's skills system uses the Agent Skills open standard (.agents/skills/*/SKILL.md) that Devin and Mistral Vibe also use, creating an emerging cross-product standard; (3) Zed has LSP tool integration (go-to-definition, find-references, diagnostics, rename) that no seed framework has — making it code-semantics-aware rather than just file-manipulation aware; (4) Kiro has IDE lifecycle hooks (PreToolUse, File Save, etc.) while Zed uses user-authored AGENTS.md + skills for customization with no hook events.

Distinctive Opinion

Agent instructions should be loaded lazily (skills catalog with on-demand skill tool) rather than injected wholesale — the system prompt shows only skill names+descriptions, full content only when the agent decides a skill is relevant. This token-efficiency design is architecturally different from superpowers' "always inject all skill files."

Positioning

  • The only open-source IDE in the batch with a native, first-party AI agent system
  • Competing with Cursor, Windsurf, Kiro for the "AI-native IDE" position
  • Key differentiation vs. Cursor: Rust performance, open-source, multiplayer-native, Agent Skills standard

Observable Failure Modes

  • No tool-call enforcement (agent can skip plan/title even though system prompt says to use them)
  • Disjoint write scope in multi-agent is advisory only — no enforcement mechanism
  • Skills have a 100KB file size limit and 50KB total description limit — large skill packs may be truncated

Cross-References

  • Agent Skills open standard (agentskills.io) — same .agents/skills/<name>/SKILL.md convention as Devin and Mistral Vibe
  • AGENTS.md — same convention as Devin, Factory Droid
  • Zed's GPUI — novel GPU-accelerated UI framework; no other editor uses this
  • Reads .cursor/rules and .github/copilot-instructions.md for cross-tool compatibility
04

Workflow

Zed — Workflow

Standard Task Workflow

1. User opens agent panel (native editor panel)
2. System prompt rendered from system_prompt.hbs with:
   - Available tools
   - update_plan section (if available)
   - update_title section
   - Skills catalog (name + description for all discovered skills)
   - ~/AGENTS.md content
   - Project rules (AGENTS.md / .cursor/rules / copilot-instructions.md)
   - User-specified rules
   - System info (OS, shell, date, model name, worktree paths)
3. User types task
4. Agent calls update_title (early, mandatory)
5. Agent calls update_plan for non-trivial tasks
6. Agent executes tools (grep, read_file, edit_file, terminal, etc.)
7. Agent marks plan steps complete as work proceeds
8. Agent reports completion

Phases + Artifacts

Phase Artifact
Context loading System prompt populated with skills, AGENTS.md
Title setting Session title set via update_title
Planning Plan steps created via update_plan
Exploration grep/read_file/find_path results
Implementation File edits via edit_file/write_file
Validation terminal (run tests), diagnostics (LSP errors)
Completion Final response + plan marked done

Approval Gates

  • Tool permissions: tool_permissions.rs — user can configure which tools are allowed
  • No auto-commit: System prompt explicitly states "Do not commit changes or create new git branches unless the user explicitly requests it"
  • User must approve: No auto-confirmation for destructive operations

Multi-Agent Delegation Pattern

From system_prompt.hbs:

"For independent information-gathering tasks that can be done in parallel"
"Running tests or config commands that can produce large logs when you only 
 need a concise summary"
"Requesting a review or fresh perspective on your work"

Subagents receive: concrete self-contained task + explicit context + disjoint write scopes

Skills Activation

  1. Agent sees skills catalog in system prompt (name + description only)
  2. When a task matches a skill, agent calls skill tool with skill name
  3. Full SKILL.md content loaded into context
  4. Agent follows skill instructions
  5. If skill references files, read_file fetches them (paths relative to skill directory)
06

Memory Context

Zed — Memory & Context

Memory Type

File-based + sqlite (thread_store)

Thread Storage (Persistent Conversations)

  • thread_store.rs — persists conversation threads
  • Users can resume previous agent threads
  • Storage location: Zed's data directory (platform-dependent)

AGENTS.md Hierarchy (Priority Order)

  1. User-specified rules (highest) — set via Zed settings
  2. Project rules<project>/AGENTS.md, .cursor/rules, .github/copilot-instructions.md
  3. Personal ~/AGENTS.md — read by all sessions (lowest of the three)

The system prompt template explicitly describes this hierarchy and notes that project rules take precedence over personal.

Skills as Extended Memory

  • Skills are on-disk files (persistent, version-controlled)
  • Model sees name + description (lazy loading)
  • Full content loaded via skill tool when needed
  • Max 50KB total descriptions in system prompt

Context Window Composition

system_prompt.hbs:
  - Agent identity + behavioral rules (fixed)
  - Tool guides (conditional on available tools)
  - Planning guide (conditional on update_plan availability)
  - Skills catalog (conditional on skills discovered)
  - ~/AGENTS.md content
  - Project rules
  - User rules
  - System info (OS, shell, date, model_name, worktrees)

Subagent Context Isolation

  • spawn_agent creates fresh context
  • Parent provides explicit context in task description
  • Subagent's full conversation history not shared
  • Only final message returned to parent

State Files

  • <project>/.agents/skills/*/SKILL.md — project skills
  • ~/.agents/skills/*/SKILL.md — global skills
  • AGENTS.md (project or personal)
  • Thread store (SQLite, internal Zed data directory)
07

Orchestration

Zed — Orchestration

Multi-Agent

Yes — via spawn_agent tool. Subagents can run in parallel for independent tasks.

Orchestration Pattern

Hierarchical — parent agent → spawn_agent → subagent with fresh context. Explicitly designed for:

  • Large tasks with multiple well-defined scopes
  • Plans with independent parallel steps
  • Review/fresh-perspective requests
  • Test run summarization (large log compression)

Isolation Mechanism

None — subagents have the same file access as parent (no container/worktree isolation). The system prompt advises "assign disjoint write scopes" as a coordination convention, but this is advisory, not enforced.

Execution Mode

Interactive-loop — user types in agent panel, agent responds. No background daemon or scheduled execution.

Multi-Model

Yes — Zed supports multiple AI providers:

  • Claude (Anthropic)
  • GPT-4 (OpenAI)
  • Gemini (Google)
  • Local models via Ollama
  • User selects model; different panels can use different models

Tool Permissions

tool_permissions.rs — per-tool enable/disable configuration. Users can restrict which tools the agent can call.

Parallel Tool Calls

Explicitly instructed in system prompt: "Maximize use of parallel tool calls where possible." This is the most explicit parallel-tool-call instruction in the corpus.

LSP Integration

  • diagnostics_tool — LSP diagnostics
  • go_to_definition_tool — LSP go-to-definition
  • find_references_tool — LSP find-references
  • get_code_actions_tool — LSP code actions
  • rename_tool — LSP rename These make Zed's agent uniquely "code-aware" at the language server level — not just file manipulation.

Prompt Chaining

Yes — update_plan → mark steps complete as tools run → final summary. Explicit plan-tool integration creates visible progress chaining.

08

Ui Cli Surface

Zed — UI & CLI Surface

IDE (Primary UI)

  • Type: Desktop application (native, GPU-accelerated)
  • Platform: macOS, Linux, Windows
  • Tech: Rust + GPUI (Zed's own GPU UI framework)
  • Agent Panel: Native editor panel with conversation thread history, plan view, tool output

Agent Panel Features

  • Conversation thread history (persistent via thread_store)
  • Plan view (update_plan renders as visible checklist in UI)
  • Session title (update_title renders at top of panel)
  • Tool output visibility
  • Model selector
  • Skills accessible via / slash command

Multiplayer

  • Built-in collaboration (screenshare/code-share with others)
  • Not specific to AI agent, but agent can be used in collaborative sessions

CLI (zed binary)

  • zed . — open current directory
  • zed <file> — open file
  • No dedicated agent subcommands from CLI
  • Agent is panel-only

MCP Integration

  • Zed has native MCP (Model Context Protocol) support
  • Any external MCP server can be configured in Zed settings
  • Agent can use tools from connected MCP servers

Observability

  • Thread history persisted and viewable
  • Plan steps visible in real-time as agent updates them
  • Tool output visible in agent panel
  • No dedicated audit log beyond thread history

Slash Commands

  • / in agent panel — invokes skill by name (user-triggered)
  • Skills with disable-model-invocation: true are only accessible via slash command

Related frameworks

same archetype · same primary tool · same memory type

Kiro ★ 3.8k

Prevents 'vibe coding' by enforcing a Requirements→Design→Tasks spec pipeline with EARS notation before any code is generated.

Cline ★ 62k

SDK-first autonomous coding agent with human-in-the-loop approval across VS Code, JetBrains, CLI, and a parallel-agent Kanban…

openspec-for-copilot ★ 18

Brings OpenSpec spec-driven development to GitHub Copilot Chat users via a VS Code extension with sidebar spec management,…

OpenSpec-Zed ★ 14

Adds OpenSpec slash commands to the Zed editor's AI Assistant panel so Zed users can initiate spec-driven workflows without…

Shadow Code ★ 79

Developers write pseudocode in a parallel .shadow file; Shadow Code transforms it into target-language production code via VS…

Cline ACP ★ 9

ACP protocol adapter that exposes Cline's coding capabilities to non-VS-Code editors like Zed.