xtrm-tools 2.4.0 → 2.4.1

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/README.md CHANGED
@@ -142,14 +142,19 @@ xtrm <command> [options]
142
142
 
143
143
  ## MCP Servers
144
144
 
145
- Configured in `.mcp.json`:
145
+ Configured in `.mcp.json` (xtrm-managed only):
146
146
 
147
147
  | Server | Purpose |
148
148
  |--------|---------|
149
- | `serena` | Code analysis via LSP |
150
- | `context7` | Documentation lookup |
151
149
  | `gitnexus` | Knowledge graph |
152
150
  | `github-grep` | Code search |
151
+ | `deepwiki` | DeepWiki docs search |
152
+
153
+ Official Claude plugins are installed during `xtrm install all`:
154
+ - `serena@claude-plugins-official`
155
+ - `context7@claude-plugins-official`
156
+ - `github@claude-plugins-official`
157
+ - `ralph-loop@claude-plugins-official`
153
158
 
154
159
  ---
155
160
 
@@ -41903,10 +41903,44 @@ async function needsSettingsSync(repoRoot, target) {
41903
41903
  }
41904
41904
  return requiredEvents.some((event) => !(event in targetHooks));
41905
41905
  }
41906
+ var OFFICIAL_CLAUDE_MARKETPLACE = "https://github.com/anthropics/claude-plugins-official";
41907
+ var OFFICIAL_CLAUDE_PLUGINS = [
41908
+ "serena@claude-plugins-official",
41909
+ "context7@claude-plugins-official",
41910
+ "github@claude-plugins-official",
41911
+ "ralph-loop@claude-plugins-official"
41912
+ ];
41913
+ async function installOfficialClaudePlugins(dryRun) {
41914
+ console.log(t.bold("\n \u2699 official Claude plugins (serena/context7/github/ralph-loop)"));
41915
+ if (dryRun) {
41916
+ console.log(t.accent(" [DRY RUN] Would register claude-plugins-official marketplace and install official plugins\n"));
41917
+ return;
41918
+ }
41919
+ (0, import_child_process5.spawnSync)("claude", ["plugin", "marketplace", "add", OFFICIAL_CLAUDE_MARKETPLACE, "--scope", "user"], { stdio: "pipe" });
41920
+ const listResult = (0, import_child_process5.spawnSync)("claude", ["plugin", "list"], { encoding: "utf8", stdio: "pipe" });
41921
+ const installedOutput = listResult.stdout ?? "";
41922
+ let installedCount = 0;
41923
+ let alreadyInstalledCount = 0;
41924
+ for (const pluginId of OFFICIAL_CLAUDE_PLUGINS) {
41925
+ if (installedOutput.includes(pluginId)) {
41926
+ alreadyInstalledCount += 1;
41927
+ continue;
41928
+ }
41929
+ const result = (0, import_child_process5.spawnSync)("claude", ["plugin", "install", pluginId, "--scope", "user"], { stdio: "inherit" });
41930
+ if (result.status === 0) {
41931
+ installedCount += 1;
41932
+ } else {
41933
+ console.log(t.warning(` ! Failed to install ${pluginId}. Install manually: claude plugin install ${pluginId} --scope user`));
41934
+ }
41935
+ }
41936
+ console.log(t.success(` \u2713 Official plugins ready (${installedCount} installed, ${alreadyInstalledCount} already present)
41937
+ `));
41938
+ }
41906
41939
  async function installPlugin(repoRoot, dryRun) {
41907
41940
  console.log(t.bold("\n \u2699 xtrm-tools (Claude Code plugin)"));
41908
41941
  if (dryRun) {
41909
41942
  console.log(t.accent(" [DRY RUN] Would register xtrm-tools marketplace and install plugin\n"));
41943
+ await installOfficialClaudePlugins(true);
41910
41944
  return;
41911
41945
  }
41912
41946
  (0, import_child_process5.spawnSync)("claude", ["plugin", "marketplace", "add", repoRoot, "--scope", "user"], { stdio: "pipe" });
@@ -41915,7 +41949,8 @@ async function installPlugin(repoRoot, dryRun) {
41915
41949
  (0, import_child_process5.spawnSync)("claude", ["plugin", "uninstall", "xtrm-tools@xtrm-tools"], { stdio: "inherit" });
41916
41950
  }
41917
41951
  (0, import_child_process5.spawnSync)("claude", ["plugin", "install", "xtrm-tools@xtrm-tools", "--scope", "user"], { stdio: "inherit" });
41918
- console.log(t.success(" \u2713 xtrm-tools plugin installed\n"));
41952
+ console.log(t.success(" \u2713 xtrm-tools plugin installed"));
41953
+ await installOfficialClaudePlugins(false);
41919
41954
  }
41920
41955
  async function runGlobalInstall(flags, installOpts = {}) {
41921
41956
  const { dryRun, yes, noMcp, force } = flags;