Get the FREE Ultimate OpenClaw Setup Guide →

hud-manual-testing

Scanned
npx machina-cli add skill petekp/claude-code-setup/hud-manual-testing --openclaw
Files (1)
SKILL.md
3.4 KB

Claude HUD Manual Testing

Verify core functionality works after code changes. Uses the project's reset script and debugging tools.

When to Use

  • After implementing significant features
  • After fixing state detection bugs
  • Before commits affecting session tracking
  • When user asks to "test the app" or "verify it works"

Testing Workflow

1. Full Reset

Reset to clean state to test first-run experience and verify nothing depends on stale data:

./scripts/dev/reset-for-testing.sh

This clears:

  • App UserDefaults (layout, setup state)
  • ~/.capacitor/ (sessions, locks, activity)
  • Hook script and registrations
  • Rebuilds app and launches it

2. First-Run Verification

After reset, verify the onboarding flow:

  1. Setup screen appears - App should detect missing hooks
  2. Hook installation works - Click install, verify success
  3. Empty project list - No projects pinned yet

3. Core Functionality Checklist

Test each feature manually:

FeatureHow to TestExpected
Add projectClick +, select a project folderProject appears in list
Session detectionStart Claude in that projectState shows Ready/Working
State transitionsType prompt, wait for responseWorking → Ready transitions
Lock detectionCheck ls ~/.capacitor/sessions/Lock dir exists while Claude runs
Session endExit Claude sessionState returns to Idle

4. Debug Commands

If issues occur, check these:

# Watch hook events in real-time
tail -f ~/.capacitor/hud-hook-debug.log

# View current session states
cat ~/.capacitor/sessions.json | jq .

# Check active locks
ls -la ~/.capacitor/sessions/

# Check for process
ps aux | grep -E "(claude|hud-hook)"

5. Quick Restart (No Reset)

For iterative testing without full reset:

./scripts/dev/restart-app.sh

This rebuilds Rust + Swift and restarts the app, keeping state intact.

Common Issues

State stuck on Working/Waiting

Check if lock holder is alive:

cat ~/.capacitor/sessions/*.lock/pid | xargs -I {} ps -p {}

If PID is dead but lock exists, the cleanup should remove it on next app launch.

Hook events not firing

Verify hooks are registered:

cat ~/.claude/settings.json | jq '.hooks'

Should show entries for SessionStart, UserPromptSubmit, etc. pointing to hud-state-tracker.sh.

UniFFI checksum mismatch

Regenerate bindings:

cargo build -p hud-core --release
cd core/hud-core && cargo run --bin uniffi-bindgen generate --library ../../target/release/libhud_core.dylib --language swift --out-dir ../../apps/swift/bindings/
cp ../../apps/swift/bindings/hud_core.swift ../../apps/swift/Sources/ClaudeHUD/Bridge/
rm -rf ../../apps/swift/.build

Verification Summary

After testing, confirm:

  • App launches without crash
  • Hooks install successfully on first run
  • Projects can be added/removed
  • Session states reflect actual Claude activity
  • States transition correctly (Idle → Ready → Working → Ready → Idle)
  • No orphaned lock holders accumulate

Source

git clone https://github.com/petekp/claude-code-setup/blob/main/skills/hud-manual-testing/SKILL.mdView on GitHub

Overview

This skill provides a structured manual testing workflow for Claude HUD to verify core functionality after changes. It guides testers through a full reset, app launch, onboarding, and a core feature checklist to catch issues before commits. It relies on the project’s reset script and debugging tools to ensure reliable test results.

How This Skill Works

It starts with a full reset using scripts/dev/reset-for-testing.sh to clear stale data, then launches Claude HUD and walks through onboarding and feature checks. Testers use a Core Functionality Checklist and targeted debug commands (e.g., tail -f ~/.capacitor/hud-hook-debug.log, cat ~/.capacitor/sessions.json | jq ., ls -la ~/.capacitor/sessions/, ps aux | grep -E "(claude|hud-hook)" ) to validate state transitions and locks.

When to Use It

  • After implementing significant features
  • After fixing state detection bugs
  • Before commits affecting session tracking
  • When users ask to 'test the app' or 'verify it works'
  • During iterative testing with quick restarts (no full reset)

Quick Start

  1. Step 1: Run a full reset to test first-run experience: ./scripts/dev/reset-for-testing.sh
  2. Step 2: Verify onboarding and first-run flow (setup appears, install hooks, empty project list)
  3. Step 3: Complete Core Functionality Checklist and use debug commands to confirm state and locks

Best Practices

  • Always perform a full reset before major tests to ensure a clean state
  • Verify onboarding flow: setup screen, hook installation, and empty project list
  • Run through the Core Functionality Checklist: add project, session detection, state transitions, lock detection, and session end
  • Use the provided debug commands to inspect hooks, sessions, locks, and processes
  • If issues arise, use Quick Restart to iterate without losing essential state

Example Use Cases

  • After implementing a significant feature in Claude HUD to ensure onboarding and session tracking still work
  • After fixing a state detection bug to confirm correct state transitions
  • Before committing changes that affect session handling to catch regressions
  • When a user asks to test the app or verify that it works
  • During iterative testing using Quick Restart to validate changes without a full reset

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers