113 lines
3.1 KiB
Markdown
113 lines
3.1 KiB
Markdown
# Turboshovel Plugin Test
|
|
|
|
Interactive test command for verifying plugin integration and gate configuration.
|
|
|
|
## Instructions
|
|
|
|
Run these diagnostic steps to verify the Turboshovel plugin is working correctly:
|
|
|
|
### 1. Check Plugin Status
|
|
|
|
First, verify the plugin loaded without errors:
|
|
- Run `/plugin` and check for any turboshovel errors in "Installation Errors"
|
|
- If errors exist, check `~/.claude/debug/latest` for details
|
|
|
|
### 2. Check Logging
|
|
|
|
Logging is **enabled by default**. View recent log entries:
|
|
|
|
```bash
|
|
# Show log file path
|
|
mise run logs:path
|
|
|
|
# Tail logs in a separate terminal
|
|
mise run logs
|
|
# or: mise run logs:pretty
|
|
```
|
|
|
|
To disable logging: `TURBOSHOVEL_LOG=0`
|
|
|
|
### 3. Test Hook Invocation
|
|
|
|
To verify hooks are firing, perform these actions and watch the logs:
|
|
|
|
**Test PostToolUse hook:**
|
|
- Edit any file (triggers PostToolUse)
|
|
- Check logs for `HOOK_INVOKED` with `hook_event_name: "PostToolUse"`
|
|
|
|
**Test UserPromptSubmit hook:**
|
|
- Submit any prompt (this one counts!)
|
|
- Check logs for `hook_event_name: "UserPromptSubmit"`
|
|
|
|
### 4. Check Gates Configuration
|
|
|
|
Verify gates.json exists and is valid:
|
|
|
|
```bash
|
|
# Check project gates
|
|
cat .claude/gates.json 2>/dev/null || echo "No project gates.json"
|
|
|
|
# Check plugin default gates
|
|
cat plugin/hooks/gates.json 2>/dev/null || echo "No plugin gates.json"
|
|
```
|
|
|
|
### 5. Test a Gate Manually
|
|
|
|
Test the CLI directly with simulated hook input:
|
|
|
|
```bash
|
|
# Test SessionStart (should return context injection)
|
|
echo '{"hook_event_name":"SessionStart","cwd":"'$(pwd)'"}' | \
|
|
node plugin/hooks/hooks-app/dist/cli.js
|
|
|
|
# Test PostToolUse with Edit tool
|
|
echo '{"hook_event_name":"PostToolUse","tool_name":"Edit","cwd":"'$(pwd)'"}' | \
|
|
node plugin/hooks/hooks-app/dist/cli.js
|
|
|
|
# Test UserPromptSubmit with keyword matching
|
|
echo '{"hook_event_name":"UserPromptSubmit","user_message":"please run lint","cwd":"'$(pwd)'"}' | \
|
|
node plugin/hooks/hooks-app/dist/cli.js
|
|
```
|
|
|
|
### 6. Session State
|
|
|
|
Check current session state:
|
|
|
|
```bash
|
|
node plugin/hooks/hooks-app/dist/cli.js session get edited_files .
|
|
node plugin/hooks/hooks-app/dist/cli.js session get file_extensions .
|
|
```
|
|
|
|
Clear session state:
|
|
```bash
|
|
node plugin/hooks/hooks-app/dist/cli.js session clear .
|
|
```
|
|
|
|
## Expected Results
|
|
|
|
When working correctly, you should see:
|
|
|
|
1. **SessionStart**: Returns `additionalContext` with Turboshovel welcome message
|
|
2. **PostToolUse (Edit)**: May trigger gates based on your `gates.json` configuration
|
|
3. **UserPromptSubmit**: May inject context or trigger keyword-matched gates
|
|
4. **Logs**: Show `HOOK_INVOKED` entries for each hook event
|
|
|
|
## Troubleshooting
|
|
|
|
| Symptom | Cause | Fix |
|
|
|---------|-------|-----|
|
|
| Plugin errors on load | Invalid hooks.json | Check for unsupported hook types |
|
|
| Gates not firing | No gates.json | Create `.claude/gates.json` |
|
|
| Wrong cwd in logs | Plugin path issue | Check `CLAUDE_PLUGIN_ROOT` resolution |
|
|
| Too many logs | Logging enabled by default | Set `TURBOSHOVEL_LOG=0` |
|
|
|
|
## Arguments
|
|
|
|
$ARGUMENTS
|
|
|
|
If arguments provided, interpret as specific test to run:
|
|
- `hooks` - Focus on hook invocation testing
|
|
- `gates` - Focus on gate configuration testing
|
|
- `logs` - Focus on logging setup
|
|
- `session` - Focus on session state testing
|