@nemus-cli/nemus 0.2.4 → 0.2.6

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 (109) hide show
  1. package/CHANGELOG.md +40 -1
  2. package/assets/README.md +5 -0
  3. package/assets/avatar-500.png +0 -0
  4. package/assets/social-preview.png +0 -0
  5. package/dist/cli/ai-prompt.js +1 -1
  6. package/dist/cli/tui.js +1 -1
  7. package/dist/commands/configure.js +1 -1
  8. package/dist/commands/ghq-status.js +1 -1
  9. package/dist/mcp/install.js +12 -12
  10. package/dist/mcp/server.js +2 -2
  11. package/dist/pi-extensions/permission-sync.ts.template +1 -1
  12. package/dist/pi-extensions/permissions-gate.ts.template +1 -1
  13. package/dist/pi-extensions/pr-fix-trigger.ts.template +2 -2
  14. package/dist/pi-extensions/review-reminder.ts.template +1 -1
  15. package/dist/pi-extensions/workspace-input-status.ts.template +3 -3
  16. package/dist/scripts/workspace-table.py +3 -3
  17. package/dist/utils/agent-state.js +1 -1
  18. package/dist/utils/bug-report.js +3 -3
  19. package/dist/utils/claude-integration.js +8 -8
  20. package/dist/utils/permission-sync.js +10 -10
  21. package/dist/utils/pi-extensions.js +5 -5
  22. package/package.json +1 -1
  23. package/skills/analyze-deps.md +0 -10
  24. package/skills/archive-workspace.md +0 -8
  25. package/skills/branch-create.md +0 -10
  26. package/skills/create-workspace.md +0 -20
  27. package/skills/delete-workspace.md +0 -14
  28. package/skills/list-org-repos.md +0 -13
  29. package/skills/list-suites.md +0 -10
  30. package/skills/list-workspaces.md +0 -14
  31. package/skills/nemus/SKILL.md +110 -0
  32. package/skills/{workspace-manager → nemus}/references/ai-prompt.md +0 -14
  33. package/skills/{workspace-manager → nemus}/references/analyze-deps.md +0 -18
  34. package/skills/nemus/references/archive-workspace.md +22 -0
  35. package/skills/{workspace-manager → nemus}/references/branch-create.md +0 -8
  36. package/skills/{workspace-manager → nemus}/references/branch-merge.md +0 -9
  37. package/skills/{workspace-manager → nemus}/references/branch-rebase.md +0 -9
  38. package/skills/{workspace-manager → nemus}/references/cache-clear.md +0 -8
  39. package/skills/{workspace-manager → nemus}/references/cache-info.md +0 -8
  40. package/skills/{workspace-manager → nemus}/references/configure-claude.md +0 -8
  41. package/skills/{workspace-manager → nemus}/references/configure.md +0 -8
  42. package/skills/{workspace-manager → nemus}/references/create-workspace.md +0 -9
  43. package/skills/{workspace-manager → nemus}/references/dashboard.md +0 -15
  44. package/skills/{workspace-manager → nemus}/references/delete-workspace.md +0 -9
  45. package/skills/{workspace-manager → nemus}/references/generate-docs.md +0 -16
  46. package/skills/{workspace-manager → nemus}/references/ghq-status.md +0 -14
  47. package/skills/{workspace-manager → nemus}/references/go.md +0 -11
  48. package/skills/{workspace-manager → nemus}/references/history.md +0 -17
  49. package/skills/{workspace-manager → nemus}/references/list-org-repos.md +0 -9
  50. package/skills/{workspace-manager → nemus}/references/list-suites.md +0 -9
  51. package/skills/{workspace-manager → nemus}/references/list-workspaces.md +0 -9
  52. package/skills/{workspace-manager → nemus}/references/mcp.md +3 -21
  53. package/skills/{workspace-manager → nemus}/references/remove-repo.md +0 -8
  54. package/skills/{workspace-manager → nemus}/references/run-command.md +1 -10
  55. package/skills/{workspace-manager → nemus}/references/search-repos.md +0 -9
  56. package/skills/{workspace-manager → nemus}/references/sessions.md +0 -12
  57. package/skills/{workspace-manager → nemus}/references/suite-create.md +0 -9
  58. package/skills/{workspace-manager → nemus}/references/suite-delete.md +0 -8
  59. package/skills/{workspace-manager → nemus}/references/suite-export.md +0 -9
  60. package/skills/{workspace-manager → nemus}/references/suite-import.md +0 -9
  61. package/skills/{workspace-manager → nemus}/references/suite-use.md +0 -9
  62. package/skills/{workspace-manager → nemus}/references/switch-branch.md +0 -9
  63. package/skills/{workspace-manager → nemus}/references/update-cache.md +0 -8
  64. package/skills/{workspace-manager → nemus}/references/update-workspace.md +0 -11
  65. package/skills/{workspace-manager → nemus}/references/workspace-cleanup.md +0 -9
  66. package/skills/{workspace-manager → nemus}/references/workspace-diff.md +0 -8
  67. package/skills/{workspace-manager → nemus}/references/workspace-doctor.md +0 -9
  68. package/skills/{workspace-manager → nemus}/references/workspace-info.md +0 -8
  69. package/skills/nemus/references/workspace-status.md +26 -0
  70. package/skills/{workspace-manager → nemus}/references/workspace-sync.md +0 -9
  71. package/skills/refresh-workspace-docs.md +5 -81
  72. package/skills/remove-repo.md +0 -8
  73. package/skills/run-command.md +0 -10
  74. package/skills/save-context.md +1 -25
  75. package/skills/search-repos.md +0 -15
  76. package/skills/snapshot-list.md +0 -10
  77. package/skills/snapshot-save.md +0 -4
  78. package/skills/switch-branch.md +0 -10
  79. package/skills/update-cache.md +0 -8
  80. package/skills/update-workspace.md +0 -24
  81. package/skills/workspace-cleanup.md +0 -10
  82. package/skills/workspace-diff.md +0 -10
  83. package/skills/workspace-doctor.md +0 -10
  84. package/skills/workspace-info.md +0 -26
  85. package/skills/workspace-status.md +0 -13
  86. package/skills/workspace-sync.md +0 -10
  87. package/src/cli/ai-prompt.ts +1 -1
  88. package/src/cli/tui.tsx +1 -1
  89. package/src/commands/configure.ts +1 -1
  90. package/src/commands/ghq-status.ts +1 -1
  91. package/src/mcp/install.ts +12 -12
  92. package/src/mcp/server.ts +2 -2
  93. package/src/pi-extensions/permission-sync.ts.template +1 -1
  94. package/src/pi-extensions/permissions-gate.ts.template +1 -1
  95. package/src/pi-extensions/pr-fix-trigger.ts.template +2 -2
  96. package/src/pi-extensions/review-reminder.ts.template +1 -1
  97. package/src/pi-extensions/workspace-input-status.ts.template +3 -3
  98. package/src/scripts/workspace-table.py +3 -3
  99. package/src/utils/agent-state.ts +1 -1
  100. package/src/utils/bug-report.ts +3 -3
  101. package/src/utils/claude-integration.ts +8 -8
  102. package/src/utils/permission-sync.test.ts +4 -4
  103. package/src/utils/permission-sync.ts +10 -10
  104. package/src/utils/pi-extensions.test.ts +1 -1
  105. package/src/utils/pi-extensions.ts +5 -5
  106. package/src/utils/repo-resolver.test.ts +1 -1
  107. package/skills/workspace-manager/SKILL.md +0 -201
  108. package/skills/workspace-manager/references/archive-workspace.md +0 -38
  109. package/skills/workspace-manager/references/workspace-status.md +0 -43
package/CHANGELOG.md CHANGED
@@ -7,6 +7,43 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.2.6] - 2026-08-25
11
+
12
+ ### Changed
13
+
14
+ - **Skills are now command-first ("one shot").** Each skill's body no longer
15
+ restates its frontmatter `description` under a heading before the command — it
16
+ leads straight with the command(s). Cut the skills corpus a further ~25%
17
+ (~1724 → ~1300 lines) with no loss of actual guidance.
18
+ - Fixed an unclosed code fence in the `save-context` skill.
19
+
20
+ ### Added
21
+
22
+ - `assets/social-preview.png` (1280×640) and `assets/avatar-500.png` (500×500)
23
+ for the GitHub repo social preview and org/profile avatar.
24
+
25
+ ## [0.2.5] - 2026-08-25
26
+
27
+ ### Changed
28
+
29
+ - **Simplified the bundled skills.** Removed repetitive ceremony sections
30
+ (`Success Criteria`, `Suggested Follow-ups`, `Presenting Results`, etc.) and
31
+ slimmed the routing `SKILL.md`, cutting the skills corpus ~20% with no loss of
32
+ actual guidance.
33
+ - **Removed the `workspace-manager` name from the code.** The bundled skill
34
+ folder is now `skills/nemus/`, the MCP server registers as **`nemus`** (tools
35
+ are `mcp__nemus__*`, `.mcp.json` key `nemus`), and internal state paths moved
36
+ to `~/.nemus/*` / `~/.nemus-*`. The legacy `WORKSPACE_MANAGER_DIR` /
37
+ `WORKSPACE_MANAGER_CACHE_DIR` env vars and the `~/.workspace-manager-cache`
38
+ migration source are kept for backward compatibility.
39
+
40
+ ### Security
41
+
42
+ - Hardened the CI version-bump reminder to skip fork PRs (whose read-only token
43
+ can't post), confirming the workflows never expose secrets to forks:
44
+ CI runs on `pull_request` (not `pull_request_target`) and `NPM_TOKEN` lives
45
+ only in the push/dispatch-triggered, approval-gated release workflow.
46
+
10
47
  ## [0.2.4] - 2026-08-25
11
48
 
12
49
  ### Changed
@@ -125,7 +162,9 @@ Initial open-source release of **Nemus**.
125
162
  - Automatic retries with backoff on flaky network operations.
126
163
  - Optional shell integration (auto-cd on create + quick-navigate helper).
127
164
 
128
- [Unreleased]: https://github.com/me-public/nemus/compare/v0.2.4...HEAD
165
+ [Unreleased]: https://github.com/me-public/nemus/compare/v0.2.6...HEAD
166
+ [0.2.6]: https://github.com/me-public/nemus/compare/v0.2.5...v0.2.6
167
+ [0.2.5]: https://github.com/me-public/nemus/compare/v0.2.4...v0.2.5
129
168
  [0.2.4]: https://github.com/me-public/nemus/compare/v0.2.3...v0.2.4
130
169
  [0.2.3]: https://github.com/me-public/nemus/compare/v0.2.2...v0.2.3
131
170
  [0.2.2]: https://github.com/me-public/nemus/compare/v0.2.1...v0.2.2
package/assets/README.md CHANGED
@@ -51,3 +51,8 @@ rsvg-convert -w 1280 -h 640 banner.svg -o banner.png
51
51
  ```
52
52
 
53
53
  All artwork is original and released under the project's [MIT license](../LICENSE).
54
+
55
+ ## GitHub images
56
+
57
+ - `social-preview.png` (1280×640) — upload at **Repo → Settings → General → Social preview** (shown in link unfurls).
58
+ - `avatar-500.png` (500×500) — square icon for use as an **org/profile avatar** if desired.
Binary file
Binary file
@@ -200,7 +200,7 @@ function throwExtractionError(cmd, c) {
200
200
  if (c.timedOut) {
201
201
  const secs = Math.round(EXTRACTION_TIMEOUT_MS / 1000);
202
202
  let msg = `${cmd} did not respond within ${secs}s while parsing your request.\n` +
203
- ` This is usually a transient model/provider stall, not a workspace-manager bug.\n` +
203
+ ` This is usually a transient model/provider stall, not a nemus bug.\n` +
204
204
  ` • Verify the agent itself responds quickly: time ${testCmd}\n` +
205
205
  ` • If it's slow, your default model may be heavy (e.g. Opus) or the provider\n` +
206
206
  ` may be rate-limiting/refreshing credentials. Retry, or switch to a faster model.\n` +
package/dist/cli/tui.js CHANGED
@@ -11,7 +11,7 @@ const main = async () => {
11
11
  try {
12
12
  (0, logger_1.logInfo)('Interactive TUI mode');
13
13
  console.log((0, colors_1.colorize)('\n╔══════════════════════════════════════════╗', 'cyan'));
14
- console.log((0, colors_1.colorize)('║ Workspace Manager - Interactive UI ║', 'cyan'));
14
+ console.log((0, colors_1.colorize)('║ Nemus - Interactive UI ║', 'cyan'));
15
15
  console.log((0, colors_1.colorize)('╚══════════════════════════════════════════╝\n', 'cyan'));
16
16
  const workspaces = await (0, workspace_meta_1.listWorkspaces)();
17
17
  if (workspaces.length === 0) {
@@ -56,7 +56,7 @@ function registerConfigureCommand(parent) {
56
56
  }
57
57
  async function handleConfigure() {
58
58
  console.log('\n' + '='.repeat(60));
59
- console.log((0, colors_1.colorize)('Workspace Manager Configuration', 'bright'));
59
+ console.log((0, colors_1.colorize)('Nemus Configuration', 'bright'));
60
60
  console.log('='.repeat(60) + '\n');
61
61
  const current = (0, config_1.getUserConfig)();
62
62
  console.log('Current settings:');
@@ -55,7 +55,7 @@ async function handleGhqStatus() {
55
55
  (0, ghq_integration_1.displayGhqInfo)();
56
56
  }
57
57
  }
58
- console.log((0, colors_1.colorize)('Workspace Manager Behavior:', 'cyan'));
58
+ console.log((0, colors_1.colorize)('Nemus Behavior:', 'cyan'));
59
59
  console.log(' • Auto-detects ghq installation');
60
60
  console.log(' • Uses ghq when available');
61
61
  console.log(' • Falls back to git clone if needed');
@@ -145,12 +145,12 @@ function installHooksAndSkills() {
145
145
  catch { /* ignore */ }
146
146
  }
147
147
  }
148
- // Install workspace-manager skills (MCP + CLI command skills) — always for all active agents
148
+ // Install nemus skills (MCP + CLI command skills) — always for all active agents
149
149
  try {
150
150
  (0, permission_sync_1.installWorkspaceSkills)();
151
151
  }
152
152
  catch (error) {
153
- (0, logger_1.logError)('Failed to install workspace-manager skills');
153
+ (0, logger_1.logError)('Failed to install nemus skills');
154
154
  if (error instanceof Error) {
155
155
  (0, logger_1.logError)(error.message);
156
156
  }
@@ -177,7 +177,7 @@ function installHooksAndSkills() {
177
177
  }
178
178
  /**
179
179
  * Backfill .mcp.json for all existing workspaces that don't have the
180
- * workspace-manager entry yet.
180
+ * nemus entry yet.
181
181
  */
182
182
  async function backfillMcpJson() {
183
183
  const { installMcp } = (0, config_1.getUserConfig)();
@@ -294,9 +294,9 @@ async function install() {
294
294
  const serverPath = getMcpServerPath();
295
295
  (0, logger_1.logInfo)(`MCP server path: ${(0, colors_1.colorize)(serverPath, 'cyan')}`);
296
296
  try {
297
- (0, child_process_1.execSync)(`claude mcp add workspace-manager -s user -- node "${serverPath}"`, { stdio: 'pipe' });
297
+ (0, child_process_1.execSync)(`claude mcp add nemus -s user -- node "${serverPath}"`, { stdio: 'pipe' });
298
298
  (0, logger_1.logSuccess)('MCP server registered globally with Claude Code');
299
- console.log('\nYou can now use workspace-manager tools in any Claude Code session.');
299
+ console.log('\nYou can now use nemus tools in any Claude Code session.');
300
300
  console.log('Try asking: "list my workspaces" or "what\'s the status of my-workspace"');
301
301
  }
302
302
  catch (error) {
@@ -366,13 +366,13 @@ async function upgrade() {
366
366
  (0, logger_1.logSuccess)('Upgrade complete');
367
367
  }
368
368
  function uninstall() {
369
- // Remove workspace-manager skills (from all agent directories)
369
+ // Remove nemus skills (from all agent directories)
370
370
  try {
371
371
  (0, permission_sync_1.uninstallWorkspaceSkills)();
372
372
  (0, logger_1.logSuccess)('Workspace-manager skills removed from all agents');
373
373
  }
374
374
  catch (error) {
375
- (0, logger_1.logError)('Failed to remove workspace-manager skills');
375
+ (0, logger_1.logError)('Failed to remove nemus skills');
376
376
  if (error instanceof Error) {
377
377
  (0, logger_1.logError)(error.message);
378
378
  }
@@ -410,7 +410,7 @@ function uninstall() {
410
410
  // Unregister MCP from Claude (if available)
411
411
  if ((0, agent_config_1.isAgentCliAvailable)('claude')) {
412
412
  try {
413
- (0, child_process_1.execSync)('claude mcp remove workspace-manager -s user', { stdio: 'inherit' });
413
+ (0, child_process_1.execSync)('claude mcp remove nemus -s user', { stdio: 'inherit' });
414
414
  (0, logger_1.logSuccess)('MCP server unregistered from Claude Code');
415
415
  }
416
416
  catch (error) {
@@ -450,10 +450,10 @@ function status() {
450
450
  if (agent.supportsMcp) {
451
451
  try {
452
452
  const output = (0, child_process_1.execSync)('claude mcp list', { encoding: 'utf-8' });
453
- const isRegistered = output.includes('workspace-manager');
453
+ const isRegistered = output.includes('nemus');
454
454
  if (isRegistered) {
455
455
  (0, logger_1.logSuccess)(' MCP server registered');
456
- const lines = output.split('\n').filter(l => l.includes('workspace-manager'));
456
+ const lines = output.split('\n').filter(l => l.includes('nemus'));
457
457
  if (lines.length > 0) {
458
458
  console.log(` ${lines[0].trim()}`);
459
459
  }
@@ -496,7 +496,7 @@ function syncPermissions() {
496
496
  (0, permission_sync_1.syncAllWorkspacePermissions)(config_1.WORKSPACES_DIR);
497
497
  }
498
498
  function updateSkills() {
499
- (0, logger_1.logInfo)('Updating workspace-manager skills...');
499
+ (0, logger_1.logInfo)('Updating nemus skills...');
500
500
  try {
501
501
  (0, permission_sync_1.installWorkspaceSkills)();
502
502
  }
@@ -534,7 +534,7 @@ async function main(subCommandArg) {
534
534
  MCP Integration
535
535
 
536
536
  Usage:
537
- w mcp install Register workspace-manager MCP server with Claude Code
537
+ w mcp install Register nemus MCP server with Claude Code
538
538
  w mcp uninstall Unregister the MCP server
539
539
  w mcp upgrade Update hooks and skills without re-registering the MCP server
540
540
  w mcp update-skills Update only the Claude Code skills (faster than full upgrade)
@@ -14,7 +14,7 @@ const wsName = zod_1.z.string().min(1).max(64).regex(WS_NAME_RE, 'may contain on
14
14
  const tools_1 = require("./tools");
15
15
  const config_1 = require("../utils/config");
16
16
  const server = new mcp_js_1.McpServer({
17
- name: 'workspace-manager',
17
+ name: 'nemus',
18
18
  version: (0, config_1.getPackageVersion)(),
19
19
  });
20
20
  server.tool('list-workspaces', 'List all workspaces with their repo counts and creation dates', {
@@ -390,7 +390,7 @@ server.tool('save-context', 'Save a progress summary to the workspace. Use this
390
390
  async function main() {
391
391
  const transport = new stdio_js_1.StdioServerTransport();
392
392
  await server.connect(transport);
393
- process.stderr.write('workspace-manager MCP server started\n');
393
+ process.stderr.write('nemus MCP server started\n');
394
394
  }
395
395
  main().catch((error) => {
396
396
  process.stderr.write(`MCP server error: ${error}\n`);
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Pi Permission Sync Extension (auto-generated by workspace-manager)
2
+ * Pi Permission Sync Extension (auto-generated by nemus)
3
3
  *
4
4
  * Equivalent of Claude Code's sync-permissions.sh Stop hook.
5
5
  * Syncs project-level permissions to global settings on session shutdown.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Pi Permissions Gate Extension (auto-generated by workspace-manager)
2
+ * Pi Permissions Gate Extension (auto-generated by nemus)
3
3
  *
4
4
  * Equivalent of Claude Code's permission system.
5
5
  * Confirms before running dangerous bash commands.
@@ -1,11 +1,11 @@
1
1
  /**
2
- * Pi PR-Fix Trigger Extension (auto-generated by workspace-manager)
2
+ * Pi PR-Fix Trigger Extension (auto-generated by nemus)
3
3
  *
4
4
  * Equivalent of Claude Code's check-pr-fix-trigger.sh PostToolUse hook.
5
5
  * Detects `gh pr create` in bash tool results, extracts the PR URL,
6
6
  * and injects a directive to monitor CI and address review comments.
7
7
  *
8
- * @managed workspace-manager
8
+ * @managed nemus
9
9
  */
10
10
 
11
11
  import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Pi Review Reminder Extension (auto-generated by workspace-manager)
2
+ * Pi Review Reminder Extension (auto-generated by nemus)
3
3
  *
4
4
  * Equivalent of Claude Code's check-review-reminder.sh SessionStart hook.
5
5
  * Reminds user to review global permissions periodically.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Workspace input status — Claude-Code-style layout (auto-generated by workspace-manager)
2
+ * Workspace input status — Claude-Code-style layout (auto-generated by nemus)
3
3
  *
4
4
  * Layout (matching the Claude Code reference):
5
5
  *
@@ -9,8 +9,8 @@
9
9
  * ⠋ ✦ sonnet-4-6 ⚡ high 📂 ws:foo (3) 🧠 24k/200k 34% 💰 $0.42 ⏱ 2m 5s
10
10
  *
11
11
  * REPO BRANCH PR DIRTY
12
- * workspace-manager-fix-… feat/oauth #41 open ✓
13
- * ▸ workspace-manager-security security/x #45 draft *2
12
+ * nemus-fix-… feat/oauth #41 open ✓
13
+ * ▸ nemus-security security/x #45 draft *2
14
14
  *
15
15
  * [pi's default footer renders below — untouched]
16
16
  *
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python3
2
2
  """
3
- workspace-table.py — Workspace Manager status-line extension for Claude Code
4
- (auto-generated by workspace-manager)
3
+ workspace-table.py — Nemus status-line extension for Claude Code
4
+ (auto-generated by nemus)
5
5
 
6
6
  Outputs ONLY the workspace repo table (branch · PR · CI · dirty state).
7
7
  Claude Code already renders model / cost / context itself, so this script
@@ -10,7 +10,7 @@ adds only what it doesn't show.
10
10
  Configure in ~/.claude/settings.json:
11
11
  "statusLine": {
12
12
  "type": "command",
13
- "command": "~/.workspace-manager-table.py",
13
+ "command": "~/.nemus-table.py",
14
14
  "padding": 0
15
15
  }
16
16
 
@@ -43,7 +43,7 @@ const fs = __importStar(require("fs"));
43
43
  const path = __importStar(require("path"));
44
44
  const os = __importStar(require("os"));
45
45
  const dashboard_1 = require("../types/dashboard");
46
- exports.AGENTS_STATE_DIR = path.join(os.homedir(), '.workspace-manager', 'agents');
46
+ exports.AGENTS_STATE_DIR = path.join(os.homedir(), '.nemus', 'agents');
47
47
  function ensureStateDir() {
48
48
  fs.mkdirSync(exports.AGENTS_STATE_DIR, { recursive: true });
49
49
  }
@@ -183,7 +183,7 @@ function buildIssueBody(err, env) {
183
183
  const sig = errorSignature(err.message, err.stack);
184
184
  const stack = err.stack ? sanitize(err.stack).slice(0, 4000) : '(no stack captured)';
185
185
  return [
186
- `**Auto-reported by workspace-manager.**`,
186
+ `**Auto-reported by nemus.**`,
187
187
  ``,
188
188
  `**Signature:** \`${sig}\``,
189
189
  `**Command:** \`${sanitize(err.command)}\``,
@@ -202,7 +202,7 @@ function buildIssueBody(err, env) {
202
202
  `### Environment`,
203
203
  `| | |`,
204
204
  `|---|---|`,
205
- `| workspace-manager | ${env.version} |`,
205
+ `| nemus | ${env.version} |`,
206
206
  `| node | ${env.node} |`,
207
207
  `| os | ${env.os} |`,
208
208
  `| arch | ${env.arch} |`,
@@ -273,7 +273,7 @@ function ensureLabel() {
273
273
  'label', 'create', exports.BUG_LABEL,
274
274
  '--repo', exports.BUG_REPORT_REPO,
275
275
  '--color', 'B60205',
276
- '--description', 'Auto-reported by workspace-manager',
276
+ '--description', 'Auto-reported by nemus',
277
277
  ], { encoding: 'utf-8', timeout: 15000, stdio: 'ignore' });
278
278
  }
279
279
  catch {
@@ -143,7 +143,7 @@ async function backfillAgentRules(workspacePath, workspaceName) {
143
143
  return updated;
144
144
  }
145
145
  async function loadClaudeConfig() {
146
- const configFile = path.join(process.env.HOME || '~', '.workspace-manager-claude-config.json');
146
+ const configFile = path.join(process.env.HOME || '~', '.nemus-claude-config.json');
147
147
  try {
148
148
  const content = await fs.readFile(configFile, 'utf-8');
149
149
  return { ...DEFAULT_CONFIG, ...JSON.parse(content) };
@@ -156,7 +156,7 @@ async function loadClaudeConfig() {
156
156
  * Save Claude integration config
157
157
  */
158
158
  async function saveClaudeConfig(config) {
159
- const configFile = path.join(process.env.HOME || '~', '.workspace-manager-claude-config.json');
159
+ const configFile = path.join(process.env.HOME || '~', '.nemus-claude-config.json');
160
160
  try {
161
161
  await fs.writeFile(configFile, JSON.stringify(config, null, 2), 'utf-8');
162
162
  }
@@ -201,7 +201,7 @@ async function generateClaudeContext(workspacePath, workspaceName, repos, metada
201
201
  const { githubOrg } = (0, config_1.getUserConfig)();
202
202
  let content = `# Workspace: ${workspaceName}
203
203
 
204
- This workspace was created with [Workspace Manager](https://github.com/${githubOrg}/workspace-manager).
204
+ This workspace was created with [Nemus](https://github.com/${githubOrg}/nemus).
205
205
 
206
206
  ## Organization
207
207
 
@@ -328,7 +328,7 @@ This workspace contains ${entries.length} repositories for focused development w
328
328
  await fs.writeFile(contextFile, fileContent, 'utf-8');
329
329
  (0, logger_1.logSuccess)(`Generated ${(0, colors_1.colorize)(fileName, 'cyan')} with workspace context`);
330
330
  }
331
- // Generate .mcp.json with workspace-manager MCP server (if enabled)
331
+ // Generate .mcp.json with nemus MCP server (if enabled)
332
332
  const { installMcp } = (0, config_1.getUserConfig)();
333
333
  if (installMcp) {
334
334
  await generateMcpConfig(workspacePath);
@@ -410,9 +410,9 @@ function resolveMcpServerPath() {
410
410
  return null;
411
411
  }
412
412
  /**
413
- * Generate .mcp.json with workspace-manager MCP server config.
413
+ * Generate .mcp.json with nemus MCP server config.
414
414
  * This ensures Claude Code sessions in the workspace have access to
415
- * workspace-manager tools even without global MCP registration.
415
+ * nemus tools even without global MCP registration.
416
416
  */
417
417
  async function generateMcpConfig(workspacePath) {
418
418
  try {
@@ -434,14 +434,14 @@ async function generateMcpConfig(workspacePath) {
434
434
  ...existingConfig,
435
435
  mcpServers: {
436
436
  ...(existingConfig.mcpServers || {}),
437
- 'workspace-manager': {
437
+ 'nemus': {
438
438
  command: 'node',
439
439
  args: [serverPath],
440
440
  },
441
441
  },
442
442
  };
443
443
  await fs.writeFile(mcpFile, JSON.stringify(mcpConfig, null, 2) + '\n', 'utf-8');
444
- (0, logger_1.logSuccess)(`Generated ${(0, colors_1.colorize)('.mcp.json', 'cyan')} with workspace-manager MCP server`);
444
+ (0, logger_1.logSuccess)(`Generated ${(0, colors_1.colorize)('.mcp.json', 'cyan')} with nemus MCP server`);
445
445
  return true;
446
446
  }
447
447
  catch (error) {
@@ -404,7 +404,7 @@ function getSkillsSourceDir() {
404
404
  throw new Error('Could not find skills/ directory. Make sure the package is installed correctly.');
405
405
  }
406
406
  /**
407
- * Install all workspace-manager skills from the skills/ directory.
407
+ * Install all nemus skills from the skills/ directory.
408
408
  * Each .md file becomes a skill under <skillsDir>/<skill-name>/SKILL.md.
409
409
  * Installs to all active agent skills directories.
410
410
  * Idempotent — safe to call multiple times.
@@ -449,7 +449,7 @@ function installWorkspaceSkills(skillsDir) {
449
449
  installed++;
450
450
  }
451
451
  if (installed > 0) {
452
- (0, logger_1.logSuccess)(`Installed ${installed} workspace-manager skills in ${targetBase}`);
452
+ (0, logger_1.logSuccess)(`Installed ${installed} nemus skills in ${targetBase}`);
453
453
  }
454
454
  }
455
455
  }
@@ -470,7 +470,7 @@ function copyDirRecursive(src, dest) {
470
470
  }
471
471
  }
472
472
  /**
473
- * Remove all workspace-manager skills from all possible agent directories.
473
+ * Remove all nemus skills from all possible agent directories.
474
474
  * Reads the skills/ source directory to know which skill names to remove.
475
475
  * Removes from both Claude and Pi dirs regardless of current config to avoid orphans.
476
476
  */
@@ -508,7 +508,7 @@ function uninstallWorkspaceSkills(skillsDir) {
508
508
  }
509
509
  // ─── Workspace status-line ────────────────────────────────────────────────────
510
510
  /** Absolute install path for the workspace-table Python script. */
511
- const WORKSPACE_TABLE_SCRIPT = path.join(os.homedir(), '.workspace-manager-table.py');
511
+ const WORKSPACE_TABLE_SCRIPT = path.join(os.homedir(), '.nemus-table.py');
512
512
  /**
513
513
  * Resolve the bundled workspace-table.py path from the installed package.
514
514
  * When compiled, __dirname is dist/utils/; the scripts/ dir is at dist/scripts/.
@@ -530,7 +530,7 @@ function getWorkspaceTableSourcePath() {
530
530
  * Claude Code shows its default footer — the user's existing styling is
531
531
  * never affected.
532
532
  *
533
- * The script is copied to ~/.workspace-manager-table.py and registered in
533
+ * The script is copied to ~/.nemus-table.py and registered in
534
534
  * ~/.claude/settings.json only when no statusLine is already configured —
535
535
  * we never overwrite a custom status line the user already has.
536
536
  *
@@ -541,7 +541,7 @@ function installWorkspaceStatusLine(settingsPath) {
541
541
  const settings = readClaudeSettings(filePath);
542
542
  if (settings.statusLine) {
543
543
  (0, logger_1.logInfo)('statusLine already configured in ~/.claude/settings.json — skipping workspace-table install');
544
- (0, logger_1.logInfo)(` To use workspace-manager\'s table, replace your statusLine command with: ${WORKSPACE_TABLE_SCRIPT}`);
544
+ (0, logger_1.logInfo)(` To use nemus\'s table, replace your statusLine command with: ${WORKSPACE_TABLE_SCRIPT}`);
545
545
  return;
546
546
  }
547
547
  // Copy the script
@@ -566,7 +566,7 @@ function installWorkspaceStatusLine(settingsPath) {
566
566
  }
567
567
  /**
568
568
  * Remove the workspace status-line from Claude Code\'s settings.json.
569
- * Only removes it if the command points to workspace-manager\'s own script.
569
+ * Only removes it if the command points to nemus\'s own script.
570
570
  *
571
571
  * @param settingsPath Override ~/.claude/settings.json (for testing).
572
572
  */
@@ -579,8 +579,8 @@ function uninstallWorkspaceStatusLine(settingsPath) {
579
579
  return;
580
580
  }
581
581
  const cmd = existing.command ?? '';
582
- if (!cmd.includes('workspace-manager-table')) {
583
- (0, logger_1.logInfo)('statusLine is not managed by workspace-manager — leaving it unchanged');
582
+ if (!cmd.includes('nemus-table')) {
583
+ (0, logger_1.logInfo)('statusLine is not managed by nemus — leaving it unchanged');
584
584
  return;
585
585
  }
586
586
  delete settings.statusLine;
@@ -605,7 +605,7 @@ function extractScriptPath(command) {
605
605
  return bare ? bare[1] : null;
606
606
  }
607
607
  /**
608
- * Detect and repair workspace-manager hook commands in ~/.claude/settings.json
608
+ * Detect and repair nemus hook commands in ~/.claude/settings.json
609
609
  * that point to script paths which no longer exist on disk.
610
610
  *
611
611
  * This happens when the package is installed via a manager (e.g. Volta) whose
@@ -51,8 +51,8 @@ const path = __importStar(require("path"));
51
51
  const os = __importStar(require("os"));
52
52
  const logger_1 = require("./logger");
53
53
  const PI_EXTENSIONS_DIR = path.join(os.homedir(), '.pi', 'agent', 'extensions');
54
- /** Marker comment that identifies workspace-manager managed extensions */
55
- const MANAGED_MARKER = '(auto-generated by workspace-manager)';
54
+ /** Marker comment that identifies nemus managed extensions */
55
+ const MANAGED_MARKER = '(auto-generated by nemus)';
56
56
  function getTemplatesDir() {
57
57
  // When compiled: dist/utils/ -> dist/pi-extensions/
58
58
  const distPath = path.resolve(__dirname, '..', 'pi-extensions');
@@ -108,7 +108,7 @@ function getExtensionTemplates(options = {}) {
108
108
  return templates;
109
109
  }
110
110
  /**
111
- * Install all workspace-manager Pi extensions.
111
+ * Install all nemus Pi extensions.
112
112
  * Idempotent — overwrites existing managed extensions with latest templates.
113
113
  *
114
114
  * @param extensionsDir Override the extensions directory (for testing).
@@ -150,14 +150,14 @@ function installPiExtensions(extensionsDir, options = {}) {
150
150
  }
151
151
  }
152
152
  /**
153
- * Uninstall workspace-manager managed Pi extensions.
153
+ * Uninstall nemus managed Pi extensions.
154
154
  * Only removes extensions that contain the managed marker or match
155
155
  * known installed names.
156
156
  *
157
157
  * @param extensionsDir Override the extensions directory (for testing).
158
158
  */
159
159
  /**
160
- * Uninstall workspace-manager managed Pi extensions.
160
+ * Uninstall nemus managed Pi extensions.
161
161
  * Pass `onlyNames` to remove only specific extension files (for opt-out).
162
162
  *
163
163
  * @param extensionsDir Override the extensions directory (for testing).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nemus-cli/nemus",
3
- "version": "0.2.4",
3
+ "version": "0.2.6",
4
4
  "description": "Nemus — a CLI for managing multi-repository workspaces. Create, sync, and operate across dozens of repos with a single command, and wire them up to your favorite coding agent.",
5
5
  "keywords": [
6
6
  "workspace",
@@ -3,12 +3,6 @@ name: analyze-deps
3
3
  description: Analyze inter-repository dependencies in a workspace
4
4
  ---
5
5
 
6
- # Analyze Dependencies
7
-
8
- Analyze inter-repository dependencies in a workspace.
9
-
10
- ## Running
11
-
12
6
  ```bash
13
7
  nemus analyze-deps <workspace-name>
14
8
  ```
@@ -17,7 +11,3 @@ Or for the current workspace:
17
11
  ```bash
18
12
  nemus analyze-deps
19
13
  ```
20
-
21
- ## Presenting Results
22
-
23
- Report dependency relationships between repos (which repos depend on which via package.json).
@@ -3,18 +3,10 @@ name: archive-workspace
3
3
  description: Archive or unarchive a workspace
4
4
  ---
5
5
 
6
- # Archive Workspace
7
-
8
- Archive or unarchive a workspace.
9
-
10
- ## Archiving
11
-
12
6
  ```bash
13
7
  nemus archive <workspace-name>
14
8
  ```
15
9
 
16
- ## Unarchiving
17
-
18
10
  ```bash
19
11
  nemus archive --unarchive <workspace-name>
20
12
  ```
@@ -3,16 +3,6 @@ name: branch-create
3
3
  description: Create a new branch across all repos in a workspace
4
4
  ---
5
5
 
6
- # Branch Create
7
-
8
- Create a new branch across all repos in a workspace.
9
-
10
- ## Running
11
-
12
6
  ```bash
13
7
  nemus branch create <workspace-name> <branch-name>
14
8
  ```
15
-
16
- ## Presenting Results
17
-
18
- Report which repos had the branch created successfully and any that failed.
@@ -3,19 +3,11 @@ name: create-workspace
3
3
  description: Create a new multi-repo workspace by cloning repositories from the org using `nemus create`. ALWAYS use this skill — never run `git clone` directly — when the user asks to create a workspace, set up a new workspace, or start fresh with a set of repos.
4
4
  ---
5
5
 
6
- # Create Workspace
7
-
8
- Create a new workspace by cloning repositories.
9
-
10
- ## Resolving Repositories
11
-
12
6
  If the user hasn't specified which repos to clone, help them discover:
13
7
  ```bash
14
8
  nemus cache search <keyword>
15
9
  ```
16
10
 
17
- ## Creating the Workspace
18
-
19
11
  Run non-interactively:
20
12
  ```bash
21
13
  nemus create --workspace <name> --repos <repo1,repo2,...> --yes
@@ -25,15 +17,3 @@ Or interactively (prompts for workspace name and repos):
25
17
  ```bash
26
18
  nemus create
27
19
  ```
28
-
29
- ## Presenting Results
30
-
31
- Report:
32
- - Workspace created at path
33
- - Successfully cloned repos
34
- - Any failures with their error reason
35
-
36
- ## Suggested Follow-ups
37
-
38
- - `nemus status <name>` to verify
39
- - `nemus update --workspace <name> --repos <more-repos>` to add more repos later
@@ -3,19 +3,11 @@ name: delete-workspace
3
3
  description: Delete one or more workspaces and all their contents permanently
4
4
  ---
5
5
 
6
- # Delete Workspace
7
-
8
- Delete one or more workspaces permanently.
9
-
10
- ## Resolving the Workspace
11
-
12
6
  If the user hasn't specified which workspace to delete:
13
7
  ```bash
14
8
  nemus list 2>&1 | cat
15
9
  ```
16
10
 
17
- ## Deleting
18
-
19
11
  Run non-interactively:
20
12
  ```bash
21
13
  nemus delete --workspace <name> --yes
@@ -26,12 +18,6 @@ Or interactively (prompts for confirmation):
26
18
  nemus delete
27
19
  ```
28
20
 
29
- ## Important Notes
30
-
31
21
  - This permanently removes the workspace directory and all its contents
32
22
  - There is no undo — repos will need to be re-cloned
33
23
  - Always confirm with the user before deleting
34
-
35
- ## Suggested Follow-ups
36
-
37
- - `nemus list` to verify the workspace is gone