noah-cursor 1.5.6 → 1.5.8

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 (61) hide show
  1. package/README.md +82 -19
  2. package/assets/me.jpeg +0 -0
  3. package/dist/commands/add.d.ts.map +1 -1
  4. package/dist/commands/add.js +4 -0
  5. package/dist/commands/add.js.map +1 -1
  6. package/dist/commands/browse.d.ts.map +1 -1
  7. package/dist/commands/browse.js +11 -1
  8. package/dist/commands/browse.js.map +1 -1
  9. package/dist/commands/doctor.d.ts.map +1 -1
  10. package/dist/commands/doctor.js +5 -2
  11. package/dist/commands/doctor.js.map +1 -1
  12. package/dist/commands/list.d.ts.map +1 -1
  13. package/dist/commands/list.js +6 -3
  14. package/dist/commands/list.js.map +1 -1
  15. package/dist/commands/remove.d.ts.map +1 -1
  16. package/dist/commands/remove.js +4 -1
  17. package/dist/commands/remove.js.map +1 -1
  18. package/dist/commands/update.d.ts.map +1 -1
  19. package/dist/commands/update.js +4 -0
  20. package/dist/commands/update.js.map +1 -1
  21. package/dist/constants/ides.d.ts +16 -0
  22. package/dist/constants/ides.d.ts.map +1 -0
  23. package/dist/constants/ides.js +69 -0
  24. package/dist/constants/ides.js.map +1 -0
  25. package/dist/constants/index.d.ts +2 -0
  26. package/dist/constants/index.d.ts.map +1 -1
  27. package/dist/constants/index.js +2 -0
  28. package/dist/constants/index.js.map +1 -1
  29. package/dist/installers/asset-installer.d.ts +3 -0
  30. package/dist/installers/asset-installer.d.ts.map +1 -1
  31. package/dist/installers/asset-installer.js +6 -3
  32. package/dist/installers/asset-installer.js.map +1 -1
  33. package/dist/metadata/store.d.ts +12 -9
  34. package/dist/metadata/store.d.ts.map +1 -1
  35. package/dist/metadata/store.js +32 -23
  36. package/dist/metadata/store.js.map +1 -1
  37. package/dist/services/doctor-service.d.ts +2 -1
  38. package/dist/services/doctor-service.d.ts.map +1 -1
  39. package/dist/services/doctor-service.js +14 -13
  40. package/dist/services/doctor-service.js.map +1 -1
  41. package/dist/services/install-service.d.ts +4 -0
  42. package/dist/services/install-service.d.ts.map +1 -1
  43. package/dist/services/install-service.js +14 -7
  44. package/dist/services/install-service.js.map +1 -1
  45. package/dist/types/index.d.ts +6 -1
  46. package/dist/types/index.d.ts.map +1 -1
  47. package/dist/types/index.js +2 -1
  48. package/dist/types/index.js.map +1 -1
  49. package/dist/ui/ideMenu.d.ts +7 -0
  50. package/dist/ui/ideMenu.d.ts.map +1 -0
  51. package/dist/ui/ideMenu.js +36 -0
  52. package/dist/ui/ideMenu.js.map +1 -0
  53. package/dist/ui/summary.d.ts +3 -2
  54. package/dist/ui/summary.d.ts.map +1 -1
  55. package/dist/ui/summary.js +9 -4
  56. package/dist/ui/summary.js.map +1 -1
  57. package/dist/utils/fs.d.ts +4 -0
  58. package/dist/utils/fs.d.ts.map +1 -1
  59. package/dist/utils/fs.js +7 -2
  60. package/dist/utils/fs.js.map +1 -1
  61. package/package.json +3 -2
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  <p align="center">
6
6
  <strong>The CLI for shipping Cursor setups that actually work.</strong><br />
7
- Install battle-tested Skills, Rules, and workflows into any project — in one command.
7
+ Install battle-tested Skills, Rules, and workflows into any project — also works with Windsurf, Claude Code, and more.
8
8
  </p>
9
9
 
10
10
  <p align="center">
@@ -12,15 +12,41 @@
12
12
  <a href="https://www.npmjs.com/package/noah-cursor"><img src="https://img.shields.io/npm/dm/noah-cursor.svg" alt="npm downloads" /></a>
13
13
  <a href="LICENSE"><img src="https://img.shields.io/npm/l/noah-cursor.svg" alt="license" /></a>
14
14
  <img src="https://img.shields.io/node/v/noah-cursor.svg" alt="node" />
15
- <a href="https://www.buymeacoffee.com/itsmenoahpoli"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-FFDD00?style=flat&logo=buymeacoffee&logoColor=black" alt="Buy Me a Coffee" /></a>
15
+ <a href="https://www.buymeacoffee.com/klnaufr"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-FFDD00?style=flat&logo=buymeacoffee&logoColor=black" alt="Buy Me a Coffee" /></a>
16
16
  </p>
17
17
 
18
18
  ```bash
19
- npx noah-cursor add --skill commit-push
19
+ npx noah-cursor browse
20
20
  ```
21
21
 
22
22
  Stop copy-pasting Cursor prompts between repos. **Noah Cursor** is a developer CLI + curated registry: reusable Skills, Rules, Prompts, MCP configs, and Presets that drop straight into `.cursor/` — no clone, no sign-in, no friction.
23
23
 
24
+ Also supports **Windsurf**, **Claude Code**, **Continue**, **VS Code**, and **Cline** — pick your IDE at install time and assets land in the right folder.
25
+
26
+ ## Works with your IDE
27
+
28
+ Built for **Cursor** first. At install time you can also target other AI IDEs — same registry, different project folder.
29
+
30
+ **Install flow:** select IDE (default: Cursor) → browse → install
31
+
32
+ | IDE | Flag | Project folder |
33
+ | --- | ---- | -------------- |
34
+ | **Cursor** | `--ide cursor` **(default)** | `.cursor/` |
35
+ | Windsurf | `--ide windsurf` | `.windsurf/` |
36
+ | Claude Code | `--ide claude-code` | `.claude/` |
37
+ | Continue | `--ide continue` | `.continue/` |
38
+ | VS Code | `--ide vscode` | `.vscode/` |
39
+ | Cline | `--ide cline` | `.cline/` |
40
+
41
+ ```bash
42
+ # Cursor (default) — IDE picker defaults here
43
+ npx noah-cursor browse
44
+
45
+ # Other IDEs when you need them
46
+ npx noah-cursor browse --ide windsurf
47
+ npx noah-cursor add --skill commit-push --ide claude-code
48
+ ```
49
+
24
50
  ## Built for your stack
25
51
 
26
52
  <p align="center">
@@ -44,7 +70,7 @@ Curated Skills & Rules for the stacks you already ship — React dashboards, Lar
44
70
 
45
71
  | Pain | Noah Cursor |
46
72
  | ---- | ----------- |
47
- | Rebuilding the same Cursor setup on every project | One command installs a full workflow |
73
+ | Rebuilding the same Cursor setup on every project | One command installs a full workflow into `.cursor/` |
48
74
  | Vague AI prompts that drift between teammates | Versioned Skills & Rules from a real registry |
49
75
  | Hunting docs every time you switch stacks | Stack-specific rules for React, Laravel, Next, Nuxt |
50
76
  | Manual QA loops with lint/doctor tools | Fix Skills that run → fix → verify |
@@ -57,15 +83,17 @@ Built for people who live in the terminal and want Cursor to feel like a product
57
83
  <img src="https://cdn.jsdelivr.net/npm/noah-cursor@latest/assets/noah-cursor-demo.gif" alt="Noah Cursor CLI demo" width="100%" />
58
84
  </p>
59
85
 
86
+ Marketing site: [GitHub Pages](https://itsmenoahpoli.github.io/noah-cursor/) (enable Pages → GitHub Actions after first deploy).
87
+
60
88
  ## Quick start
61
89
 
62
90
  Requires **Node.js 20+**.
63
91
 
64
92
  ```bash
65
- # Try it instantly — no global install
93
+ # Interactive install (recommended)
66
94
  npx noah-cursor browse
67
95
 
68
- # Or install once
96
+ # Or install globally
69
97
  npm install -g noah-cursor
70
98
  noah-cursor browse
71
99
  ```
@@ -75,9 +103,12 @@ The registry ships inside the package. Nothing to clone. Nothing to authenticate
75
103
  ### 30-second wins
76
104
 
77
105
  ```bash
78
- # Ship cleaner commits every time
106
+ # Cursor (default) — cleaner commits
79
107
  npx noah-cursor add --skill commit-push
80
108
 
109
+ # Same skill into Windsurf
110
+ npx noah-cursor add --skill commit-push --ide windsurf
111
+
81
112
  # Auto-generate a solid project README
82
113
  npx noah-cursor add --skill generate-readme
83
114
 
@@ -101,7 +132,7 @@ npx noah-cursor add --rule laravel-api --rule react-spa-dashboard
101
132
  | `nestjs-knip-fix` | NestJS | Knip on NestJS — unused code/deps out, features intact |
102
133
  | `node-doctor-fix` | Node.js | Bundled node-doctor (Knip + hygiene) for generic Node |
103
134
 
104
- ### Rules — stack guidance baked into Cursor
135
+ ### Rules — stack guidance for your agent
105
136
 
106
137
  | Rule | Stack | For |
107
138
  | ---- | ----- | --- |
@@ -117,7 +148,7 @@ Prompts, MCP configs, and Presets are supported by the CLI — more shipping soo
117
148
 
118
149
  | Command | Description |
119
150
  | ------- | ----------- |
120
- | `browse` | Interactive TUI discover & install without memorizing ids |
151
+ | `browse` | Pick IDE browse categories install assets |
121
152
  | `add` | Install Skills, Rules, Prompts, MCP, or Presets |
122
153
  | `search` | Search the registry |
123
154
  | `list` | List registry or installed assets |
@@ -127,8 +158,13 @@ Prompts, MCP configs, and Presets are supported by the CLI — more shipping soo
127
158
 
128
159
  ### browse
129
160
 
161
+ ```text
162
+ Select IDE → Select categories → Select assets → Confirm → Install
163
+ ```
164
+
130
165
  ```bash
131
166
  noah-cursor browse
167
+ noah-cursor browse --ide windsurf
132
168
  noah-cursor browse --browse-skills
133
169
  noah-cursor browse --browse-rules
134
170
  noah-cursor browse --browse-prompts
@@ -147,6 +183,7 @@ noah-cursor add
147
183
  --prompt <name>
148
184
  --mcp <name>
149
185
  --preset <name>
186
+ --ide <name> # cursor (default) | windsurf | claude-code | continue | vscode | cline
150
187
  --all
151
188
  --force
152
189
  --dry-run
@@ -158,35 +195,61 @@ Always installs from **Noah's bundled registry**.
158
195
 
159
196
  ```bash
160
197
  npx noah-cursor add --skill commit-push
198
+ npx noah-cursor add --skill commit-push --ide claude-code
161
199
  npx noah-cursor add --rule nextjs-marketing
162
200
  npx noah-cursor add --all
163
201
  ```
164
202
 
165
203
  ### search / list / remove / update / doctor
166
204
 
205
+ Pass `--ide` when managing installs for a non-Cursor target (default: `cursor`).
206
+
167
207
  ```bash
168
208
  noah-cursor search doctor
169
209
  noah-cursor list
170
210
  noah-cursor list --installed
211
+ noah-cursor list --installed --ide windsurf
171
212
  noah-cursor remove skill test --yes
213
+ noah-cursor remove skill test --ide windsurf --yes
172
214
  noah-cursor update --yes
173
215
  noah-cursor doctor
216
+ noah-cursor doctor --ide claude-code
174
217
  ```
175
218
 
176
219
  ## How it works
177
220
 
178
- Assets land in your project under `.cursor/`:
221
+ By default, assets install under **`.cursor/`**. Choose another IDE and the folder follows:
222
+
223
+ ```
224
+ your-project/
225
+ .cursor/ # Cursor (default) ← primary target
226
+ .windsurf/ # --ide windsurf
227
+ .claude/ # --ide claude-code
228
+ .continue/ # --ide continue
229
+ .vscode/ # --ide vscode
230
+ .cline/ # --ide cline
231
+ ```
232
+
233
+ Inside the IDE root (e.g. `.cursor/`):
234
+
235
+ ```
236
+ skills/
237
+ rules/
238
+ prompts/
239
+ mcp/
240
+ noah.json # tracks installed assets + ide
241
+ ```
242
+
243
+ Example after a default browse install:
179
244
 
180
245
  ```
181
246
  .cursor/
182
- skills/
183
- rules/
184
- prompts/
185
- mcp/
186
- noah.json # tracks what you installed
247
+ skills/commit-push/
248
+ rules/laravel-api/
249
+ noah.json
187
250
  ```
188
251
 
189
- `noah.json` keeps versions and registry metadata so `update` and `remove` stay reliable across machines and teammates.
252
+ `noah.json` keeps versions, IDE, and registry metadata so `update` and `remove` stay reliable across machines and teammates.
190
253
 
191
254
  ## Build your own registry assets
192
255
 
@@ -207,7 +270,7 @@ Add an asset folder, register it in `manifest.json`, ship. Each `id` maps to a f
207
270
  {
208
271
  "name": "noah-registry",
209
272
  "version": "1.0.0",
210
- "description": "My Cursor assets",
273
+ "description": "My AI IDE assets",
211
274
  "skills": [
212
275
  {
213
276
  "id": "my-workflow",
@@ -251,13 +314,13 @@ Whether it's a Skill you want added, a Rule for your stack, a bug report, or an
251
314
  If Noah Cursor saves you time, consider buying me a coffee — it helps keep the CLI and registry maintained.
252
315
 
253
316
  <p align="center">
254
- <a href="https://www.buymeacoffee.com/itsmenoahpoli">
317
+ <a href="https://www.buymeacoffee.com/klnaufr">
255
318
  <img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" height="50" />
256
319
  </a>
257
320
  </p>
258
321
 
259
322
  <p align="center">
260
- <a href="https://www.buymeacoffee.com/itsmenoahpoli">
323
+ <a href="https://www.buymeacoffee.com/klnaufr">
261
324
  <img src="https://cdn.jsdelivr.net/npm/noah-cursor@latest/assets/qr-code.png" alt="Buy Me a Coffee QR code" width="220" />
262
325
  </a>
263
326
  <br />
package/assets/me.jpeg ADDED
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqDzD"}
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4DzD"}
@@ -1,5 +1,6 @@
1
1
  import chalk from "chalk";
2
2
  import { createSpinner, handleCommandError, logTitle } from "../core/logger.js";
3
+ import { IDE_IDS, parseIdeId } from "../constants/index.js";
3
4
  import { addFromRegistry } from "../services/install-service.js";
4
5
  export function registerAddCommand(program) {
5
6
  program
@@ -11,6 +12,7 @@ export function registerAddCommand(program) {
11
12
  .option("--mcp <name>", "Install an MCP config by id")
12
13
  .option("--preset <name>", "Install a preset (expands to included assets)")
13
14
  .option("--all", "Install all assets from the registry", false)
15
+ .option("--ide <name>", `Target IDE (${IDE_IDS.join("|")})`, "cursor")
14
16
  .option("--force", "Overwrite existing assets", false)
15
17
  .option("--dry-run", "Show what would be installed without writing files", false)
16
18
  .option("-y, --yes", "Skip confirmation prompts", false)
@@ -18,6 +20,7 @@ export function registerAddCommand(program) {
18
20
  .action(async (opts) => {
19
21
  const spinner = createSpinner("Loading registry…");
20
22
  try {
23
+ const ide = parseIdeId(opts.ide);
21
24
  spinner.start();
22
25
  const options = {
23
26
  skill: opts.skill,
@@ -30,6 +33,7 @@ export function registerAddCommand(program) {
30
33
  dryRun: opts.dryRun,
31
34
  yes: opts.yes,
32
35
  verbose: opts.verbose,
36
+ ide,
33
37
  };
34
38
  spinner.text = "Validating and installing assets…";
35
39
  const results = await addFromRegistry(undefined, options);
@@ -1 +1 @@
1
- {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGjE,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,gBAAgB,EAAE,uBAAuB,CAAC;SACjD,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;SAC/C,MAAM,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;SACnD,MAAM,CAAC,cAAc,EAAE,6BAA6B,CAAC;SACrD,MAAM,CAAC,iBAAiB,EAAE,+CAA+C,CAAC;SAC1E,MAAM,CAAC,OAAO,EAAE,sCAAsC,EAAE,KAAK,CAAC;SAC9D,MAAM,CAAC,SAAS,EAAE,2BAA2B,EAAE,KAAK,CAAC;SACrD,MAAM,CAAC,WAAW,EAAE,oDAAoD,EAAE,KAAK,CAAC;SAChF,MAAM,CAAC,WAAW,EAAE,2BAA2B,EAAE,KAAK,CAAC;SACvD,MAAM,CAAC,eAAe,EAAE,gBAAgB,EAAE,KAAK,CAAC;SAChD,MAAM,CAAC,KAAK,EAAE,IAAuC,EAAE,EAAE;QACxD,MAAM,OAAO,GAAG,aAAa,CAAC,mBAAmB,CAAC,CAAC;QACnD,IAAI,CAAC;YACH,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,GAAe;gBAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC;YAEF,OAAO,CAAC,IAAI,GAAG,mCAAmC,CAAC;YACnD,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC1D,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACpB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO;wBAC3B,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;wBACzB,CAAC,CAAC,OAAO,CAAC,MAAM;4BACd,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;4BACvB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBAC/B,OAAO,CAAC,GAAG,CACT,KAAK,MAAM,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE,CACzE,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"browse.d.ts","sourceRoot":"","sources":["../../src/commands/browse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgEpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoG5D"}
1
+ {"version":3,"file":"browse.d.ts","sourceRoot":"","sources":["../../src/commands/browse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmEpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgH5D"}
@@ -1,9 +1,11 @@
1
1
  import chalk from "chalk";
2
2
  import { handleCommandError, logWarn } from "../core/logger.js";
3
+ import { IDE_IDS } from "../constants/index.js";
3
4
  import { installFromSelections } from "../services/install-service.js";
4
5
  import { loadRegistry } from "../services/registry-loader.js";
5
6
  import { getManifestAssets } from "../utils/assets.js";
6
7
  import { resolveNoahRegistry } from "../utils/registry.js";
8
+ import { selectIde } from "../ui/ideMenu.js";
7
9
  import { selectCategories } from "../ui/categoryMenu.js";
8
10
  import { selectAssets } from "../ui/assetMenu.js";
9
11
  import { confirmInstallation } from "../ui/summary.js";
@@ -53,6 +55,7 @@ export function registerBrowseCommand(program) {
53
55
  .option("--browse-prompts", "Browse prompts only", false)
54
56
  .option("--browse-mcp", "Browse MCP configs only", false)
55
57
  .option("--browse-presets", "Browse presets only", false)
58
+ .option("--ide <name>", `Target IDE (${IDE_IDS.join("|")}); skips the IDE picker`)
56
59
  .option("--force", "Overwrite existing assets", false)
57
60
  .option("--dry-run", "Show what would be installed without writing files", false)
58
61
  .option("-y, --yes", "Skip final confirmation", false)
@@ -69,6 +72,12 @@ export function registerBrowseCommand(program) {
69
72
  progress.succeed(`Reading manifest${manifest.name ? chalk.dim(` (${manifest.name}@${manifest.version})`) : ""}`);
70
73
  console.log();
71
74
  try {
75
+ const ide = await selectIde(opts.ide);
76
+ if (!ide) {
77
+ logWarn("Browse cancelled.");
78
+ return;
79
+ }
80
+ console.log();
72
81
  const flagged = categoriesFromFlags(opts);
73
82
  const categories = await selectCategories(flagged.length > 0 ? flagged : undefined);
74
83
  if (!categories || categories.length === 0) {
@@ -87,7 +96,7 @@ export function registerBrowseCommand(program) {
87
96
  }
88
97
  const shouldInstall = opts.yes ||
89
98
  opts.dryRun ||
90
- (await confirmInstallation(registry.url, selections));
99
+ (await confirmInstallation(registry.url, selections, ide));
91
100
  if (!shouldInstall) {
92
101
  logWarn("Installation cancelled.");
93
102
  return;
@@ -100,6 +109,7 @@ export function registerBrowseCommand(program) {
100
109
  force: opts.force,
101
110
  dryRun: opts.dryRun,
102
111
  verbose: opts.verbose,
112
+ ide,
103
113
  onStepStart: async (message) => {
104
114
  progress.start(formatStep(message));
105
115
  },
@@ -1 +1 @@
1
- {"version":3,"file":"browse.js","sourceRoot":"","sources":["../../src/commands/browse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browse.js","sourceRoot":"","sources":["../../src/commands/browse.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiC5D"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuC5D"}
@@ -1,15 +1,18 @@
1
1
  import chalk from "chalk";
2
2
  import { handleCommandError, logTitle } from "../core/logger.js";
3
+ import { IDE_IDS, parseIdeId } from "../constants/index.js";
3
4
  import { runDoctor } from "../services/doctor-service.js";
4
5
  export function registerDoctorCommand(program) {
5
6
  program
6
7
  .command("doctor")
7
8
  .description("Diagnose Noah Cursor environment and installation health")
9
+ .option("--ide <name>", `Target IDE (${IDE_IDS.join("|")})`, "cursor")
8
10
  .option("-v, --verbose", "Verbose output", false)
9
11
  .action(async (opts) => {
10
12
  try {
11
- const checks = await runDoctor();
12
- logTitle("Noah Cursor Doctor");
13
+ const ide = parseIdeId(opts.ide);
14
+ const checks = await runDoctor(process.cwd(), ide);
15
+ logTitle(`Noah Cursor Doctor · ${ide}`);
13
16
  let failures = 0;
14
17
  for (const check of checks) {
15
18
  const icon = check.status === "pass"
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0DAA0D,CAAC;SACvE,MAAM,CAAC,eAAe,EAAE,gBAAgB,EAAE,KAAK,CAAC;SAChD,MAAM,CAAC,KAAK,EAAE,IAA2B,EAAE,EAAE;QAC5C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;YACjC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;YAE/B,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,IAAI,GACR,KAAK,CAAC,MAAM,KAAK,MAAM;oBACrB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;oBAClB,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM;wBACvB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;wBACnB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACrE,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;oBAAE,QAAQ,IAAI,CAAC,CAAC;YAC7C,CAAC;YAED,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,mBAAmB,CAAC,CAAC,CAAC;gBACvD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0DAA0D,CAAC;SACvE,MAAM,CACL,cAAc,EACd,eAAe,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EACnC,QAAQ,CACT;SACA,MAAM,CAAC,eAAe,EAAE,gBAAgB,EAAE,KAAK,CAAC;SAChD,MAAM,CAAC,KAAK,EAAE,IAAyC,EAAE,EAAE;QAC1D,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;YACnD,QAAQ,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;YAExC,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,IAAI,GACR,KAAK,CAAC,MAAM,KAAK,MAAM;oBACrB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;oBAClB,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM;wBACvB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;wBACnB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACrE,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;oBAAE,QAAQ,IAAI,CAAC,CAAC;YAC7C,CAAC;YAED,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,mBAAmB,CAAC,CAAC,CAAC;gBACvD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+D1D"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuE1D"}
@@ -1,5 +1,6 @@
1
1
  import chalk from "chalk";
2
2
  import { createSpinner, handleCommandError, logInfo, logTitle } from "../core/logger.js";
3
+ import { IDE_IDS, parseIdeId } from "../constants/index.js";
3
4
  import { listInstalledAssets } from "../metadata/store.js";
4
5
  import { listRegistryAssets } from "../services/install-service.js";
5
6
  const TYPE_ORDER = ["skill", "rule", "prompt", "mcp", "preset"];
@@ -8,16 +9,18 @@ export function registerListCommand(program) {
8
9
  .command("list")
9
10
  .description("List all Skills, Rules, Prompts, MCP configs, and Presets in Noah's registry")
10
11
  .option("--installed", "List locally installed assets only", false)
12
+ .option("--ide <name>", `Target IDE for --installed (${IDE_IDS.join("|")})`, "cursor")
11
13
  .option("-v, --verbose", "Verbose output", false)
12
14
  .action(async (opts) => {
13
15
  if (opts.installed) {
14
16
  try {
15
- const listed = await listInstalledAssets();
17
+ const ide = parseIdeId(opts.ide);
18
+ const listed = await listInstalledAssets(process.cwd(), ide);
16
19
  if (listed.installed.length === 0) {
17
- logInfo("No assets installed. Use `noah-cursor add` to install some.");
20
+ logInfo(`No assets installed for ${ide}. Use \`noah-cursor browse\` or \`noah-cursor add\` to install some.`);
18
21
  return;
19
22
  }
20
- logTitle(`Installed assets (${listed.installed.length})`);
23
+ logTitle(`Installed assets (${listed.installed.length}) · ${ide}`);
21
24
  console.log();
22
25
  for (const asset of listed.installed) {
23
26
  console.log(` ${chalk.cyan(asset.type.padEnd(7))} ${chalk.bold(asset.id)}@${asset.version}`);
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuC5D"}
1
+ {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoD5D"}
@@ -1,6 +1,6 @@
1
1
  import { createSpinner, handleCommandError } from "../core/logger.js";
2
2
  import { removeAsset } from "../services/install-service.js";
3
- import { ASSET_TYPES } from "../constants/index.js";
3
+ import { ASSET_TYPES, IDE_IDS, parseIdeId } from "../constants/index.js";
4
4
  import { ValidationError } from "../core/errors.js";
5
5
  export function registerRemoveCommand(program) {
6
6
  program
@@ -9,6 +9,7 @@ export function registerRemoveCommand(program) {
9
9
  .description("Remove an installed asset")
10
10
  .argument("<type>", `Asset type (${ASSET_TYPES.join("|")})`)
11
11
  .argument("<id>", "Asset id")
12
+ .option("--ide <name>", `Target IDE (${IDE_IDS.join("|")})`, "cursor")
12
13
  .option("--force", "Remove even if not in metadata", false)
13
14
  .option("--dry-run", "Show what would be removed", false)
14
15
  .option("-y, --yes", "Skip confirmation prompts", false)
@@ -19,12 +20,14 @@ export function registerRemoveCommand(program) {
19
20
  if (!ASSET_TYPES.includes(type)) {
20
21
  throw new ValidationError(`Invalid asset type "${type}". Expected one of: ${ASSET_TYPES.join(", ")}`);
21
22
  }
23
+ const ide = parseIdeId(opts.ide);
22
24
  spinner.start();
23
25
  await removeAsset(type, id, {
24
26
  force: opts.force,
25
27
  dryRun: opts.dryRun,
26
28
  yes: opts.yes,
27
29
  verbose: opts.verbose,
30
+ ide,
28
31
  });
29
32
  spinner.stop();
30
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,KAAK,CAAC,IAAI,CAAC;SACX,WAAW,CAAC,2BAA2B,CAAC;SACxC,QAAQ,CAAC,QAAQ,EAAE,eAAe,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;SAC3D,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;SAC5B,MAAM,CAAC,SAAS,EAAE,gCAAgC,EAAE,KAAK,CAAC;SAC1D,MAAM,CAAC,WAAW,EAAE,4BAA4B,EAAE,KAAK,CAAC;SACxD,MAAM,CAAC,WAAW,EAAE,2BAA2B,EAAE,KAAK,CAAC;SACvD,MAAM,CAAC,eAAe,EAAE,gBAAgB,EAAE,KAAK,CAAC;SAChD,MAAM,CACL,KAAK,EACH,IAAY,EACZ,EAAU,EACV,IAA6E,EAC7E,EAAE;QACF,MAAM,OAAO,GAAG,aAAa,CAAC,YAAY,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC;YACH,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAiB,CAAC,EAAE,CAAC;gBAC7C,MAAM,IAAI,eAAe,CACvB,uBAAuB,IAAI,uBAAuB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3E,CAAC;YACJ,CAAC;YAED,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,WAAW,CAAC,IAAiB,EAAE,EAAE,EAAE;gBACvC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CACF,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEzE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,KAAK,CAAC,IAAI,CAAC;SACX,WAAW,CAAC,2BAA2B,CAAC;SACxC,QAAQ,CAAC,QAAQ,EAAE,eAAe,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;SAC3D,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;SAC5B,MAAM,CACL,cAAc,EACd,eAAe,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EACnC,QAAQ,CACT;SACA,MAAM,CAAC,SAAS,EAAE,gCAAgC,EAAE,KAAK,CAAC;SAC1D,MAAM,CAAC,WAAW,EAAE,4BAA4B,EAAE,KAAK,CAAC;SACxD,MAAM,CAAC,WAAW,EAAE,2BAA2B,EAAE,KAAK,CAAC;SACvD,MAAM,CAAC,eAAe,EAAE,gBAAgB,EAAE,KAAK,CAAC;SAChD,MAAM,CACL,KAAK,EACH,IAAY,EACZ,EAAU,EACV,IAMC,EACD,EAAE;QACF,MAAM,OAAO,GAAG,aAAa,CAAC,YAAY,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC;YACH,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAiB,CAAC,EAAE,CAAC;gBAC7C,MAAM,IAAI,eAAe,CACvB,uBAAuB,IAAI,uBAAuB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3E,CAAC;YACJ,CAAC;YAED,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjC,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,WAAW,CAAC,IAAiB,EAAE,EAAE,EAAE;gBACvC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,GAAG;aACJ,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CACF,CAAC;AACN,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgC5D"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyC5D"}
@@ -1,22 +1,26 @@
1
1
  import chalk from "chalk";
2
2
  import { createSpinner, handleCommandError, logTitle } from "../core/logger.js";
3
+ import { IDE_IDS, parseIdeId } from "../constants/index.js";
3
4
  import { updateAssets } from "../services/install-service.js";
4
5
  export function registerUpdateCommand(program) {
5
6
  program
6
7
  .command("update")
7
8
  .description("Update installed assets from their registry")
9
+ .option("--ide <name>", `Target IDE (${IDE_IDS.join("|")})`, "cursor")
8
10
  .option("--dry-run", "Show what would be updated", false)
9
11
  .option("-y, --yes", "Skip confirmation prompts", false)
10
12
  .option("-v, --verbose", "Verbose output", false)
11
13
  .action(async (opts) => {
12
14
  const spinner = createSpinner("Updating installed assets…");
13
15
  try {
16
+ const ide = parseIdeId(opts.ide);
14
17
  spinner.start();
15
18
  const results = await updateAssets({
16
19
  dryRun: opts.dryRun,
17
20
  yes: opts.yes,
18
21
  verbose: opts.verbose,
19
22
  force: true,
23
+ ide,
20
24
  });
21
25
  spinner.stop();
22
26
  if (results.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,WAAW,EAAE,4BAA4B,EAAE,KAAK,CAAC;SACxD,MAAM,CAAC,WAAW,EAAE,2BAA2B,EAAE,KAAK,CAAC;SACvD,MAAM,CAAC,eAAe,EAAE,gBAAgB,EAAE,KAAK,CAAC;SAChD,MAAM,CAAC,KAAK,EAAE,IAA4D,EAAE,EAAE;QAC7E,MAAM,OAAO,GAAG,aAAa,CAAC,4BAA4B,CAAC,CAAC;QAC5D,IAAI,CAAC;YACH,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC;gBACjC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACpB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE,CACzF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CACL,cAAc,EACd,eAAe,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EACnC,QAAQ,CACT;SACA,MAAM,CAAC,WAAW,EAAE,4BAA4B,EAAE,KAAK,CAAC;SACxD,MAAM,CAAC,WAAW,EAAE,2BAA2B,EAAE,KAAK,CAAC;SACvD,MAAM,CAAC,eAAe,EAAE,gBAAgB,EAAE,KAAK,CAAC;SAChD,MAAM,CACL,KAAK,EAAE,IAA0E,EAAE,EAAE;QACnF,MAAM,OAAO,GAAG,aAAa,CAAC,4BAA4B,CAAC,CAAC;QAC5D,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjC,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC;gBACjC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,IAAI;gBACX,GAAG;aACJ,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACpB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE,CACzF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CACF,CAAC;AACN,CAAC"}
@@ -0,0 +1,16 @@
1
+ export declare const IDE_IDS: readonly ["cursor", "windsurf", "claude-code", "continue", "vscode", "cline"];
2
+ export type IdeId = (typeof IDE_IDS)[number];
3
+ export declare const DEFAULT_IDE: IdeId;
4
+ export interface IdeDefinition {
5
+ id: IdeId;
6
+ name: string;
7
+ /** Project-root directory where assets are installed */
8
+ rootDir: string;
9
+ hint: string;
10
+ }
11
+ /** Supported IDE install targets. Assets land under `{rootDir}/{skills,rules,...}`. */
12
+ export declare const IDE_DEFINITIONS: readonly IdeDefinition[];
13
+ export declare function isIdeId(value: string): value is IdeId;
14
+ export declare function getIdeDefinition(id: IdeId): IdeDefinition;
15
+ export declare function parseIdeId(value: string | undefined, fallback?: IdeId): IdeId;
16
+ //# sourceMappingURL=ides.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ides.d.ts","sourceRoot":"","sources":["../../src/constants/ides.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,+EAOV,CAAC;AAEX,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7C,eAAO,MAAM,WAAW,EAAE,KAAgB,CAAC;AAE3C,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,KAAK,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,uFAAuF;AACvF,eAAO,MAAM,eAAe,EAAE,SAAS,aAAa,EAqC1C,CAAC;AAEX,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,KAAK,CAErD;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,KAAK,GAAG,aAAa,CAMzD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,GAAE,KAAmB,GAAG,KAAK,CAW1F"}
@@ -0,0 +1,69 @@
1
+ export const IDE_IDS = [
2
+ "cursor",
3
+ "windsurf",
4
+ "claude-code",
5
+ "continue",
6
+ "vscode",
7
+ "cline",
8
+ ];
9
+ export const DEFAULT_IDE = "cursor";
10
+ /** Supported IDE install targets. Assets land under `{rootDir}/{skills,rules,...}`. */
11
+ export const IDE_DEFINITIONS = [
12
+ {
13
+ id: "cursor",
14
+ name: "Cursor",
15
+ rootDir: ".cursor",
16
+ hint: "Skills, Rules, and MCP under .cursor/",
17
+ },
18
+ {
19
+ id: "windsurf",
20
+ name: "Windsurf",
21
+ rootDir: ".windsurf",
22
+ hint: "Cascade rules and workflows under .windsurf/",
23
+ },
24
+ {
25
+ id: "claude-code",
26
+ name: "Claude Code",
27
+ rootDir: ".claude",
28
+ hint: "Claude Code skills and settings under .claude/",
29
+ },
30
+ {
31
+ id: "continue",
32
+ name: "Continue",
33
+ rootDir: ".continue",
34
+ hint: "Continue prompts and rules under .continue/",
35
+ },
36
+ {
37
+ id: "vscode",
38
+ name: "VS Code",
39
+ rootDir: ".vscode",
40
+ hint: "Workspace AI assets under .vscode/",
41
+ },
42
+ {
43
+ id: "cline",
44
+ name: "Cline",
45
+ rootDir: ".cline",
46
+ hint: "Cline rules and prompts under .cline/",
47
+ },
48
+ ];
49
+ export function isIdeId(value) {
50
+ return IDE_IDS.includes(value);
51
+ }
52
+ export function getIdeDefinition(id) {
53
+ const found = IDE_DEFINITIONS.find((ide) => ide.id === id);
54
+ if (!found) {
55
+ throw new Error(`Unknown IDE: ${id}`);
56
+ }
57
+ return found;
58
+ }
59
+ export function parseIdeId(value, fallback = DEFAULT_IDE) {
60
+ if (!value) {
61
+ return fallback;
62
+ }
63
+ const normalized = value.trim().toLowerCase();
64
+ if (!isIdeId(normalized)) {
65
+ throw new Error(`Unknown IDE "${value}". Supported: ${IDE_IDS.join(", ")}`);
66
+ }
67
+ return normalized;
68
+ }
69
+ //# sourceMappingURL=ides.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ides.js","sourceRoot":"","sources":["../../src/constants/ides.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,QAAQ;IACR,UAAU;IACV,aAAa;IACb,UAAU;IACV,QAAQ;IACR,OAAO;CACC,CAAC;AAIX,MAAM,CAAC,MAAM,WAAW,GAAU,QAAQ,CAAC;AAU3C,uFAAuF;AACvF,MAAM,CAAC,MAAM,eAAe,GAA6B;IACvD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,uCAAuC;KAC9C;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,WAAW;QACpB,IAAI,EAAE,8CAA8C;KACrD;IACD;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,gDAAgD;KACvD;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,WAAW;QACpB,IAAI,EAAE,6CAA6C;KACpD;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,oCAAoC;KAC3C;IACD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,uCAAuC;KAC9C;CACO,CAAC;AAEX,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,OAAQ,OAA6B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAS;IACxC,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAyB,EAAE,WAAkB,WAAW;IACjF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,gBAAgB,KAAK,iBAAiB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3D,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}