@ranger-testing/ranger-cli 1.0.13 → 1.1.0
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.
- package/README.md +72 -183
- package/build/cli.js +219 -278
- package/build/cli.js.map +1 -1
- package/build/commands/addEnv.js +1 -1
- package/build/commands/addEnv.js.map +1 -1
- package/build/commands/authEncrypt.js +7 -6
- package/build/commands/authEncrypt.js.map +1 -1
- package/build/commands/clean.js +1 -1
- package/build/commands/clean.js.map +1 -1
- package/build/commands/config.js +5 -4
- package/build/commands/config.js.map +1 -1
- package/build/commands/dataMcpServer.js +1 -1
- package/build/commands/dataMcpServer.js.map +1 -1
- package/build/commands/env.js +17 -10
- package/build/commands/env.js.map +1 -1
- package/build/commands/feature.js +277 -285
- package/build/commands/feature.js.map +1 -1
- package/build/commands/hook.js +27 -0
- package/build/commands/hook.js.map +1 -0
- package/build/commands/hooks/disable.js +25 -0
- package/build/commands/hooks/disable.js.map +1 -0
- package/build/commands/hooks/enable.js +44 -0
- package/build/commands/hooks/enable.js.map +1 -0
- package/build/commands/hooks/exitPlanMode.js +35 -0
- package/build/commands/hooks/exitPlanMode.js.map +1 -0
- package/build/commands/hooks/index.js +10 -0
- package/build/commands/hooks/index.js.map +1 -0
- package/build/commands/hooks/output.js +53 -0
- package/build/commands/hooks/output.js.map +1 -0
- package/build/commands/hooks/planReminder.js +46 -0
- package/build/commands/hooks/planReminder.js.map +1 -0
- package/build/commands/hooks/planStart.js +30 -0
- package/build/commands/hooks/planStart.js.map +1 -0
- package/build/commands/hooks/postEdit.js +41 -0
- package/build/commands/hooks/postEdit.js.map +1 -0
- package/build/commands/hooks/preCompact.js +30 -0
- package/build/commands/hooks/preCompact.js.map +1 -0
- package/build/commands/hooks/sessionStart.js +35 -0
- package/build/commands/hooks/sessionStart.js.map +1 -0
- package/build/commands/hooks/stopHook.js +54 -0
- package/build/commands/hooks/stopHook.js.map +1 -0
- package/build/commands/index.js +1 -0
- package/build/commands/index.js.map +1 -1
- package/build/commands/skillup.js +41 -77
- package/build/commands/skillup.js.map +1 -1
- package/build/commands/start.js +1 -1
- package/build/commands/start.js.map +1 -1
- package/build/commands/status.js +47 -65
- package/build/commands/status.js.map +1 -1
- package/build/commands/update.js +32 -40
- package/build/commands/update.js.map +1 -1
- package/build/commands/updateEnv.js +1 -1
- package/build/commands/updateEnv.js.map +1 -1
- package/build/commands/useEnv.js +1 -1
- package/build/commands/useEnv.js.map +1 -1
- package/build/commands/utils/browserSessionsApi.js +1 -1
- package/build/commands/utils/browserSessionsApi.js.map +1 -1
- package/build/commands/utils/claudePlugin.js +85 -0
- package/build/commands/utils/claudePlugin.js.map +1 -0
- package/build/commands/utils/cliSecret.js +1 -1
- package/build/commands/utils/environment.js +0 -6
- package/build/commands/utils/environment.js.map +1 -1
- package/build/commands/utils/featureApi.js +82 -15
- package/build/commands/utils/featureApi.js.map +1 -1
- package/build/commands/utils/featureReportGenerator.js +37 -3
- package/build/commands/utils/featureReportGenerator.js.map +1 -1
- package/build/commands/utils/git.js +44 -0
- package/build/commands/utils/git.js.map +1 -0
- package/build/commands/utils/keychain.js +1 -1
- package/build/commands/utils/keychain.js.map +1 -1
- package/build/commands/utils/localAgentInstallationsApi.js +1 -1
- package/build/commands/utils/rangerRoot.js +30 -0
- package/build/commands/utils/rangerRoot.js.map +1 -0
- package/build/commands/utils/sessionCache.js +133 -0
- package/build/commands/utils/sessionCache.js.map +1 -0
- package/build/commands/utils/settings.js +7 -5
- package/build/commands/utils/settings.js.map +1 -1
- package/build/commands/utils/skillContent.js +28 -0
- package/build/commands/utils/skillContent.js.map +1 -0
- package/build/commands/utils/skills.js +1 -1
- package/build/commands/utils/skills.js.map +1 -1
- package/build/commands/utils/userApi.js +32 -0
- package/build/commands/utils/userApi.js.map +1 -0
- package/build/commands/verifyFeature.js +450 -105
- package/build/commands/verifyFeature.js.map +1 -1
- package/build/commands/verifyInBrowser.js +1 -1
- package/build/commands/verifyInBrowser.js.map +1 -1
- package/build/skills/bug-bash.md +31 -10
- package/build/skills/ranger/SKILL.md +164 -0
- package/build/skills/ranger/create.md +151 -0
- package/build/skills/ranger/start.md +122 -0
- package/build/skills/{feature-tracker → ranger}/verify.md +43 -17
- package/package.json +5 -3
- package/scripts/postinstall.js +18 -0
- package/build/commands/utils/mcpConfig.js +0 -1
- package/build/commands/utils/mcpConfig.js.map +0 -1
- package/build/skills/feature-tracker/SKILL.md +0 -185
- package/build/skills/feature-tracker/create.md +0 -105
- package/build/skills/feature-tracker/manage.md +0 -145
- package/build/skills/feature-tracker/report.md +0 -159
- package/build/skills/feature-tracker/start.md +0 -93
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# Creating a New Feature
|
|
2
|
+
|
|
3
|
+
Create a feature when starting new work that doesn't have an existing feature to resume.
|
|
4
|
+
|
|
5
|
+
## Basic Command
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
ranger feature create "<feature name>" \
|
|
9
|
+
--description "<description>" \
|
|
10
|
+
-c "<checklist item 1>" \
|
|
11
|
+
-c "<checklist item 2>"
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Use multiple `-c` flags for multiple checklist items. Each item can contain commas.
|
|
15
|
+
|
|
16
|
+
## What Gets Captured Automatically
|
|
17
|
+
|
|
18
|
+
When you create a feature, the CLI automatically captures:
|
|
19
|
+
- **Git repo URL** - From `git remote get-url origin`
|
|
20
|
+
- **Git branch** - From current branch name
|
|
21
|
+
- **Created timestamp**
|
|
22
|
+
- **Your organization** - From API token
|
|
23
|
+
|
|
24
|
+
This enables `ranger feature list` to filter features by git context later.
|
|
25
|
+
|
|
26
|
+
## Writing Good Checklist Items
|
|
27
|
+
|
|
28
|
+
**CRITICAL: Checklist items are E2E test scenarios, NOT a TODO list.**
|
|
29
|
+
|
|
30
|
+
Ranger verifies checklist items by running them in a real browser. Each item must describe a **complete user journey** that can be tested through the UI.
|
|
31
|
+
|
|
32
|
+
### Key Principles
|
|
33
|
+
|
|
34
|
+
1. **E2E flows only** - Each item is a test a QA engineer would run in the browser
|
|
35
|
+
2. **Must be UI-testable** - No backend-only work, no code changes, no infrastructure tasks
|
|
36
|
+
3. **Happy path focus** - Describe the successful user journey, not edge cases
|
|
37
|
+
4. **Keep it minimal** - Prefer 1-2 items; only add more for genuinely distinct flows
|
|
38
|
+
|
|
39
|
+
### What Checklist Items Are NOT
|
|
40
|
+
|
|
41
|
+
❌ **NOT a TODO list** - Don't list implementation tasks
|
|
42
|
+
```
|
|
43
|
+
Bad: "Add validation to form"
|
|
44
|
+
Bad: "Write unit tests"
|
|
45
|
+
Bad: "Refactor auth module"
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
❌ **NOT backend features** - Must be verifiable through UI
|
|
49
|
+
```
|
|
50
|
+
Bad: "API returns correct response"
|
|
51
|
+
Bad: "Database migration runs"
|
|
52
|
+
Bad: "Caching layer works"
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
❌ **NOT granular UI checks** - Don't check individual elements
|
|
56
|
+
```
|
|
57
|
+
Bad: "Button is visible"
|
|
58
|
+
Bad: "Form has 3 fields"
|
|
59
|
+
Bad: "Error message is red"
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### What Checklist Items ARE
|
|
63
|
+
|
|
64
|
+
✅ **Complete E2E user flows** that a QA tester would execute:
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
Good: "User can log in with valid credentials and see the dashboard"
|
|
68
|
+
Good: "User can add item to cart, proceed to checkout, and complete purchase"
|
|
69
|
+
Good: "User can create a new project, invite a team member, and see them in the members list"
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Examples
|
|
73
|
+
|
|
74
|
+
**Bad - implementation tasks:**
|
|
75
|
+
```
|
|
76
|
+
1. Add login endpoint
|
|
77
|
+
2. Create session storage
|
|
78
|
+
3. Build login form component
|
|
79
|
+
4. Add form validation
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Good - E2E flow:**
|
|
83
|
+
```
|
|
84
|
+
1. User can log in with valid email/password and see their dashboard
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Bad - granular checks:**
|
|
88
|
+
```
|
|
89
|
+
1. Export button appears on Reports page
|
|
90
|
+
2. Clicking button opens modal
|
|
91
|
+
3. Modal has format dropdown
|
|
92
|
+
4. Selecting CSV triggers download
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**Good - single flow:**
|
|
96
|
+
```
|
|
97
|
+
1. User can navigate to Reports, click Export, select CSV format, and download the file
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### When to Use Multiple Items
|
|
101
|
+
|
|
102
|
+
Only split into multiple items for **genuinely distinct user journeys**:
|
|
103
|
+
|
|
104
|
+
- Adding a button? **1 item** - the complete flow of using it
|
|
105
|
+
- Login + signup? **2 items** - separate user journeys
|
|
106
|
+
- Full CRUD? **3-4 items** - create, read, update, delete are distinct flows
|
|
107
|
+
|
|
108
|
+
## Complete Example
|
|
109
|
+
|
|
110
|
+
**Simple feature (1 item):**
|
|
111
|
+
```bash
|
|
112
|
+
ranger feature create "Add Export Button" \
|
|
113
|
+
--description "Add export functionality to the reports page" \
|
|
114
|
+
-c "Navigate to Reports page, click the new Export button, select CSV format, and verify the file downloads"
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**Larger feature (multiple items):**
|
|
118
|
+
```bash
|
|
119
|
+
ranger feature create "User Authentication" \
|
|
120
|
+
--description "Login and signup flows for the web app" \
|
|
121
|
+
-c "Go to login page and sign in with valid credentials, verify redirect to dashboard" \
|
|
122
|
+
-c "Go to signup page and create new account, verify welcome email and successful login"
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Output
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
Creating feature...
|
|
129
|
+
|
|
130
|
+
✅ Feature created: feat_01abc123
|
|
131
|
+
|
|
132
|
+
🔄 User Authentication (feat_01abc123)
|
|
133
|
+
Status: in_progress
|
|
134
|
+
Description: Login and signup flows...
|
|
135
|
+
Repository: github.com/myorg/myapp
|
|
136
|
+
Branch: feature/auth
|
|
137
|
+
Created: 1/21/2026, 10:30:00 AM
|
|
138
|
+
|
|
139
|
+
Checklist:
|
|
140
|
+
1. ⬜ Go to login page and sign in...
|
|
141
|
+
2. ⬜ Go to signup page and create...
|
|
142
|
+
|
|
143
|
+
➡️ Set as active feature
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## After Creation
|
|
147
|
+
|
|
148
|
+
The new feature is automatically set as the active feature. You can now:
|
|
149
|
+
|
|
150
|
+
1. Start implementing the first checklist item
|
|
151
|
+
2. View status with `ranger feature show`
|
|
@@ -0,0 +1,122 @@
|
|
|
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
|
+
## List Features
|
|
6
|
+
|
|
7
|
+
First, check what features exist:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
ranger feature list
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Or filter to the current git branch:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
ranger feature list --current-branch
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
This shows feature names, IDs, status, and branch info.
|
|
20
|
+
|
|
21
|
+
## Resume a Feature
|
|
22
|
+
|
|
23
|
+
If you find a pertinent feature to resume:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
ranger feature resume <id>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
This command:
|
|
30
|
+
1. Sets the feature as active
|
|
31
|
+
2. Starts the session if it's in `ready` status
|
|
32
|
+
3. Displays the feature with its checklist
|
|
33
|
+
|
|
34
|
+
## Check Current Status
|
|
35
|
+
|
|
36
|
+
After resuming, view the full status:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
ranger feature show
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
This displays:
|
|
43
|
+
- Feature name and ID
|
|
44
|
+
- Current status (in_progress, blocked, completed)
|
|
45
|
+
- Git context (repo, branch)
|
|
46
|
+
- Checklist with item statuses
|
|
47
|
+
|
|
48
|
+
## Add Checklist Items
|
|
49
|
+
|
|
50
|
+
If you need to add new work to an existing feature:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
ranger feature add-checklist-item "User navigates to /settings, clicks 'Edit Profile', updates their display name, clicks Save, sees success toast, refreshes the page, and confirms the new name persists"
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
This adds a new pending checklist item to the active feature. Use this when:
|
|
57
|
+
- The scope of work has expanded
|
|
58
|
+
- You discover additional scenarios to verify
|
|
59
|
+
- A review requested additional coverage
|
|
60
|
+
|
|
61
|
+
### Writing Good Checklist Items
|
|
62
|
+
|
|
63
|
+
Checklist items should be **detailed, multi-step E2E flows** that can be verified in a browser:
|
|
64
|
+
|
|
65
|
+
**Bad (too vague):**
|
|
66
|
+
```bash
|
|
67
|
+
ranger feature add-checklist-item "Profile editing works"
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Good (detailed flow):**
|
|
71
|
+
```bash
|
|
72
|
+
ranger feature add-checklist-item "User goes to /settings, clicks 'Edit Profile' button, changes display name to 'Test User', clicks Save, sees 'Profile updated' success message, refreshes the page, and verifies the name still shows 'Test User'"
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Note:** You cannot add checklist items while a review is in progress.
|
|
76
|
+
|
|
77
|
+
## Decision Tree
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
Start Session
|
|
81
|
+
│
|
|
82
|
+
▼
|
|
83
|
+
ranger feature list
|
|
84
|
+
│
|
|
85
|
+
├── Found pertinent feature? ──▶ ranger feature resume <id>
|
|
86
|
+
│ │
|
|
87
|
+
│ ▼
|
|
88
|
+
│ ranger feature show
|
|
89
|
+
│ │
|
|
90
|
+
│ ▼
|
|
91
|
+
│ Continue working
|
|
92
|
+
│
|
|
93
|
+
└── None exist? ──▶ See create.md
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Example
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
# Start of session - list features
|
|
100
|
+
$ ranger feature list
|
|
101
|
+
|
|
102
|
+
Showing 3 of 3:
|
|
103
|
+
|
|
104
|
+
🔄 User Authentication
|
|
105
|
+
ID: feat_abc123
|
|
106
|
+
Dev Status: In Progress
|
|
107
|
+
Branch: feature/auth
|
|
108
|
+
|
|
109
|
+
# Resume the feature
|
|
110
|
+
$ ranger feature resume feat_abc123
|
|
111
|
+
|
|
112
|
+
✅ Resumed feature: User Authentication (feat_abc123)
|
|
113
|
+
|
|
114
|
+
🔄 User Authentication (feat_abc123)
|
|
115
|
+
Dev Status: In Progress
|
|
116
|
+
Branch: feature/auth
|
|
117
|
+
|
|
118
|
+
Checklist:
|
|
119
|
+
1. ✅ Login flow works
|
|
120
|
+
2. ⬜ Signup creates account
|
|
121
|
+
3. ⬜ Password reset sends email
|
|
122
|
+
```
|
|
@@ -5,18 +5,18 @@ After implementing code for a checklist item, verify it works in the browser. Th
|
|
|
5
5
|
## Basic Command
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
ranger verify-feature
|
|
9
|
-
--url "<starting url>" \
|
|
10
|
-
--task "<what to verify>"
|
|
8
|
+
ranger verify-feature --task "<what to verify>"
|
|
11
9
|
```
|
|
12
10
|
|
|
11
|
+
The URL is derived from your active environment's `baseUrl` setting.
|
|
12
|
+
|
|
13
13
|
## Required: Active Feature
|
|
14
14
|
|
|
15
15
|
`verify-feature` requires an active feature. If you don't have one:
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
ranger feature
|
|
19
|
-
ranger feature
|
|
18
|
+
ranger feature list # Find features to resume
|
|
19
|
+
ranger feature resume <id> # Resume a specific feature
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
## The Verification Flow
|
|
@@ -31,10 +31,9 @@ ranger feature use <id>
|
|
|
31
31
|
|
|
32
32
|
| Option | Required | Description |
|
|
33
33
|
|--------|----------|-------------|
|
|
34
|
-
| `--
|
|
34
|
+
| `--env` | No | Environment to use (defaults to active environment) |
|
|
35
35
|
| `--task` | No | What to verify (defaults to item description) |
|
|
36
36
|
| `--item` | No | Item index to verify (skips selection prompt) |
|
|
37
|
-
| `--new-item` | No | Create and verify a new item |
|
|
38
37
|
|
|
39
38
|
## Writing Good Task Descriptions
|
|
40
39
|
|
|
@@ -56,7 +55,7 @@ If your checklist item has a detailed description, you can omit `--task`:
|
|
|
56
55
|
|
|
57
56
|
```bash
|
|
58
57
|
# Item 1: "User can log in with valid credentials - sees loading state - redirects to dashboard"
|
|
59
|
-
ranger verify-feature --
|
|
58
|
+
ranger verify-feature --item 1
|
|
60
59
|
```
|
|
61
60
|
|
|
62
61
|
The item's description becomes the task automatically.
|
|
@@ -72,13 +71,42 @@ After verification, the agent evaluates if the result satisfies the checklist it
|
|
|
72
71
|
| **Blocked** | Bug or error prevents completion | 🛑 Blocked |
|
|
73
72
|
| **Failed** | Task couldn't be executed | ⬜ Pending (issues documented) |
|
|
74
73
|
|
|
74
|
+
## Parallel Verification
|
|
75
|
+
|
|
76
|
+
Run multiple non-conflicting verifications in parallel using background execution.
|
|
77
|
+
|
|
78
|
+
### How to Run
|
|
79
|
+
|
|
80
|
+
Use Bash with `run_in_background: true`:
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
[Bash: ranger verify-feature --item 1, run_in_background: true] → task_abc
|
|
84
|
+
[Bash: ranger verify-feature --item 2, run_in_background: true] → task_def
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Poll with TaskOutput, report results as they complete.
|
|
88
|
+
|
|
89
|
+
### Safe to Parallelize
|
|
90
|
+
|
|
91
|
+
- Viewing pages, checking UI elements, navigation tests
|
|
92
|
+
- Read-only operations that don't modify shared state
|
|
93
|
+
|
|
94
|
+
### Do NOT Parallelize
|
|
95
|
+
|
|
96
|
+
- Logout tests (affects auth state for other sessions)
|
|
97
|
+
- Create/delete operations on shared data
|
|
98
|
+
- Tests with dependencies on each other
|
|
99
|
+
|
|
100
|
+
### CRITICAL: No Code Edits During Verification
|
|
101
|
+
|
|
102
|
+
File watchers (Next.js, Vite) will restart the dev server and break active browser sessions. Finish all code changes before running verifications.
|
|
103
|
+
|
|
75
104
|
## Examples
|
|
76
105
|
|
|
77
106
|
### Basic Verification
|
|
78
107
|
|
|
79
108
|
```bash
|
|
80
109
|
ranger verify-feature \
|
|
81
|
-
--url "http://localhost:3000/login" \
|
|
82
110
|
--task "Log in with test@example.com / password123, verify redirect to dashboard"
|
|
83
111
|
```
|
|
84
112
|
|
|
@@ -87,19 +115,17 @@ ranger verify-feature \
|
|
|
87
115
|
```bash
|
|
88
116
|
# Skip the selection prompt, verify item 2 directly
|
|
89
117
|
ranger verify-feature \
|
|
90
|
-
--url "http://localhost:3000/signup" \
|
|
91
118
|
--task "Complete signup flow with new email" \
|
|
92
119
|
--item 2
|
|
93
120
|
```
|
|
94
121
|
|
|
95
|
-
###
|
|
122
|
+
### Verify with Specific Environment
|
|
96
123
|
|
|
97
124
|
```bash
|
|
98
|
-
#
|
|
125
|
+
# Use staging environment instead of active environment
|
|
99
126
|
ranger verify-feature \
|
|
100
|
-
--
|
|
101
|
-
--task "
|
|
102
|
-
--new-item "User can update profile photo from settings page"
|
|
127
|
+
--env staging \
|
|
128
|
+
--task "Verify login works in staging"
|
|
103
129
|
```
|
|
104
130
|
|
|
105
131
|
## After Verification
|
|
@@ -131,7 +157,7 @@ Access evidence via the report or dashboard.
|
|
|
131
157
|
## Troubleshooting
|
|
132
158
|
|
|
133
159
|
### "No active feature"
|
|
134
|
-
Run `ranger feature
|
|
160
|
+
Run `ranger feature list` to find features, then `ranger feature resume <id>` to resume one.
|
|
135
161
|
|
|
136
162
|
### "No active environment"
|
|
137
163
|
Run `ranger use <env-name>` to set an environment with browser access.
|
|
@@ -140,4 +166,4 @@ Run `ranger use <env-name>` to set an environment with browser access.
|
|
|
140
166
|
The agent has 59 minutes max. For very long flows, break into smaller checklist items.
|
|
141
167
|
|
|
142
168
|
### Wrong item marked
|
|
143
|
-
|
|
169
|
+
Reset the item via the dashboard, then re-verify.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ranger-testing/ranger-cli",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"ranger": "./build/cli.js",
|
|
@@ -10,10 +10,12 @@
|
|
|
10
10
|
"build": "tsc && npm run obfuscate && cp -r src/skills build/ && chmod 755 build/cli.js",
|
|
11
11
|
"obfuscate": "node scripts/obfuscate.cjs",
|
|
12
12
|
"dev": "tsx src/cli.ts",
|
|
13
|
-
"check-playwright-version": "node scripts/check-playwright-version.cjs"
|
|
13
|
+
"check-playwright-version": "node scripts/check-playwright-version.cjs",
|
|
14
|
+
"postinstall": "node scripts/postinstall.js"
|
|
14
15
|
},
|
|
15
16
|
"files": [
|
|
16
|
-
"build"
|
|
17
|
+
"build",
|
|
18
|
+
"scripts/postinstall.js"
|
|
17
19
|
],
|
|
18
20
|
"dependencies": {
|
|
19
21
|
"@anthropic-ai/claude-agent-sdk": "^0.1.0",
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Postinstall script for @ranger-testing/ranger-cli
|
|
5
|
+
* Displays welcome message and setup instructions after npm install
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
console.log(`
|
|
9
|
+
🏞️ Ranger CLI installed!
|
|
10
|
+
|
|
11
|
+
Get started:
|
|
12
|
+
1. Get your API token: https://dashboard.ranger.net/cli
|
|
13
|
+
2. Run: ranger start <your-token>
|
|
14
|
+
|
|
15
|
+
For Claude Code, install the plugin in Claude Code:
|
|
16
|
+
/plugin marketplace add ranger-testing/trailhead
|
|
17
|
+
/plugin install ranger@trailhead
|
|
18
|
+
`);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(function(_0x2d25cf,_0x422369){const _0x2fcb68=_0x248e,_0x34e99c=_0x2d25cf();while(!![]){try{const _0x3941a5=parseInt(_0x2fcb68(0x1b1))/0x1*(-parseInt(_0x2fcb68(0x1b2))/0x2)+parseInt(_0x2fcb68(0x1aa))/0x3*(parseInt(_0x2fcb68(0x1af))/0x4)+-parseInt(_0x2fcb68(0x1a9))/0x5*(-parseInt(_0x2fcb68(0x1b5))/0x6)+-parseInt(_0x2fcb68(0x1a6))/0x7+parseInt(_0x2fcb68(0x1b3))/0x8+parseInt(_0x2fcb68(0x1ad))/0x9+parseInt(_0x2fcb68(0x1b4))/0xa;if(_0x3941a5===_0x422369)break;else _0x34e99c['push'](_0x34e99c['shift']());}catch(_0x30743c){_0x34e99c['push'](_0x34e99c['shift']());}}}(_0xe91f,0xedd1f));function _0x248e(_0x325a9d,_0x28cee1){_0x325a9d=_0x325a9d-0x1a5;const _0xe91f0e=_0xe91f();let _0x248e10=_0xe91f0e[_0x325a9d];return _0x248e10;}import{readFile,writeFile}from'fs/promises';import{existsSync}from'fs';import{join}from'path';export function getMcpConfigPath(){const _0x391fd9=_0x248e;return join(process[_0x391fd9(0x1b0)](),'.mcp.json');}export async function loadMcpConfig(){const _0x307cbf=_0x248e,_0x1ec505={'aTIAu':function(_0x4a610f){return _0x4a610f();},'oEpDT':function(_0x3df18b,_0x49a6d7,_0x31694a){return _0x3df18b(_0x49a6d7,_0x31694a);}},_0xd580ce=_0x1ec505[_0x307cbf(0x1b7)](getMcpConfigPath);if(existsSync(_0xd580ce))try{const _0xda6118=await _0x1ec505['oEpDT'](readFile,_0xd580ce,'utf-8');return JSON['parse'](_0xda6118);}catch{return{'mcpServers':{}};}return{'mcpServers':{}};}export async function saveMcpConfig(_0x837583){const _0x17ce65=_0x248e,_0x364e2c={'VDjRx':function(_0x40e07c,_0x2d0da9,_0x5d9106){return _0x40e07c(_0x2d0da9,_0x5d9106);}},_0x2ac588=getMcpConfigPath();await _0x364e2c[_0x17ce65(0x1a5)](writeFile,_0x2ac588,JSON['stringify'](_0x837583,null,0x2));}export function hasRangerServer(_0x3f75cc){return!!_0x3f75cc['mcpServers']['ranger'];}function _0xe91f(){const _0x1b5d88=['1733960zCitlE','6498960ZnwqEp','npx','aTIAu','VDjRx','1678383CJOxUU','ppIEI','cdVYF','5TtvdJk','219BmeTbl','@ranger-testing/ranger-cli','DnXai','12412026glEGDe','mcpServers','7288GKTgmT','cwd','105365YUkhZX','32symffn','1048352rcBuOK'];_0xe91f=function(){return _0x1b5d88;};return _0xe91f();}export function setRangerServer(_0x2e5285){const _0x2a7bc5=_0x248e,_0xff8dea={'DnXai':_0x2a7bc5(0x1b6),'cdVYF':_0x2a7bc5(0x1ab),'ppIEI':'data-mcp-server'};_0x2e5285[_0x2a7bc5(0x1ae)]['ranger']={'command':_0xff8dea[_0x2a7bc5(0x1ac)],'args':[_0xff8dea[_0x2a7bc5(0x1a8)],_0xff8dea[_0x2a7bc5(0x1a7)]]};}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcpConfig.js","sourceRoot":"","sources":["../../../src/commands/utils/mcpConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAY5B,MAAM,UAAU,gBAAgB;IAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IAC/B,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IACzC,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACD,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACL,8BAA8B;YAC9B,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QAC9B,CAAC;IACL,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAiB;IACjD,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IACzC,MAAM,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC7C,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC7C,iEAAiE;IACjE,qCAAqC;IACrC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG;QACvB,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,4BAA4B,EAAE,iBAAiB,CAAC;KAC1D,CAAC;AACN,CAAC"}
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: feature-tracker
|
|
3
|
-
description: "Core development workflow for building e2e features. Use this skill for ANY feature development, implementation, or code changes that touches UI. Automatically tracks progress with checklist items, verifies implementations in the browser, and generates completion reports with evidence. Start every coding task by checking for existing features to resume."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
You are a Feature Development Agent. Your job is to systematically implement features while tracking progress with verifiable checklist items. Every implementation gets verified in the browser with evidence (screenshots, traces, conversation logs).
|
|
7
|
-
|
|
8
|
-
# When to Use This Skill
|
|
9
|
-
|
|
10
|
-
Use this skill for ANY substantial feature work:
|
|
11
|
-
- Building new features
|
|
12
|
-
- Multi-step development tasks
|
|
13
|
-
- Code changes that should be verified
|
|
14
|
-
- Continuing previous feature work
|
|
15
|
-
|
|
16
|
-
# Workflow Overview
|
|
17
|
-
|
|
18
|
-
```
|
|
19
|
-
┌───────────────────────────────────────┐
|
|
20
|
-
│ 1. RESUME OR CREATE FEATURE │ ◀── Skill: start.md, create.md
|
|
21
|
-
│ • Resume existing feature │
|
|
22
|
-
│ • OR create new feature │
|
|
23
|
-
└───────────────────┬───────────────────┘
|
|
24
|
-
│
|
|
25
|
-
▼
|
|
26
|
-
┌───────────────────────┐
|
|
27
|
-
│ │
|
|
28
|
-
│ ┌───────────────┐ │
|
|
29
|
-
│ │ 2. IMPLEMENT │ │ ◀── You write code (not covered by skill)
|
|
30
|
-
│ │ in code │ │
|
|
31
|
-
│ └───────┬───────┘ │
|
|
32
|
-
│ │ │
|
|
33
|
-
│ ▼ │
|
|
34
|
-
│ ┌───────────────┐ │
|
|
35
|
-
│ │ 3. VERIFY │ │ ◀── Skill: verify.md (+ manage.md for scope changes)
|
|
36
|
-
│ │ in browser │ │
|
|
37
|
-
│ └───────┬───────┘ │
|
|
38
|
-
│ │ │
|
|
39
|
-
│ ▼ │
|
|
40
|
-
│ More items? │
|
|
41
|
-
│ YES ─┘ │
|
|
42
|
-
│ │
|
|
43
|
-
└───────────┬───────────┘
|
|
44
|
-
│ NO (all verified)
|
|
45
|
-
▼
|
|
46
|
-
┌───────────────────────────────────────┐
|
|
47
|
-
│ 4. REPORT │ ◀── Skill: report.md
|
|
48
|
-
│ • Generate completion report │
|
|
49
|
-
│ • Share with user │
|
|
50
|
-
└───────────────────────────────────────┘
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
---
|
|
54
|
-
|
|
55
|
-
# Step 1: Resume or Create Feature
|
|
56
|
-
|
|
57
|
-
**Goal:** Have an active feature with a checklist before you start coding.
|
|
58
|
-
|
|
59
|
-
### Resume Existing Feature
|
|
60
|
-
|
|
61
|
-
Check if there's a feature to resume from the current git context:
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
ranger feature resume
|
|
65
|
-
ranger feature show
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
See [start.md](./start.md) for details on resuming features.
|
|
69
|
-
|
|
70
|
-
### Create New Feature
|
|
71
|
-
|
|
72
|
-
If no existing feature, create one with a detailed checklist:
|
|
73
|
-
|
|
74
|
-
```bash
|
|
75
|
-
ranger feature create "Feature Name" \
|
|
76
|
-
--description "Comprehensive description of what this feature does" \
|
|
77
|
-
--checklist "Detailed item 1,Detailed item 2,Detailed item 3"
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
See [create.md](./create.md) for details on writing good descriptions.
|
|
81
|
-
|
|
82
|
-
### Manage Checklist
|
|
83
|
-
|
|
84
|
-
Add, edit, or update checklist items as scope evolves:
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
ranger feature manage --add "New item"
|
|
88
|
-
ranger feature manage --edit 1 --description "Updated description"
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
See [manage.md](./manage.md) for all checklist management commands.
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
# Step 2: Implement in Code
|
|
96
|
-
|
|
97
|
-
**Goal:** Write the code for a checklist item.
|
|
98
|
-
|
|
99
|
-
This step is your normal coding work - not covered by this skill. Write the implementation for one or more checklist items.
|
|
100
|
-
|
|
101
|
-
---
|
|
102
|
-
|
|
103
|
-
# Step 3: Verify in Browser
|
|
104
|
-
|
|
105
|
-
**Goal:** Verify each implementation works and capture evidence.
|
|
106
|
-
|
|
107
|
-
After implementing, verify in the browser:
|
|
108
|
-
|
|
109
|
-
```bash
|
|
110
|
-
ranger verify-feature \
|
|
111
|
-
--url "http://localhost:3000" \
|
|
112
|
-
--task "Detailed description of what to verify"
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
The verification agent will:
|
|
116
|
-
1. Execute the task in a real browser
|
|
117
|
-
2. Evaluate if the checklist item is satisfied
|
|
118
|
-
3. Mark the item as verified, partial, blocked, or failed
|
|
119
|
-
4. Link the session evidence (trace, screenshots)
|
|
120
|
-
|
|
121
|
-
See [verify.md](./verify.md) for details on writing good verification tasks.
|
|
122
|
-
|
|
123
|
-
### Repeat
|
|
124
|
-
|
|
125
|
-
Continue the **Implement → Verify** cycle for each checklist item until all are verified.
|
|
126
|
-
|
|
127
|
-
### Scope Changes
|
|
128
|
-
|
|
129
|
-
If the feature scope changes during implementation (new requirements, items no longer needed, etc.), update the checklist:
|
|
130
|
-
|
|
131
|
-
```bash
|
|
132
|
-
ranger feature manage --add "New requirement discovered"
|
|
133
|
-
ranger feature manage --cancel 3 --reason "No longer needed per PM"
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
See [manage.md](./manage.md) for all checklist management commands.
|
|
137
|
-
|
|
138
|
-
---
|
|
139
|
-
|
|
140
|
-
# Step 4: Report
|
|
141
|
-
|
|
142
|
-
**Goal:** Generate a completion report with all evidence.
|
|
143
|
-
|
|
144
|
-
When all items are verified (feature auto-completes), generate a report:
|
|
145
|
-
|
|
146
|
-
```bash
|
|
147
|
-
ranger feature report
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
Share the report with the user:
|
|
151
|
-
|
|
152
|
-
> Feature complete! All checklist items verified.
|
|
153
|
-
> **Report:** [.ranger/reports/feat_abc123.md](.ranger/reports/feat_abc123.md)
|
|
154
|
-
|
|
155
|
-
See [report.md](./report.md) for report contents and sharing.
|
|
156
|
-
|
|
157
|
-
---
|
|
158
|
-
|
|
159
|
-
# Quick Reference
|
|
160
|
-
|
|
161
|
-
| Command | Purpose |
|
|
162
|
-
|---------|---------|
|
|
163
|
-
| `ranger feature resume` | Find & resume feature by git context |
|
|
164
|
-
| `ranger feature show` | Show current feature status |
|
|
165
|
-
| `ranger feature create` | Create new feature with checklist |
|
|
166
|
-
| `ranger feature manage` | Add/edit/block/cancel checklist items |
|
|
167
|
-
| `ranger verify-feature` | Verify item in browser |
|
|
168
|
-
| `ranger feature report` | Generate completion report |
|
|
169
|
-
|
|
170
|
-
# Skill Files
|
|
171
|
-
|
|
172
|
-
| File | Covers |
|
|
173
|
-
|------|--------|
|
|
174
|
-
| [start.md](./start.md) | Resuming features, listing features, git context |
|
|
175
|
-
| [create.md](./create.md) | Creating features, writing good descriptions |
|
|
176
|
-
| [manage.md](./manage.md) | All checklist item operations |
|
|
177
|
-
| [verify.md](./verify.md) | Browser verification, evaluation results |
|
|
178
|
-
| [report.md](./report.md) | Generating and sharing reports |
|
|
179
|
-
|
|
180
|
-
# Key Principles
|
|
181
|
-
|
|
182
|
-
1. **Always check for existing features first** - Run `ranger feature resume` at session start
|
|
183
|
-
2. **Be very descriptive** - Detailed descriptions help verification agents evaluate results
|
|
184
|
-
3. **Verify after implementing** - Don't skip browser verification
|
|
185
|
-
4. **Generate reports** - Provide evidence of completion to users
|