@tiens.nguyen/gu-cli 1.0.810 → 1.0.811

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.
package/gu-repl.mjs CHANGED
@@ -972,7 +972,7 @@ function currentSkills() {
972
972
  }
973
973
  const skillCommands = () =>
974
974
  currentSkills()
975
- .filter((s) => s.slash)
975
+ .filter((s) => s.slash && !s.hidden) // hidden = internal skill: still typeable, not offered (#118)
976
976
  .map((s) => ({ name: `/${s.name}`, usage: `/${s.name} [request]`, desc: `skill — ${firstSentence(s.description)}`, skill: true }));
977
977
  /** A skill's description is written for the MODEL and often runs a paragraph; /help shows one line. */
978
978
  function firstSentence(text, max = 100) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tiens.nguyen/gu-cli",
3
- "version": "1.0.810",
3
+ "version": "1.0.811",
4
4
  "description": "Gu CLI — the gu terminal plus the local worker that runs agent / OCR / PDF / embedding jobs on your Mac (Ollama / MLX / OpenAI-compatible).",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/skills.mjs CHANGED
@@ -138,6 +138,12 @@ function scanDir(dir, scope) {
138
138
  return { skills, warnings };
139
139
  }
140
140
 
141
+ /**
142
+ * Internal skills the agent loads itself through use_skill. They are NOT offered in the `/` menu,
143
+ * Tab-completion or /help (hidden), but typing /<name> still works (issue #118).
144
+ */
145
+ export const HIDDEN_SKILLS = ["gu-session-memory-orchestration"];
146
+
141
147
  /**
142
148
  * Every skill that exists right now. `reserved` = names that are already commands (/help, /mcp…):
143
149
  * the built-in wins, and the skill is still usable by the agent, just not as a slash command —
@@ -161,7 +167,7 @@ export function discoverSkills({ cwd = process.cwd(), home = homedir(), reserved
161
167
  const taken = new Set(reserved.map((r) => r.replace(/^\//, "")));
162
168
  const skills = [...byName.values()]
163
169
  .sort((a, b) => a.name.localeCompare(b.name))
164
- .map((s) => ({ ...s, slash: !taken.has(s.name), source: src }));
170
+ .map((s) => ({ ...s, slash: !taken.has(s.name), hidden: HIDDEN_SKILLS.includes(s.name), source: src }));
165
171
  return { skills, warnings: [...user.warnings, ...project.warnings], source: src };
166
172
  }
167
173