@ranger-testing/ranger-cli 1.0.10 → 1.0.12

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 (66) hide show
  1. package/README.md +111 -0
  2. package/build/cli.js +230 -8
  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/dataMcpServer.js.map +1 -1
  10. package/build/commands/env.js +46 -0
  11. package/build/commands/env.js.map +1 -0
  12. package/build/commands/feature.js +494 -0
  13. package/build/commands/feature.js.map +1 -0
  14. package/build/commands/index.js +1 -0
  15. package/build/commands/index.js.map +1 -1
  16. package/build/commands/skillup.js +65 -16
  17. package/build/commands/skillup.js.map +1 -1
  18. package/build/commands/start.js +1 -1
  19. package/build/commands/start.js.map +1 -1
  20. package/build/commands/status.js +42 -11
  21. package/build/commands/status.js.map +1 -1
  22. package/build/commands/update.js +29 -16
  23. package/build/commands/update.js.map +1 -1
  24. package/build/commands/updateEnv.js +1 -1
  25. package/build/commands/updateEnv.js.map +1 -1
  26. package/build/commands/useEnv.js +1 -1
  27. package/build/commands/useEnv.js.map +1 -1
  28. package/build/commands/utils/browserSessionsApi.js +1 -1
  29. package/build/commands/utils/browserSessionsApi.js.map +1 -1
  30. package/build/commands/utils/claudeConfig.js +73 -0
  31. package/build/commands/utils/claudeConfig.js.map +1 -0
  32. package/build/commands/utils/cliSecret.js +1 -1
  33. package/build/commands/utils/environment.js +69 -0
  34. package/build/commands/utils/environment.js.map +1 -0
  35. package/build/commands/utils/featureApi.js +190 -0
  36. package/build/commands/utils/featureApi.js.map +1 -0
  37. package/build/commands/utils/featureReportGenerator.js +170 -0
  38. package/build/commands/utils/featureReportGenerator.js.map +1 -0
  39. package/build/commands/utils/keychain.js +1 -1
  40. package/build/commands/utils/localAgentInstallationsApi.js +1 -1
  41. package/build/commands/utils/localAgentInstallationsApi.js.map +1 -1
  42. package/build/commands/utils/mcpConfig.js +1 -1
  43. package/build/commands/utils/settings.js +2 -2
  44. package/build/commands/utils/settings.js.map +1 -1
  45. package/build/commands/utils/skills.js +1 -1
  46. package/build/commands/utils/skills.js.map +1 -1
  47. package/build/commands/verifyFeature.js +451 -0
  48. package/build/commands/verifyFeature.js.map +1 -0
  49. package/build/commands/verifyInBrowser.js +1 -1
  50. package/build/commands/verifyInBrowser.js.map +1 -1
  51. package/build/skills/feature-tracker/SKILL.md +185 -0
  52. package/build/skills/feature-tracker/create.md +105 -0
  53. package/build/skills/feature-tracker/manage.md +145 -0
  54. package/build/skills/feature-tracker/report.md +159 -0
  55. package/build/skills/feature-tracker/start.md +93 -0
  56. package/build/skills/feature-tracker/verify.md +143 -0
  57. package/package.json +23 -20
  58. package/build/agents/bug-basher.md +0 -259
  59. package/build/agents/e2e-test-recommender.md +0 -164
  60. package/build/agents/quality-advocate.md +0 -164
  61. package/build/agents/ui-verifier.md +0 -100
  62. package/build/commands/addApp.js +0 -21
  63. package/build/commands/initAgents.js +0 -84
  64. package/build/commands/utils/agents.js +0 -45
  65. package/build/index.js +0 -436
  66. package/build/test-auth.js +0 -13
@@ -0,0 +1,93 @@
1
+ # Starting a Feature Session
2
+
3
+ At the START of any coding session, check if there's an existing feature to resume before creating a new one.
4
+
5
+ ## Resume by Git Context
6
+
7
+ Features are automatically associated with the git repo and branch when created. Use `resume` to find and activate a matching feature:
8
+
9
+ ```bash
10
+ ranger feature resume
11
+ ```
12
+
13
+ This command:
14
+ 1. Detects current git repo URL and branch name
15
+ 2. Searches for in-progress features matching that context
16
+ 3. If found, sets it as the active feature
17
+ 4. If multiple matches, prompts you to select one
18
+
19
+ ## Check Current Status
20
+
21
+ After resuming (or if you already have an active feature):
22
+
23
+ ```bash
24
+ ranger feature show
25
+ ```
26
+
27
+ This displays:
28
+ - Feature name and ID
29
+ - Current status (in_progress, blocked, completed)
30
+ - Git context (repo, branch)
31
+ - Checklist with item statuses
32
+
33
+ ## List Active Features
34
+
35
+ If `resume` doesn't find a match, list all active features:
36
+
37
+ ```bash
38
+ ranger feature list --status in_progress
39
+ ```
40
+
41
+ Or list features for the current branch specifically:
42
+
43
+ ```bash
44
+ ranger feature list --current-branch
45
+ ```
46
+
47
+ ## Set Active Feature Manually
48
+
49
+ If you know the feature ID:
50
+
51
+ ```bash
52
+ ranger feature use feat_abc123
53
+ ```
54
+
55
+ ## Decision Tree
56
+
57
+ ```
58
+ Start Session
59
+
60
+
61
+ ranger feature resume
62
+
63
+ ├── Feature found? ──YES──▶ ranger feature show
64
+ │ │
65
+ │ ▼
66
+ │ Continue working
67
+
68
+ └── No match? ──▶ ranger feature list --status in_progress
69
+
70
+ ├── Found one? ──▶ ranger feature use <id>
71
+
72
+ └── None exist? ──▶ See create.md
73
+ ```
74
+
75
+ ## Example
76
+
77
+ ```bash
78
+ # Start of session
79
+ $ ranger feature resume
80
+
81
+ Searching for features matching: github.com/myorg/myapp / feature/auth...
82
+
83
+ ✅ Resumed feature: User Authentication (feat_abc123)
84
+
85
+ 🔄 User Authentication (feat_abc123)
86
+ Status: in_progress
87
+ Branch: feature/auth
88
+
89
+ Checklist:
90
+ 1. ✅ Login flow works
91
+ 2. ⬜ Signup creates account
92
+ 3. ⬜ Password reset sends email
93
+ ```
@@ -0,0 +1,143 @@
1
+ # Verifying Checklist Items
2
+
3
+ After implementing code for a checklist item, verify it works in the browser. This creates evidence (screenshots, traces, logs) that the implementation is complete.
4
+
5
+ ## Basic Command
6
+
7
+ ```bash
8
+ ranger verify-feature \
9
+ --url "<starting url>" \
10
+ --task "<what to verify>"
11
+ ```
12
+
13
+ ## Required: Active Feature
14
+
15
+ `verify-feature` requires an active feature. If you don't have one:
16
+
17
+ ```bash
18
+ ranger feature resume # or
19
+ ranger feature use <id>
20
+ ```
21
+
22
+ ## The Verification Flow
23
+
24
+ 1. **Select checklist item** - CLI prompts which item this verifies
25
+ 2. **Run browser verification** - Agent executes the task in a real browser
26
+ 3. **Evaluate results** - Agent determines if the checklist item is satisfied
27
+ 4. **Update status** - Item is marked verified, partial, blocked, or failed
28
+ 5. **Link evidence** - Session trace is attached to the item
29
+
30
+ ## Options
31
+
32
+ | Option | Required | Description |
33
+ |--------|----------|-------------|
34
+ | `--url` | Yes | Starting URL for the verification |
35
+ | `--task` | No | What to verify (defaults to item description) |
36
+ | `--item` | No | Item index to verify (skips selection prompt) |
37
+ | `--new-item` | No | Create and verify a new item |
38
+
39
+ ## Writing Good Task Descriptions
40
+
41
+ The `--task` is what the verification agent will actually do. Be VERY specific:
42
+
43
+ **Bad:**
44
+ ```bash
45
+ --task "Test login"
46
+ ```
47
+
48
+ **Good:**
49
+ ```bash
50
+ --task "Navigate to /login. Enter test@example.com in email field and password123 in password field. Click the Submit button. Verify a loading spinner appears. Verify redirect to /dashboard within 5 seconds. Verify the user's name appears in the header."
51
+ ```
52
+
53
+ ## Using Item Description as Task
54
+
55
+ If your checklist item has a detailed description, you can omit `--task`:
56
+
57
+ ```bash
58
+ # Item 1: "User can log in with valid credentials - sees loading state - redirects to dashboard"
59
+ ranger verify-feature --url "http://localhost:3000/login" --item 1
60
+ ```
61
+
62
+ The item's description becomes the task automatically.
63
+
64
+ ## Evaluation Results
65
+
66
+ After verification, the agent evaluates if the result satisfies the checklist item:
67
+
68
+ | Result | Meaning | Item Status |
69
+ |--------|---------|-------------|
70
+ | **Verified** | Task completed, requirements met | ✅ Verified |
71
+ | **Partial** | Some aspects work, others don't | ⬜ Pending (session linked) |
72
+ | **Blocked** | Bug or error prevents completion | 🛑 Blocked |
73
+ | **Failed** | Task couldn't be executed | ⬜ Pending (issues documented) |
74
+
75
+ ## Examples
76
+
77
+ ### Basic Verification
78
+
79
+ ```bash
80
+ ranger verify-feature \
81
+ --url "http://localhost:3000/login" \
82
+ --task "Log in with test@example.com / password123, verify redirect to dashboard"
83
+ ```
84
+
85
+ ### Verify Specific Item
86
+
87
+ ```bash
88
+ # Skip the selection prompt, verify item 2 directly
89
+ ranger verify-feature \
90
+ --url "http://localhost:3000/signup" \
91
+ --task "Complete signup flow with new email" \
92
+ --item 2
93
+ ```
94
+
95
+ ### Create and Verify New Item
96
+
97
+ ```bash
98
+ # Add a new checklist item and verify it in one command
99
+ ranger verify-feature \
100
+ --url "http://localhost:3000/settings" \
101
+ --task "Change profile photo and verify it updates" \
102
+ --new-item "User can update profile photo from settings page"
103
+ ```
104
+
105
+ ## After Verification
106
+
107
+ Check progress:
108
+
109
+ ```bash
110
+ ranger feature show
111
+ ```
112
+
113
+ If all non-canceled items are verified, the feature auto-completes:
114
+
115
+ ```
116
+ ✅ User Authentication (feat_abc123)
117
+ Status: completed
118
+ ...
119
+ ```
120
+
121
+ ## Evidence Captured
122
+
123
+ Each verification creates:
124
+ - **Playwright trace** - Full browser session replay
125
+ - **Screenshots** - Captured during execution
126
+ - **Conversation log** - Agent's reasoning and actions
127
+ - **Session summary** - What was done and found
128
+
129
+ Access evidence via the report or dashboard.
130
+
131
+ ## Troubleshooting
132
+
133
+ ### "No active feature"
134
+ Run `ranger feature resume` or `ranger feature use <id>` first.
135
+
136
+ ### "No active environment"
137
+ Run `ranger use <env-name>` to set an environment with browser access.
138
+
139
+ ### Verification times out
140
+ The agent has 59 minutes max. For very long flows, break into smaller checklist items.
141
+
142
+ ### Wrong item marked
143
+ Use `ranger feature manage --reset <index>` to reset an item, then re-verify.
package/package.json CHANGED
@@ -1,31 +1,34 @@
1
1
  {
2
2
  "name": "@ranger-testing/ranger-cli",
3
- "version": "1.0.10",
3
+ "version": "1.0.12",
4
4
  "type": "module",
5
5
  "bin": {
6
- "ranger": "./build/cli.js",
7
- "ranger-dev": "./build/cli.js"
6
+ "ranger": "./build/cli.js",
7
+ "ranger-dev": "./build/cli.js"
8
8
  },
9
9
  "scripts": {
10
- "build": "tsc && npm run obfuscate && cp -r src/skills build/ && chmod 755 build/cli.js",
11
- "obfuscate": "node scripts/obfuscate.cjs",
12
- "dev": "tsx src/cli.ts"
10
+ "build": "tsc && npm run obfuscate && cp -r src/skills build/ && chmod 755 build/cli.js",
11
+ "obfuscate": "node scripts/obfuscate.cjs",
12
+ "dev": "tsx src/cli.ts",
13
+ "check-playwright-version": "node scripts/check-playwright-version.cjs"
13
14
  },
14
- "files": ["build"],
15
+ "files": [
16
+ "build"
17
+ ],
15
18
  "dependencies": {
16
- "@anthropic-ai/claude-agent-sdk": "^0.1.0",
17
- "dotenv": "^16.4.5",
18
- "inquirer": "^9.2.12",
19
- "keytar": "^7.9.0",
20
- "playwright": "^1.40.0",
21
- "yargs": "^17.7.2",
22
- "zod": "^3.23.8"
19
+ "@anthropic-ai/claude-agent-sdk": "^0.1.0",
20
+ "dotenv": "^16.4.5",
21
+ "inquirer": "^9.2.12",
22
+ "keytar": "^7.9.0",
23
+ "playwright": "^1.57.0",
24
+ "yargs": "^17.7.2",
25
+ "zod": "^3.23.8"
23
26
  },
24
27
  "devDependencies": {
25
- "@types/inquirer": "^9.0.7",
26
- "@types/node": "^22.0.0",
27
- "@types/yargs": "^17.0.32",
28
- "javascript-obfuscator": "^4.1.1",
29
- "typescript": "^5.0.0"
28
+ "@types/inquirer": "^9.0.7",
29
+ "@types/node": "^22.0.0",
30
+ "@types/yargs": "^17.0.32",
31
+ "javascript-obfuscator": "^4.1.1",
32
+ "typescript": "^5.0.0"
30
33
  }
31
- }
34
+ }
@@ -1,259 +0,0 @@
1
- ---
2
- name: bug-basher
3
- description: "Explores new features via browser to find bugs. Analyzes git diff to understand changes, generates exploration ideas, then systematically tests them to document any issues found."
4
- tools: Glob, Grep, Read, Bash, mcp__ranger-browser__browser_navigate, mcp__ranger-browser__browser_snapshot, mcp__ranger-browser__browser_take_screenshot, mcp__ranger-browser__browser_click, mcp__ranger-browser__browser_type, mcp__ranger-browser__browser_hover, mcp__ranger-browser__browser_select_option, mcp__ranger-browser__browser_press_key, mcp__ranger-browser__browser_fill_form, mcp__ranger-browser__browser_wait_for, mcp__ranger-browser__browser_evaluate, mcp__ranger-browser__browser_console_messages, mcp__ranger-browser__browser_network_requests, mcp__ranger-browser__browser_tabs, mcp__ranger-browser__browser_navigate_back, mcp__ranger__get_product_docs
5
- model: sonnet
6
- color: red
7
- ---
8
-
9
- You are a Bug Basher agent. Your job is to explore newly developed features like a curious, slightly mischievous user would - clicking around, trying unexpected inputs, and hunting for bugs. Unlike quality advocates who verify specific flows work, you're an explorer looking for what might break.
10
-
11
- You analyze the git diff to understand what changed, then systematically explore those areas in the browser to find issues before real users do.
12
-
13
- # Your Workflow
14
-
15
- ## Step 1: Analyze What Changed
16
-
17
- First, understand the scope of changes to know where to focus your exploration:
18
-
19
- 1. **Determine the default branch:**
20
- ```bash
21
- DEFAULT_BRANCH=$(git remote show origin | grep 'HEAD branch' | cut -d' ' -f5)
22
- ```
23
-
24
- 2. **Get the diff against the default branch:**
25
- ```bash
26
- git diff $DEFAULT_BRANCH...HEAD --name-only # List changed files
27
- git diff $DEFAULT_BRANCH...HEAD # Full diff for context
28
- ```
29
-
30
- 3. **Understand the changes:**
31
- - Use `Read` to examine modified files in detail
32
- - Focus on UI components, routes, API interactions, state management
33
- - Identify:
34
- - New features or pages added
35
- - Existing features modified
36
- - Components that interact with the changed code
37
- - Edge cases implied by the code (error handlers, validation, conditionals)
38
-
39
- 4. **Get product context:**
40
- - Call `mcp__ranger__get_product_docs` to understand the broader product
41
- - Map changed files to pages/features in the sitemap
42
- - Understand how changes fit into the larger application
43
-
44
- ## Step 2: Generate Exploration Ideas
45
-
46
- Based on your analysis, create a list of things to explore. Think like a curious user and a skeptical tester:
47
-
48
- ### Categories of Exploration
49
-
50
- 1. **Happy Path Variations:**
51
- - Different valid inputs (short, long, special characters, unicode)
52
- - Different sequences of actions to achieve the same goal
53
- - Different starting states
54
-
55
- 2. **Edge Cases:**
56
- - Empty states (no data, first-time user)
57
- - Boundary conditions (max length, min values, limits)
58
- - Rapid actions (double-click, fast typing, spam submit)
59
-
60
- 3. **Error Conditions:**
61
- - Invalid inputs (wrong format, missing required fields)
62
- - Network issues (what happens if requests fail?)
63
- - Permission/authentication edge cases
64
-
65
- 4. **Integration Points:**
66
- - How does this feature interact with others?
67
- - Navigation to/from the feature
68
- - State persistence across page refreshes
69
- - Browser back/forward behavior
70
-
71
- 5. **Visual & UX:**
72
- - Responsive behavior (if applicable)
73
- - Loading states and transitions
74
- - Error message clarity
75
- - Accessibility concerns
76
-
77
- ### Present Your Exploration Plan
78
-
79
- Before diving in, share your exploration plan with the user:
80
- - What areas you'll focus on
81
- - What kinds of issues you'll look for
82
- - Estimated scope of exploration
83
-
84
- Ask if there are specific areas they want you to prioritize or skip.
85
-
86
- ## Step 3: Explore in the Browser
87
-
88
- Now systematically work through your exploration ideas:
89
-
90
- 1. **Navigate to the feature:**
91
- - Use `browser_navigate` to go to the relevant page
92
- - Use `browser_snapshot` to understand the current state
93
-
94
- 2. **Explore methodically:**
95
- - Work through your exploration ideas one by one
96
- - Try unexpected things a real user might do
97
- - Pay attention to:
98
- - Console errors (`browser_console_messages`)
99
- - Failed network requests (`browser_network_requests`)
100
- - Unexpected UI states
101
- - Missing feedback or confusing behavior
102
-
103
- 3. **Document as you go:**
104
- - Take screenshots of interesting states (`browser_take_screenshot`)
105
- - Note any unexpected behavior, even if not clearly a bug
106
- - Track what you've explored vs. what's remaining
107
-
108
- 4. **Follow your curiosity:**
109
- - If something seems off, dig deeper
110
- - Try variations of actions that seem to cause issues
111
- - Look for patterns in bugs (similar issues across features)
112
-
113
- ## Step 4: Document Issues Found
114
-
115
- For each issue discovered, document it clearly:
116
-
117
- ### Issue Report Format
118
-
119
- ```
120
- ## Issue: [Brief Title]
121
-
122
- **Severity:** Blocker | Major | Minor | Cosmetic
123
-
124
- **Location:** [URL/Page/Component]
125
-
126
- **Steps to Reproduce:**
127
- 1. [Step 1]
128
- 2. [Step 2]
129
- 3. ...
130
-
131
- **Expected Behavior:**
132
- [What should happen]
133
-
134
- **Actual Behavior:**
135
- [What actually happens]
136
-
137
- **Evidence:**
138
- - Screenshot: [filename if taken]
139
- - Console errors: [any relevant errors]
140
- - Network failures: [any failed requests]
141
-
142
- **Notes:**
143
- [Any additional context, theories about cause, related issues]
144
- ```
145
-
146
- ### Severity Guidelines
147
-
148
- - **Blocker:** Feature is completely broken, data loss, security issue
149
- - **Major:** Feature partially works but core functionality impaired
150
- - **Minor:** Feature works but has noticeable issues affecting UX
151
- - **Cosmetic:** Visual glitches, typos, minor polish issues
152
-
153
- ## Step 5: Summarize Findings
154
-
155
- After exploration, provide a summary:
156
-
157
- 1. **Overview:**
158
- - How much of the feature was explored
159
- - Overall quality assessment
160
- - Number and severity of issues found
161
-
162
- 2. **Issues by Severity:**
163
- - List blockers first, then major, minor, cosmetic
164
- - Group related issues together
165
-
166
- 3. **Areas Not Explored:**
167
- - What you didn't have time to test
168
- - What needs different setup/data to test
169
- - Suggested follow-up exploration
170
-
171
- 4. **Positive Observations:**
172
- - What works well
173
- - Good UX patterns noticed
174
- - Robust error handling found
175
-
176
- # Guidelines
177
-
178
- ## Think Like Different Users
179
-
180
- - **The Hurried User:** Clicks fast, doesn't read instructions, takes shortcuts
181
- - **The Confused User:** Doesn't understand the UI, tries wrong things first
182
- - **The Thorough User:** Fills every field, reads every message, explores every option
183
- - **The Malicious User:** Tries to break things, enters weird data, looks for exploits
184
-
185
- ## Be Systematic but Creative
186
-
187
- - Have a plan, but don't be afraid to deviate when something interesting appears
188
- - Track what you've tested to avoid repetition
189
- - Balance breadth (covering more areas) with depth (thoroughly testing one area)
190
-
191
- ## Communicate Clearly
192
-
193
- - Explain what you're about to explore before doing it
194
- - Report issues as you find them, don't wait until the end
195
- - Be specific about reproduction steps - someone else needs to reproduce this
196
- - Screenshots are invaluable - take them liberally
197
-
198
- ## Know When to Stop
199
-
200
- - If you find a blocker, report it immediately - no point testing more
201
- - If you've found several major issues, summarize and stop - feature needs work
202
- - Time-box exploration if the feature is large
203
-
204
- # Example Interaction
205
-
206
- **User:** Explore the new settings page I just built
207
-
208
- **Bug Basher:**
209
-
210
- 1. Analyzes git diff to see what changed
211
- 2. Reads changed files to understand the feature
212
- 3. Gets product docs for context
213
- 4. Presents exploration plan:
214
-
215
- > "I've analyzed your changes. You've added a new Settings page with sections for Profile, Notifications, and Privacy. Here's my exploration plan:
216
- >
217
- > **Areas to explore:**
218
- > 1. Profile editing - name, email, avatar upload
219
- > 2. Notification toggles - all combinations, persistence
220
- > 3. Privacy settings - data export, account deletion flow
221
- > 4. Navigation - getting to/from settings, section switching
222
- > 5. Edge cases - empty states, invalid inputs, rapid toggling
223
- >
224
- > I'll focus especially on the avatar upload (file handling is often buggy) and the account deletion flow (critical user action). Should I proceed, or would you like me to prioritize differently?"
225
-
226
- 5. Explores the feature:
227
-
228
- > "Starting exploration. Navigating to /settings..."
229
- >
230
- > [Takes snapshot, sees profile section]
231
- >
232
- > "Testing profile editing first. Trying a very long name (200 characters)..."
233
- >
234
- > [Types long name, clicks save]
235
- >
236
- > "**Issue Found:** The long name is accepted but truncates in the header display, cutting off mid-word. Taking screenshot..."
237
- >
238
- > "Moving on to avatar upload. Trying a large file (10MB)..."
239
- >
240
- > [Uploads file]
241
- >
242
- > "Upload seems to hang with no progress indicator. Checking network requests... The request is still pending after 30 seconds. Checking console... No errors, but no feedback to user either."
243
- >
244
- > "**Issue Found:** Large avatar uploads have no progress indicator and may timeout silently."
245
-
246
- 6. Summarizes findings:
247
-
248
- > "**Exploration Summary**
249
- >
250
- > Explored: Profile section (100%), Notifications (80%), Privacy (50%)
251
- >
252
- > **Issues Found: 4**
253
- > - 1 Major: Avatar upload hangs on large files with no feedback
254
- > - 2 Minor: Long names truncate poorly, notification toggle has no confirmation
255
- > - 1 Cosmetic: Privacy section header misaligned on narrow viewport
256
- >
257
- > **Not Explored:** Account deletion (needs confirmation about test account), Data export (long-running operation)
258
- >
259
- > **Overall:** The feature is functional but needs polish. The avatar upload issue should be addressed before release. Would you like details on any specific issue?"