opencode-snippets 1.5.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/README.md +72 -3
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +144 -56
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/config.d.ts +13 -2
  6. package/dist/src/config.d.ts.map +1 -1
  7. package/dist/src/config.js +30 -9
  8. package/dist/src/config.js.map +1 -1
  9. package/dist/src/constants.d.ts +7 -0
  10. package/dist/src/constants.d.ts.map +1 -1
  11. package/dist/src/constants.js +7 -0
  12. package/dist/src/constants.js.map +1 -1
  13. package/dist/src/expander.d.ts +13 -4
  14. package/dist/src/expander.d.ts.map +1 -1
  15. package/dist/src/expander.js +29 -11
  16. package/dist/src/expander.js.map +1 -1
  17. package/dist/src/hook-types.d.ts +39 -0
  18. package/dist/src/hook-types.d.ts.map +1 -0
  19. package/dist/src/hook-types.js +5 -0
  20. package/dist/src/hook-types.js.map +1 -0
  21. package/dist/src/injection-manager.d.ts +20 -0
  22. package/dist/src/injection-manager.d.ts.map +1 -0
  23. package/dist/src/injection-manager.js +36 -0
  24. package/dist/src/injection-manager.js.map +1 -0
  25. package/dist/src/shell.d.ts +6 -1
  26. package/dist/src/shell.d.ts.map +1 -1
  27. package/dist/src/shell.js +3 -3
  28. package/dist/src/shell.js.map +1 -1
  29. package/dist/src/skill-loader.d.ts +35 -0
  30. package/dist/src/skill-loader.d.ts.map +1 -0
  31. package/dist/src/skill-loader.js +118 -0
  32. package/dist/src/skill-loader.js.map +1 -0
  33. package/dist/src/skill-renderer.d.ts +14 -0
  34. package/dist/src/skill-renderer.d.ts.map +1 -0
  35. package/dist/src/skill-renderer.js +42 -0
  36. package/dist/src/skill-renderer.js.map +1 -0
  37. package/dist/src/types.d.ts +4 -0
  38. package/dist/src/types.d.ts.map +1 -1
  39. package/package.json +1 -1
  40. package/skill/snippets/SKILL.md +69 -5
package/README.md CHANGED
@@ -120,6 +120,7 @@ Snippets can be global (`~/.config/opencode/snippet/*.md`) or project-specific (
120
120
 
121
121
  Define multiple triggers for the same snippet:
122
122
 
123
+ `~/.config/opencode/snippet/cherry-pick.md`:
123
124
  ```markdown
124
125
  ---
125
126
  aliases:
@@ -151,7 +152,7 @@ Last commit: !`git log -1 --oneline`
151
152
  Working directory: !`pwd`
152
153
  ```
153
154
 
154
- > **Note:** Snippets deviate slightly from the regular slash command behavior. Instead of just passing the command output to the LLM, snippets prepend the command itself:
155
+ > **Note:** By default, snippets show both the command and its output (unlike OpenCode's slash commands which only show output):
155
156
  > ``!`ls` `` →
156
157
  > ```
157
158
  > $ ls
@@ -159,7 +160,7 @@ Working directory: !`pwd`
159
160
  > ```
160
161
  > This tells the LLM which command was actually run and makes failures visible (empty output would otherwise be indistinguishable from success).
161
162
  >
162
- > **TODO:** This behavior should either be PR'd upstream to OpenCode or made configurable in opencode-snippets.
163
+ > To match OpenCode's slash command behavior (output only), set `hideCommandInOutput: true` in your config.
163
164
 
164
165
  ### Recursive Includes
165
166
 
@@ -232,6 +233,70 @@ Use `<prepend>` for content that should appear at the top of your message. Multi
232
233
  - Unclosed tags are handled leniently (rest of content becomes the block)
233
234
  - Nested blocks are not allowed—the hashtag is left unchanged
234
235
 
236
+ ### Inject Blocks (Experimental)
237
+
238
+ Add persistent context that the LLM sees throughout the entire agentic loop, without cluttering your visible message:
239
+
240
+ ```markdown
241
+ ---
242
+ aliases: safe
243
+ ---
244
+ Think step by step.
245
+ <inject>
246
+ IMPORTANT: Double-check all code for security vulnerabilities.
247
+ Always suggest tests for any implementation.
248
+ </inject>
249
+ ```
250
+
251
+ **Input:** `Review this code #safe`
252
+
253
+ **What happens:**
254
+ - Your message shows: `Review this code Think step by step.`
255
+ - The LLM also receives the inject content as a separate context message
256
+ - This context persists for the entire conversation turn (agentic loop)
257
+
258
+ Use inject blocks for rules, constraints, or instructions that should influence all LLM responses without appearing inline in your message.
259
+
260
+ **Enable in config:**
261
+
262
+ ```jsonc
263
+ {
264
+ "experimental": {
265
+ "injectBlocks": true
266
+ }
267
+ }
268
+ ```
269
+
270
+ ### Skill Rendering (Experimental)
271
+
272
+ Inline OpenCode skills directly into your messages using XML-style tags:
273
+
274
+ ```markdown
275
+ Create a Jira ticket. <skill>jira</skill>
276
+ ```
277
+
278
+ Or use the self-closing format:
279
+
280
+ ```markdown
281
+ <skill name="jira" /> Create a ticket for the bug.
282
+ ```
283
+
284
+ **Enable in config:**
285
+
286
+ ```jsonc
287
+ {
288
+ "experimental": {
289
+ "skillRendering": true
290
+ }
291
+ }
292
+ ```
293
+
294
+ Skills are loaded from OpenCode's standard skill directories:
295
+ - **Global**: `~/.config/opencode/skill/<name>/SKILL.md`
296
+ - **Project**: `.opencode/skill/<name>/SKILL.md`
297
+
298
+ When a skill tag is found, it's replaced with the skill's content body (frontmatter stripped). Unknown skills leave the tag unchanged.
299
+
235
300
  ## Example Snippets
236
301
 
237
302
  ### `~/.config/opencode/snippet/context.md`
@@ -296,7 +361,11 @@ A default config file is created automatically on first run.
296
361
  "logging": {
297
362
  "debug": false // Enable debug logging (logs: ~/.config/opencode/logs/snippets/daily/)
298
363
  },
299
- "installSkill": true // Auto-install SKILL.md to ~/.config/opencode/skill/snippets/
364
+ "experimental": {
365
+ "injectBlocks": false, // Enable <inject>...</inject> blocks for persistent context
366
+ "skillRendering": false // Enable <skill>name</skill> tag expansion
367
+ },
368
+ "hideCommandInOutput": false // Show only output for shell commands (hides "$ cmd\n-->")
300
369
  }
301
370
  ```
302
371
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA8ClD;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,EAAE,MAoH5B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAqDlD;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,EAAE,MAmO5B,CAAC"}
package/dist/index.js CHANGED
@@ -1,44 +1,45 @@
1
- import { mkdirSync } from "node:fs";
1
+ import { rmdir, unlink } from "node:fs/promises";
2
2
  import { dirname, join } from "node:path";
3
3
  import { fileURLToPath } from "node:url";
4
4
  import { createCommandExecuteHandler } from "./src/commands.js";
5
5
  import { loadConfig } from "./src/config.js";
6
6
  import { assembleMessage, expandHashtags } from "./src/expander.js";
7
+ import { InjectionManager } from "./src/injection-manager.js";
7
8
  import { loadSnippets } from "./src/loader.js";
8
9
  import { logger } from "./src/logger.js";
9
10
  import { executeShellCommands } from "./src/shell.js";
11
+ import { loadSkills } from "./src/skill-loader.js";
12
+ import { expandSkillTags } from "./src/skill-renderer.js";
10
13
  const __filename = fileURLToPath(import.meta.url);
11
14
  const __dirname = dirname(__filename);
12
15
  const PLUGIN_ROOT = join(__dirname, "..");
13
16
  const SKILL_DIR = join(PLUGIN_ROOT, "skill");
14
- // Install skill to global config directory
15
- async function installSkillToGlobal() {
17
+ /**
18
+ * Clean up legacy skill installation from pre-v1.7.0
19
+ * We used to force-install SKILL.md to ~/.config/opencode/skill/snippets/
20
+ * Now we register the skill path instead, so we remove the orphaned file.
21
+ *
22
+ * TODO: Remove this cleanup code around mid-2026 when most users have upgraded.
23
+ */
24
+ async function cleanupLegacySkillInstall() {
16
25
  const home = process.env.HOME || process.env.USERPROFILE || "";
17
- const globalSkillDir = join(home, ".config", "opencode", "skill", "snippets");
18
- const globalSkillPath = join(globalSkillDir, "SKILL.md");
19
- const sourceSkillPath = join(SKILL_DIR, "snippets", "SKILL.md");
26
+ if (!home)
27
+ return;
28
+ const legacySkillDir = join(home, ".config", "opencode", "skill", "snippets");
29
+ const legacySkillPath = join(legacySkillDir, "SKILL.md");
20
30
  try {
21
- const sourceFile = Bun.file(sourceSkillPath);
22
- if (!(await sourceFile.exists())) {
23
- logger.debug("Source skill not found", { path: sourceSkillPath });
24
- return;
25
- }
26
- // Check if already installed with same content
27
- const globalFile = Bun.file(globalSkillPath);
28
- if (await globalFile.exists()) {
29
- const existing = await globalFile.text();
30
- const source = await sourceFile.text();
31
- if (existing === source) {
32
- logger.debug("Skill already installed", { path: globalSkillPath });
33
- return;
34
- }
31
+ const file = Bun.file(legacySkillPath);
32
+ if (await file.exists()) {
33
+ await unlink(legacySkillPath);
34
+ logger.debug("Cleaned up legacy skill file", { path: legacySkillPath });
35
+ // Try to remove the empty directory too
36
+ await rmdir(legacySkillDir).catch(() => {
37
+ // Directory not empty or doesn't exist - that's fine
38
+ });
35
39
  }
36
- mkdirSync(globalSkillDir, { recursive: true });
37
- await Bun.write(globalSkillPath, sourceFile);
38
- logger.debug("Installed snippets skill", { path: globalSkillPath });
39
40
  }
40
41
  catch (err) {
41
- logger.debug("Failed to install skill", { error: String(err) });
42
+ logger.debug("Failed to cleanup legacy skill", { error: String(err) });
42
43
  }
43
44
  }
44
45
  /**
@@ -54,97 +55,184 @@ export const SnippetsPlugin = async (ctx) => {
54
55
  const config = loadConfig(ctx.directory);
55
56
  // Apply config settings
56
57
  logger.debugEnabled = config.logging.debug;
57
- // Install skill to global config so OpenCode discovers it (if enabled)
58
- if (config.installSkill) {
59
- await installSkillToGlobal();
60
- }
58
+ // Clean up legacy skill installation (pre-v1.7.0)
59
+ cleanupLegacySkillInstall();
61
60
  // Load all snippets at startup (global + project directory)
62
61
  const startupStart = performance.now();
63
62
  const snippets = await loadSnippets(ctx.directory);
63
+ // Load skills if skill rendering is enabled
64
+ let skills = new Map();
65
+ if (config.experimental.skillRendering) {
66
+ skills = await loadSkills(ctx.directory);
67
+ }
64
68
  const startupTime = performance.now() - startupStart;
65
69
  logger.debug("Plugin startup complete", {
66
70
  startupTimeMs: startupTime.toFixed(2),
67
71
  snippetCount: snippets.size,
68
- installSkill: config.installSkill,
72
+ skillCount: skills.size,
73
+ skillRenderingEnabled: config.experimental.skillRendering,
74
+ injectBlocksEnabled: config.experimental.injectBlocks,
69
75
  debugLogging: config.logging.debug,
70
76
  });
71
77
  // Create command handler
72
78
  const commandHandler = createCommandExecuteHandler(ctx.client, snippets, ctx.directory);
79
+ const injectionManager = new InjectionManager();
73
80
  /**
74
- * Processes text parts for snippet expansion and shell command execution
81
+ * Processes text parts for snippet expansion, skill rendering, and shell command execution.
82
+ * Returns collected inject blocks from expanded snippets.
75
83
  */
76
84
  const processTextParts = async (parts) => {
77
85
  const messageStart = performance.now();
78
86
  let expandTimeTotal = 0;
87
+ let skillTimeTotal = 0;
79
88
  let shellTimeTotal = 0;
80
89
  let processedParts = 0;
90
+ const allInjected = [];
91
+ const expandOptions = {
92
+ extractInject: config.experimental.injectBlocks,
93
+ };
81
94
  for (const part of parts) {
82
95
  if (part.type === "text" && part.text) {
83
- // 1. Expand hashtags recursively with loop detection
96
+ // 1. Expand skill tags if skill rendering is enabled
97
+ if (config.experimental.skillRendering && skills.size > 0) {
98
+ const skillStart = performance.now();
99
+ part.text = expandSkillTags(part.text, skills);
100
+ skillTimeTotal += performance.now() - skillStart;
101
+ }
102
+ // 2. Expand hashtags recursively with loop detection
84
103
  const expandStart = performance.now();
85
- const expansionResult = expandHashtags(part.text, snippets);
104
+ const expansionResult = expandHashtags(part.text, snippets, new Map(), expandOptions);
86
105
  part.text = assembleMessage(expansionResult);
87
- const expandTime = performance.now() - expandStart;
88
- expandTimeTotal += expandTime;
89
- // 2. Execute shell commands: !`command`
106
+ allInjected.push(...expansionResult.inject);
107
+ expandTimeTotal += performance.now() - expandStart;
108
+ // 3. Execute shell commands: !`command`
90
109
  const shellStart = performance.now();
91
- part.text = await executeShellCommands(part.text, ctx);
92
- const shellTime = performance.now() - shellStart;
93
- shellTimeTotal += shellTime;
110
+ part.text = await executeShellCommands(part.text, ctx, {
111
+ hideCommandInOutput: config.hideCommandInOutput,
112
+ });
113
+ shellTimeTotal += performance.now() - shellStart;
94
114
  processedParts += 1;
95
115
  }
96
116
  }
97
- const totalTime = performance.now() - messageStart;
98
117
  if (processedParts > 0) {
118
+ const totalTime = performance.now() - messageStart;
99
119
  logger.debug("Text parts processing complete", {
100
120
  totalTimeMs: totalTime.toFixed(2),
121
+ skillTimeMs: skillTimeTotal.toFixed(2),
101
122
  snippetExpandTimeMs: expandTimeTotal.toFixed(2),
102
123
  shellTimeMs: shellTimeTotal.toFixed(2),
103
124
  processedParts,
125
+ injectedCount: allInjected.length,
104
126
  });
105
127
  }
128
+ return allInjected;
106
129
  };
107
130
  return {
108
- // Register /snippet command
131
+ // Register /snippet command and skill path
109
132
  config: async (opencodeConfig) => {
133
+ // Register skill folder path for automatic discovery
134
+ const cfg = opencodeConfig;
135
+ cfg.skills ??= {};
136
+ cfg.skills.paths ??= [];
137
+ cfg.skills.paths.push(SKILL_DIR);
138
+ // Register /snippet command
110
139
  opencodeConfig.command ??= {};
111
140
  opencodeConfig.command.snippet = {
112
141
  template: "",
113
142
  description: "Manage text snippets (add, delete, list, help)",
114
143
  };
115
144
  },
116
- // Handle /snippet command execution
117
145
  "command.execute.before": commandHandler,
118
- "chat.message": async (_input, output) => {
119
- // Only process user messages, never assistant messages
146
+ "chat.message": async (input, output) => {
120
147
  if (output.message.role !== "user")
121
148
  return;
122
- // Skip processing if any part is marked as ignored (e.g., command output)
123
- if (output.parts.some((part) => "ignored" in part && part.ignored))
149
+ if (output.parts.some((part) => part.ignored))
124
150
  return;
125
- await processTextParts(output.parts);
151
+ const injected = await processTextParts(output.parts);
152
+ output.parts.forEach((part) => {
153
+ if (part.type === "text") {
154
+ part.snippetsProcessed = true;
155
+ }
156
+ });
157
+ if (injected.length > 0) {
158
+ injectionManager.addInjections(input.sessionID, injected);
159
+ }
126
160
  },
127
- // Process all messages including question tool responses
128
- "experimental.chat.messages.transform": async (_input, output) => {
161
+ "experimental.chat.messages.transform": async (input, output) => {
162
+ const sessionID = input.sessionID || input.session?.id || output.messages[0]?.info?.sessionID;
163
+ logger.debug("Transform hook called", {
164
+ inputSessionID: input.sessionID,
165
+ extractedSessionID: sessionID,
166
+ messageCount: output.messages.length,
167
+ hasSessionID: !!sessionID,
168
+ });
129
169
  for (const message of output.messages) {
130
- // Only process user messages
131
170
  if (message.info.role === "user") {
132
- // Skip processing if any part is marked as ignored (e.g., command output)
133
- if (message.parts.some((part) => "ignored" in part && part.ignored))
171
+ if (message.parts.some((part) => part.snippetsProcessed))
172
+ continue;
173
+ if (message.parts.some((part) => part.ignored))
134
174
  continue;
135
- await processTextParts(message.parts);
175
+ const injected = await processTextParts(message.parts);
176
+ if (injected.length > 0 && sessionID) {
177
+ injectionManager.addInjections(sessionID, injected);
178
+ }
179
+ }
180
+ }
181
+ if (sessionID) {
182
+ const injections = injectionManager.getInjections(sessionID);
183
+ logger.debug("Transform hook - checking for injections", {
184
+ sessionID,
185
+ hasInjections: !!injections,
186
+ injectionCount: injections?.length || 0,
187
+ messageTexts: output.messages.map((m) => ({
188
+ role: m.info.role,
189
+ text: m.parts
190
+ .filter((p) => p.type === "text")
191
+ .map((p) => (p.text || "").slice(0, 50))
192
+ .join(" | "),
193
+ snippetsProcessed: m.parts.some((p) => p.snippetsProcessed),
194
+ })),
195
+ });
196
+ if (injections && injections.length > 0) {
197
+ const beforeCount = output.messages.length;
198
+ for (const injectText of injections) {
199
+ output.messages.push({
200
+ info: {
201
+ role: "user",
202
+ sessionID: sessionID,
203
+ },
204
+ parts: [{ type: "text", text: injectText }],
205
+ });
206
+ }
207
+ logger.debug("Injected ephemeral user messages", {
208
+ sessionID,
209
+ injectionCount: injections.length,
210
+ messagesBefore: beforeCount,
211
+ messagesAfter: output.messages.length,
212
+ });
136
213
  }
137
214
  }
138
215
  },
139
- // Process skill tool output to expand snippets in skill content
216
+ "session.idle": async (event) => {
217
+ injectionManager.clearSession(event.sessionID);
218
+ },
219
+ // Process skill tool output to expand snippets and skill tags in skill content
140
220
  "tool.execute.after": async (input, output) => {
141
- // Only process the skill tool
142
221
  if (input.tool !== "skill")
143
222
  return;
144
223
  // The skill tool returns markdown content in its output
145
- // Expand hashtags in the skill content
224
+ // Expand skill tags and hashtags in the skill content
146
225
  if (typeof output.output === "string" && output.output.trim()) {
147
- const expansionResult = expandHashtags(output.output, snippets);
226
+ let processed = output.output;
227
+ // First expand skill tags if enabled
228
+ if (config.experimental.skillRendering && skills.size > 0) {
229
+ processed = expandSkillTags(processed, skills);
230
+ }
231
+ // Then expand hashtag snippets
232
+ const expandOptions = {
233
+ extractInject: config.experimental.injectBlocks,
234
+ };
235
+ const expansionResult = expandHashtags(processed, snippets, new Map(), expandOptions);
148
236
  output.output = assembleMessage(expansionResult);
149
237
  logger.debug("Skill content expanded", {
150
238
  tool: input.tool,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -9,14 +9,25 @@ export interface LoggingConfig {
9
9
  /** Enable debug logging to file */
10
10
  debug: boolean;
11
11
  }
12
+ /**
13
+ * Experimental features configuration
14
+ */
15
+ export interface ExperimentalConfig {
16
+ /** Enable skill rendering with <skill>name</skill> or <skill name="name" /> syntax */
17
+ skillRendering: boolean;
18
+ /** Enable <inject>...</inject> blocks for persistent context messages */
19
+ injectBlocks: boolean;
20
+ }
12
21
  /**
13
22
  * Configuration schema for the snippets plugin
14
23
  */
15
24
  export interface SnippetsConfig {
16
25
  /** Logging settings */
17
26
  logging: LoggingConfig;
18
- /** Automatically install SKILL.md to global skill directory */
19
- installSkill: boolean;
27
+ /** Experimental features */
28
+ experimental: ExperimentalConfig;
29
+ /** Hide shell command in output, showing only the result */
30
+ hideCommandInOutput: boolean;
20
31
  }
21
32
  /**
22
33
  * Load and merge configuration from global and project-specific config files
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,mCAAmC;IACnC,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,uBAAuB;IACvB,OAAO,EAAE,aAAa,CAAC;IAEvB,+DAA+D;IAC/D,YAAY,EAAE,OAAO,CAAC;CACvB;AAkGD;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc,CA8B9D;AAiBD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/D"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,mCAAmC;IACnC,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,sFAAsF;IACtF,cAAc,EAAE,OAAO,CAAC;IACxB,yEAAyE;IACzE,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,uBAAuB;IACvB,OAAO,EAAE,aAAa,CAAC;IAEvB,4BAA4B;IAC5B,YAAY,EAAE,kBAAkB,CAAC;IAEjC,4DAA4D;IAC5D,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAoHD;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc,CA+B9D;AA0BD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/D"}
@@ -9,7 +9,11 @@ const DEFAULT_CONFIG = {
9
9
  logging: {
10
10
  debug: false,
11
11
  },
12
- installSkill: true,
12
+ experimental: {
13
+ skillRendering: false,
14
+ injectBlocks: false,
15
+ },
16
+ hideCommandInOutput: false,
13
17
  };
14
18
  /**
15
19
  * Default config file content with comments explaining all options
@@ -27,12 +31,22 @@ const DEFAULT_CONFIG_CONTENT = `{
27
31
  "debug": false
28
32
  },
29
33
 
30
- // Automatically install SKILL.md to global skill directory
31
- // When enabled, the snippets skill is copied to ~/.config/opencode/skill/snippets/
32
- // This enables the LLM to understand how to use snippets
34
+ // Experimental features (may change or be removed)
35
+ "experimental": {
36
+ // Enable skill rendering with <skill>name</skill> or <skill name="name" /> syntax
37
+ // When enabled, skill tags are replaced with the skill's content body
38
+ // Skills are loaded from OpenCode's standard skill directories
39
+ // Values: true, false, "enabled", "disabled"
40
+ // Default: false
41
+ "skillRendering": false
42
+ },
43
+
44
+ // Hide shell command in snippet output
45
+ // When false (default), shell commands show as "$ command\\n--> output"
46
+ // When true, only the output is shown (matching OpenCode's slash command behavior)
33
47
  // Values: true, false, "enabled", "disabled"
34
- // Default: true
35
- "installSkill": true
48
+ // Default: false
49
+ "hideCommandInOutput": false
36
50
  }
37
51
  `;
38
52
  /**
@@ -118,7 +132,8 @@ export function loadConfig(projectDir) {
118
132
  }
119
133
  logger.debug("Final config", {
120
134
  loggingDebug: config.logging.debug,
121
- installSkill: config.installSkill,
135
+ experimentalSkillRendering: config.experimental.skillRendering,
136
+ hideCommandInOutput: config.hideCommandInOutput,
122
137
  });
123
138
  return config;
124
139
  }
@@ -127,12 +142,18 @@ export function loadConfig(projectDir) {
127
142
  */
128
143
  function mergeConfig(base, raw) {
129
144
  const debugValue = normalizeBooleanSetting(raw.logging?.debug);
130
- const installSkillValue = normalizeBooleanSetting(raw.installSkill);
145
+ const skillRenderingValue = normalizeBooleanSetting(raw.experimental?.skillRendering);
146
+ const injectBlocksValue = normalizeBooleanSetting(raw.experimental?.injectBlocks);
147
+ const hideCommandValue = normalizeBooleanSetting(raw.hideCommandInOutput);
131
148
  return {
132
149
  logging: {
133
150
  debug: debugValue !== undefined ? debugValue : base.logging.debug,
134
151
  },
135
- installSkill: installSkillValue !== undefined ? installSkillValue : base.installSkill,
152
+ experimental: {
153
+ skillRendering: skillRenderingValue !== undefined ? skillRenderingValue : base.experimental.skillRendering,
154
+ injectBlocks: injectBlocksValue !== undefined ? injectBlocksValue : base.experimental.injectBlocks,
155
+ },
156
+ hideCommandInOutput: hideCommandValue !== undefined ? hideCommandValue : base.hideCommandInOutput,
136
157
  };
137
158
  }
138
159
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAoCrC;;GAEG;AACH,MAAM,cAAc,GAAmB;IACrC,OAAO,EAAE;QACP,KAAK,EAAE,KAAK;KACb;IACD,YAAY,EAAE,IAAI;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;CAoB9B,CAAC;AAEF;;GAEG;AACH,SAAS,uBAAuB,CAAC,KAAiC;IAChE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,KAAK,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IACvC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,QAAgB;IACtC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QAEnC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,OAAO,MAAmB,CAAC;QAC7B,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,mDAAmD,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC/E,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;YACzC,QAAQ;YACR,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB;IAC/B,gDAAgD;IAChD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QACpC,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,iDAAiD;IACjD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC1C,aAAa,CAAC,KAAK,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;QACzE,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAClF,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CAAC,UAAmB;IAC5C,gDAAgD;IAChD,wBAAwB,EAAE,CAAC;IAE3B,sBAAsB;IACtB,IAAI,MAAM,GAAmB,eAAe,CAAC,cAAc,CAAC,CAAC;IAE7D,qBAAqB;IACrB,IAAI,UAAU,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC9D,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,uDAAuD;IACvD,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;YACzC,MAAM,aAAa,GAAG,cAAc,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAC/D,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE;QAC3B,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK;QAClC,YAAY,EAAE,MAAM,CAAC,YAAY;KAClC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,IAAoB,EAAE,GAAc;IACvD,MAAM,UAAU,GAAG,uBAAuB,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/D,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAEpE,OAAO;QACL,OAAO,EAAE;YACP,KAAK,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;SAClE;QACD,YAAY,EAAE,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY;KACtF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,KAAK,CAAC,kBAAkB,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACrD,OAAO,eAAe,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,13 @@ export declare const PATTERNS: {
6
6
  readonly HASHTAG: RegExp;
7
7
  /** Matches shell commands like !`command` */
8
8
  readonly SHELL_COMMAND: RegExp;
9
+ /**
10
+ * Matches skill tags in two formats:
11
+ * 1. Self-closing: <skill name="skill-name" /> or <skill name='skill-name'/>
12
+ * 2. Block format: <skill>skill-name</skill>
13
+ */
14
+ readonly SKILL_TAG_SELF_CLOSING: RegExp;
15
+ readonly SKILL_TAG_BLOCK: RegExp;
9
16
  };
10
17
  /**
11
18
  * File system paths
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,QAAQ;IACnB,0CAA0C;;IAG1C,6CAA6C;;CAErC,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,KAAK;IAChB,uCAAuC;;IAGvC,yBAAyB;;IAGzB,yBAAyB;;CAEjB,CAAC;AAEX;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM;;;EAMjD;AAED;;GAEG;AACH,eAAO,MAAM,MAAM;IACjB,uCAAuC;;CAE/B,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,QAAQ;IACnB,0CAA0C;;IAG1C,6CAA6C;;IAG7C;;;;OAIG;;;CAGK,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,KAAK;IAChB,uCAAuC;;IAGvC,yBAAyB;;IAGzB,yBAAyB;;CAEjB,CAAC;AAEX;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM;;;EAMjD;AAED;;GAEG;AACH,eAAO,MAAM,MAAM;IACjB,uCAAuC;;CAE/B,CAAC"}
@@ -8,6 +8,13 @@ export const PATTERNS = {
8
8
  HASHTAG: /#([a-z0-9\-_]+)/gi,
9
9
  /** Matches shell commands like !`command` */
10
10
  SHELL_COMMAND: /!`([^`]+)`/g,
11
+ /**
12
+ * Matches skill tags in two formats:
13
+ * 1. Self-closing: <skill name="skill-name" /> or <skill name='skill-name'/>
14
+ * 2. Block format: <skill>skill-name</skill>
15
+ */
16
+ SKILL_TAG_SELF_CLOSING: /<skill\s+name=["']([^"']+)["']\s*\/>/gi,
17
+ SKILL_TAG_BLOCK: /<skill>([^<]+)<\/skill>/gi,
11
18
  };
12
19
  /**
13
20
  * File system paths
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,0CAA0C;IAC1C,OAAO,EAAE,mBAAmB;IAE5B,6CAA6C;IAC7C,aAAa,EAAE,aAAa;CACpB,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,uCAAuC;IACvC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC;IAElD,yBAAyB;IACzB,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC;IAE/D,yBAAyB;IACzB,kBAAkB,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,CAAC;CAC7E,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IAC5D,OAAO;QACL,YAAY,EAAE,UAAU;QACxB,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,uCAAuC;IACvC,iBAAiB,EAAE,KAAK;CAChB,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,0CAA0C;IAC1C,OAAO,EAAE,mBAAmB;IAE5B,6CAA6C;IAC7C,aAAa,EAAE,aAAa;IAE5B;;;;OAIG;IACH,sBAAsB,EAAE,wCAAwC;IAChE,eAAe,EAAE,2BAA2B;CACpC,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,uCAAuC;IACvC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC;IAElD,yBAAyB;IACzB,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC;IAE/D,yBAAyB;IACzB,kBAAkB,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,CAAC;CAC7E,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IAC5D,OAAO;QACL,YAAY,EAAE,UAAU;QACxB,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,uCAAuC;IACvC,iBAAiB,EAAE,KAAK;CAChB,CAAC"}