diff --git a/.changeset/remove-windsurf-option.md b/.changeset/remove-windsurf-option.md new file mode 100644 index 0000000..d503fb6 --- /dev/null +++ b/.changeset/remove-windsurf-option.md @@ -0,0 +1,5 @@ +--- +"agent-install": patch +--- + +Remove Windsurf from supported skill and AGENTS.md agent options. diff --git a/AGENTS.md b/AGENTS.md index 5cae178..7573674 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -82,4 +82,4 @@ Every PR and push to `main` runs `pnpm build && pnpm typecheck && pnpm lint && p JSONC writes go through `jsonc-parser`'s `modify` so existing comments are preserved. -**AGENTS.md**: markdown-aware section editing. Sections are split by `^#{1,6} heading$` lines. `upsertAgentsMdSection` can `append`, `prepend`, or `replace`. Per-agent variants (`CLAUDE.md`, `GEMINI.md`, `.cursor/rules/*.mdc`, `.windsurfrules`) are resolved from a single `agentsMdFiles` table. +**AGENTS.md**: markdown-aware section editing. Sections are split by `^#{1,6} heading$` lines. `upsertAgentsMdSection` can `append`, `prepend`, or `replace`. Per-agent variants (`CLAUDE.md`, `GEMINI.md`, `.cursor/rules/*.mdc`) are resolved from a single `agentsMdFiles` table. diff --git a/README.md b/README.md index bbd571c..51da12b 100644 --- a/README.md +++ b/README.md @@ -146,7 +146,7 @@ mcp.installMcpServerForAgent(name, config, agent, opts); ### AGENTS.md -`agentsMd` reads, upserts, and removes sections in [AGENTS.md](https://agents.md/) and its per-agent variants (`CLAUDE.md`, `GEMINI.md`, `.cursor/rules/`, `.windsurfrules`, etc.) without losing surrounding content. +`agentsMd` reads, upserts, and removes sections in [AGENTS.md](https://agents.md/) and its per-agent variants (`CLAUDE.md`, `GEMINI.md`, `.cursor/rules/`, etc.) without losing surrounding content. ```ts import { agentsMd } from "agent-install"; @@ -239,11 +239,11 @@ https://mcp.example.com/sse (+ transport: "sse") ## Supported agents -| Surface | Agents | -| --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Skills | 52 agents incl. Claude Code, Cursor, Codex, OpenCode, Gemini CLI, GitHub Copilot, Amp, Antigravity, Augment, Cline, Continue, Crush, Factory Droid, Goose, Junie, Kilo, Kiro CLI, OpenClaw, Pi, Roo, Trae, Warp, Windsurf, Zencoder, universal | -| MCP | Claude Code, Claude Desktop, Cursor, Codex, Cline (ext + CLI), VS Code, GitHub Copilot CLI, Gemini CLI, Goose, OpenCode, Zed, Antigravity, MCPorter | -| AGENTS.md | Universal, Claude Code (CLAUDE.md), Gemini CLI (GEMINI.md), Cursor (.cursor/rules), Windsurf (.windsurfrules), Codex, OpenCode, Aider | +| Surface | Agents | +| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Skills | 50+ agents incl. Claude Code, Cursor, Codex, OpenCode, Gemini CLI, GitHub Copilot, Amp, Antigravity, Augment, Cline, Continue, Crush, Factory Droid, Goose, Junie, Kilo, Kiro CLI, OpenClaw, Pi, Roo, Trae, Warp, Zencoder, universal | +| MCP | Claude Code, Claude Desktop, Cursor, Codex, Cline (ext + CLI), VS Code, GitHub Copilot CLI, Gemini CLI, Goose, OpenCode, Zed, Antigravity, MCPorter | +| AGENTS.md | Universal, Claude Code (CLAUDE.md), Gemini CLI (GEMINI.md), Cursor (.cursor/rules), Codex, OpenCode, Aider | The full list of skill agents lives in [`packages/agent-install/src/skill/agents.ts`](./packages/agent-install/src/skill/agents.ts). Pass `-a ` to target specific agents (or `-a '*'` for all). diff --git a/apps/website/app/page.tsx b/apps/website/app/page.tsx index f18551b..2078274 100644 --- a/apps/website/app/page.tsx +++ b/apps/website/app/page.tsx @@ -24,7 +24,6 @@ const AGENTS = [ { name: "Gemini CLI", flag: "gemini-cli" }, { name: "GitHub Copilot", flag: "github-copilot" }, { name: "Goose", flag: "goose" }, - { name: "Windsurf", flag: "windsurf" }, { name: "Cline", flag: "cline" }, { name: "Claude Desktop", flag: "claude-desktop" }, { name: "VS Code", flag: "vscode" }, @@ -423,7 +422,7 @@ const HomePage = () => { { question: "Which agents are supported?", answer: - "Claude Code, Cursor, Codex, OpenCode, Gemini CLI, GitHub Copilot, Goose, Windsurf, Roo, Cline, Kilo, Claude Desktop, VS Code, Zed, Antigravity, MCPorter, Aider, and more. The supported set differs slightly by surface (skills vs MCP vs AGENTS.md).", + "Claude Code, Cursor, Codex, OpenCode, Gemini CLI, GitHub Copilot, Goose, Roo, Cline, Kilo, Claude Desktop, VS Code, Zed, Antigravity, MCPorter, Aider, and more. The supported set differs slightly by surface (skills vs MCP vs AGENTS.md).", }, { question: "Is the API stable?", diff --git a/apps/website/public/llms.txt b/apps/website/public/llms.txt index 8075cc4..b610d50 100644 --- a/apps/website/public/llms.txt +++ b/apps/website/public/llms.txt @@ -6,9 +6,9 @@ Install agent skills and MCPs with one API. - **Skills** — `SKILL.md` files that trigger agent behavior, copied or symlinked into each agent's skills directory - **MCP servers** — Model Context Protocol servers, written into each agent's native config (JSON, JSONC, YAML, or TOML) with per-agent transforms -- **AGENTS.md** — sectioned guidance for [agents.md](https://agents.md/) and per-agent variants (`CLAUDE.md`, `GEMINI.md`, `.cursor/rules/`, `.windsurfrules`) +- **AGENTS.md** — sectioned guidance for [agents.md](https://agents.md/) and per-agent variants (`CLAUDE.md`, `GEMINI.md`, `.cursor/rules/`) -Works with Claude Code, Cursor, Codex, OpenCode, Gemini CLI, GitHub Copilot, Goose, Windsurf, Roo, Cline, Kilo, Claude Desktop, VS Code, Zed, Antigravity, MCPorter, Aider, and 25+ other agents. +Works with Claude Code, Cursor, Codex, OpenCode, Gemini CLI, GitHub Copilot, Goose, Roo, Cline, Kilo, Claude Desktop, VS Code, Zed, Antigravity, MCPorter, Aider, and 25+ other agents. ## Install @@ -147,7 +147,7 @@ https://mcp.example.com/sse (+ transport: "sse") ## AGENTS.md -`agentsMd` reads, upserts, and removes sections in [AGENTS.md](https://agents.md/) and its per-agent variants (`CLAUDE.md`, `GEMINI.md`, `.cursor/rules/`, `.windsurfrules`) without losing surrounding content. +`agentsMd` reads, upserts, and removes sections in [AGENTS.md](https://agents.md/) and its per-agent variants (`CLAUDE.md`, `GEMINI.md`, `.cursor/rules/`) without losing surrounding content. ```ts import { agentsMd } from "agent-install"; diff --git a/packages/agent-install/README.md b/packages/agent-install/README.md index e30201b..14052bf 100644 --- a/packages/agent-install/README.md +++ b/packages/agent-install/README.md @@ -94,7 +94,6 @@ Known variants (from `agentsMdFiles`): | claude-code | `CLAUDE.md` | | gemini-cli | `GEMINI.md` | | cursor | `.cursor/rules/*.mdc` | -| windsurf | `.windsurfrules` | | codex | `AGENTS.md` | | opencode | `AGENTS.md` | | aider | `AGENTS.md` | diff --git a/packages/agent-install/src/agents-md/known-files.ts b/packages/agent-install/src/agents-md/known-files.ts index aae78ea..0841a2a 100644 --- a/packages/agent-install/src/agents-md/known-files.ts +++ b/packages/agent-install/src/agents-md/known-files.ts @@ -41,13 +41,6 @@ export const agentsMdFiles: Record = { supportsMultipleFiles: false, aliasOf: "AGENTS.md", }, - windsurf: { - agent: "windsurf", - displayName: "Windsurf (.windsurfrules)", - filename: ".windsurfrules", - fileExtension: "txt", - supportsMultipleFiles: false, - }, opencode: { agent: "opencode", displayName: "OpenCode (AGENTS.md)", diff --git a/packages/agent-install/src/agents-md/types.ts b/packages/agent-install/src/agents-md/types.ts index cb97e82..2571563 100644 --- a/packages/agent-install/src/agents-md/types.ts +++ b/packages/agent-install/src/agents-md/types.ts @@ -3,7 +3,6 @@ export type AgentsMdAgent = | "cursor" | "codex" | "gemini-cli" - | "windsurf" | "opencode" | "aider" | "universal"; diff --git a/packages/agent-install/src/skill/agents.ts b/packages/agent-install/src/skill/agents.ts index 333ff08..84d5cb9 100644 --- a/packages/agent-install/src/skill/agents.ts +++ b/packages/agent-install/src/skill/agents.ts @@ -410,13 +410,6 @@ export const skillAgents: Record = { detectInstalled: async () => existsSync(join(home, ".warp")), isUniversal: true, }, - windsurf: { - name: "windsurf", - displayName: "Windsurf", - skillsDir: ".windsurf/skills", - globalSkillsDir: join(home, ".codeium/windsurf/skills"), - detectInstalled: async () => existsSync(join(home, ".codeium/windsurf")), - }, zencoder: { name: "zencoder", displayName: "Zencoder", diff --git a/packages/agent-install/src/skill/skills.ts b/packages/agent-install/src/skill/skills.ts index 56e8c38..e623836 100644 --- a/packages/agent-install/src/skill/skills.ts +++ b/packages/agent-install/src/skill/skills.ts @@ -54,7 +54,6 @@ const PRIORITY_RELATIVE_PATHS: readonly string[] = [ ".tabnine/agent/skills", ".trae/skills", ".vibe/skills", - ".windsurf/skills", ".zencoder/skills", ]; diff --git a/packages/agent-install/src/skill/types.ts b/packages/agent-install/src/skill/types.ts index 83b7f4b..74d4059 100644 --- a/packages/agent-install/src/skill/types.ts +++ b/packages/agent-install/src/skill/types.ts @@ -51,7 +51,6 @@ export type SkillAgentType = | "trae-cn" | "universal" | "warp" - | "windsurf" | "zencoder"; export type SkillSourceType = "local" | "github" | "gitlab" | "git" | "url" | "well-known"; diff --git a/packages/agent-install/test/agents-md-known-files.test.ts b/packages/agent-install/test/agents-md-known-files.test.ts index 5fedcf9..64c8f45 100644 --- a/packages/agent-install/test/agents-md-known-files.test.ts +++ b/packages/agent-install/test/agents-md-known-files.test.ts @@ -15,7 +15,6 @@ describe("agentsMdFiles catalog", () => { "cursor", "codex", "gemini-cli", - "windsurf", "opencode", "aider", ] as const) { @@ -53,7 +52,6 @@ describe("resolveAgentsMdFilePath", () => { it("resolves agent-specific filenames", () => { expect(resolveAgentsMdFilePath({ cwd: "/p", agent: "claude-code" })).toBe("/p/CLAUDE.md"); expect(resolveAgentsMdFilePath({ cwd: "/p", agent: "gemini-cli" })).toBe("/p/GEMINI.md"); - expect(resolveAgentsMdFilePath({ cwd: "/p", agent: "windsurf" })).toBe("/p/.windsurfrules"); }); it("honors an agent with a subdirectory (cursor → .cursor/rules)", () => { diff --git a/packages/agent-install/test/skill-agents.test.ts b/packages/agent-install/test/skill-agents.test.ts index 7fab08c..5773441 100644 --- a/packages/agent-install/test/skill-agents.test.ts +++ b/packages/agent-install/test/skill-agents.test.ts @@ -67,7 +67,6 @@ const REGISTERED_AGENTS = [ "trae-cn", "universal", "warp", - "windsurf", "zencoder", ] as const;