@ranger-testing/ranger-cli 1.0.14 → 1.1.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 (85) hide show
  1. package/README.md +87 -324
  2. package/build/cli.js +76 -64
  3. package/build/cli.js.map +1 -1
  4. package/build/commands/addEnv.js +1 -1
  5. package/build/commands/addEnv.js.map +1 -1
  6. package/build/commands/clean.js +1 -1
  7. package/build/commands/clean.js.map +1 -1
  8. package/build/commands/dataMcpServer.js +1 -1
  9. package/build/commands/feature.js +94 -34
  10. package/build/commands/feature.js.map +1 -1
  11. package/build/commands/hook.js +28 -0
  12. package/build/commands/hook.js.map +1 -0
  13. package/build/commands/hooks/disable.js +30 -0
  14. package/build/commands/hooks/disable.js.map +1 -0
  15. package/build/commands/hooks/enable.js +48 -0
  16. package/build/commands/hooks/enable.js.map +1 -0
  17. package/build/commands/hooks/exitPlanMode.js +35 -0
  18. package/build/commands/hooks/exitPlanMode.js.map +1 -0
  19. package/build/commands/hooks/index.js +11 -0
  20. package/build/commands/hooks/index.js.map +1 -0
  21. package/build/commands/hooks/output.js +53 -0
  22. package/build/commands/hooks/output.js.map +1 -0
  23. package/build/commands/hooks/planReminder.js +46 -0
  24. package/build/commands/hooks/planReminder.js.map +1 -0
  25. package/build/commands/hooks/planStart.js +30 -0
  26. package/build/commands/hooks/planStart.js.map +1 -0
  27. package/build/commands/hooks/postEdit.js +43 -0
  28. package/build/commands/hooks/postEdit.js.map +1 -0
  29. package/build/commands/hooks/preCompact.js +30 -0
  30. package/build/commands/hooks/preCompact.js.map +1 -0
  31. package/build/commands/hooks/sessionEnd.js +21 -0
  32. package/build/commands/hooks/sessionEnd.js.map +1 -0
  33. package/build/commands/hooks/sessionStart.js +75 -0
  34. package/build/commands/hooks/sessionStart.js.map +1 -0
  35. package/build/commands/hooks/stopHook.js +54 -0
  36. package/build/commands/hooks/stopHook.js.map +1 -0
  37. package/build/commands/index.js +1 -3
  38. package/build/commands/index.js.map +1 -1
  39. package/build/commands/skillup.js +36 -70
  40. package/build/commands/skillup.js.map +1 -1
  41. package/build/commands/start.js +1 -1
  42. package/build/commands/start.js.map +1 -1
  43. package/build/commands/status.js +17 -21
  44. package/build/commands/status.js.map +1 -1
  45. package/build/commands/updateEnv.js +1 -1
  46. package/build/commands/updateEnv.js.map +1 -1
  47. package/build/commands/useEnv.js +1 -1
  48. package/build/commands/utils/browserSessionsApi.js +1 -1
  49. package/build/commands/utils/claudePlugin.js +85 -0
  50. package/build/commands/utils/claudePlugin.js.map +1 -0
  51. package/build/commands/utils/cliSecret.js +1 -1
  52. package/build/commands/utils/desirePathLog.js +133 -0
  53. package/build/commands/utils/desirePathLog.js.map +1 -0
  54. package/build/commands/utils/featureApi.js +23 -0
  55. package/build/commands/utils/featureApi.js.map +1 -1
  56. package/build/commands/utils/git.js +44 -0
  57. package/build/commands/utils/git.js.map +1 -0
  58. package/build/commands/utils/keychain.js +1 -1
  59. package/build/commands/utils/localAgentInstallationsApi.js +1 -1
  60. package/build/commands/utils/sessionCache.js +282 -0
  61. package/build/commands/utils/sessionCache.js.map +1 -0
  62. package/build/commands/utils/skillContent.js +3 -3
  63. package/build/commands/utils/skillContent.js.map +1 -1
  64. package/build/commands/utils/skills.js +1 -1
  65. package/build/commands/utils/skills.js.map +1 -1
  66. package/build/commands/verifyFeature.js +32 -3
  67. package/build/commands/verifyFeature.js.map +1 -1
  68. package/build/commands/verifyInBrowser.js +1 -1
  69. package/build/skills/ranger/SKILL.md +170 -0
  70. package/build/skills/ranger/create.md +151 -0
  71. package/build/skills/ranger/start.md +122 -0
  72. package/build/skills/{feature-tracker → ranger}/verify.md +48 -3
  73. package/package.json +2 -3
  74. package/build/commands/postEditHook.js +0 -25
  75. package/build/commands/postEditHook.js.map +0 -1
  76. package/build/commands/preCompactHook.js +0 -85
  77. package/build/commands/preCompactHook.js.map +0 -1
  78. package/build/commands/sessionStartHook.js +0 -64
  79. package/build/commands/sessionStartHook.js.map +0 -1
  80. package/build/commands/utils/mcpConfig.js +0 -1
  81. package/build/commands/utils/mcpConfig.js.map +0 -1
  82. package/build/skills/feature-tracker/SKILL.md +0 -163
  83. package/build/skills/feature-tracker/create.md +0 -114
  84. package/build/skills/feature-tracker/report.md +0 -159
  85. package/build/skills/feature-tracker/start.md +0 -93
@@ -0,0 +1,43 @@
1
+ import { getSessionEntry, updateBranchTracking, } from '../utils/sessionCache.js';
2
+ import { getToken } from '../utils/keychain.js';
3
+ import { getEnabledSessionId } from './output.js';
4
+ /**
5
+ * PostToolUse (Write/Edit) hook handler for Claude Code plugin
6
+ *
7
+ * This command is invoked automatically after Write or Edit tools are used.
8
+ * If the session isn't registered with a Ranger feature, prompts to use /ranger.
9
+ */
10
+ export async function postEdit() {
11
+ const sessionId = await getEnabledSessionId();
12
+ if (!sessionId) {
13
+ return;
14
+ }
15
+ // Update branch tracking - auto-enable new branches if session switched while enabled
16
+ updateBranchTracking(sessionId);
17
+ const token = await getToken();
18
+ if (!token) {
19
+ return;
20
+ }
21
+ // Check if this session is already registered
22
+ const existingEntry = getSessionEntry(sessionId);
23
+ if (existingEntry) {
24
+ // Already registered - remind about adding checklist items if scope expanded
25
+ const response = {
26
+ hookSpecificOutput: {
27
+ hookEventName: 'PostToolUse',
28
+ additionalContext: `RANGER: If this change expands the scope of the active feature, you may need to add a checklist item. See Workflow 1 in /ranger. If you decide to add a checklist item, you MUST read Workflow 1 IN DETAIL first.`,
29
+ },
30
+ };
31
+ console.log(JSON.stringify(response));
32
+ return;
33
+ }
34
+ // Not registered - prompt to use /ranger for UI work
35
+ const response = {
36
+ hookSpecificOutput: {
37
+ hookEventName: 'PostToolUse',
38
+ additionalContext: `RANGER: If this is for a UI feature, you MUST use /ranger to either create a new feature or resume an existing one.`,
39
+ },
40
+ };
41
+ console.log(JSON.stringify(response));
42
+ }
43
+ //# sourceMappingURL=postEdit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postEdit.js","sourceRoot":"","sources":["../../../src/commands/hooks/postEdit.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,eAAe,EACf,oBAAoB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC1B,MAAM,SAAS,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO;IACX,CAAC;IAED,sFAAsF;IACtF,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAEhC,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;IAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO;IACX,CAAC;IAED,8CAA8C;IAC9C,MAAM,aAAa,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IACjD,IAAI,aAAa,EAAE,CAAC;QAChB,6EAA6E;QAC7E,MAAM,QAAQ,GAAG;YACb,kBAAkB,EAAE;gBAChB,aAAa,EAAE,aAAa;gBAC5B,iBAAiB,EAAE,mNAAmN;aACzO;SACJ,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtC,OAAO;IACX,CAAC;IAED,qDAAqD;IACrD,MAAM,QAAQ,GAAG;QACb,kBAAkB,EAAE;YAChB,aAAa,EAAE,aAAa;YAC5B,iBAAiB,EAAE,qHAAqH;SAC3I;KACJ,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { getToken } from '../utils/keychain.js';
2
+ import { printBlock, getEnabledSessionId } from './output.js';
3
+ /**
4
+ * PreCompact hook handler for Claude Code plugin
5
+ *
6
+ * This command is invoked automatically before Claude Code compacts the conversation.
7
+ * It reminds Claude to preserve Ranger Feature Specification in the compaction summary.
8
+ */
9
+ export async function preCompact() {
10
+ const sessionId = await getEnabledSessionId();
11
+ if (!sessionId) {
12
+ return;
13
+ }
14
+ try {
15
+ // Check if Ranger is configured
16
+ const token = await getToken();
17
+ if (!token) {
18
+ return;
19
+ }
20
+ printBlock(`=== RANGER: PRESERVE IN COMPACTION ===
21
+
22
+ If you created a plan with a **Ranger Feature Specification**, you MUST preserve it in the compaction summary.
23
+
24
+ The specification contains checklist items that will be used with \`ranger feature create\`.`);
25
+ }
26
+ catch {
27
+ // Silently fail - don't interrupt compaction
28
+ }
29
+ }
30
+ //# sourceMappingURL=preCompact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preCompact.js","sourceRoot":"","sources":["../../../src/commands/hooks/preCompact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC5B,MAAM,SAAS,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO;IACX,CAAC;IAED,IAAI,CAAC;QACD,gCAAgC;QAChC,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO;QACX,CAAC;QAED,UAAU,CAAC;;;;6FAI0E,CAAC,CAAC;IAC3F,CAAC;IAAC,MAAM,CAAC;QACL,6CAA6C;IACjD,CAAC;AACL,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { recordEnabledSessionCleared } from '../utils/sessionCache.js';
2
+ import { readHookInput } from './output.js';
3
+ /**
4
+ * SessionEnd hook handler for Claude Code plugin
5
+ *
6
+ * This command is invoked when a Claude Code session ends.
7
+ * If reason is 'clear' and session was enabled, records timestamp for auto-enable.
8
+ */
9
+ export async function sessionEnd() {
10
+ const input = await readHookInput();
11
+ const sessionId = input?.session_id;
12
+ const reason = input?.reason;
13
+ if (!sessionId) {
14
+ return;
15
+ }
16
+ // If session was cleared, record it for auto-enable on next session
17
+ if (reason === 'clear') {
18
+ recordEnabledSessionCleared(sessionId);
19
+ }
20
+ }
21
+ //# sourceMappingURL=sessionEnd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionEnd.js","sourceRoot":"","sources":["../../../src/commands/hooks/sessionEnd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC5B,MAAM,KAAK,GAAG,MAAM,aAAa,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,KAAK,EAAE,UAAU,CAAC;IACpC,MAAM,MAAM,GAAG,KAAK,EAAE,MAA4B,CAAC;IAEnD,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO;IACX,CAAC;IAED,oEAAoE;IACpE,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACrB,2BAA2B,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;AACL,CAAC"}
@@ -0,0 +1,75 @@
1
+ import { appendFile } from 'fs/promises';
2
+ import { initBranchTracking, shouldAutoEnableAfterClear, autoEnableAfterClear, isSessionEnabled, getCurrentBranch, } from '../utils/sessionCache.js';
3
+ const RANGER_AUTO_ENABLED_PROMPT = `=================================================================
4
+ 🚨 RANGER IS ACTIVE 🚨
5
+ =================================================================
6
+
7
+ This session has Ranger ENABLED. Before doing ANYTHING else:
8
+
9
+ 1. **READ the /ranger skill FIRST** - Run the skill to understand the required workflow for UI features
10
+
11
+ 2. **Check for existing features** - Run \`ranger feature list\` to see if there's an in-progress feature to resume
12
+
13
+ 3. **For ANY UI work**: You MUST either:
14
+ - Resume an existing feature: \`ranger feature resume <id>\`
15
+ - Create a new feature: \`ranger feature create "<name>" -d "<desc>" -c "<checklist item>"\`
16
+
17
+ =================================================================`;
18
+ /**
19
+ * SessionStart hook handler for Claude Code plugin
20
+ *
21
+ * This command is invoked automatically when a new Claude Code session starts.
22
+ * Exports CLAUDE_SESSION_ID to the environment for use by other hooks.
23
+ *
24
+ * Note: The skill prompt is now shown by the enable hook when user runs /enable.
25
+ */
26
+ export async function sessionStart() {
27
+ // Read JSON input from stdin to get session_id and source
28
+ let input = '';
29
+ for await (const chunk of process.stdin) {
30
+ input += chunk;
31
+ }
32
+ let sessionId = '';
33
+ let source;
34
+ try {
35
+ const data = JSON.parse(input);
36
+ sessionId = data['session_id'] || '';
37
+ source = data['source'];
38
+ }
39
+ catch {
40
+ // Ignore parse errors
41
+ }
42
+ // Export CLAUDE_SESSION_ID to env file if available
43
+ const envFile = process.env.CLAUDE_ENV_FILE;
44
+ if (envFile && sessionId) {
45
+ try {
46
+ await appendFile(envFile, `export CLAUDE_SESSION_ID="${sessionId}"\n`);
47
+ }
48
+ catch {
49
+ // Ignore errors writing to env file
50
+ }
51
+ }
52
+ if (sessionId) {
53
+ // Auto-enable if this session started from /clear and previous session was enabled
54
+ if (shouldAutoEnableAfterClear(source)) {
55
+ autoEnableAfterClear(sessionId);
56
+ }
57
+ // Initialize branch tracking - auto-enable session if branch is already enabled
58
+ initBranchTracking(sessionId);
59
+ // If session is now enabled (via branch or clear), output strong prompting
60
+ if (isSessionEnabled(sessionId)) {
61
+ const branch = getCurrentBranch();
62
+ const branchInfo = branch && branch !== 'main' && branch !== 'master'
63
+ ? ` (Branch: ${branch})`
64
+ : '';
65
+ const response = {
66
+ hookSpecificOutput: {
67
+ hookEventName: 'SessionStart',
68
+ additionalContext: RANGER_AUTO_ENABLED_PROMPT + branchInfo,
69
+ },
70
+ };
71
+ console.log(JSON.stringify(response));
72
+ }
73
+ }
74
+ }
75
+ //# sourceMappingURL=sessionStart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionStart.js","sourceRoot":"","sources":["../../../src/commands/hooks/sessionStart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACH,kBAAkB,EAClB,0BAA0B,EAC1B,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,GACnB,MAAM,0BAA0B,CAAC;AAElC,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;kEAc+B,CAAC;AAEnE;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAC9B,0DAA0D;IAC1D,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACtC,KAAK,IAAI,KAAK,CAAC;IACnB,CAAC;IAED,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,MAA0B,CAAC;IAC/B,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACL,sBAAsB;IAC1B,CAAC;IAED,oDAAoD;IACpD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC5C,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;QACvB,IAAI,CAAC;YACD,MAAM,UAAU,CACZ,OAAO,EACP,6BAA6B,SAAS,KAAK,CAC9C,CAAC;QACN,CAAC;QAAC,MAAM,CAAC;YACL,oCAAoC;QACxC,CAAC;IACL,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACZ,mFAAmF;QACnF,IAAI,0BAA0B,CAAC,MAAM,CAAC,EAAE,CAAC;YACrC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QAED,gFAAgF;QAChF,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAE9B,2EAA2E;QAC3E,IAAI,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;YAClC,MAAM,UAAU,GACZ,MAAM,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ;gBAC9C,CAAC,CAAC,aAAa,MAAM,GAAG;gBACxB,CAAC,CAAC,EAAE,CAAC;YAEb,MAAM,QAAQ,GAAG;gBACb,kBAAkB,EAAE;oBAChB,aAAa,EAAE,cAAc;oBAC7B,iBAAiB,EAAE,0BAA0B,GAAG,UAAU;iBAC7D;aACJ,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1C,CAAC;IACL,CAAC;AACL,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { getToken } from '../utils/keychain.js';
2
+ import { getFeature, concludeSession } from '../utils/featureApi.js';
3
+ import { getSessionEntry } from '../utils/sessionCache.js';
4
+ import { getEnabledSessionId } from './output.js';
5
+ /**
6
+ * Stop hook handler
7
+ *
8
+ * Only blocks stop for Claude sessions that have registered with a Ranger feature.
9
+ * Attempts to conclude the feature session before allowing stop.
10
+ */
11
+ export async function stopHook() {
12
+ const sessionId = await getEnabledSessionId();
13
+ if (!sessionId) {
14
+ return;
15
+ }
16
+ try {
17
+ // Check if this Claude session is registered with a Ranger feature
18
+ const sessionEntry = getSessionEntry(sessionId);
19
+ if (!sessionEntry) {
20
+ // Not a Ranger session - allow stop
21
+ return;
22
+ }
23
+ const token = await getToken();
24
+ if (!token) {
25
+ // No token configured - allow stop
26
+ return;
27
+ }
28
+ // Get the feature
29
+ const feature = await getFeature(sessionEntry.featureId);
30
+ // If there's no current session, allow stop
31
+ if (!feature.currentSessionId) {
32
+ return;
33
+ }
34
+ // Try to conclude the session
35
+ try {
36
+ await concludeSession(feature.id, feature.currentSessionId);
37
+ return;
38
+ }
39
+ catch (err) {
40
+ // Failed to conclude - block with error message
41
+ const errorMessage = err instanceof Error ? err.message : String(err);
42
+ const output = {
43
+ decision: 'block',
44
+ reason: `Failed to conclude Ranger feature session for "${feature.name}":\n\n${errorMessage}\n\n. This is most likely due to pending checklist items that need to be attempted to be verified. Please resolve the issue or manually conclude with:\n ranger feature conclude-session`,
45
+ };
46
+ console.log(JSON.stringify(output));
47
+ }
48
+ }
49
+ catch {
50
+ // On any error fetching feature, allow stop (fail open)
51
+ return;
52
+ }
53
+ }
54
+ //# sourceMappingURL=stopHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stopHook.js","sourceRoot":"","sources":["../../../src/commands/hooks/stopHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC1B,MAAM,SAAS,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO;IACX,CAAC;IAED,IAAI,CAAC;QACD,mEAAmE;QACnE,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,oCAAoC;YACpC,OAAO;QACX,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,mCAAmC;YACnC,OAAO;QACX,CAAC;QAED,kBAAkB;QAClB,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEzD,4CAA4C;QAC5C,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC5B,OAAO;QACX,CAAC;QAED,8BAA8B;QAC9B,IAAI,CAAC;YACD,MAAM,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC5D,OAAO;QACX,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,gDAAgD;YAChD,MAAM,YAAY,GACd,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG;gBACX,QAAQ,EAAE,OAAO;gBACjB,MAAM,EAAE,kDAAkD,OAAO,CAAC,IAAI,SAAS,YAAY,2LAA2L;aACzR,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACxC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACL,wDAAwD;QACxD,OAAO;IACX,CAAC;AACL,CAAC"}
@@ -8,7 +8,5 @@ export { verifyInBrowser } from './verifyInBrowser.js';
8
8
  export { update } from './update.js';
9
9
  export { skillup } from './skillup.js';
10
10
  export { envList } from './env.js';
11
- export { sessionStartHook } from './sessionStartHook.js';
12
- export { preCompactHook } from './preCompactHook.js';
13
- export { postEditHook } from './postEditHook.js';
11
+ export { hook } from './hook.js';
14
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC"}
@@ -4,9 +4,8 @@ import { existsSync } from 'fs';
4
4
  import inquirer from 'inquirer';
5
5
  import { getToken } from './utils/keychain.js';
6
6
  import { installSkill } from './utils/skills.js';
7
- import { loadMcpConfig, saveMcpConfig, hasRangerServer, setRangerServer, } from './utils/mcpConfig.js';
8
7
  import { getCurrentVersion } from './utils/version.js';
9
- import { getClaudeConfigDir, getProjectRoot, loadClaudeSettings, saveClaudeSettings, hasRangerServerInSettings, setRangerServerInSettings, } from './utils/claudeConfig.js';
8
+ import { getClaudeConfigDir, getProjectRoot, } from './utils/claudeConfig.js';
10
9
  import { getRangerDir } from './utils/rangerRoot.js';
11
10
  /**
12
11
  * Get list of available environment names from .ranger directory
@@ -50,55 +49,41 @@ export async function skillup() {
50
49
  }
51
50
  const projectRoot = getProjectRoot();
52
51
  const projectName = basename(projectRoot);
53
- const { installLevel } = await inquirer.prompt([
54
- {
55
- type: 'list',
56
- name: 'installLevel',
57
- message: 'Where should skills be installed?',
58
- choices: [
59
- {
60
- name: `All projects (${getClaudeConfigDir()}/skills/)`,
61
- value: 'user',
62
- },
63
- {
64
- name: `This project only (${projectName}/.claude/skills/)`,
65
- value: 'project',
66
- },
67
- ],
68
- },
69
- ]);
52
+ // Determine install level - use 'user' as default for non-TTY mode
53
+ const isInteractive = process.stdin.isTTY && process.stdout.isTTY;
54
+ let installLevel;
55
+ if (isInteractive) {
56
+ const response = await inquirer.prompt([
57
+ {
58
+ type: 'list',
59
+ name: 'installLevel',
60
+ message: 'Where should skills be installed?',
61
+ choices: [
62
+ {
63
+ name: `All projects (${getClaudeConfigDir()}/skills/)`,
64
+ value: 'user',
65
+ },
66
+ {
67
+ name: `This project only (${projectName}/.claude/skills/)`,
68
+ value: 'project',
69
+ },
70
+ ],
71
+ },
72
+ ]);
73
+ installLevel = response.installLevel;
74
+ }
75
+ else {
76
+ // Non-interactive mode: default to project-level installation
77
+ installLevel = 'project';
78
+ console.log(`Non-interactive mode: Installing skills at project level (${projectName}/.claude/skills/)`);
79
+ }
70
80
  let installedCount = 0;
71
81
  const cliVersion = getCurrentVersion();
72
82
  console.log('\n📦 Installing skills...\n');
73
- try {
74
- const installed = await installSkill('e2e-test-recommender', {
75
- level: installLevel,
76
- cliVersion,
77
- });
78
- if (installed) {
79
- installedCount++;
80
- await configureMcpServer(installLevel);
81
- }
82
- }
83
- catch (error) {
84
- console.warn(' Failed to install e2e-test-recommender skill:', error instanceof Error ? error.message : error);
85
- }
86
- // Install bug-bash and feature-tracker (requires API token AND active environment)
83
+ // Install ranger (requires API token AND active environment)
87
84
  if (activeEnv) {
88
85
  try {
89
- const installed = await installSkill('bug-bash', {
90
- level: installLevel,
91
- cliVersion,
92
- });
93
- if (installed) {
94
- installedCount++;
95
- }
96
- }
97
- catch (error) {
98
- console.warn(' Failed to install bug-bash skill:', error instanceof Error ? error.message : error);
99
- }
100
- try {
101
- const featureTrackerInstalled = await installSkill('feature-tracker', {
86
+ const featureTrackerInstalled = await installSkill('ranger', {
102
87
  cliVersion,
103
88
  level: installLevel,
104
89
  });
@@ -107,12 +92,12 @@ export async function skillup() {
107
92
  }
108
93
  }
109
94
  catch (error) {
110
- console.warn(' Failed to install feature-tracker skill:', error instanceof Error ? error.message : error);
95
+ console.warn(' Failed to install ranger skill:', error instanceof Error ? error.message : error);
111
96
  }
112
97
  }
113
98
  else {
114
- console.log('\n⚠️ Bug Bash and Feature Tracker skills not installed (requires active environment)\n');
115
- console.log('To install Bug Bash and Feature Tracker skills:');
99
+ console.log('\n⚠️ Ranger skill not installed (requires active environment)\n');
100
+ console.log('To install Ranger skill:');
116
101
  // Provide context-aware guidance based on whether .ranger directory exists
117
102
  const hasRangerDir = existsSync(rangerDir);
118
103
  if (!hasRangerDir) {
@@ -134,30 +119,11 @@ export async function skillup() {
134
119
  if (installedCount > 0) {
135
120
  const levelDesc = installLevel === 'user' ? 'user-level' : 'project-level';
136
121
  console.log(`\n✅ Installed ${installedCount} ${levelDesc} skill${installedCount > 1 ? 's' : ''} successfully!\n`);
137
- console.log('To use skills:');
138
- console.log(` - Try something like '/bug-bash test the new feature on this branch'`);
139
- console.log(' - Or ask your agent to use Ranger to look for bugs on the feature you just built\n');
122
+ console.log('To use:');
123
+ console.log(` - Open Claude Code in plan mode and run /ranger:enable. Plan out a UI feature with Ranger and watch Ranger test it for you!`);
140
124
  }
141
125
  else {
142
126
  console.log('\n⚠️ No skills were installed.\n');
143
127
  }
144
128
  }
145
- async function configureMcpServer(level) {
146
- if (level === 'user') {
147
- const settings = await loadClaudeSettings();
148
- if (!hasRangerServerInSettings(settings)) {
149
- setRangerServerInSettings(settings);
150
- await saveClaudeSettings(settings);
151
- console.log(` ✓ Added ranger data-mcp-server to ${getClaudeConfigDir()}/settings.json`);
152
- }
153
- }
154
- else {
155
- const mcpConfig = await loadMcpConfig();
156
- if (!hasRangerServer(mcpConfig)) {
157
- setRangerServer(mcpConfig);
158
- await saveMcpConfig(mcpConfig);
159
- console.log(' ✓ Added ranger data-mcp-server to .mcp.json');
160
- }
161
- }
162
- }
163
129
  //# sourceMappingURL=skillup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skillup.js","sourceRoot":"","sources":["../../src/commands/skillup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skillup.js","sourceRoot":"","sources":["../../src/commands/skillup.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- (function(_0x10e967,_0xd8acc5){const _0x3d5560=_0x2393,_0x1800ad=_0x10e967();while(!![]){try{const _0x2d514c=parseInt(_0x3d5560(0x171))/0x1*(-parseInt(_0x3d5560(0x1ac))/0x2)+parseInt(_0x3d5560(0x1b0))/0x3*(-parseInt(_0x3d5560(0x1aa))/0x4)+-parseInt(_0x3d5560(0x18a))/0x5+-parseInt(_0x3d5560(0x170))/0x6*(parseInt(_0x3d5560(0x1b3))/0x7)+-parseInt(_0x3d5560(0x1a8))/0x8+parseInt(_0x3d5560(0x1a4))/0x9*(parseInt(_0x3d5560(0x180))/0xa)+parseInt(_0x3d5560(0x1b5))/0xb;if(_0x2d514c===_0xd8acc5)break;else _0x1800ad['push'](_0x1800ad['shift']());}catch(_0x9a07d3){_0x1800ad['push'](_0x1800ad['shift']());}}}(_0x5755,0xd7169));import{mkdir,writeFile}from'fs/promises';function _0x2393(_0x105e5c,_0x4da9e5){_0x105e5c=_0x105e5c-0x16f;const _0x575556=_0x5755();let _0x2393a1=_0x575556[_0x105e5c];return _0x2393a1;}import{join}from'path';import{existsSync}from'fs';import{createRequire}from'module';import{spawn}from'child_process';import _0x5f3289 from'inquirer';import{loadMcpConfig,saveMcpConfig,setRangerServer}from'./utils/mcpConfig.js';import{storeToken}from'./utils/keychain.js';import{getMcpServerUrl}from'./utils/environment.js';import{getCurrentUser}from'./utils/userApi.js';import{chromium}from'playwright';import{addEnv}from'./addEnv.js';import{skillup}from'./skillup.js';import{getRangerDir}from'./utils/rangerRoot.js';const require=createRequire(import.meta.url);function getPlaywrightVersion(){const _0x24c240=_0x2393;try{const _0x3a962a=require[_0x24c240(0x17e)]('playwright/package.json'),_0x2a7eea=require(_0x3a962a);return _0x2a7eea[_0x24c240(0x17f)];}catch{return null;}}function installChromium(_0x502ece){const _0x460d4e=_0x2393,_0x3d92af={'HUITf':function(_0x2f330c){return _0x2f330c();},'gbwIG':function(_0x55e320,_0x17e7d7){return _0x55e320(_0x17e7d7);},'mXVDl':'chromium','CQvpu':_0x460d4e(0x18b),'ntOCK':_0x460d4e(0x1b6),'HYIRl':_0x460d4e(0x1ae),'RETTK':_0x460d4e(0x1a2)};return new Promise((_0x183d83,_0x5dd25f)=>{const _0x2ffe7e=_0x460d4e,_0x560f2d=_0x502ece?[_0x2ffe7e(0x19e)+_0x502ece,_0x2ffe7e(0x18b),_0x3d92af[_0x2ffe7e(0x185)]]:[_0x2ffe7e(0x172),_0x3d92af['CQvpu'],_0x3d92af['mXVDl']],_0x5f296f=spawn(_0x3d92af['ntOCK'],_0x560f2d,{'stdio':'inherit','shell':!![]});_0x5f296f['on'](_0x3d92af['HYIRl'],_0x351bc7=>{const _0x2ae269=_0x2ffe7e;_0x351bc7===0x0?_0x3d92af[_0x2ae269(0x19c)](_0x183d83):_0x5dd25f(new Error('Installation\x20failed\x20with\x20exit\x20code\x20'+_0x351bc7));}),_0x5f296f['on'](_0x3d92af[_0x2ffe7e(0x19f)],_0x3d44dd=>{_0x3d92af['gbwIG'](_0x5dd25f,_0x3d44dd);});});}export async function start(_0x541ede){const _0x3a3547=_0x2393,_0x819320={'jCUoB':_0x3a3547(0x1a7),'mNsjz':function(_0x58bfe3,_0xd72a4f){return _0x58bfe3(_0xd72a4f);},'CitZQ':_0x3a3547(0x1b1),'Uwtrt':'✓\x20Exported\x20credentials\x20for\x20CI','kLHlp':function(_0x4d1b7f){return _0x4d1b7f();},'AdDUk':'✓\x20Created/updated\x20.mcp.json\x20with\x20Ranger\x20MCP\x20proxy','iqkqT':function(_0x1c90e8){return _0x1c90e8();},'Vplgd':function(_0x5df09d,_0x45ac7e){return _0x5df09d(_0x45ac7e);},'iclEu':function(_0x40d37b,_0x51025e,_0x152726){return _0x40d37b(_0x51025e,_0x152726);},'ADQTL':'✓\x20.ranger/\x20directory\x20already\x20exists','XzrJD':'confirm','oznWF':'Required\x20Playwright\x20Chromium\x20browser\x20is\x20missing.\x20Install\x20it\x20now?','wyoZD':_0x3a3547(0x19a),'RmbqV':_0x3a3547(0x1ab),'mYTRI':function(_0x4a226a,_0x5c514d){return _0x4a226a instanceof _0x5c514d;},'JwQVl':'\x20\x20npx\x20playwright\x20install\x20chromium','fFTBO':_0x3a3547(0x191),'BnraJ':_0x3a3547(0x16f),'TxBja':'\x0a✅\x20Ranger\x20setup\x20complete!\x0a','SwbgX':_0x3a3547(0x187),'XSMOy':_0x3a3547(0x175),'kXuXQ':_0x3a3547(0x192),'FJFXR':'\x0aNext\x20steps:','tfLGD':_0x3a3547(0x190),'mQyPY':_0x3a3547(0x1ad),'coHtD':_0x3a3547(0x197),'wWsDl':_0x3a3547(0x182),'BeUJZ':_0x3a3547(0x196)};console[_0x3a3547(0x174)](_0x819320['jCUoB']);const _0x6fbb38=getMcpServerUrl();console['log'](_0x3a3547(0x181));const _0x5a261c=await _0x819320['mNsjz'](getCurrentUser,_0x541ede);!_0x5a261c[_0x3a3547(0x173)]&&(_0x5a261c['status']?(console['error'](_0x3a3547(0x194)+_0x5a261c['error']),console['error'](_0x819320[_0x3a3547(0x1a3)])):(console['error']('\x0a❌\x20Failed\x20to\x20connect\x20to\x20MCP\x20server:\x20'+_0x5a261c['error']),console[_0x3a3547(0x1a2)](_0x3a3547(0x179))),process[_0x3a3547(0x189)](0x1));console['log'](_0x3a3547(0x176)+_0x5a261c[_0x3a3547(0x17c)][_0x3a3547(0x1b2)]),await _0x819320[_0x3a3547(0x17b)](storeToken,_0x541ede),console['log'](process[_0x3a3547(0x18d)]['GITHUB_ENV']?_0x819320['Uwtrt']:'✓\x20Stored\x20credentials\x20in\x20OS\x20Keychain');const _0x504192=await _0x819320['kLHlp'](loadMcpConfig);setRangerServer(_0x504192),await saveMcpConfig(_0x504192),console['log'](_0x819320['AdDUk']);const _0x58e201=_0x819320['iqkqT'](getRangerDir);!_0x819320['Vplgd'](existsSync,_0x58e201)?(await _0x819320[_0x3a3547(0x177)](mkdir,_0x58e201,{'recursive':!![]}),console[_0x3a3547(0x174)](_0x3a3547(0x17a))):console[_0x3a3547(0x174)](_0x819320['ADQTL']);let _0x3318cb=![];try{const _0x38da58=chromium['executablePath']();_0x3318cb=existsSync(_0x38da58);}catch{_0x3318cb=![];}if(_0x3318cb)console['log'](_0x3a3547(0x184));else{const _0x1c6c19=getPlaywrightVersion(),{install:_0x486a61}=await _0x5f3289['prompt']([{'type':_0x819320['XzrJD'],'name':_0x3a3547(0x18b),'message':_0x819320['oznWF'],'default':!![]}]);if(_0x486a61){console['log']('\x0aInstalling\x20Chromium\x20browser...\x0a');try{await _0x819320[_0x3a3547(0x17b)](installChromium,_0x1c6c19),console['log'](_0x819320['wyoZD']);}catch(_0x5804bc){console['error'](_0x819320[_0x3a3547(0x198)],_0x819320[_0x3a3547(0x1a9)](_0x5804bc,Error)?_0x5804bc[_0x3a3547(0x188)]:_0x5804bc),console[_0x3a3547(0x174)]('You\x20can\x20install\x20it\x20manually\x20by\x20running:'),_0x1c6c19?console['log'](_0x3a3547(0x1b4)+_0x1c6c19+_0x3a3547(0x18f)):console['log'](_0x3a3547(0x1b7));}}else console['log']('\x0a⚠\x20Skipping\x20Chromium\x20installation.'),console[_0x3a3547(0x174)](_0x3a3547(0x19b)),_0x1c6c19?console[_0x3a3547(0x174)](_0x3a3547(0x1b4)+_0x1c6c19+_0x3a3547(0x18f)):console['log'](_0x819320[_0x3a3547(0x18e)]);}const _0x4037a3=join(_0x58e201,_0x819320[_0x3a3547(0x178)]),_0x2612fa='\x0a\x0a#\x20Ignore\x20local-only\x20directories\x0alocal/\x0asessions/\x0abug-bashes/\x0areports/\x0a\x0aactive-env.txt\x0aactive-feature.txt\x0a.gitignore\x0a\x0a#\x20Ignore\x20plaintext\x20auth\x20files\x20(encrypted\x20.enc\x20files\x20are\x20safe\x20to\x20commit)\x0a**/auth.json\x0a';await writeFile(_0x4037a3,_0x2612fa),console[_0x3a3547(0x174)](_0x819320[_0x3a3547(0x1a6)]),console['log'](_0x819320['TxBja']),console[_0x3a3547(0x174)](_0x3a3547(0x199)),console['log'](_0x3a3547(0x19d)),console['log']('\x20\x20/plugin\x20marketplace\x20add\x20ranger-testing/trailhead'),console[_0x3a3547(0x174)](_0x819320['SwbgX']),console[_0x3a3547(0x174)](_0x819320['XSMOy']);const _0x3f7264=process['stdin']['isTTY']&&process[_0x3a3547(0x1a1)][_0x3a3547(0x1a5)];if(!_0x3f7264){const _0x2dc93f=_0x3a3547(0x1af)['split']('|');let _0x1935a9=0x0;while(!![]){switch(_0x2dc93f[_0x1935a9++]){case'0':return;case'1':console['log'](_0x819320['kXuXQ']);continue;case'2':console['log'](_0x819320['FJFXR']);continue;case'3':console['log'](_0x819320[_0x3a3547(0x18c)]);continue;case'4':console[_0x3a3547(0x174)]('\x20\x201.\x20Navigate\x20to\x20your\x20project\x20directory');continue;case'5':console[_0x3a3547(0x174)](_0x3a3547(0x17d));continue;}break;}}console[_0x3a3547(0x174)](_0x819320['mQyPY']),console['log']('\x20\x20\x20If\x20you\x27re\x20not\x20in\x20your\x20project\x20directory,\x20exit\x20now\x20and\x20run\x20`ranger\x20add\x20env\x20<env-name>`\x20from\x20there.\x0a');const {wantsEnv:_0x5b9b4c}=await _0x5f3289[_0x3a3547(0x193)]([{'type':_0x819320['XzrJD'],'name':_0x3a3547(0x1a0),'message':'Do\x20you\x20want\x20to\x20add\x20an\x20environment\x20now?','default':!![]}]);if(_0x5b9b4c){const {envName:_0x5d7a80}=await _0x5f3289['prompt']([{'type':'input','name':_0x819320['coHtD'],'message':_0x819320[_0x3a3547(0x186)],'default':'local'}]);await _0x819320['mNsjz'](addEnv,_0x5d7a80);}const {wantsSkillup:_0x11740b}=await _0x5f3289[_0x3a3547(0x193)]([{'type':_0x819320[_0x3a3547(0x195)],'name':_0x819320[_0x3a3547(0x183)],'message':'Would\x20you\x20like\x20to\x20install\x20skills?','default':!![]}]);_0x11740b&&await skillup();}function _0x5755(){const _0x3463e4=['5283ZCnkFi','playwright','success','log','This\x20enables\x20auto-firing\x20hooks,\x20MCP\x20tools,\x20and\x20browser\x20verification.\x0a','✓\x20Authenticated\x20to\x20','iclEu','fFTBO','Please\x20check\x20your\x20network\x20connection\x20and\x20server\x20URL.','✓\x20Created\x20.ranger/\x20directory','mNsjz','user','\x20\x202.\x20Run:\x20ranger\x20add\x20env\x20local','resolve','version','780FkRTIV','Validating\x20API\x20token...','What\x20should\x20the\x20environment\x20be\x20named?','BeUJZ','✓\x20Playwright\x20Chromium\x20browser\x20found','mXVDl','wWsDl','\x20\x20/plugin\x20install\x20ranger@trailhead\x0a','message','exit','5111190UUuGWP','install','tfLGD','env','JwQVl','\x20install\x20chromium','\x20\x203.\x20Run:\x20ranger\x20skillup\x0a','.gitignore','Non-interactive\x20mode\x20detected.\x20Skipping\x20optional\x20setup\x20prompts.','prompt','\x0a❌\x20Authentication\x20failed:\x20','XzrJD','wantsSkillup','envName','RmbqV','📦\x20Claude\x20Code\x20Plugin\x0a','\x0a✓\x20Playwright\x20Chromium\x20installed\x20successfully','You\x20will\x20need\x20to\x20install\x20it\x20before\x20using\x20Ranger:','HUITf','To\x20enable\x20Ranger\x20in\x20Claude\x20Code,\x20run\x20these\x20commands\x20in\x20Claude\x20Code:','playwright@','RETTK','wantsEnv','stdout','error','CitZQ','87345FzgZsu','isTTY','BnraJ','\x0a🚀\x20Ranger\x20Setup\x0a','13026192AAAlyj','mYTRI','352BrWTcd','\x0a❌\x20Failed\x20to\x20install\x20Chromium:','390GkdiSK','ℹ️\x20\x20To\x20add\x20an\x20environment,\x20you\x20should\x20be\x20in\x20your\x20project\x20repository.','close','1|2|4|5|3|0','56703ruBFbs','Please\x20check\x20your\x20API\x20token\x20and\x20try\x20again.','organizationName','10843SWgqAI','\x20\x20npx\x20playwright@','73250947MMBdyR','npx','\x20\x20npx\x20playwright\x20install\x20chromium','✓\x20Created\x20.ranger/.gitignore','4614tJZtBz'];_0x5755=function(){return _0x3463e4;};return _0x5755();}
1
+ (function(_0x14b3d3,_0x3ed4c1){const _0xf4539f=_0x23f2,_0xb931f0=_0x14b3d3();while(!![]){try{const _0xc78297=-parseInt(_0xf4539f(0x1b8))/0x1+parseInt(_0xf4539f(0x1f3))/0x2+-parseInt(_0xf4539f(0x1f2))/0x3*(-parseInt(_0xf4539f(0x1c1))/0x4)+-parseInt(_0xf4539f(0x1a4))/0x5+parseInt(_0xf4539f(0x1c5))/0x6*(-parseInt(_0xf4539f(0x1cb))/0x7)+parseInt(_0xf4539f(0x1bc))/0x8+-parseInt(_0xf4539f(0x1bf))/0x9*(-parseInt(_0xf4539f(0x1b9))/0xa);if(_0xc78297===_0x3ed4c1)break;else _0xb931f0['push'](_0xb931f0['shift']());}catch(_0x187375){_0xb931f0['push'](_0xb931f0['shift']());}}}(_0x31c6,0x2e6b1));import{mkdir,writeFile}from'fs/promises';import{join}from'path';import{existsSync}from'fs';import{createRequire}from'module';function _0x31c6(){const _0xcc88ea=['prompt','200620PHjpdN','141910EuIBcw','\x0a\x0a#\x20Ignore\x20local-only\x20directories\x0alocal/\x0asessions/\x0abug-bashes/\x0areports/\x0a\x0aactive-env.txt\x0aactive-feature.txt\x0a.gitignore\x0a\x0a#\x20Ignore\x20plaintext\x20auth\x20files\x20(encrypted\x20.enc\x20files\x20are\x20safe\x20to\x20commit)\x0a**/auth.json\x0a','DjFiG','2577872hPeoqY','UirfR','Please\x20check\x20your\x20API\x20token\x20and\x20try\x20again.','63eqpGgb','KfBEJ','422692friKYm','\x0aInstalling\x20Claude\x20Code\x20plugin...\x0a','user','✓\x20Authenticated\x20to\x20','254976bbWwIX','onSfy','ONaaw','GITHUB_ENV','ULxJg','\x20\x20npx\x20playwright\x20install\x20chromium','7yWkzJq','marketplace','Mkdqm','env','You\x20can\x20install\x20it\x20manually\x20by\x20running:','ranger@trailhead','hPEXK','success','LQLpY','vjJGK','HUDRJ','YgjqK','fjGgF','isTTY','✓\x20Created\x20.ranger/.gitignore','uCjxP','\x20\x20\x20\x20\x20claude\x20plugin\x20install\x20ranger@trailhead\x0a','flnuH','✓\x20Playwright\x20Chromium\x20browser\x20found','playwright/package.json','HaYYh','User\x20(available\x20in\x20all\x20your\x20projects)','--scope','\x0aTo\x20install\x20the\x20plugin\x20later,\x20run:','tJyNi','Installation\x20failed\x20with\x20exit\x20code\x20','ℹ️\x20\x20To\x20add\x20an\x20environment,\x20you\x20should\x20be\x20in\x20your\x20project\x20repository.','\x20\x20\x20\x20\x20claude\x20plugin\x20marketplace\x20add\x20ranger-testing/trailhead','\x20install\x20chromium','BKNFe','\x0a❌\x20Authentication\x20failed:\x20','install','✓\x20Claude\x20Code\x20plugin\x20already\x20installed\x0a','✓\x20Created\x20.ranger/\x20directory','version','\x20\x203.\x20Run:\x20ranger\x20skillup','\x20\x201.\x20Navigate\x20to\x20your\x20project\x20directory','KZrew','confirm','3CZmuTf','268246gtbavi','What\x20should\x20the\x20environment\x20be\x20named?','plugin','pluginScope','✅\x20Complete!\x20Make\x20sure\x20you\x20have\x20your\x20environment,\x20skill,\x20and\x20plugin\x20installed\x20and\x20you\x20can\x20boot\x20up\x20Claude\x20Code\x20in\x20plan\x20mode\x20and\x20test\x20a\x20UI\x20feature\x20with\x20Ranger','Do\x20you\x20want\x20to\x20install\x20the\x20Ranger\x20plugin\x20for\x20Claude\x20Code?\x20(recommended)','RgCZR','\x0a✓\x20Playwright\x20Chromium\x20installed\x20successfully','log','1140610AiLlBr','cbedy','❌\x20Failed\x20to\x20install\x20plugin:','EOrXv','Where\x20should\x20the\x20plugin\x20be\x20installed?','📦\x20Claude\x20Code\x20Plugin\x0a','\x0aYou\x20can\x20install\x20manually\x20with:','YloMh','CbfdZ','trailhead','TdpnB','FjoXO','PPVwi','add','❌\x20Failed\x20to\x20add\x20marketplace:','Validating\x20API\x20token...','exit','npx','error'];_0x31c6=function(){return _0xcc88ea;};return _0x31c6();}import{spawn}from'child_process';import _0x19033d from'inquirer';import{storeToken}from'./utils/keychain.js';import{getCurrentUser}from'./utils/userApi.js';import{chromium}from'playwright';import{addEnv}from'./addEnv.js';function _0x23f2(_0x4f99d5,_0x244052){_0x4f99d5=_0x4f99d5-0x1a2;const _0x31c68f=_0x31c6();let _0x23f2bb=_0x31c68f[_0x4f99d5];return _0x23f2bb;}import{skillup}from'./skillup.js';import{getRangerDir}from'./utils/rangerRoot.js';import{runClaudeCommand,isMarketplaceAdded,isPluginInstalled}from'./utils/claudePlugin.js';const require=createRequire(import.meta.url);function getPlaywrightVersion(){const _0x5e49bd=_0x23f2,_0x177ff2={'EoEyh':_0x5e49bd(0x1de),'ULxJg':function(_0x581ca0,_0x4030f3){return _0x581ca0(_0x4030f3);}};try{const _0x547532=require['resolve'](_0x177ff2['EoEyh']),_0x4b4f69=_0x177ff2[_0x5e49bd(0x1c9)](require,_0x547532);return _0x4b4f69[_0x5e49bd(0x1ed)];}catch{return null;}}function installChromium(_0xd6bb62){const _0x580f91=_0x23f2,_0x506617={'tJyNi':function(_0x583aed,_0x4192b0){return _0x583aed(_0x4192b0);},'Mkdqm':function(_0x14b4c5,_0x5d9cd4){return _0x14b4c5===_0x5d9cd4;},'uCjxP':_0x580f91(0x1ea),'zExte':'chromium','zoruS':'playwright','YgjqK':_0x580f91(0x1b5),'WJjcf':'inherit'};return new Promise((_0x30cfaf,_0x54595a)=>{const _0x2bc365=_0x580f91,_0xd898fb={'flnuH':function(_0x385348,_0x39cf5d){const _0x33bda0=_0x23f2;return _0x506617[_0x33bda0(0x1cd)](_0x385348,_0x39cf5d);},'onSfy':function(_0x2c5c9e){return _0x2c5c9e();}},_0xfd499f=_0xd6bb62?['playwright@'+_0xd6bb62,_0x506617[_0x2bc365(0x1da)],_0x506617['zExte']]:[_0x506617['zoruS'],_0x506617['uCjxP'],_0x506617['zExte']],_0x48562b=spawn(_0x506617[_0x2bc365(0x1d6)],_0xfd499f,{'stdio':_0x506617['WJjcf'],'shell':!![]});_0x48562b['on']('close',_0x20262c=>{const _0x42a3ec=_0x2bc365;_0xd898fb[_0x42a3ec(0x1dc)](_0x20262c,0x0)?_0xd898fb[_0x42a3ec(0x1c6)](_0x30cfaf):_0x54595a(new Error(_0x42a3ec(0x1e4)+_0x20262c));}),_0x48562b['on'](_0x2bc365(0x1b6),_0x44a41b=>{const _0x36a0f0=_0x2bc365;_0x506617[_0x36a0f0(0x1e3)](_0x54595a,_0x44a41b);});});}export async function start(_0x190996){const _0xe2c188=_0x23f2,_0x422334={'PPVwi':'✓\x20Stored\x20credentials\x20in\x20OS\x20Keychain','CbfdZ':function(_0x4365f0){return _0x4365f0();},'DjFiG':function(_0x6fa502,_0x544689){return _0x6fa502(_0x544689);},'EOrXv':_0xe2c188(0x1ec),'fjGgF':'✓\x20.ranger/\x20directory\x20already\x20exists','BKNFe':function(_0xe0dc42,_0x49ef04){return _0xe0dc42(_0x49ef04);},'cbedy':_0xe2c188(0x1dd),'vjJGK':'\x0aNon-interactive\x20mode:\x20Auto-installing\x20Playwright\x20Chromium...','LQLpY':'\x0aInstalling\x20Chromium\x20browser...\x0a','KZrew':function(_0x47d480,_0x3a9838){return _0x47d480 instanceof _0x3a9838;},'XNLwM':_0xe2c188(0x1cf),'hPEXK':_0xe2c188(0x1ca),'HaYYh':function(_0x2798b4,_0x45dc91,_0x19c521){return _0x2798b4(_0x45dc91,_0x19c521);},'KfBEJ':'.gitignore','kaUWf':function(_0x5b0de9,_0xb41dd8,_0x37e091){return _0x5b0de9(_0xb41dd8,_0x37e091);},'inNfB':_0xe2c188(0x1d9),'TdpnB':'Non-interactive\x20mode\x20detected.\x20Skipping\x20optional\x20setup\x20prompts.','KLoSN':_0xe2c188(0x1ef),'HUDRJ':_0xe2c188(0x1ee),'FjoXO':'\x20\x204.\x20Install\x20Claude\x20Code\x20plugin:','vULxv':_0xe2c188(0x1db),'ONaaw':_0xe2c188(0x1f8),'RgCZR':_0xe2c188(0x1eb),'UirfR':'list','fdqMG':'Project\x20(shared\x20with\x20team\x20via\x20git)','woXQH':'project','YCKiu':_0xe2c188(0x1c3),'jvkqn':'ranger-testing/trailhead','fyyul':_0xe2c188(0x1b2),'YloMh':'ranger@trailhead','mqrHY':_0xe2c188(0x1e1),'MgVBE':'✓\x20Claude\x20Code\x20plugin\x20installed\x20successfully\x0a','DIXXZ':'\x20\x20claude\x20plugin\x20marketplace\x20add\x20ranger-testing/trailhead','vxaad':'\x20\x20claude\x20plugin\x20install\x20ranger@trailhead\x0a','uDRvI':'\x20\x20\x20If\x20you\x27re\x20not\x20in\x20your\x20project\x20directory,\x20exit\x20now\x20and\x20run\x20`ranger\x20add\x20env\x20<env-name>`\x20from\x20there.\x0a','sLbfw':_0xe2c188(0x1f1),'VPQcT':'Do\x20you\x20want\x20to\x20add\x20an\x20environment\x20now?','VsZso':'wantsSkillup'};console[_0xe2c188(0x1a3)]('\x0a🚀\x20Ranger\x20Setup\x0a'),console[_0xe2c188(0x1a3)](_0xe2c188(0x1b3));const _0x16984f=await getCurrentUser(_0x190996);!_0x16984f[_0xe2c188(0x1d2)]&&(_0x16984f['status']?(console[_0xe2c188(0x1b6)](_0xe2c188(0x1e9)+_0x16984f['error']),console['error'](_0xe2c188(0x1be))):(console[_0xe2c188(0x1b6)]('\x0a❌\x20Failed\x20to\x20connect\x20to\x20MCP\x20server:\x20'+_0x16984f[_0xe2c188(0x1b6)]),console[_0xe2c188(0x1b6)]('Please\x20check\x20your\x20network\x20connection\x20and\x20server\x20URL.')),process[_0xe2c188(0x1b4)](0x1));console['log'](_0xe2c188(0x1c4)+_0x16984f[_0xe2c188(0x1c3)]['organizationName']),await storeToken(_0x190996),console[_0xe2c188(0x1a3)](process[_0xe2c188(0x1ce)][_0xe2c188(0x1c8)]?'✓\x20Exported\x20credentials\x20for\x20CI':_0x422334[_0xe2c188(0x1b0)]);const _0x3793a6=_0x422334[_0xe2c188(0x1ac)](getRangerDir);!_0x422334[_0xe2c188(0x1bb)](existsSync,_0x3793a6)?(await mkdir(_0x3793a6,{'recursive':!![]}),console[_0xe2c188(0x1a3)](_0x422334[_0xe2c188(0x1a7)])):console[_0xe2c188(0x1a3)](_0x422334[_0xe2c188(0x1d7)]);let _0x1b775f=![];try{const _0x2c17a8=chromium['executablePath']();_0x1b775f=_0x422334[_0xe2c188(0x1e8)](existsSync,_0x2c17a8);}catch{_0x1b775f=![];}if(_0x1b775f)console['log'](_0x422334[_0xe2c188(0x1a5)]);else{const _0xcabfe4=getPlaywrightVersion(),_0x150560=process['stdin'][_0xe2c188(0x1d8)]&&process['stdout']['isTTY'];let _0x269cee=!![];if(_0x150560){const {install:_0x26363d}=await _0x19033d['prompt']([{'type':'confirm','name':_0xe2c188(0x1ea),'message':'Required\x20Playwright\x20Chromium\x20browser\x20is\x20missing.\x20Install\x20it\x20now?','default':!![]}]);_0x269cee=_0x26363d;}else console[_0xe2c188(0x1a3)](_0x422334[_0xe2c188(0x1d4)]);if(_0x269cee){console['log'](_0x422334[_0xe2c188(0x1d3)]);try{await _0x422334[_0xe2c188(0x1e8)](installChromium,_0xcabfe4),console['log'](_0xe2c188(0x1a2));}catch(_0x2eb0c7){console[_0xe2c188(0x1b6)]('\x0a❌\x20Failed\x20to\x20install\x20Chromium:',_0x422334[_0xe2c188(0x1f0)](_0x2eb0c7,Error)?_0x2eb0c7['message']:_0x2eb0c7),console[_0xe2c188(0x1a3)](_0x422334['XNLwM']),_0xcabfe4?console['log']('\x20\x20npx\x20playwright@'+_0xcabfe4+_0xe2c188(0x1e7)):console['log'](_0xe2c188(0x1ca));}}else console['log']('\x0a⚠\x20Skipping\x20Chromium\x20installation.'),console['log']('You\x20will\x20need\x20to\x20install\x20it\x20before\x20using\x20Ranger:'),_0xcabfe4?console[_0xe2c188(0x1a3)]('\x20\x20npx\x20playwright@'+_0xcabfe4+'\x20install\x20chromium'):console[_0xe2c188(0x1a3)](_0x422334[_0xe2c188(0x1d1)]);}const _0x11c5ab=_0x422334[_0xe2c188(0x1df)](join,_0x3793a6,_0x422334[_0xe2c188(0x1c0)]),_0x165ca1=_0xe2c188(0x1ba);await _0x422334['kaUWf'](writeFile,_0x11c5ab,_0x165ca1),console['log'](_0x422334['inNfB']),console['log']('\x0a✅\x20Ranger\x20setup\x20complete!\x0a');const _0x2f0294=process['stdin'][_0xe2c188(0x1d8)]&&process['stdout']['isTTY'];if(!_0x2f0294){console['log'](_0x422334[_0xe2c188(0x1ae)]),console[_0xe2c188(0x1a3)]('\x0aNext\x20steps:'),console['log'](_0x422334['KLoSN']),console[_0xe2c188(0x1a3)]('\x20\x202.\x20Run:\x20ranger\x20add\x20env\x20local'),console[_0xe2c188(0x1a3)](_0x422334[_0xe2c188(0x1d5)]),console['log'](_0x422334[_0xe2c188(0x1af)]),console[_0xe2c188(0x1a3)](_0xe2c188(0x1e6)),console['log'](_0x422334['vULxv']);return;}console['log'](_0xe2c188(0x1a9));const {wantsPlugin:_0x4220c7}=await _0x19033d['prompt']([{'type':_0xe2c188(0x1f1),'name':'wantsPlugin','message':_0x422334[_0xe2c188(0x1c7)],'default':!![]}]);if(_0x4220c7){const _0x5a4e76=await isPluginInstalled(_0xe2c188(0x1d0));if(_0x5a4e76)console[_0xe2c188(0x1a3)](_0x422334[_0xe2c188(0x1f9)]);else{const {pluginScope:_0x3bbf90}=await _0x19033d[_0xe2c188(0x1b7)]([{'type':_0x422334[_0xe2c188(0x1bd)],'name':_0xe2c188(0x1f6),'message':_0xe2c188(0x1a8),'choices':[{'name':_0xe2c188(0x1e0),'value':'user'},{'name':_0x422334['fdqMG'],'value':_0x422334['woXQH']}],'default':_0x422334['YCKiu']}]);console['log'](_0xe2c188(0x1c2));const _0x269406=await isMarketplaceAdded(_0xe2c188(0x1ad));let _0x4cf8f4=_0x269406;if(_0x269406)console['log']('✓\x20Marketplace\x20already\x20added');else{const _0x2c8b90=await runClaudeCommand([_0xe2c188(0x1f5),_0xe2c188(0x1cc),_0xe2c188(0x1b1),_0x422334['jvkqn']]);!_0x2c8b90[_0xe2c188(0x1d2)]?(console[_0xe2c188(0x1b6)](_0x422334['fyyul'],_0x2c8b90['error']),console['log'](_0xe2c188(0x1aa)),console['log']('\x20\x20claude\x20plugin\x20marketplace\x20add\x20ranger-testing/trailhead'),console[_0xe2c188(0x1a3)]('\x20\x20claude\x20plugin\x20install\x20ranger@trailhead\x20--scope\x20'+_0x3bbf90)):_0x4cf8f4=!![];}if(_0x4cf8f4){const _0x3c6090=await runClaudeCommand([_0xe2c188(0x1f5),'install',_0x422334[_0xe2c188(0x1ab)],_0x422334['mqrHY'],_0x3bbf90]);!_0x3c6090['success']?(console[_0xe2c188(0x1b6)](_0xe2c188(0x1a6),_0x3c6090[_0xe2c188(0x1b6)]),console['log']('\x0aYou\x20can\x20install\x20manually\x20with:'),console[_0xe2c188(0x1a3)]('\x20\x20claude\x20plugin\x20install\x20ranger@trailhead\x20--scope\x20'+_0x3bbf90)):console[_0xe2c188(0x1a3)](_0x422334['MgVBE']);}}}else console[_0xe2c188(0x1a3)](_0xe2c188(0x1e2)),console['log'](_0x422334['DIXXZ']),console['log'](_0x422334['vxaad']);console[_0xe2c188(0x1a3)](_0xe2c188(0x1e5)),console[_0xe2c188(0x1a3)](_0x422334['uDRvI']);const {wantsEnv:_0x3c3d2f}=await _0x19033d[_0xe2c188(0x1b7)]([{'type':_0x422334['sLbfw'],'name':'wantsEnv','message':_0x422334['VPQcT'],'default':!![]}]);if(_0x3c3d2f){const {envName:_0x46e705}=await _0x19033d[_0xe2c188(0x1b7)]([{'type':'input','name':'envName','message':_0xe2c188(0x1f4),'default':'local'}]);await addEnv(_0x46e705);}const {wantsSkillup:_0x96a36e}=await _0x19033d['prompt']([{'type':'confirm','name':_0x422334['VsZso'],'message':'Would\x20you\x20like\x20to\x20install\x20skills?','default':!![]}]);_0x96a36e&&await skillup(),console['log'](_0xe2c188(0x1f7));}
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
@@ -2,13 +2,14 @@ import { readFile, readdir } from 'fs/promises';
2
2
  import { join, basename } from 'path';
3
3
  import { existsSync } from 'fs';
4
4
  import { getToken } from './utils/keychain.js';
5
- import { loadMcpConfig, hasRangerServer } from './utils/mcpConfig.js';
6
5
  import { getCurrentVersion, getLatestVersion } from './utils/version.js';
7
- import { getApiBaseUrl, getMcpServerUrl, getCurrentEnvironment, } from './utils/environment.js';
8
- import { getProjectSkillsDir, getUserSkillsDir, loadClaudeSettings, hasRangerServerInSettings, getSettingsPath, } from './utils/claudeConfig.js';
6
+ import { getApiBaseUrl, getCurrentEnvironment } from './utils/environment.js';
7
+ import { getProjectSkillsDir, getUserSkillsDir } from './utils/claudeConfig.js';
9
8
  import { getEnvNames } from './env.js';
10
9
  import { getCurrentUser } from './utils/userApi.js';
11
10
  import { getRangerDir } from './utils/rangerRoot.js';
11
+ import { getPluginInfo } from './utils/claudePlugin.js';
12
+ import { RANGER_MANAGED_SKILLS } from './utils/skills.js';
12
13
  // ANSI formatting helpers
13
14
  const bold = (text) => `\x1b[1m${text}\x1b[0m`;
14
15
  const link = (path, text) => `\x1b]8;;file://${path}\x07${text || path}\x1b]8;;\x07`;
@@ -128,29 +129,24 @@ export async function status() {
128
129
  if (process.env.DEBUG) {
129
130
  console.log(`Environment: ${getCurrentEnvironment()}`);
130
131
  console.log(`API URL: ${getApiBaseUrl()}`);
131
- console.log(`MCP Server URL: ${getMcpServerUrl()}`);
132
132
  }
133
- // MCP Server Config
134
- const mcpConfig = await loadMcpConfig();
135
- const claudeSettings = await loadClaudeSettings();
136
- const hasProjectMcp = hasRangerServer(mcpConfig);
137
- const hasUserMcp = hasRangerServerInSettings(claudeSettings);
138
- if (hasProjectMcp && hasUserMcp) {
139
- console.log(`MCP Server: Configured (project + user)`);
140
- }
141
- else if (hasProjectMcp) {
142
- console.log(`MCP Server: ✓ Configured in .mcp.json`);
143
- }
144
- else if (hasUserMcp) {
145
- console.log(`MCP Server: ✓ Configured in ${getSettingsPath()}`);
133
+ // Claude Code Plugin
134
+ console.log('\n--- Claude Code Plugin ---');
135
+ const pluginInfo = await getPluginInfo('ranger@trailhead');
136
+ if (pluginInfo) {
137
+ const scopeLabel = pluginInfo.scope || 'unknown';
138
+ const statusLabel = pluginInfo.enabled ? 'enabled' : 'disabled';
139
+ console.log(` ${bold('ranger@trailhead')}: installed (${scopeLabel}, ${statusLabel})`);
146
140
  }
147
141
  else {
148
- console.log(`MCP Server: ✗ Not configured`);
149
- console.log(` Run: ranger start <token> or ranger skillup`);
142
+ console.log(' Not installed');
143
+ console.log(' Run: ranger start <token> (includes plugin installation)');
150
144
  }
151
- // Skills
145
+ // Skills (only show Ranger-managed skills)
152
146
  console.log('\n--- Skills ---');
153
- const { project: projectSkills, user: userSkills } = await getInstalledSkills();
147
+ const { project: allProjectSkills, user: allUserSkills } = await getInstalledSkills();
148
+ const projectSkills = allProjectSkills.filter((s) => RANGER_MANAGED_SKILLS.includes(s.name));
149
+ const userSkills = allUserSkills.filter((s) => RANGER_MANAGED_SKILLS.includes(s.name));
154
150
  const totalSkills = projectSkills.length + userSkills.length;
155
151
  if (totalSkills === 0) {
156
152
  console.log('No skills installed');