@intentsolutionsio/cli-ux-tester 3.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/.claude-plugin/plugin.json +10 -0
- package/LICENSE +21 -0
- package/README.md +140 -0
- package/agents/cli-ux-tester.md +517 -0
- package/package.json +40 -0
- package/skills/cli-ux-tester/SKILL.md +145 -0
- package/skills/cli-ux-tester/scripts/example-test.sh +202 -0
- package/skills/cli-ux-tester/test-scenarios.md +1003 -0
- package/skills/cli-ux-tester/testing-checklist.md +418 -0
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
# CLI UX Testing Checklist
|
|
2
|
+
|
|
3
|
+
Use this checklist to ensure comprehensive testing of command-line interfaces.
|
|
4
|
+
|
|
5
|
+
## Pre-Testing Setup
|
|
6
|
+
|
|
7
|
+
- [ ] Identify the CLI tool name and version
|
|
8
|
+
- [ ] Locate documentation (README, man pages, --help)
|
|
9
|
+
- [ ] Identify target user personas (beginner, intermediate, expert)
|
|
10
|
+
- [ ] Set up test environment
|
|
11
|
+
|
|
12
|
+
## 1. Discovery & Discoverability
|
|
13
|
+
|
|
14
|
+
### Help System
|
|
15
|
+
|
|
16
|
+
- [ ] `command --help` works
|
|
17
|
+
- [ ] `command -h` works
|
|
18
|
+
- [ ] `command help` works
|
|
19
|
+
- [ ] `command` (bare, when no args required) shows help
|
|
20
|
+
- [ ] Help text is comprehensive
|
|
21
|
+
- [ ] Help text includes examples
|
|
22
|
+
- [ ] Help leads with examples (most valuable first)
|
|
23
|
+
- [ ] Subcommands have their own help (`command subcommand --help`)
|
|
24
|
+
- [ ] Context-aware help (suggests relevant commands based on state)
|
|
25
|
+
|
|
26
|
+
### Version Information
|
|
27
|
+
|
|
28
|
+
- [ ] `command --version` works
|
|
29
|
+
- [ ] `command -v` works (if applicable)
|
|
30
|
+
- [ ] Version format is clear (semantic versioning preferred)
|
|
31
|
+
|
|
32
|
+
### Documentation
|
|
33
|
+
|
|
34
|
+
- [ ] README exists and is clear
|
|
35
|
+
- [ ] Installation instructions are complete
|
|
36
|
+
- [ ] Usage examples are provided
|
|
37
|
+
- [ ] Common use cases are documented
|
|
38
|
+
- [ ] Troubleshooting guide exists
|
|
39
|
+
- [ ] Man pages exist (for system tools)
|
|
40
|
+
|
|
41
|
+
### Discovery Methods
|
|
42
|
+
|
|
43
|
+
- [ ] Tool explains itself when run without args
|
|
44
|
+
- [ ] Error messages suggest help commands
|
|
45
|
+
- [ ] Related commands are mentioned
|
|
46
|
+
- [ ] Next steps suggested after operations complete
|
|
47
|
+
- [ ] "Getting started" guidance provided for new users
|
|
48
|
+
|
|
49
|
+
## 2. Command & API Naming
|
|
50
|
+
|
|
51
|
+
### Naming Conventions
|
|
52
|
+
|
|
53
|
+
- [ ] Command names are intuitive
|
|
54
|
+
- [ ] Commands use verbs (create, delete, list, update)
|
|
55
|
+
- [ ] Topics use plural nouns (apps, users, config)
|
|
56
|
+
- [ ] One naming pattern chosen and used consistently (topic:command, topic command, or command topic)
|
|
57
|
+
- [ ] Root topic commands list items (e.g., `config` lists config, not `config:list`)
|
|
58
|
+
- [ ] Abbreviations are standard or explained
|
|
59
|
+
- [ ] Similar operations use similar names
|
|
60
|
+
- [ ] Names match user mental models
|
|
61
|
+
- [ ] Lowercase words, hyphens avoided unless necessary
|
|
62
|
+
|
|
63
|
+
### Flag Consistency
|
|
64
|
+
|
|
65
|
+
- [ ] Long flags use double dashes (`--flag`)
|
|
66
|
+
- [ ] Short flags use single dash (`-f`)
|
|
67
|
+
- [ ] Boolean flags don't require arguments
|
|
68
|
+
- [ ] Flag names are descriptive
|
|
69
|
+
- [ ] Common flags use standard names (`--verbose`, `--quiet`, `--force`, `--output`)
|
|
70
|
+
- [ ] `-h` reserved for help only (never used for other purposes)
|
|
71
|
+
- [ ] `-v` reserved for version only (use `--verbose` for verbosity)
|
|
72
|
+
- [ ] `--no-color` flag supported (and `NO_COLOR` env var)
|
|
73
|
+
- [ ] Flags preferred over positional arguments
|
|
74
|
+
- [ ] Secrets never passed via flags (use files or stdin)
|
|
75
|
+
|
|
76
|
+
### Subcommands
|
|
77
|
+
|
|
78
|
+
- [ ] Subcommands are clearly named
|
|
79
|
+
- [ ] Subcommand structure is consistent
|
|
80
|
+
- [ ] Subcommands are grouped logically
|
|
81
|
+
|
|
82
|
+
## 3. Error Handling & Messages
|
|
83
|
+
|
|
84
|
+
### Error Message Quality
|
|
85
|
+
|
|
86
|
+
- [ ] Errors are specific, not generic
|
|
87
|
+
- [ ] Errors explain what went wrong
|
|
88
|
+
- [ ] Errors explain why it's a problem
|
|
89
|
+
- [ ] Errors suggest how to fix
|
|
90
|
+
- [ ] Errors include who/what is responsible (tool vs user vs external)
|
|
91
|
+
- [ ] Errors include relevant context (file paths, line numbers)
|
|
92
|
+
- [ ] Errors don't expose internal implementation details
|
|
93
|
+
- [ ] Similar errors are grouped to reduce noise
|
|
94
|
+
- [ ] Typos suggest corrections ("Did you mean 'start'?")
|
|
95
|
+
- [ ] Input validated early (fail fast)
|
|
96
|
+
|
|
97
|
+
### Error Scenarios to Test
|
|
98
|
+
|
|
99
|
+
- [ ] Missing required arguments: `command`
|
|
100
|
+
- [ ] Invalid flag: `command --invalid-flag`
|
|
101
|
+
- [ ] File not found: `command nonexistent.txt`
|
|
102
|
+
- [ ] Permission denied: `command /protected/file`
|
|
103
|
+
- [ ] Invalid input format: `command malformed-input`
|
|
104
|
+
- [ ] Network errors (if applicable)
|
|
105
|
+
- [ ] Timeout errors (if applicable)
|
|
106
|
+
|
|
107
|
+
### Exit Codes
|
|
108
|
+
|
|
109
|
+
- [ ] Success returns 0
|
|
110
|
+
- [ ] General errors return 1
|
|
111
|
+
- [ ] Invalid arguments return 2
|
|
112
|
+
- [ ] Command cannot execute returns 126
|
|
113
|
+
- [ ] Command not found returns 127
|
|
114
|
+
- [ ] Terminated by Ctrl-C returns 130
|
|
115
|
+
- [ ] Custom error codes documented for specific failures
|
|
116
|
+
- [ ] Exit codes work correctly with shell operators (`&&`, `||`)
|
|
117
|
+
- [ ] Exit codes are documented
|
|
118
|
+
|
|
119
|
+
## 4. Help System & Documentation
|
|
120
|
+
|
|
121
|
+
### Help Text Structure
|
|
122
|
+
|
|
123
|
+
- [ ] Usage line shows syntax clearly
|
|
124
|
+
- [ ] Description explains purpose
|
|
125
|
+
- [ ] All options are documented
|
|
126
|
+
- [ ] Option descriptions are clear
|
|
127
|
+
- [ ] Examples are included
|
|
128
|
+
- [ ] Related commands are mentioned
|
|
129
|
+
- [ ] Links to more documentation provided
|
|
130
|
+
|
|
131
|
+
### Documentation Completeness
|
|
132
|
+
|
|
133
|
+
- [ ] All features are documented
|
|
134
|
+
- [ ] Edge cases are explained
|
|
135
|
+
- [ ] Configuration options are documented
|
|
136
|
+
- [ ] Environment variables are listed
|
|
137
|
+
- [ ] Limitations are mentioned
|
|
138
|
+
|
|
139
|
+
## 5. Consistency & Patterns
|
|
140
|
+
|
|
141
|
+
### Command Patterns
|
|
142
|
+
|
|
143
|
+
- [ ] Similar operations follow same pattern
|
|
144
|
+
- [ ] Flag order doesn't matter (where possible)
|
|
145
|
+
- [ ] Subcommand structure is consistent
|
|
146
|
+
- [ ] Input/output formats are consistent
|
|
147
|
+
|
|
148
|
+
### Default Behavior
|
|
149
|
+
|
|
150
|
+
- [ ] Defaults are sensible and safe
|
|
151
|
+
- [ ] Defaults are documented
|
|
152
|
+
- [ ] Defaults can be overridden
|
|
153
|
+
- [ ] Behavior without flags is predictable
|
|
154
|
+
|
|
155
|
+
### Configuration
|
|
156
|
+
|
|
157
|
+
- [ ] Config file locations are standard (XDG Base Directory)
|
|
158
|
+
- [ ] Config file format is clear (YAML, JSON, TOML, etc.)
|
|
159
|
+
- [ ] Environment variables follow naming convention (UPPERCASE_WITH_UNDERSCORES)
|
|
160
|
+
- [ ] Configuration precedence order is correct:
|
|
161
|
+
- [ ] 1. Command-line flags (highest priority)
|
|
162
|
+
- [ ] 2. Environment variables
|
|
163
|
+
- [ ] 3. Project config (`.env`, `.tool-config`)
|
|
164
|
+
- [ ] 4. User config (`~/.config/tool/`)
|
|
165
|
+
- [ ] 5. System config (`/etc/tool/`)
|
|
166
|
+
- [ ] Config precedence is documented
|
|
167
|
+
- [ ] Config source shown in verbose/debug mode
|
|
168
|
+
|
|
169
|
+
## 6. Visual Design & Output
|
|
170
|
+
|
|
171
|
+
### Output Formatting
|
|
172
|
+
|
|
173
|
+
- [ ] Output is well-formatted
|
|
174
|
+
- [ ] Columns are aligned
|
|
175
|
+
- [ ] Tables have headers
|
|
176
|
+
- [ ] Tables are grep-parseable:
|
|
177
|
+
- [ ] No decorative borders or box-drawing characters
|
|
178
|
+
- [ ] One row per entry (no wrapped rows)
|
|
179
|
+
- [ ] Consistent column alignment
|
|
180
|
+
- [ ] Predictable delimiters
|
|
181
|
+
- [ ] Long outputs are paginated or truncated gracefully
|
|
182
|
+
- [ ] Machine-readable output available (`--json`, `--terse`, `--format`)
|
|
183
|
+
- [ ] Output respects 80-character terminal width where practical
|
|
184
|
+
|
|
185
|
+
### Color Usage
|
|
186
|
+
|
|
187
|
+
- [ ] Colors have semantic meaning
|
|
188
|
+
- [ ] Colors work on dark and light backgrounds
|
|
189
|
+
- [ ] Color can be disabled (`--no-color`)
|
|
190
|
+
- [ ] NO_COLOR environment variable is respected
|
|
191
|
+
- [ ] Critical info isn't color-only (accessible)
|
|
192
|
+
|
|
193
|
+
### Progress Indicators
|
|
194
|
+
|
|
195
|
+
- [ ] Progress indicators chosen based on duration:
|
|
196
|
+
- [ ] <2 seconds: No indicator (feels instant)
|
|
197
|
+
- [ ] 2-10 seconds: Spinner with description
|
|
198
|
+
- [ ] >10 seconds: Progress bar with percentage and ETA
|
|
199
|
+
- [ ] Long operations show progress
|
|
200
|
+
- [ ] Spinners animate smoothly
|
|
201
|
+
- [ ] Progress bars update frequently
|
|
202
|
+
- [ ] What's happening is described ("Installing dependencies...")
|
|
203
|
+
- [ ] Progress count shown ("3/10 files processed")
|
|
204
|
+
- [ ] Estimated time is shown (if possible)
|
|
205
|
+
- [ ] Progress can be disabled for scripts
|
|
206
|
+
- [ ] Progress disabled automatically in non-TTY contexts
|
|
207
|
+
|
|
208
|
+
### Interactive Elements
|
|
209
|
+
|
|
210
|
+
- [ ] TTY detection works (only prompt when stdin is a TTY)
|
|
211
|
+
- [ ] Prompts are clear
|
|
212
|
+
- [ ] Default values are shown
|
|
213
|
+
- [ ] Prompts can be skipped with flags (`--no-input`, `--yes`)
|
|
214
|
+
- [ ] All required data accepted via flags for automation
|
|
215
|
+
- [ ] Confirmation prompts for destructive operations
|
|
216
|
+
- [ ] Ctrl+C exits gracefully
|
|
217
|
+
- [ ] Second Ctrl-C forces immediate exit
|
|
218
|
+
- [ ] Colors disabled in pipes/non-TTY contexts
|
|
219
|
+
|
|
220
|
+
## 7. Performance & Responsiveness
|
|
221
|
+
|
|
222
|
+
### Startup Performance
|
|
223
|
+
|
|
224
|
+
- [ ] `--help` is instant (<100ms)
|
|
225
|
+
- [ ] `--version` is instant (<100ms)
|
|
226
|
+
- [ ] Simple commands feel immediate (<500ms)
|
|
227
|
+
- [ ] Lazy loading is used for heavy dependencies
|
|
228
|
+
|
|
229
|
+
### Operation Performance
|
|
230
|
+
|
|
231
|
+
- [ ] Long operations show progress
|
|
232
|
+
- [ ] Streaming output for large data
|
|
233
|
+
- [ ] Incremental results when possible
|
|
234
|
+
- [ ] Timeouts are configurable
|
|
235
|
+
- [ ] Performance is acceptable for target use cases
|
|
236
|
+
|
|
237
|
+
### Resource Usage
|
|
238
|
+
|
|
239
|
+
- [ ] Memory usage is reasonable
|
|
240
|
+
- [ ] CPU usage is reasonable
|
|
241
|
+
- [ ] Disk I/O is efficient
|
|
242
|
+
- [ ] Network usage is efficient (if applicable)
|
|
243
|
+
|
|
244
|
+
## 8. Accessibility & Inclusivity
|
|
245
|
+
|
|
246
|
+
### Language & Communication
|
|
247
|
+
|
|
248
|
+
- [ ] Language is clear and simple
|
|
249
|
+
- [ ] Jargon is explained or avoided
|
|
250
|
+
- [ ] Examples use diverse contexts
|
|
251
|
+
- [ ] Error messages are helpful, not blaming
|
|
252
|
+
|
|
253
|
+
### Terminal Compatibility
|
|
254
|
+
|
|
255
|
+
- [ ] Works in different shells (bash, zsh, fish)
|
|
256
|
+
- [ ] Works with different terminal emulators
|
|
257
|
+
- [ ] Works in SSH/remote sessions
|
|
258
|
+
- [ ] Works with different terminal sizes
|
|
259
|
+
- [ ] Handles terminal resize gracefully
|
|
260
|
+
|
|
261
|
+
### Keyboard Accessibility
|
|
262
|
+
|
|
263
|
+
- [ ] All features are keyboard-accessible
|
|
264
|
+
- [ ] Tab completion works (if applicable)
|
|
265
|
+
- [ ] Arrow keys work in interactive modes
|
|
266
|
+
- [ ] Common keyboard shortcuts work (Ctrl+C, Ctrl+D)
|
|
267
|
+
|
|
268
|
+
### Different Skill Levels
|
|
269
|
+
|
|
270
|
+
- [ ] Beginners can accomplish basic tasks
|
|
271
|
+
- [ ] Experts have advanced options
|
|
272
|
+
- [ ] Progressive disclosure of complexity
|
|
273
|
+
- [ ] Good defaults for common use cases
|
|
274
|
+
|
|
275
|
+
## 9. Integration & Interoperability
|
|
276
|
+
|
|
277
|
+
### Shell Integration
|
|
278
|
+
|
|
279
|
+
- [ ] Tab completion available
|
|
280
|
+
- [ ] Works in pipes: `cat file | command | grep pattern`
|
|
281
|
+
- [ ] Respects stdin/stdout/stderr correctly:
|
|
282
|
+
- [ ] Primary output goes to stdout
|
|
283
|
+
- [ ] Errors, warnings, progress go to stderr
|
|
284
|
+
- [ ] Accepts piped input from stdin
|
|
285
|
+
- [ ] Enables composability with other tools
|
|
286
|
+
- [ ] Exit codes work with `&&` and `||`
|
|
287
|
+
- [ ] Output behaves correctly when redirected (`>`, `2>`, `2>&1`)
|
|
288
|
+
|
|
289
|
+
### Standard Conventions
|
|
290
|
+
|
|
291
|
+
- [ ] Follows POSIX conventions (where applicable)
|
|
292
|
+
- [ ] Respects standard environment variables:
|
|
293
|
+
- [ ] `NO_COLOR` - Disables all colors
|
|
294
|
+
- [ ] `DEBUG` - Enables debug output
|
|
295
|
+
- [ ] `EDITOR` - User's preferred editor
|
|
296
|
+
- [ ] `PAGER` - User's preferred pager
|
|
297
|
+
- [ ] `TMPDIR` - Temporary directory
|
|
298
|
+
- [ ] `HOME` - User home directory
|
|
299
|
+
- [ ] `HTTP_PROXY`, `HTTPS_PROXY` - Proxy settings
|
|
300
|
+
- [ ] Tool-specific environment variables use UPPERCASE_WITH_UNDERSCORES
|
|
301
|
+
- [ ] Reads `.env` files for project-level config
|
|
302
|
+
- [ ] Uses standard config locations (XDG Base Directory)
|
|
303
|
+
- [ ] Works with standard tools (grep, awk, sed)
|
|
304
|
+
|
|
305
|
+
### Output Formats
|
|
306
|
+
|
|
307
|
+
- [ ] JSON output available
|
|
308
|
+
- [ ] YAML output available (if relevant)
|
|
309
|
+
- [ ] CSV output available (for tabular data)
|
|
310
|
+
- [ ] Plain text output available
|
|
311
|
+
- [ ] Format is selectable via flag
|
|
312
|
+
|
|
313
|
+
### Context Awareness
|
|
314
|
+
|
|
315
|
+
- [ ] Detects project type (package.json, Cargo.toml, go.mod, requirements.txt, etc.)
|
|
316
|
+
- [ ] Detects Git repository and current branch
|
|
317
|
+
- [ ] Detects environment indicators (NODE_ENV, etc.)
|
|
318
|
+
- [ ] Adapts defaults based on detected context
|
|
319
|
+
- [ ] Explains what was detected in output
|
|
320
|
+
- [ ] Provides override flags if detection is incorrect
|
|
321
|
+
- [ ] Works sensibly when no context detected
|
|
322
|
+
|
|
323
|
+
## 10. Security & Safety
|
|
324
|
+
|
|
325
|
+
### Destructive Operations
|
|
326
|
+
|
|
327
|
+
- [ ] Destructive ops require confirmation
|
|
328
|
+
- [ ] `--force` flag bypasses confirmation (documented)
|
|
329
|
+
- [ ] Dry-run mode available (`--dry-run`, `--whatif`)
|
|
330
|
+
- [ ] Backup options for destructive changes
|
|
331
|
+
|
|
332
|
+
### Credential Handling
|
|
333
|
+
|
|
334
|
+
- [ ] Credentials never in command history
|
|
335
|
+
- [ ] Credentials from env vars or config files
|
|
336
|
+
- [ ] Credentials not echoed to screen
|
|
337
|
+
- [ ] Secure defaults for permissions
|
|
338
|
+
|
|
339
|
+
### Input Validation
|
|
340
|
+
|
|
341
|
+
- [ ] Inputs are validated
|
|
342
|
+
- [ ] Input validated early (fail fast)
|
|
343
|
+
- [ ] SQL injection prevented (if applicable)
|
|
344
|
+
- [ ] Command injection prevented
|
|
345
|
+
- [ ] Path traversal prevented
|
|
346
|
+
|
|
347
|
+
## 11. User Guidance & Onboarding
|
|
348
|
+
|
|
349
|
+
### Next-Step Suggestions
|
|
350
|
+
|
|
351
|
+
- [ ] After init, suggests what to do next
|
|
352
|
+
- [ ] After successful operations, suggests related commands
|
|
353
|
+
- [ ] After errors, suggests how to fix or get help
|
|
354
|
+
- [ ] Suggestions are context-aware (3-5 suggestions max)
|
|
355
|
+
- [ ] Provides example commands users can copy
|
|
356
|
+
- [ ] Links to relevant documentation
|
|
357
|
+
|
|
358
|
+
### Getting Started
|
|
359
|
+
|
|
360
|
+
- [ ] First-time users can accomplish basic tasks easily
|
|
361
|
+
- [ ] `init` or `quickstart` command available
|
|
362
|
+
- [ ] Example workflows shown in help
|
|
363
|
+
- [ ] Common use cases are obvious
|
|
364
|
+
- [ ] Reduces time-to-first-value
|
|
365
|
+
- [ ] Doesn't require reading documentation to start
|
|
366
|
+
|
|
367
|
+
### Progressive Disclosure
|
|
368
|
+
|
|
369
|
+
- [ ] Basic features are simple
|
|
370
|
+
- [ ] Advanced features available but not overwhelming
|
|
371
|
+
- [ ] Help shows common commands first
|
|
372
|
+
- [ ] Detailed options shown with `--help` flag
|
|
373
|
+
- [ ] Expert mode available for power users
|
|
374
|
+
|
|
375
|
+
## Testing Notes
|
|
376
|
+
|
|
377
|
+
### Observations
|
|
378
|
+
|
|
379
|
+
[Space for notes during testing]
|
|
380
|
+
|
|
381
|
+
### Issues Found
|
|
382
|
+
|
|
383
|
+
[List specific issues with severity]
|
|
384
|
+
|
|
385
|
+
### Recommendations
|
|
386
|
+
|
|
387
|
+
[Specific improvements to suggest]
|
|
388
|
+
|
|
389
|
+
## Rating Summary
|
|
390
|
+
|
|
391
|
+
Rate each category 1-5:
|
|
392
|
+
|
|
393
|
+
- Discovery & Discoverability: ___/5
|
|
394
|
+
- Command & API Naming: ___/5
|
|
395
|
+
- Error Handling & Messages: ___/5
|
|
396
|
+
- Help System & Documentation: ___/5
|
|
397
|
+
- Consistency & Patterns: ___/5
|
|
398
|
+
- Visual Design & Output: ___/5
|
|
399
|
+
- Performance & Responsiveness: ___/5
|
|
400
|
+
- Accessibility & Inclusivity: ___/5
|
|
401
|
+
|
|
402
|
+
**Core 8-Criteria Score: ___/5** (average of above)
|
|
403
|
+
|
|
404
|
+
### Additional Criteria
|
|
405
|
+
|
|
406
|
+
- Integration & Interoperability: ___/5
|
|
407
|
+
- Security & Safety: ___/5
|
|
408
|
+
- User Guidance & Onboarding: ___/5
|
|
409
|
+
|
|
410
|
+
**Overall UX Score: ___/5** (weighted average emphasizing core 8 criteria)
|
|
411
|
+
|
|
412
|
+
## Next Steps
|
|
413
|
+
|
|
414
|
+
Based on findings:
|
|
415
|
+
|
|
416
|
+
1. [Priority 1 action item]
|
|
417
|
+
2. [Priority 2 action item]
|
|
418
|
+
3. [Priority 3 action item]
|