gsd-lite 0.7.3 → 0.7.4

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.
@@ -13,7 +13,7 @@
13
13
  "name": "gsd",
14
14
  "source": "./",
15
15
  "description": "AI orchestration tool — GSD management shell + Superpowers quality core. 5 commands, 4 agents, 5 workflows, MCP server, context monitoring.",
16
- "version": "0.7.3",
16
+ "version": "0.7.4",
17
17
  "keywords": [
18
18
  "orchestration",
19
19
  "mcp",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gsd",
3
- "version": "0.7.3",
3
+ "version": "0.7.4",
4
4
  "description": "AI orchestration tool for Claude Code — GSD management shell + Superpowers quality core",
5
5
  "author": {
6
6
  "name": "sdsrss",
package/install.js CHANGED
@@ -158,17 +158,45 @@ export function main() {
158
158
  }
159
159
  }
160
160
 
161
- // 1. Commands
162
- copyDir(join(__dirname, 'commands'), join(CLAUDE_DIR, 'commands', 'gsd'), 'commands ~/.claude/commands/gsd/');
163
-
164
- // 2. Agents (namespaced under gsd/ to avoid collisions) [I-5]
165
- copyDir(join(__dirname, 'agents'), join(CLAUDE_DIR, 'agents', 'gsd'), 'agents ~/.claude/agents/gsd/');
166
-
167
- // 3. Workflows
168
- copyDir(join(__dirname, 'workflows'), join(CLAUDE_DIR, 'workflows', 'gsd'), 'workflows → ~/.claude/workflows/gsd/');
161
+ // Decide install mode once — plugin-system-managed vs npx/manual.
162
+ // In plugin mode, Claude Code loads commands/agents/workflows/references directly
163
+ // from ~/.claude/plugins/cache/gsd/gsd/<version>/, so writing user-scope copies at
164
+ // ~/.claude/{commands,agents,workflows,references}/gsd/ produces duplicate slash-command
165
+ // entries and silent drift against the plugin cache.
166
+ const isPluginInstall = isInstalledAsPlugin(CLAUDE_DIR);
169
167
 
170
- // 4. References
171
- copyDir(join(__dirname, 'references'), join(CLAUDE_DIR, 'references', 'gsd'), 'references ~/.claude/references/gsd/');
168
+ // 1-4. Commands / agents / workflows / references
169
+ // Only deliver these user-scope copies in non-plugin installs (npx / manual / npm -g),
170
+ // where no plugin cache exists to serve them.
171
+ const userScopeCopies = [
172
+ ['commands', 'commands → ~/.claude/commands/gsd/'],
173
+ ['agents', 'agents → ~/.claude/agents/gsd/'],
174
+ ['workflows', 'workflows → ~/.claude/workflows/gsd/'],
175
+ ['references', 'references → ~/.claude/references/gsd/'],
176
+ ];
177
+ if (isPluginInstall) {
178
+ // Clean up stale copies left by earlier install.js versions (< 0.7.4) that wrote
179
+ // user-scope copies unconditionally. Keeping them around caused 2× skill-list
180
+ // entries and could shadow plugin-cache versions.
181
+ if (!DRY_RUN) {
182
+ for (const [sub] of userScopeCopies) {
183
+ const dest = join(CLAUDE_DIR, sub, 'gsd');
184
+ if (existsSync(dest)) {
185
+ rmSync(dest, { recursive: true, force: true });
186
+ log(` ✓ Removed legacy user-scope ${sub}/gsd/ (served by plugin cache)`);
187
+ }
188
+ }
189
+ } else {
190
+ for (const [sub] of userScopeCopies) {
191
+ const dest = join(CLAUDE_DIR, sub, 'gsd');
192
+ if (existsSync(dest)) log(` [dry-run] Would remove legacy ${dest}`);
193
+ }
194
+ }
195
+ } else {
196
+ for (const [sub, label] of userScopeCopies) {
197
+ copyDir(join(__dirname, sub), join(CLAUDE_DIR, sub, 'gsd'), label);
198
+ }
199
+ }
172
200
 
173
201
  // 5. Hooks (copy scripts only, skip hooks.json to avoid overwriting other plugins)
174
202
  for (const hookFile of HOOK_FILES) {
@@ -213,7 +241,6 @@ export function main() {
213
241
  // When installed as a plugin, the plugin system handles MCP via .mcp.json,
214
242
  // so we skip manual MCP registration to avoid name collisions.
215
243
  const settingsPath = join(CLAUDE_DIR, 'settings.json');
216
- const isPluginInstall = isInstalledAsPlugin(CLAUDE_DIR);
217
244
  if (!DRY_RUN) {
218
245
  let settings = {};
219
246
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gsd-lite",
3
- "version": "0.7.3",
3
+ "version": "0.7.4",
4
4
  "description": "AI orchestration tool for Claude Code — GSD management shell + Superpowers quality core",
5
5
  "type": "module",
6
6
  "bin": {