npx claudepluginhub konstantilieris/bugfow_pluginThis skill is limited to using the following tools:
**Configuration Required**: This skill requires project configuration. If `.claude/bugflow/config/environment.json` does not exist, prompt the user to run `/bugflow:bug-setup` first.
Reproduces failures before fixes and verifies resolutions after via command mappings, BEFORE/AFTER .progress.md docs, VF tasks, and mock test anti-pattern checks.
Verifies task completion by enforcing fresh automated test runs, runtime evidence review, and spec re-read in /dev workflow Phase 7.
Executes step-by-step bug fix workflow: read issue, diagnose root cause, reproduce (browser for UI bugs), minimal fix, regression test, verify, open PR.
Share bugs, ideas, or general feedback.
Configuration Required: This skill requires project configuration. If .claude/bugflow/config/environment.json does not exist, prompt the user to run /bugflow:bug-setup first.
/bug-verify <bug_id>bug verify, bugverifybug_id (required) - Bugzilla bug IDRuns verification tests to confirm the bug fix works.
This command integrates with the following V3 systems:
| System | Reference | Purpose |
|---|---|---|
| Workflow Lock | ${CLAUDE_PLUGIN_ROOT}/infrastructure/lib/workflow-lock.md | Prevent duplicate workflows |
| Atomic State IO | ${CLAUDE_PLUGIN_ROOT}/infrastructure/lib/state-io.md | Safe state read/write |
| Structured Logging | ${CLAUDE_PLUGIN_ROOT}/infrastructure/lib/logger.md | Event tracking |
| Context Filtering | ${CLAUDE_PLUGIN_ROOT}/infrastructure/context-specs.json | Token optimization |
All state writes MUST use atomic protocol. All agent spawns MUST log AGENT_START/AGENT_COMPLETE. All phase transitions MUST log STATE_CHANGE.
/bug-accept completed)Read <paths.stateDir> from project config (default: .bugflow)/.json`:
See: ${CLAUDE_PLUGIN_ROOT}/infrastructure/lib/workflow-lock.md for full implementation.
Steps:
<paths.stateDir> from project config (default: .bugflow)/.lock` existsphase to "VERIFY"expiresAt by 4 hours (reset timeout)LOCK_STALE eventLock Update Content:
{
"bugId": "<bugId>",
"acquiredAt": "<original acquiredAt>",
"sessionId": "<existing or new sessionId>",
"phase": "VERIFY",
"expiresAt": "<ISO timestamp + 4 hours from now>"
}
Log Event: LOCK_UPDATE with phase transition
{
"event": "LOCK_UPDATE",
"bugId": "<bugId>",
"details": {
"previous_phase": "<previous phase>",
"new_phase": "VERIFY",
"expires_at": "<new expiry>"
}
}
If state < EXECUTE:
Bug <bugId> changes not yet applied.
Run `/bug-accept <bugId>` first.
If state >= VERIFY:
Bug <bugId> already verified.
State: <state>
Ready to commit and create PR.
From state file and dossier:
## Verification Checklist for Bug <bugId>
### Original Repro Steps
[ ] 1. <repro step 1>
[ ] 2. <repro step 2>
[ ] 3. <repro step 3>
Expected: Bug should NOT reproduce anymore
### Acceptance Criteria
[ ] <criterion 1>
[ ] <criterion 2>
### Regression Checks
[ ] <regression area 1> - Still works
[ ] <regression area 2> - Still works
If Playwright tests are specified, use the verifier agent to run verification tests.
Provide context:
<bugId>app.developmentUrlExpected output:
{
"automated": {
"ran": true,
"passed": true,
"results": [...]
},
"screenshots": [
"verify-<bugId>-before.png",
"verify-<bugId>-after.png"
]
}
Write to VERIFICATION section:
{
"state": "VERIFY",
"verificationResult": { /* Verifier output */ },
"executionLog": [
...existing,
{ "timestamp": "<ISO>", "action": "VERIFY", "result": "success" }
]
}
See: ${CLAUDE_PLUGIN_ROOT}/infrastructure/lib/logger.md for full logging utilities.
Log verification start:
{
"timestamp": "{{ISO}}",
"workflowId": "{{workflowId}}",
"bugId": "{{bugId}}",
"event": "AGENT_START",
"agent": "verifier",
"phase": "VERIFY",
"details": { "test_count": {{testSpec.assertions.length}} }
}
Log verification result (on complete):
{
"timestamp": "{{ISO}}",
"workflowId": "{{workflowId}}",
"bugId": "{{bugId}}",
"event": "AGENT_COMPLETE",
"agent": "verifier",
"phase": "VERIFY",
"duration_ms": {{durationMs}},
"outcome": "success" | "failure",
"details": {
"assertions_passed": {{passedCount}},
"assertions_failed": {{failedCount}},
"screenshots_captured": {{screenshotCount}}
}
}
If verification fails, also log:
{
"timestamp": "{{ISO}}",
"workflowId": "{{workflowId}}",
"bugId": "{{bugId}}",
"event": "VALIDATION_FAIL",
"phase": "VERIFY",
"details": {
"failed_assertions": {{failedAssertions}},
"attempt_number": {{attemptNumber}}
}
}
Append to log file: <paths.stateDir> from project config (default: .bugflow)/_logs/.log.json`
Bug <bugId>: Verification Complete
Manual Checklist:
[ ] Original repro steps no longer reproduce bug
[ ] <acceptance criterion 1>
[ ] <acceptance criterion 2>
[ ] Regression areas still work
<If automated tests ran>
Automated Tests: PASSED
Screenshots saved to docs/bugflow/assets/bug-<bugId>/
Dossier updated: <paths.dossierDir> from project config/bug-<bugId>.md
Next:
- Complete manual verification checklist
- Commit changes
- Create PR for branch: bug/<bugId>-<slug>
After verification completes, notify Slack channel read from project config slack.channelName (read from project config slack.channelId).
| Step | Before Fix | After Fix | Status |
|------|-----------|-----------|--------|
| Repro step 1 | Bug present | Fixed | PASS |
| Repro step 2 | Error shown | Works | PASS |
| Regression A | Working | Working | PASS |
Bug <bugId> changes not yet applied.
Run `/bug-accept <bugId>` first.
Cannot verify: Application not accessible at read from project config `app.developmentUrl`
Start the application server and try again.
Verification FAILED for bug <bugId>
Failed check: <check_name>
Expected: <expected>
Actual: <actual>
The fix may be incomplete. Review and update the plan.