Agent skill
review-option-interaction
Test combinatorial interactions between install options, launch modes, and user journeys
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/review-option-interaction
SKILL.md
Enter planning mode. Deep-research all interactions between installation options, launch modes, admin state, and user journeys. Think carefully about every path a user could take. Use maximum parallelism — spawn an agent team if desired.
The Problem
The app has many options, features, and launch modes that interact combinatorially. Past reviews have repeatedly found edge-case bugs where one option conflicts with another or a UAC refusal leaves the system in a half-applied state. The combinatorial space is large and keeps growing.
Step 1 — Inventory the Moving Parts
Before testing combinations, build a current inventory by reading the code. These categories have historically caused interactions, but the code is the source of truth — discover what exists now, don't assume this list is complete:
User-facing options:
- Install to Program Files
- Run at startup (scheduled task)
- Run as admin
- Add to Start Menu
- Check for updates
- First-launch wizard
Features with interaction surfaces:
- Multi-process architecture (launcher + gui + pump)
- Auto-update (rename running exe, replace, relaunch)
- Duplicate version detection (already running → compare versions → offer restart/upgrade)
- Wizard skip / duplicate version skip flags
- Various launch flags (
--gui-only,--config,--wizard-continue,--enable-admin-task, etc.) - Menu items / dashboard actions that trigger installs or config changes
Confounding factors (things users do that the code must handle):
- Rename the exe (e.g., "AltTabby new v4.exe") — does every path handle non-standard names?
- Rename the exe in Program Files after installation
- Have existing configs/stats/blacklists in Program Files or the local launch directory
- Refuse UAC prompts at any elevation step
- Scheduled tasks missing, renamed, or corrupted
- Multiple copies of the exe in different directories
- Running from unusual locations (network drives, paths with spaces/unicode)
Step 2 — Test Combinatorial Paths
For each pair/group of options, trace the user journey through the code. Use query_callchain.ps1 to follow how config option reads flow through functions across files. Use query_ipc.ps1 to check cross-process message flows that can trigger option interactions. Use query_function_visibility.ps1 <funcName> to find all callers of elevation/UAC functions. Use query_global_ownership.ps1 <globalName> to trace install state ownership across files:
- How does feature X behave when run as admin vs not admin?
- What happens if UAC is refused at each elevation prompt?
- What if the user has option A enabled but then changes option B?
- What if the exe is already running when an install/update/config change happens?
- What state is left behind if a multi-step operation fails halfway?
Focus on state transitions that span multiple steps — wizard → install → create task → relaunch. If any step fails, is the state recoverable? Does the next launch detect the partial state correctly?
By-Design Choices (Do NOT Flag)
These are intentional — do not propose changing them:
- Install path is hardcoded to Program Files
- Exe name is hardcoded when installed to Program Files
Issues around or caused by these choices (e.g., "what if the user renames the installed exe and then auto-update tries to find it") are real findings. The design choices themselves are not.
Step 3 — DRY Consolidation
Multiple bugs in these flows have come from duplicated logic across files. After identifying bugs, also look for:
- Same path-resolution logic implemented differently in multiple places
- Same "is admin?" / "is installed?" / "is running?" check duplicated with slight variations
- Elevation patterns that could share a common helper
DRY findings are secondary to bug findings but help prevent future regressions.
Validation
After explore agents report back, validate every finding yourself. These flows have a lot of defensive code that may look like bugs but is handling edge cases intentionally.
For each candidate:
- Cite evidence: "I verified by reading
file.ahklines X–Y" with actual code quoted. Trace the full path through multiple files if the journey spans them. - Trace the user journey: Describe the exact sequence of user actions that triggers the bug (e.g., "User installs to PF → renames exe → launches renamed exe → auto-update runs → ...").
- Counter-argument: "What existing code handles this?" — Is there a fallback path that catches this case? Does the code already detect and recover from this state?
- Observed vs inferred: Did you trace the code path through all branches, or infer the bug from one function without checking its callers?
Plan Format
Section 1 — Interaction bugs (specific failure paths):
| Journey | Steps | Failure Point | File:Lines | Impact | Fix |
|---|---|---|---|---|---|
| Install → rename exe → update check | 1. Install to PF 2. User renames exe 3. Auto-update downloads | Update writes to hardcoded name, old renamed exe orphaned | update.ahk:142 |
Stale exe left behind | Check actual exe name, not hardcoded |
Section 2 — UAC refusal gaps (what happens when elevation is denied):
| Operation | UAC Point | Behavior if Refused | Clean? | Fix if Needed |
|---|---|---|---|---|
| Enable admin mode | Task creation | Falls back to non-admin | Yes | None |
| Install to PF | File copy | ??? | ??? | ??? |
Section 3 — DRY consolidation opportunities:
| Pattern | Files | Variations | Proposed Consolidation |
|---|---|---|---|
| "Is installed to PF?" check | launcher_main.ahk:30, update.ahk:55, wizard.ahk:80 |
Slightly different path comparisons | Shared IsInstalledToProgramFiles() helper |
Order by severity: data-loss risks first, cosmetic inconsistencies last.
Ignore any existing plans — create a fresh one.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?