From b5a710c9b20441e600df403535a2c1dc626ee7c2 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Mon, 22 Dec 2025 18:20:47 -0500 Subject: [PATCH] sync --- packages/opencode/src/session/prompt.ts | 6 +-- packages/opencode/src/session/system.ts | 39 ------------------- packages/opencode/test/skill/skill.test.ts | 45 ---------------------- 3 files changed, 1 insertion(+), 89 deletions(-) diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index 2950b8e22..748851b4f 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -532,11 +532,7 @@ export namespace SessionPrompt { agent, abort, sessionID, - system: [ - ...(await SystemPrompt.environment()), - ...(tools.skill ? await SystemPrompt.skills(agent.name) : []), - ...(await SystemPrompt.custom()), - ], + system: [...(await SystemPrompt.environment()), ...(await SystemPrompt.custom())], messages: [ ...MessageV2.toModelMessage(sessionMessages), ...(isLastStep diff --git a/packages/opencode/src/session/system.ts b/packages/opencode/src/session/system.ts index 8b9d51604..300943881 100644 --- a/packages/opencode/src/session/system.ts +++ b/packages/opencode/src/session/system.ts @@ -14,7 +14,6 @@ import PROMPT_POLARIS from "./prompt/polaris.txt" import PROMPT_BEAST from "./prompt/beast.txt" import PROMPT_GEMINI from "./prompt/gemini.txt" import PROMPT_ANTHROPIC_SPOOF from "./prompt/anthropic_spoof.txt" -import PROMPT_COMPACTION from "./prompt/compaction.txt" import PROMPT_CODEX from "./prompt/codex.txt" import type { Provider } from "@/provider/provider" @@ -118,42 +117,4 @@ export namespace SystemPrompt { ) return Promise.all(found).then((result) => result.filter(Boolean)) } - - export async function skills(agentName?: string) { - const all = await Skill.all() - if (all.length === 0) return [] - - // Filter skills by agent permission if agent name provided - let filtered = all - if (agentName) { - const { Agent } = await import("../agent/agent") - const { Wildcard } = await import("../util/wildcard") - const agent = await Agent.get(agentName) - if (agent) { - const permissions = agent.permission.skill - filtered = all.filter((skill) => { - const action = Wildcard.all(skill.id, permissions) - return action !== "deny" - }) - } - } - - if (filtered.length === 0) return [] - - const lines = [ - "You have access to skills listed in ``. When a task matches a skill's description, use the skill tool to load detailed instructions.", - "", - "", - ] - for (const skill of filtered) { - lines.push(" ") - lines.push(` ${skill.id}`) - lines.push(` ${skill.name}`) - lines.push(` ${skill.description}`) - lines.push(" ") - } - lines.push("") - - return [lines.join("\n")] - } } diff --git a/packages/opencode/test/skill/skill.test.ts b/packages/opencode/test/skill/skill.test.ts index 859e45880..4a1d75f9f 100644 --- a/packages/opencode/test/skill/skill.test.ts +++ b/packages/opencode/test/skill/skill.test.ts @@ -101,51 +101,6 @@ test("returns empty array when no skills exist", async () => { }) }) -test("SystemPrompt.skills() returns empty array when no skills", async () => { - await using tmp = await tmpdir({ git: true }) - - await Instance.provide({ - directory: tmp.path, - fn: async () => { - const result = await SystemPrompt.skills() - expect(result).toEqual([]) - }, - }) -}) - -test("SystemPrompt.skills() returns XML block with skills", async () => { - await using tmp = await tmpdir({ - git: true, - init: async (dir) => { - const skillDir = path.join(dir, ".opencode", "skill", "example-skill") - await Bun.write( - path.join(skillDir, "SKILL.md"), - `--- -name: example-skill -description: An example skill for testing XML output. ---- - -# Example -`, - ) - }, - }) - - await Instance.provide({ - directory: tmp.path, - fn: async () => { - const result = await SystemPrompt.skills() - expect(result.length).toBe(1) - expect(result[0]).toContain("") - - expect(result[0]).toContain("example-skill") - expect(result[0]).toContain("An example skill for testing XML output.") - expect(result[0]).toContain("") - expect(result[0]).toContain("use the skill tool") - }, - }) -}) - // test("discovers skills from .claude/skills/ directory", async () => { // await using tmp = await tmpdir({ // git: true,