@nemus-cli/nemus 0.2.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.
Files changed (320) hide show
  1. package/CHANGELOG.md +86 -0
  2. package/LICENSE +21 -0
  3. package/README.md +275 -0
  4. package/assets/README.md +53 -0
  5. package/assets/banner.png +0 -0
  6. package/assets/banner.svg +66 -0
  7. package/assets/favicon-32.png +0 -0
  8. package/assets/favicon-64.png +0 -0
  9. package/assets/icon-256.png +0 -0
  10. package/assets/icon.svg +23 -0
  11. package/assets/logo-256.png +0 -0
  12. package/assets/logo-512.png +0 -0
  13. package/assets/logo-wordmark.svg +35 -0
  14. package/assets/logo.svg +32 -0
  15. package/bin/workspace.js +130 -0
  16. package/dist/cli/ai-prompt.js +421 -0
  17. package/dist/cli/dashboard/AgentList.js +61 -0
  18. package/dist/cli/dashboard/DashboardSidebar.js +280 -0
  19. package/dist/cli/dashboard/HelpFooter.js +73 -0
  20. package/dist/cli/dashboard/StatusBadge.js +50 -0
  21. package/dist/cli/dashboard/index.js +11 -0
  22. package/dist/cli/dashboard/types.js +2 -0
  23. package/dist/cli/tui.js +48 -0
  24. package/dist/commands/ai-prompt.js +22 -0
  25. package/dist/commands/analyze-deps.js +138 -0
  26. package/dist/commands/archive.js +113 -0
  27. package/dist/commands/branch/create.js +119 -0
  28. package/dist/commands/branch/index.js +104 -0
  29. package/dist/commands/branch/merge.js +90 -0
  30. package/dist/commands/branch/rebase.js +84 -0
  31. package/dist/commands/branch/switch.js +165 -0
  32. package/dist/commands/cache/index.js +80 -0
  33. package/dist/commands/cache/manager.js +198 -0
  34. package/dist/commands/cleanup.js +153 -0
  35. package/dist/commands/configure-claude.js +55 -0
  36. package/dist/commands/configure.js +231 -0
  37. package/dist/commands/create.js +204 -0
  38. package/dist/commands/dashboard/hook-handler.js +162 -0
  39. package/dist/commands/dashboard/index.js +258 -0
  40. package/dist/commands/dashboard/launcher.js +40 -0
  41. package/dist/commands/dashboard/session-picker.js +106 -0
  42. package/dist/commands/dashboard/sidebar.js +39 -0
  43. package/dist/commands/dashboard/workspace-picker.js +95 -0
  44. package/dist/commands/delete.js +194 -0
  45. package/dist/commands/deprecated-aliases.js +44 -0
  46. package/dist/commands/diff.js +129 -0
  47. package/dist/commands/doctor.js +141 -0
  48. package/dist/commands/generate-docs.js +77 -0
  49. package/dist/commands/ghq-status.js +72 -0
  50. package/dist/commands/go.js +154 -0
  51. package/dist/commands/history.js +124 -0
  52. package/dist/commands/list.js +191 -0
  53. package/dist/commands/mcp/index.js +69 -0
  54. package/dist/commands/migrate.js +296 -0
  55. package/dist/commands/remove-repo.js +217 -0
  56. package/dist/commands/report-bug.js +112 -0
  57. package/dist/commands/run.js +147 -0
  58. package/dist/commands/save-context.js +171 -0
  59. package/dist/commands/sessions.js +129 -0
  60. package/dist/commands/status.js +138 -0
  61. package/dist/commands/suite/create.js +212 -0
  62. package/dist/commands/suite/delete.js +64 -0
  63. package/dist/commands/suite/export.js +126 -0
  64. package/dist/commands/suite/import.js +128 -0
  65. package/dist/commands/suite/index.js +94 -0
  66. package/dist/commands/suite/list.js +49 -0
  67. package/dist/commands/suite/use.js +227 -0
  68. package/dist/commands/sync.js +117 -0
  69. package/dist/commands/update.js +203 -0
  70. package/dist/mcp/install.js +550 -0
  71. package/dist/mcp/server.js +398 -0
  72. package/dist/mcp/tools.js +922 -0
  73. package/dist/pi-extensions/permission-sync.ts.template +41 -0
  74. package/dist/pi-extensions/permissions-gate.ts.template +69 -0
  75. package/dist/pi-extensions/pr-fix-trigger.ts.template +124 -0
  76. package/dist/pi-extensions/review-reminder.ts.template +58 -0
  77. package/dist/pi-extensions/workspace-input-status.ts.template +919 -0
  78. package/dist/program.js +136 -0
  79. package/dist/scripts/workspace-table.py +394 -0
  80. package/dist/types/dashboard.js +11 -0
  81. package/dist/types/index.js +2 -0
  82. package/dist/utils/agent-config.js +263 -0
  83. package/dist/utils/agent-state.js +178 -0
  84. package/dist/utils/banner.js +24 -0
  85. package/dist/utils/branch-operations.js +232 -0
  86. package/dist/utils/bug-report.js +355 -0
  87. package/dist/utils/cache.js +168 -0
  88. package/dist/utils/claude-integration.js +617 -0
  89. package/dist/utils/claude-sessions.js +260 -0
  90. package/dist/utils/cleanup-operations.js +120 -0
  91. package/dist/utils/colors.js +26 -0
  92. package/dist/utils/command-helpers.js +44 -0
  93. package/dist/utils/config.js +150 -0
  94. package/dist/utils/context-file.js +33 -0
  95. package/dist/utils/dashboard-hooks.js +172 -0
  96. package/dist/utils/dependency-analyzer.js +234 -0
  97. package/dist/utils/diff-operations.js +80 -0
  98. package/dist/utils/doc-generator.js +184 -0
  99. package/dist/utils/ghq-integration.js +332 -0
  100. package/dist/utils/git-operations.js +237 -0
  101. package/dist/utils/git-status.js +187 -0
  102. package/dist/utils/github.js +68 -0
  103. package/dist/utils/health-checks.js +345 -0
  104. package/dist/utils/history.js +150 -0
  105. package/dist/utils/hooks.js +100 -0
  106. package/dist/utils/logger.js +40 -0
  107. package/dist/utils/permission-sync.js +681 -0
  108. package/dist/utils/pi-extensions.js +224 -0
  109. package/dist/utils/progress.js +92 -0
  110. package/dist/utils/prompts.js +279 -0
  111. package/dist/utils/repo-resolver.js +260 -0
  112. package/dist/utils/retry.js +65 -0
  113. package/dist/utils/run-operations.js +30 -0
  114. package/dist/utils/suite.js +159 -0
  115. package/dist/utils/sync-operations.js +107 -0
  116. package/dist/utils/tmux-dashboard.js +184 -0
  117. package/dist/utils/validation.js +153 -0
  118. package/dist/utils/version-check.js +121 -0
  119. package/dist/utils/workspace-meta.js +185 -0
  120. package/install-shell-integration.sh +532 -0
  121. package/install.sh +401 -0
  122. package/package.json +90 -0
  123. package/remove-shell-block.awk +44 -0
  124. package/scripts/postinstall.js +85 -0
  125. package/skills/analyze-deps.md +23 -0
  126. package/skills/archive-workspace.md +26 -0
  127. package/skills/branch-create.md +18 -0
  128. package/skills/create-workspace.md +39 -0
  129. package/skills/delete-workspace.md +37 -0
  130. package/skills/list-org-repos.md +26 -0
  131. package/skills/list-suites.md +24 -0
  132. package/skills/list-workspaces.md +27 -0
  133. package/skills/refresh-workspace-docs.md +89 -0
  134. package/skills/remove-repo.md +25 -0
  135. package/skills/run-command.md +23 -0
  136. package/skills/save-context.md +68 -0
  137. package/skills/search-repos.md +31 -0
  138. package/skills/snapshot-list.md +18 -0
  139. package/skills/snapshot-save.md +12 -0
  140. package/skills/switch-branch.md +18 -0
  141. package/skills/update-cache.md +21 -0
  142. package/skills/update-workspace.md +66 -0
  143. package/skills/workspace-cleanup.md +18 -0
  144. package/skills/workspace-diff.md +23 -0
  145. package/skills/workspace-doctor.md +23 -0
  146. package/skills/workspace-info.md +45 -0
  147. package/skills/workspace-manager/SKILL.md +201 -0
  148. package/skills/workspace-manager/references/ai-prompt.md +44 -0
  149. package/skills/workspace-manager/references/analyze-deps.md +45 -0
  150. package/skills/workspace-manager/references/archive-workspace.md +38 -0
  151. package/skills/workspace-manager/references/branch-create.md +31 -0
  152. package/skills/workspace-manager/references/branch-merge.md +22 -0
  153. package/skills/workspace-manager/references/branch-rebase.md +22 -0
  154. package/skills/workspace-manager/references/cache-clear.md +18 -0
  155. package/skills/workspace-manager/references/cache-info.md +22 -0
  156. package/skills/workspace-manager/references/configure-claude.md +31 -0
  157. package/skills/workspace-manager/references/configure.md +35 -0
  158. package/skills/workspace-manager/references/create-workspace.md +45 -0
  159. package/skills/workspace-manager/references/dashboard.md +61 -0
  160. package/skills/workspace-manager/references/delete-workspace.md +33 -0
  161. package/skills/workspace-manager/references/generate-docs.md +36 -0
  162. package/skills/workspace-manager/references/ghq-status.md +28 -0
  163. package/skills/workspace-manager/references/go.md +33 -0
  164. package/skills/workspace-manager/references/history.md +41 -0
  165. package/skills/workspace-manager/references/list-org-repos.md +26 -0
  166. package/skills/workspace-manager/references/list-suites.md +21 -0
  167. package/skills/workspace-manager/references/list-workspaces.md +27 -0
  168. package/skills/workspace-manager/references/mcp.md +49 -0
  169. package/skills/workspace-manager/references/remove-repo.md +26 -0
  170. package/skills/workspace-manager/references/run-command.md +44 -0
  171. package/skills/workspace-manager/references/search-repos.md +24 -0
  172. package/skills/workspace-manager/references/sessions.md +27 -0
  173. package/skills/workspace-manager/references/suite-create.md +22 -0
  174. package/skills/workspace-manager/references/suite-delete.md +21 -0
  175. package/skills/workspace-manager/references/suite-export.md +19 -0
  176. package/skills/workspace-manager/references/suite-import.md +19 -0
  177. package/skills/workspace-manager/references/suite-use.md +27 -0
  178. package/skills/workspace-manager/references/switch-branch.md +25 -0
  179. package/skills/workspace-manager/references/update-cache.md +22 -0
  180. package/skills/workspace-manager/references/update-workspace.md +50 -0
  181. package/skills/workspace-manager/references/workspace-cleanup.md +33 -0
  182. package/skills/workspace-manager/references/workspace-diff.md +27 -0
  183. package/skills/workspace-manager/references/workspace-doctor.md +27 -0
  184. package/skills/workspace-manager/references/workspace-info.md +33 -0
  185. package/skills/workspace-manager/references/workspace-status.md +43 -0
  186. package/skills/workspace-manager/references/workspace-sync.md +26 -0
  187. package/skills/workspace-status.md +26 -0
  188. package/skills/workspace-sync.md +23 -0
  189. package/src/cli/ai-prompt.test.ts +667 -0
  190. package/src/cli/ai-prompt.ts +421 -0
  191. package/src/cli/dashboard/AgentList.tsx +44 -0
  192. package/src/cli/dashboard/DashboardSidebar.tsx +291 -0
  193. package/src/cli/dashboard/HelpFooter.tsx +22 -0
  194. package/src/cli/dashboard/StatusBadge.tsx +23 -0
  195. package/src/cli/dashboard/index.ts +5 -0
  196. package/src/cli/dashboard/types.ts +16 -0
  197. package/src/cli/tui.tsx +51 -0
  198. package/src/cli/workspace-cli.test.ts +30 -0
  199. package/src/commands/ai-prompt.ts +21 -0
  200. package/src/commands/analyze-deps.ts +119 -0
  201. package/src/commands/archive.ts +114 -0
  202. package/src/commands/branch/create.ts +94 -0
  203. package/src/commands/branch/index.ts +74 -0
  204. package/src/commands/branch/merge.ts +61 -0
  205. package/src/commands/branch/rebase.ts +54 -0
  206. package/src/commands/branch/switch.ts +150 -0
  207. package/src/commands/cache/index.ts +51 -0
  208. package/src/commands/cache/manager.ts +168 -0
  209. package/src/commands/cleanup.ts +132 -0
  210. package/src/commands/configure-claude.ts +55 -0
  211. package/src/commands/configure.ts +204 -0
  212. package/src/commands/create.ts +196 -0
  213. package/src/commands/dashboard/hook-handler.ts +138 -0
  214. package/src/commands/dashboard/index.ts +248 -0
  215. package/src/commands/dashboard/launcher.ts +42 -0
  216. package/src/commands/dashboard/session-picker.ts +73 -0
  217. package/src/commands/dashboard/sidebar.js +39 -0
  218. package/src/commands/dashboard/workspace-picker.ts +62 -0
  219. package/src/commands/delete.test.ts +250 -0
  220. package/src/commands/delete.ts +171 -0
  221. package/src/commands/deprecated-aliases.ts +55 -0
  222. package/src/commands/diff.ts +106 -0
  223. package/src/commands/doctor.ts +110 -0
  224. package/src/commands/generate-docs.ts +45 -0
  225. package/src/commands/ghq-status.ts +70 -0
  226. package/src/commands/go.ts +125 -0
  227. package/src/commands/history.ts +136 -0
  228. package/src/commands/list.test.ts +219 -0
  229. package/src/commands/list.ts +176 -0
  230. package/src/commands/mcp/index.ts +39 -0
  231. package/src/commands/migrate.ts +277 -0
  232. package/src/commands/remove-repo.ts +194 -0
  233. package/src/commands/report-bug.ts +88 -0
  234. package/src/commands/run.ts +125 -0
  235. package/src/commands/save-context.test.ts +113 -0
  236. package/src/commands/save-context.ts +141 -0
  237. package/src/commands/sessions.ts +99 -0
  238. package/src/commands/status.ts +111 -0
  239. package/src/commands/suite/create.ts +240 -0
  240. package/src/commands/suite/delete.ts +65 -0
  241. package/src/commands/suite/export.ts +97 -0
  242. package/src/commands/suite/import.ts +100 -0
  243. package/src/commands/suite/index.ts +66 -0
  244. package/src/commands/suite/list.ts +54 -0
  245. package/src/commands/suite/use.ts +232 -0
  246. package/src/commands/sync.ts +97 -0
  247. package/src/commands/update.ts +197 -0
  248. package/src/mcp/install.ts +529 -0
  249. package/src/mcp/server.ts +579 -0
  250. package/src/mcp/tools.test.ts +545 -0
  251. package/src/mcp/tools.ts +1019 -0
  252. package/src/mcp/update-workspace.test.ts +220 -0
  253. package/src/pi-extensions/permission-sync.ts.template +41 -0
  254. package/src/pi-extensions/permissions-gate.ts.template +69 -0
  255. package/src/pi-extensions/pr-fix-trigger.ts.template +124 -0
  256. package/src/pi-extensions/review-reminder.ts.template +58 -0
  257. package/src/pi-extensions/workspace-input-status.ts.template +919 -0
  258. package/src/program.ts +112 -0
  259. package/src/scripts/workspace-table.py +394 -0
  260. package/src/types/dashboard.ts +29 -0
  261. package/src/types/index.ts +109 -0
  262. package/src/types/ink.d.ts +171 -0
  263. package/src/utils/agent-config.test.ts +303 -0
  264. package/src/utils/agent-config.ts +264 -0
  265. package/src/utils/agent-state.test.ts +166 -0
  266. package/src/utils/agent-state.ts +135 -0
  267. package/src/utils/banner.ts +24 -0
  268. package/src/utils/branch-operations.ts +237 -0
  269. package/src/utils/bug-report.test.ts +174 -0
  270. package/src/utils/bug-report.ts +355 -0
  271. package/src/utils/cache.ts +150 -0
  272. package/src/utils/claude-integration.test.ts +381 -0
  273. package/src/utils/claude-integration.ts +649 -0
  274. package/src/utils/claude-sessions.test.ts +262 -0
  275. package/src/utils/claude-sessions.ts +251 -0
  276. package/src/utils/cleanup-operations.ts +94 -0
  277. package/src/utils/colors.ts +25 -0
  278. package/src/utils/command-helpers.ts +46 -0
  279. package/src/utils/config.test.ts +203 -0
  280. package/src/utils/config.ts +133 -0
  281. package/src/utils/context-file.ts +36 -0
  282. package/src/utils/dashboard-hooks.test.ts +168 -0
  283. package/src/utils/dashboard-hooks.ts +163 -0
  284. package/src/utils/dependency-analyzer.ts +243 -0
  285. package/src/utils/diff-operations.ts +59 -0
  286. package/src/utils/doc-generator.ts +187 -0
  287. package/src/utils/ghq-integration.test.ts +195 -0
  288. package/src/utils/ghq-integration.ts +317 -0
  289. package/src/utils/git-operations.test.ts +265 -0
  290. package/src/utils/git-operations.ts +233 -0
  291. package/src/utils/git-status.ts +171 -0
  292. package/src/utils/github.ts +74 -0
  293. package/src/utils/health-checks.ts +359 -0
  294. package/src/utils/history.ts +140 -0
  295. package/src/utils/hooks.ts +92 -0
  296. package/src/utils/logger.ts +37 -0
  297. package/src/utils/permission-sync.test.ts +593 -0
  298. package/src/utils/permission-sync.ts +720 -0
  299. package/src/utils/pi-extensions.test.ts +182 -0
  300. package/src/utils/pi-extensions.ts +226 -0
  301. package/src/utils/progress.ts +73 -0
  302. package/src/utils/prompts.test.ts +169 -0
  303. package/src/utils/prompts.ts +296 -0
  304. package/src/utils/repo-resolver.test.ts +313 -0
  305. package/src/utils/repo-resolver.ts +294 -0
  306. package/src/utils/retry.test.ts +124 -0
  307. package/src/utils/retry.ts +85 -0
  308. package/src/utils/run-operations.ts +38 -0
  309. package/src/utils/suite.test.ts +256 -0
  310. package/src/utils/suite.ts +144 -0
  311. package/src/utils/sync-operations.ts +87 -0
  312. package/src/utils/tmux-dashboard.ts +193 -0
  313. package/src/utils/validation.test.ts +139 -0
  314. package/src/utils/validation.ts +128 -0
  315. package/src/utils/version-check.test.ts +108 -0
  316. package/src/utils/version-check.ts +96 -0
  317. package/src/utils/workspace-meta.ts +173 -0
  318. package/sync-permissions.sh +137 -0
  319. package/tsconfig.json +20 -0
  320. package/uninstall.sh +162 -0
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: create-workspace
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
+ ---
5
+
6
+ # Create Workspace
7
+
8
+ Create a new workspace by cloning repositories.
9
+
10
+ ## Resolving Repositories
11
+
12
+ If the user hasn't specified which repos to clone, help them discover:
13
+ ```bash
14
+ nemus cache search <keyword>
15
+ ```
16
+
17
+ ## Creating the Workspace
18
+
19
+ Run non-interactively:
20
+ ```bash
21
+ nemus create --workspace <name> --repos <repo1,repo2,...> --yes
22
+ ```
23
+
24
+ Or interactively (prompts for workspace name and repos):
25
+ ```bash
26
+ nemus create
27
+ ```
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
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: delete-workspace
3
+ description: Delete one or more workspaces and all their contents permanently
4
+ ---
5
+
6
+ # Delete Workspace
7
+
8
+ Delete one or more workspaces permanently.
9
+
10
+ ## Resolving the Workspace
11
+
12
+ If the user hasn't specified which workspace to delete:
13
+ ```bash
14
+ nemus list 2>&1 | cat
15
+ ```
16
+
17
+ ## Deleting
18
+
19
+ Run non-interactively:
20
+ ```bash
21
+ nemus delete --workspace <name> --yes
22
+ ```
23
+
24
+ Or interactively (prompts for confirmation):
25
+ ```bash
26
+ nemus delete
27
+ ```
28
+
29
+ ## Important Notes
30
+
31
+ - This permanently removes the workspace directory and all its contents
32
+ - There is no undo — repos will need to be re-cloned
33
+ - Always confirm with the user before deleting
34
+
35
+ ## Suggested Follow-ups
36
+
37
+ - `nemus list` to verify the workspace is gone
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: list-org-repos
3
+ description: List all organization repositories from GitHub
4
+ ---
5
+
6
+ # List Org Repos
7
+
8
+ List all repositories in the GitHub organization.
9
+
10
+ ## Running
11
+
12
+ ```bash
13
+ nemus cache list
14
+ ```
15
+
16
+ If the cache is empty or stale:
17
+ ```bash
18
+ nemus cache refresh
19
+ ```
20
+
21
+ ## Presenting Results
22
+
23
+ Show repo names. Can be filtered by searching:
24
+ ```bash
25
+ nemus cache search <keyword>
26
+ ```
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: list-suites
3
+ description: List all saved suites (reusable repo collections)
4
+ ---
5
+
6
+ # List Suites
7
+
8
+ List all saved suites (reusable collections of repos).
9
+
10
+ ## Running
11
+
12
+ ```bash
13
+ nemus suite list
14
+ ```
15
+
16
+ ## Presenting Results
17
+
18
+ Show each suite's name and the repos it contains.
19
+
20
+ ## Related
21
+
22
+ - `nemus suite create` to create a new suite
23
+ - `nemus suite use` to create a workspace from a suite
24
+ - `nemus suite delete` to remove a suite
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: list-workspaces
3
+ description: List all workspaces with their repo counts and creation dates
4
+ ---
5
+
6
+ # List Workspaces
7
+
8
+ List all workspaces with their status.
9
+
10
+ ## Listing
11
+
12
+ ```bash
13
+ nemus list
14
+ ```
15
+
16
+ Note: This command opens an interactive picker. To just see the output without selecting, pipe it:
17
+ ```bash
18
+ nemus list 2>&1 | cat
19
+ ```
20
+
21
+ ## Presenting Results
22
+
23
+ Show each workspace with:
24
+ - Name
25
+ - Number of repositories
26
+ - Creation date
27
+ - Last active session (if any)
@@ -0,0 +1,89 @@
1
+ ---
2
+ name: refresh-workspace-docs
3
+ description: Refresh the per-repo documentation embedded in a workspace's context file (AGENTS.md / .claude.md). Use when a workspace was created a while ago and its repos have since received updates to their README, AGENTS.md, or CLAUDE.md files, so the embedded copies in the workspace context are stale.
4
+ ---
5
+
6
+ # Refresh Workspace Docs
7
+
8
+ When a workspace is created, each repo's own `AGENTS.md` / `CLAUDE.md` is
9
+ embedded into the workspace-level context file (`AGENTS.md` / `.claude.md`)
10
+ under the **Per-Repository Context** section. Those embedded copies are a
11
+ snapshot taken at creation time — they do **not** auto-update when the repo
12
+ later receives new commits that change its README or agent docs.
13
+
14
+ This skill refreshes that embedded content so the agent works from the
15
+ latest per-repo guidance.
16
+
17
+ ## When to Use
18
+
19
+ - A workspace was created days/weeks ago and the repos have since changed.
20
+ - A repo's `AGENTS.md` / `CLAUDE.md` / `README.md` was updated upstream and
21
+ you want the workspace context to reflect it.
22
+ - The agent seems to be following outdated repo-specific instructions.
23
+ - After a teammate merges changes to a repo's documentation.
24
+
25
+ ## Workflow
26
+
27
+ Two steps: **sync the repos to latest**, then **regenerate the context**.
28
+
29
+ ### 1. Pull the latest for every repo in the workspace
30
+
31
+ ```bash
32
+ nemus sync <workspace-name>
33
+ ```
34
+
35
+ This `git pull`s every repo so their on-disk `README.md`, `AGENTS.md`, and
36
+ `CLAUDE.md` reflect the latest upstream content. (Omit the name to sync the
37
+ current workspace.)
38
+
39
+ ### 2. Regenerate the workspace context
40
+
41
+ ```bash
42
+ w migrate
43
+ ```
44
+
45
+ `nemus migrate` re-reads each repo's context files from disk and **surgically
46
+ updates only the `## Per-Repository Context` section** of the workspace
47
+ `AGENTS.md` / `.claude.md`. Your own notes (the `## Notes` section, saved
48
+ `CONTEXT.md`, etc.) are preserved untouched.
49
+
50
+ Preview what would change first with:
51
+
52
+ ```bash
53
+ w migrate --dry-run
54
+ ```
55
+
56
+ ## What Gets Refreshed
57
+
58
+ The `## Per-Repository Context` section is rebuilt from each repo's context
59
+ file, discovered in this priority order (per repo, up to 2 directory levels
60
+ deep for monorepo packages):
61
+
62
+ 1. `AGENTS.md`
63
+ 2. `.claude.md`
64
+ 3. `CLAUDE.md`
65
+
66
+ Each repo's content is embedded with imperative scoping ("You MUST follow
67
+ these rules whenever you work with files inside `<repo>/`") and placed near
68
+ the top of the workspace context file so the agent weights it heavily.
69
+
70
+ ## Notes
71
+
72
+ - This only refreshes **embedded** per-repo docs in the workspace context
73
+ file. The repos themselves are updated by `nemus sync` in step 1.
74
+ - `nemus migrate` runs across **all** workspaces. That's safe and idempotent —
75
+ every workspace gets its per-repo section refreshed from current on-disk
76
+ content. Use `--dry-run` first if you want to see scope.
77
+ - If a workspace has no repo-level context files, the section is omitted
78
+ (or removed if it previously existed).
79
+
80
+ ## Example
81
+
82
+ ```bash
83
+ # Workspace 'payments' was created 3 weeks ago; partnerships-api has since
84
+ # rewritten its AGENTS.md with new Jira board instructions.
85
+
86
+ nemus sync payments # pull latest — partnerships-api/AGENTS.md now current
87
+ w migrate --dry-run # preview: "payments: would embed per-repo context from 4 location(s)"
88
+ w migrate # apply — workspace AGENTS.md now has the new instructions
89
+ ```
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: remove-repo
3
+ description: Remove a repository from a workspace
4
+ ---
5
+
6
+ # Remove Repo
7
+
8
+ Remove a repository from a workspace.
9
+
10
+ ## Running
11
+
12
+ ```bash
13
+ nemus remove-repo --workspace <name> --repo <repo-name> --yes
14
+ ```
15
+
16
+ Or interactively:
17
+ ```bash
18
+ nemus remove-repo
19
+ ```
20
+
21
+ ## Important Notes
22
+
23
+ - This removes the repo directory from the workspace
24
+ - The repo is not deleted from GitHub, only removed locally
25
+ - The workspace metadata is updated to reflect the removal
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: run-command
3
+ description: Run a shell command across all repos in a workspace
4
+ ---
5
+
6
+ # Run Command
7
+
8
+ Run a shell command across all repos in a workspace.
9
+
10
+ ## Running
11
+
12
+ ```bash
13
+ nemus run <workspace-name> "<command>"
14
+ ```
15
+
16
+ Example:
17
+ ```bash
18
+ nemus run my-workspace "git log --oneline -5"
19
+ ```
20
+
21
+ ## Presenting Results
22
+
23
+ Report the output from each repo, clearly labeling which output comes from which repo.
@@ -0,0 +1,68 @@
1
+ ---
2
+ name: save-context
3
+ description: Save progress summary to workspace (persists across /clear and session restarts). Use when you want to preserve important context, findings, or progress before clearing conversation history.
4
+ ---
5
+
6
+ # Save Context
7
+
8
+ Save a progress summary or important context to the workspace. This persists in `CONTEXT.md` and survives `/clear`, session restarts, and agent switches.
9
+
10
+ ## When to Use
11
+
12
+ - Before `/clear` to preserve progress
13
+ - After completing a significant milestone
14
+ - To leave notes for the next session
15
+ - When switching between tasks in the same workspace
16
+
17
+ ## Using the MCP Tool (Claude Code)
18
+
19
+ Call `mcp__workspace-manager__save-context` with:
20
+ - `workspace` (string): the workspace name
21
+ - `content` (string): markdown content to save
22
+ - `append` (boolean, optional): true to append, false to replace (default: false)
23
+
24
+ ## Using the CLI (any agent)
25
+
26
+ ```bash
27
+ # Replace existing context
28
+ nemus save-context -m "Completed auth refactor. Next: update payment service endpoints."
29
+
30
+ # Append to existing context
31
+ nemus save-context --append -m "Fixed CI failures. All tests passing."
32
+
33
+ # From a file
34
+ nemus save-context -f progress-notes.md
35
+
36
+ # Pipe content
37
+ echo "summary here" | nemus save-context
38
+ ```
39
+
40
+ ## What to Save
41
+
42
+ Good context summaries include:
43
+ - **What was done** — completed tasks, merged PRs
44
+ - **Current state** — what's working, what's broken
45
+ - **Next steps** — what to do next
46
+ - **Key decisions** — architectural choices made and why
47
+ - **Blockers** — what's blocking progress
48
+
49
+ ## Example
50
+
51
+ ```markdown
52
+ ## Progress
53
+
54
+ - Refactored auth service to use JWT tokens (PR #42 merged)
55
+ - Updated partnerships-api to call new auth endpoints
56
+ - Fixed rate limiting bug in payment-gateway
57
+
58
+ ## Current State
59
+
60
+ All services passing CI. Auth migration is complete for internal services.
61
+ External API consumers still use legacy tokens (tracked in JIRA PAY-123).
62
+
63
+ ## Next Steps
64
+
65
+ 1. Migrate external consumers to JWT (need coordination with partners team)
66
+ 2. Add monitoring dashboard for token refresh failures
67
+ 3. Remove legacy token support after 30-day deprecation window
68
+ ```
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: search-repos
3
+ description: Search org repositories by name or description
4
+ ---
5
+
6
+ # Search Repos
7
+
8
+ Search for repositories in the GitHub organization.
9
+
10
+ ## Searching
11
+
12
+ ```bash
13
+ nemus cache search <keyword>
14
+ ```
15
+
16
+ This searches the cached list of org repos by name. Results show repo name and description.
17
+
18
+ ## If Cache is Empty
19
+
20
+ ```bash
21
+ nemus cache refresh
22
+ ```
23
+
24
+ Then search again.
25
+
26
+ ## Presenting Results
27
+
28
+ Show matching repos with their names and descriptions. If the user wants to add repos to a workspace, suggest:
29
+ ```bash
30
+ nemus update --workspace <name> --repos <repo1,repo2> --yes
31
+ ```
@@ -0,0 +1,18 @@
1
+ ---
2
+ name: snapshot-list
3
+ description: List all saved workspace snapshots
4
+ ---
5
+
6
+ # Snapshot List
7
+
8
+ List all saved workspace snapshots.
9
+
10
+ ## Running
11
+
12
+ ```bash
13
+ nemus history
14
+ ```
15
+
16
+ ## Presenting Results
17
+
18
+ Show snapshot entries with timestamps and operation types.
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: snapshot-save
3
+ description: Save a snapshot of the current workspace state
4
+ ---
5
+
6
+ # Snapshot Save
7
+
8
+ Snapshots are automatically saved by workspace-manager operations (create, update, delete, etc.). There is no separate snapshot command — the history command shows past operations:
9
+
10
+ ```bash
11
+ nemus history
12
+ ```
@@ -0,0 +1,18 @@
1
+ ---
2
+ name: switch-branch
3
+ description: Switch all repos in a workspace to a specified branch
4
+ ---
5
+
6
+ # Switch Branch
7
+
8
+ Switch all repos in a workspace to a specified branch.
9
+
10
+ ## Running
11
+
12
+ ```bash
13
+ nemus branch switch <workspace-name> <branch-name>
14
+ ```
15
+
16
+ ## Presenting Results
17
+
18
+ Report which repos were switched and any that couldn't switch (e.g., uncommitted changes).
@@ -0,0 +1,21 @@
1
+ ---
2
+ name: update-cache
3
+ description: Force refresh the GitHub repository cache
4
+ ---
5
+
6
+ # Update Cache
7
+
8
+ Force refresh the GitHub repository cache.
9
+
10
+ ## Running
11
+
12
+ ```bash
13
+ nemus cache refresh
14
+ ```
15
+
16
+ This fetches the latest list of repositories from the GitHub org and updates the local cache.
17
+
18
+ ## When to Use
19
+
20
+ - When `nemus cache search` doesn't find a recently created repo
21
+ - Periodically to keep the cache fresh (auto-refreshes daily)
@@ -0,0 +1,66 @@
1
+ ---
2
+ name: update-workspace
3
+ description: Add one or more repositories to an existing workspace. ALWAYS use this skill — never run `git clone` directly — when the user asks to add, clone, include, or pull a new repo into the current workspace. Triggers on phrases like "add repo X", "include X in this workspace", "I need X here", "clone X into workspace", "add a service".
4
+ ---
5
+
6
+ # Update Workspace
7
+
8
+ > **CRITICAL**: NEVER use `git clone` directly to add repositories to a workspace.
9
+ > Always use `nemus update` — it registers the repo in workspace metadata, updates
10
+ > the context file, and keeps `nemus status`/`nemus sync` working correctly.
11
+
12
+ Add more repositories to an existing workspace.
13
+
14
+ ## Resolving the Workspace
15
+
16
+ If the user hasn't specified a workspace, run:
17
+ ```bash
18
+ nemus list 2>&1 | cat
19
+ ```
20
+
21
+ Or to see what's in a specific workspace (from inside the workspace directory):
22
+ ```bash
23
+ cat .workspace-meta.json
24
+ ```
25
+
26
+ ## Resolving Repositories
27
+
28
+ If the user hasn't specified which repos to add, help them discover:
29
+ ```bash
30
+ nemus cache search <keyword>
31
+ ```
32
+
33
+ To see what's already in the workspace (avoid adding duplicates):
34
+ ```bash
35
+ cat .workspace-meta.json | jq '.repositories[].name'
36
+ ```
37
+
38
+ ## Adding Repos
39
+
40
+ Run the update command non-interactively:
41
+ ```bash
42
+ nemus update --workspace <name> --repos <repo1,repo2,...> --yes
43
+ ```
44
+
45
+ ### Adding the same repo more than once (instances)
46
+
47
+ Append `:suffix` to a repo name to add it again under a separate folder
48
+ (`<repo>-<suffix>`) — e.g. a second checkout for another branch instead of a
49
+ `git worktree` (worktrees are invisible to `nemus status`/`nemus sync`):
50
+ ```bash
51
+ nemus update --workspace <name> --repos casper:cas-101 --yes # -> casper-cas-101
52
+ ```
53
+ Suffix = letters, numbers, hyphens, underscores. Each instance is tracked
54
+ independently by `nemus status`/`nemus sync`.
55
+
56
+ ## Presenting Results
57
+
58
+ The command output shows which repos were added and which were skipped. Report:
59
+ - Successfully added repos
60
+ - Skipped repos (already exist in workspace) - this is not an error
61
+ - Any failures with their error reason
62
+
63
+ ## Suggested Follow-ups
64
+
65
+ - `nemus status <workspace>` to verify the new repos
66
+ - `nemus sync <workspace>` to pull latest on all repos
@@ -0,0 +1,18 @@
1
+ ---
2
+ name: workspace-cleanup
3
+ description: Remove node_modules and build artifacts to free disk space
4
+ ---
5
+
6
+ # Workspace Cleanup
7
+
8
+ Remove node_modules and build artifacts to free disk space.
9
+
10
+ ## Running
11
+
12
+ ```bash
13
+ nemus cleanup <workspace-name>
14
+ ```
15
+
16
+ ## Presenting Results
17
+
18
+ Report how much disk space was freed and which directories were removed.
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: workspace-diff
3
+ description: Show diff summary for all repos in a workspace
4
+ ---
5
+
6
+ # Workspace Diff
7
+
8
+ Show diff summary across all repos in a workspace.
9
+
10
+ ## Running
11
+
12
+ ```bash
13
+ nemus diff <workspace-name>
14
+ ```
15
+
16
+ Or for the current workspace:
17
+ ```bash
18
+ nemus diff
19
+ ```
20
+
21
+ ## Presenting Results
22
+
23
+ Report per-repo diff stats (files changed, insertions, deletions).
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: workspace-doctor
3
+ description: Run health checks on a workspace
4
+ ---
5
+
6
+ # Workspace Doctor
7
+
8
+ Run health checks on a workspace.
9
+
10
+ ## Running
11
+
12
+ ```bash
13
+ nemus doctor <workspace-name>
14
+ ```
15
+
16
+ Or for the current workspace:
17
+ ```bash
18
+ nemus doctor
19
+ ```
20
+
21
+ ## Presenting Results
22
+
23
+ Report any issues found (missing repos, broken git state, etc.) and suggestions for fixes.
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: workspace-info
3
+ description: Get detailed metadata for a workspace
4
+ ---
5
+
6
+ # Workspace Info
7
+
8
+ Get detailed metadata for a workspace including all repository info, tags, and disk path.
9
+
10
+ ## Resolving the Workspace
11
+
12
+ If the user hasn't specified a workspace name, list them:
13
+ ```bash
14
+ nemus list 2>&1 | cat
15
+ ```
16
+
17
+ ## Getting Info
18
+
19
+ Read the workspace metadata file (path is relative to the workspace directory):
20
+ ```bash
21
+ cat <workspace-path>/.workspace-meta.json
22
+ ```
23
+
24
+ The workspace path can be found by checking the current directory or using:
25
+ ```bash
26
+ nemus status <workspace-name>
27
+ ```
28
+
29
+ ## Presenting Results
30
+
31
+ The JSON contains workspace metadata. Present clearly:
32
+
33
+ - **Name** and **creation date**
34
+ - **Disk path** where the workspace lives
35
+ - **Repositories** - list each with:
36
+ - Directory name (may differ from repo name if a suffix was used)
37
+ - Clone URL
38
+ - Status (success/failed from creation)
39
+ - **Tags** and any custom metadata if present
40
+
41
+ ## Suggested Follow-ups
42
+
43
+ - `nemus status <workspace>` to see current git status of each repo
44
+ - `nemus update --workspace <name> --repos <repos>` to add more repos
45
+ - `nemus doctor <workspace>` to check workspace health