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 +8 -3
- package/cli/dist/index.cjs +36 -1
- package/cli/dist/index.cjs.map +1 -1
- package/cli/package.json +1 -1
- package/package.json +1 -1
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
|
|
package/cli/dist/index.cjs
CHANGED
|
@@ -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
|
|
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;
|