From bugflow
Execute approved bug fix plan after user approves. Use after /bug-start or /bug-plan creates a plan. Requires state PLAN_FE, VALIDATE, FEATURE_DESIGN, or AWAITING_APPROVAL.
npx claudepluginhub konstantilieris/bugfow_pluginThis skill uses the workspace's default tool permissions.
- [Command](#command)
Provides phased workflow for bug fixes: root cause analysis, minimal implementation, code review, regression testing, security checks, validation, documentation, and deployment. Use for bugs, issues, errors.
Executes step-by-step bug fix workflow: read issue, diagnose root cause, reproduce (browser for UI bugs), minimal fix, regression test, verify, open PR.
Auto-activates on bugfix-request.json to validate, reproduce, root-cause user-reported bugs, enqueue as category=bugfix feature, and chain to Worker for TDD fix.
Share bugs, ideas, or general feedback.
Execute approved implementation plan with transactional safety and automatic rollback.
/bug-accept <bug_id> - Execute the approved plan for the specified bug
Optional Flags:
--skip-verify - Skip Playwright verification (use with caution, see below)/bug-start auto-plan or manual /bug-plan)PLAN_FE, VALIDATE, FEATURE_DESIGN, TEST_SPEC, or AWAITING_APPROVAL--skip-verify)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.
On failure: Automatic rollback to checkpoint. See ERRORS.md for handling.
BEFORE spawning exec-supervisor, validate that testSpec exists:
const state = await readState(bugId);
const hasTestSpec = state.testSpec !== null &&
state.testSpec !== undefined &&
Array.isArray(state.testSpec.assertions) &&
state.testSpec.assertions.length > 0;
If testSpec is missing (and NOT using --skip-verify):
Error: Cannot execute - no test specification exists.
Bug <bugId> is missing testSpec. This is required for automated verification.
Options:
1. Run `/bug-plan <bugId>` to regenerate plan with testSpec
2. Run test-spec-generator manually:
Task({
subagent_type: "general-purpose",
prompt: "Read and execute .claude/agents/test-spec-generator.md for bug <bugId>"
})
3. Run `/bug-accept <bugId> --skip-verify` to proceed without verification (NOT RECOMMENDED)
CRITICAL: Do NOT proceed with execution if testSpec is missing. The workflow must halt until the user either:
/bug-accept <bugId> --skip-verify - Execute without running Playwright verifier
AskUserQuestion({
questions: [{
question: "Skip automated verification? This means no Playwright tests will run.",
header: "Skip Verify",
options: [
{ label: "Skip verification", description: "Proceed without automated tests (you've done manual testing)" },
{ label: "Cancel", description: "Don't proceed - I need to generate testSpec first" }
],
multiSelect: false
}]
})
{
"verificationResult": {
"status": "skipped",
"reason": "UserChoice",
"acknowledgedBy": "user",
"timestamp": "<ISO>"
}
}
*Verification:* SKIPPED (User choice)
Verification: Skipped by user request
| Agent | Purpose |
|---|---|
| pre-flight | Validate prerequisites before execution |
| executor | Apply code changes (prompts for edits) |
| verifier | Run Playwright tests |
| slack-notifier | Send CHANGES_APPLIED notification |
| bugzilla-commenter | Post completion comment |
PLAN_FE/VALIDATE/FEATURE_DESIGN
↓
PRE_FLIGHT
↓
EXECUTE
↓
VERIFY
/ \
PASS FAIL → VERIFY_FAIL (rollback)
↓
CLOSED
| Output | Path |
|---|---|
| Dossier | <paths.dossierDir> from project config (default: docs/bugflow)/bug-<bugId>.md |
| State | <paths.stateDir> from project config (default: .bugflow)/<bugId>/state.json |
| Logs | <paths.stateDir> from project config (default: .bugflow)/_logs/<bugId>.log.json |
| Slack | read from project config slack.channelName |
| Bugzilla | Fix summary comment |
After verification passes (or if skipped), send notifications:
mcp__slack__slack_post_message({
channel_id: "read from project config `slack.channelId`",
text: "Bug <bugId>: Fix Complete\n\n*Title:* <title>\n*Branch:* `<branch>`\n*Verdict:* *<verdict>*\n\n*Changes:* <N> file(s) modified\n*Verification:* PASSED\n\nDossier: `<paths.dossierDir from project config>/bug-<bugId>.md`\n\nReady for commit + PR"
})
IMPORTANT: Always ask user to approve the Bugzilla comment before posting.
Proposed Bugzilla comment for bug <bugId>:
---
[FE Fix Applied]
Branch: <branch>
Files modified: <list>
Summary: <brief description of fix>
Ready for commit + PR.
---
AskUserQuestion({
questions: [{
question: "Post this comment to Bugzilla?",
header: "Bugzilla",
options: [
{ label: "Post comment", description: "Post the comment shown above to Bugzilla" },
{ label: "Skip", description: "Don't post to Bugzilla" }
],
multiSelect: false
}]
})
CRITICAL: Slack can be sent automatically, but Bugzilla comments always require explicit user approval.