From 2c6744b10c1b41757bf181adb1115ed43f194523 Mon Sep 17 00:00:00 2001 From: datarian Date: Sun, 14 Jun 2026 21:34:49 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20Cursor=20works=20natively=20=E2=80=94?= =?UTF-8?q?=20correct=20multi-agent=20docs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Research confirms Cursor reads `.agents/skills/` as a project-level skill location AND `AGENTS.md` from the repo root, both with zero config. So Cursor needs no adapter — and must NOT get a `.cursor/skills` symlink, which would double-discover every skill alongside the natively-read `.agents/skills/`. - README: Cursor row -> "works natively, no config" (was "symlink + adapter pending"); note that `context: fork` isn't honored by Cursor today, so the review skills run in the main context there (review still happens). - AGENTS.md: group Pi + Cursor as native `.agents/skills/` readers; only Gemini CLI still needs a symlink adapter. Co-Authored-By: Claude Opus 4.8 --- AGENTS.md | 7 ++++--- README.md | 6 ++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index e26dd3b..b072980 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -32,9 +32,10 @@ across Claude Code, Gemini CLI, Cursor, and Pi. market analysis, strategy, content generation, PDF render, content/design review) and `swiss-tech-resume-setup`. The two review skills (`resume-content-review`, `resume-design-review`) declare `context: fork` so they review with fresh eyes. -- Per-agent skill directories (`.claude/skills/`, and later `.gemini/skills/`, - `.cursor/skills/`) are **symlinks** into `.agents/skills/`. Pi reads `.agents/skills/` - natively. Edit skills only in `.agents/skills/`. +- **Pi and Cursor read `.agents/skills/` natively** (no config — just open/run in a clone). + **Claude Code** uses the `.claude/skills/` symlink into `.agents/skills/` (plus the plugin + manifest). **Gemini CLI** needs a `.gemini/skills/` symlink into `.agents/skills/` (adapter + pending). Either way, edit skills only in `.agents/skills/` — never through a symlink. - `.claude-plugin/` - Claude Code plugin + marketplace manifests (points `skills` at `.agents/skills/`). - `docs/PERSONAL_PROFILE.md` - **Primary data source** (private, gitignored). Built and diff --git a/README.md b/README.md index e4b16ad..c1a8c57 100644 --- a/README.md +++ b/README.md @@ -197,7 +197,7 @@ cd CV | **Claude Code** | Install as a plugin (above), or run in a clone — skills resolve via `.claude/skills/` (symlink) and the plugin manifest. | | **Pi** | Run `pi` inside the clone — skills under `.agents/skills/` are auto-discovered (no config). Or install remotely: `pi install git:github.com/datarian/CV` (the root `package.json` declares `pi.skills`). | | **Gemini CLI** | Symlink `.gemini/skills → ../.agents/skills` and point Gemini at `AGENTS.md` via `.gemini/settings.json`. *(adapter pending)* | -| **Cursor** | Symlink `.cursor/skills → ../.agents/skills`; `AGENTS.md` is read natively. *(adapter pending)* | +| **Cursor** | Open the clone in Cursor — `.agents/skills/` and `AGENTS.md` are both read natively (no config). | Then ask the same things you would in Claude Code (e.g. *"Build me a Swiss-market resume for Senior ML Engineer roles"*); invoke the orchestrator explicitly with `/skill:swiss-tech-resume-builder` @@ -208,7 +208,9 @@ where your agent supports it. > configured per-agent (`.claude/.mcp.json` for Claude Code; Pi/Gemini/Cursor MCP wiring is a > documented follow-up). The mandatory render constraints (moderncv `fancy`, XeLaTeX-only, 6-arg > `\cventry`, GitHub footer) live inside the render skill itself, so they hold on every agent even -> if it doesn't read `AGENTS.md`. +> if it doesn't read `AGENTS.md`. The two review skills declare `context: fork` for isolation; where +> an agent doesn't honor that field (e.g. Cursor today), they simply run in the main context — the +> review still happens, just without a separate forked turn. ## Your data stays private