diff --git a/packages/cli/src/__tests__/spawn-skill.test.ts b/packages/cli/src/__tests__/spawn-skill.test.ts index ac6cf36b..df9bee68 100644 --- a/packages/cli/src/__tests__/spawn-skill.test.ts +++ b/packages/cli/src/__tests__/spawn-skill.test.ts @@ -34,10 +34,18 @@ describe("getSpawnSkillPath", () => { "hermes", "~/.hermes/SOUL.md", ], + [ + "cursor", + "~/.cursor/rules/spawn.md", + ], [ "junie", "~/.junie/AGENTS.md", ], + [ + "pi", + "~/.pi/agent/skills/spawn/SKILL.md", + ], ]; it("returns correct remote path for each known agent", () => { @@ -65,7 +73,9 @@ describe("isAppendMode", () => { "openclaw", "opencode", "kilocode", + "cursor", "junie", + "pi", ]; for (const agent of overwriteAgents) { expect(isAppendMode(agent), `agent "${agent}"`).toBe(false); @@ -83,7 +93,9 @@ describe("getSkillContent", () => { "opencode", "kilocode", "hermes", + "cursor", "junie", + "pi", ]; for (const agent of agents) { @@ -110,7 +122,9 @@ describe("getSkillContent", () => { for (const agent of [ "opencode", "kilocode", + "cursor", "junie", + "pi", ]) { it(`${agent} content is plain markdown (no YAML frontmatter)`, () => { const content = getSkillContent(agent); @@ -180,7 +194,9 @@ describe("injectSpawnSkill", () => { "opencode", "kilocode", "hermes", + "cursor", "junie", + "pi", ]; for (const agent of agents) { let capturedCmd = ""; diff --git a/packages/cli/src/shared/spawn-skill.ts b/packages/cli/src/shared/spawn-skill.ts index f72e0ee0..0d8770c5 100644 --- a/packages/cli/src/shared/spawn-skill.ts +++ b/packages/cli/src/shared/spawn-skill.ts @@ -119,6 +119,11 @@ const AGENT_SKILLS: Record = { content: HERMES_SNIPPET, append: true, }, + cursor: { + remotePath: "~/.cursor/rules/spawn.md", + content: SKILL_BODY, + append: false, + }, junie: { remotePath: "~/.junie/AGENTS.md", content: SKILL_BODY,