LogoSkills

/dev:bugfix

This workflow automates the entire bug issue fix cycle:

Full bug fix cycle automation (issue creation โ†’ branch โ†’ fix โ†’ PR)

Overview#

This workflow automates the entire bug issue fix cycle:

  1. Bug report creation (optional)
  2. Branch creation
  3. Bug fix work
  4. Unit test writing (frontend + backend)
  5. Test execution and verification
  6. PR creation and merge

Usage#

# ๊ธฐ์กด ๋ฒ„๊ทธ ์ด์Šˆ๋กœ ์‹œ์ž‘
/dev:bugfix {issue_number}

# ์ƒˆ ๋ฒ„๊ทธ ๋ฆฌํฌํŠธ๋ถ€ํ„ฐ ์‹œ์ž‘
/dev:bugfix --new [์ด๋ฏธ์ง€_๊ฒฝ๋กœ]  " ๋ฒ„๊ทธ ์„ค๋ช… "

Parameters#

ParameterRequiredDescription
issue_numberโœ…*Existing bug issue number
--newโœ…*New bug report creation mode
--no-mergeโŒPR creation only (no merge)
--skip-testsโŒSkip tests (for urgent hotfixes)
--baseโŒBase branch (default: development)

*Either issue_number or --new is required

Option Examples#

# PR only (no merge)
/dev:bugfix 123 --no-merge

# Skip tests (urgent)
/dev:bugfix 123 --skip-tests

# Change base branch
/dev:bugfix 123 --base main

# New bug + image analysis
/dev:bugfix --new /tmp/screenshot.png  " App crash "

Execution Flow#

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    /dev:bugfix                                   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                                                                 โ”‚
โ”‚  Step 0: Blast Radius Analysis (before fix)                     โ”‚
โ”‚  โ”œโ”€โ”€ Identify all callers/dependents of affected code (Grep)    โ”‚
โ”‚  โ”œโ”€โ”€ Map test coverage of affected areas                        โ”‚
โ”‚  โ”œโ”€โ”€ Flag untested areas that could regress                     โ”‚
โ”‚  โ””โ”€โ”€ Risk assessment:                                           โ”‚
โ”‚       LOW  (โ‰ค5 files)  โ†’ proceed                                โ”‚
โ”‚       MED  (5-15 files or multi-layer) โ†’ confirm with user      โ”‚
โ”‚       HIGH ( > 15 files or core module)  โ†’ suggest /plan โ†’ /build โ”‚
โ”‚                                                                 โ”‚
โ”‚  Step 1: Bug Report Creation (with --new option)                โ”‚
โ”‚  โ”œโ”€โ”€ Call /bug-report (image analysis)                          โ”‚
โ”‚  โ”œโ”€โ”€ Create ZenHub issue                                        โ”‚
โ”‚  โ””โ”€โ”€ Result: obtain issue_number                                โ”‚
โ”‚                                                                 โ”‚
โ”‚  Step 2: Query Issue Info                                        โ”‚
โ”‚  โ”œโ”€โ”€ mcp__zenhub__searchLatestIssues                           โ”‚
โ”‚  โ”œโ”€โ”€ Extract issue type, title, body                            โ”‚
โ”‚  โ””โ”€โ”€ Analyze bug cause                                          โ”‚
โ”‚                                                                 โ”‚
โ”‚  Step 3: Branch Creation                                         โ”‚
โ”‚  โ”œโ”€โ”€ fix/{number}-{slug} format                                 โ”‚
โ”‚  โ”œโ”€โ”€ issue-state-agent โ†’  " In Progress "                           โ”‚
โ”‚  โ””โ”€โ”€ Based on development branch                                โ”‚
โ”‚                                                                 โ”‚
โ”‚  Step 4: Bug Fix Work                                            โ”‚
โ”‚  โ”œโ”€โ”€ Analyze issue body โ†’ identify cause                        โ”‚
โ”‚  โ”œโ”€โ”€ Search related code                                        โ”‚
โ”‚  โ”œโ”€โ”€ Fix code                                                    โ”‚
โ”‚  โ””โ”€โ”€ Create incremental commits                                 โ”‚
โ”‚                                                                 โ”‚
โ”‚  Step 4.5: Existing Test Verification (Baseline)                 โ”‚
โ”‚  โ”œโ”€โ”€ Run existing tests for related packages                    โ”‚
โ”‚  โ”œโ”€โ”€ On failure โ†’ fix code or existing tests first              โ”‚
โ”‚  โ””โ”€โ”€ Record baseline pass rate                                  โ”‚
โ”‚                                                                 โ”‚
โ”‚  Step 5: Test Writing (required, delegated to cc-flutter-dev)    โ”‚
โ”‚  โ”œโ”€โ”€ Frontend tests                                              โ”‚
โ”‚  โ”‚   โ”œโ”€โ”€ unit-test-agent โ†’ UseCase parameter passing tests      โ”‚
โ”‚  โ”‚   โ”œโ”€โ”€ bloc-test-agent โ†’ BLoC state transition verification   โ”‚
โ”‚  โ”‚   โ””โ”€โ”€ widget-test-agent โ†’ State copyWith rendering tests     โ”‚
โ”‚  โ”œโ”€โ”€ Backend tests                                               โ”‚
โ”‚  โ”‚   โ”œโ”€โ”€ Endpoint auth/permission tests                         โ”‚
โ”‚  โ”‚   โ”œโ”€โ”€ Filter parameter passing integration tests             โ”‚
โ”‚  โ”‚   โ””โ”€โ”€ Service logic unit tests (if applicable)               โ”‚
โ”‚  โ””โ”€โ”€ Create test commits                                        โ”‚
โ”‚                                                                 โ”‚
โ”‚  Step 6: Test Execution and Regression Verification              โ”‚
โ”‚  โ”œโ”€โ”€ Run all tests (existing + new)                             โ”‚
โ”‚  โ”œโ”€โ”€ Attempt auto-fix on failure (up to 3 times)                โ”‚
โ”‚  โ””โ”€โ”€ Verify baseline pass rate maintained                       โ”‚
โ”‚                                                                 โ”‚
โ”‚  Step 7: PR Creation                                             โ”‚
โ”‚  โ”œโ”€โ”€ gh pr create                                               โ”‚
โ”‚  โ”œโ”€โ”€ issue-state-agent โ†’  " Review "                                โ”‚
โ”‚  โ””โ”€โ”€ Auto-link issue (Closes #{number})                         โ”‚
โ”‚                                                                 โ”‚
โ”‚  Step 8: Merge (unless --no-merge)                               โ”‚
โ”‚  โ”œโ”€โ”€ Wait for review                                            โ”‚
โ”‚  โ”œโ”€โ”€ Squash merge                                               โ”‚
โ”‚  โ””โ”€โ”€ Issue auto-Close via GitHub  " Closes # "   keyword             โ”‚
โ”‚                                                                 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Detailed Implementation#

Step 0: Blast Radius Analysis#

Run before creating a branch to assess fix complexity and risk:

// 1. Identify affected code area from issue description
const affectedFiles = await Grep({ pattern: bugPattern, output_mode:  " files_with_matches "   });

// 2. Find all callers/dependents
const dependents = [];
for (const file of affectedFiles) {
  const exports = extractExports(file); // classes, functions, mixins
  for (const symbol of exports) {
    const callers = await Grep({ pattern: symbol, output_mode:  " files_with_matches "   });
    dependents.push(...callers);
  }
}
const uniqueDependents = [...new Set(dependents)];

// 3. Map test coverage
const testFiles = await Glob({ pattern:  " test/**/*_test.dart "   });
const coveredFiles = matchSourceToTest(uniqueDependents, testFiles);
const uncoveredFiles = uniqueDependents.filter(f = >   !coveredFiles.includes(f));

// 4. Risk assessment
const fileCount = uniqueDependents.length;
const layerCount = countLayers(uniqueDependents); // presentation, domain, data, backend

let riskLevel;
if (fileCount  < = 5  & &   layerCount  < = 1) {
  riskLevel =  " LOW " ;  // โ†’ proceed directly
} else if (fileCount  < = 15 || layerCount  < = 2) {
  riskLevel =  " MEDIUM " ;  // โ†’ confirm with user
} else {
  riskLevel =  " HIGH " ;  // โ†’ suggest /plan โ†’ /build workflow
}

Output:

โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘  Blast Radius Analysis                                         โ•‘
โ• โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ฃ
โ•‘  Affected files: {fileCount}                                   โ•‘
โ•‘  Layers touched: {layers}                                      โ•‘
โ•‘  Test coverage: {coveredCount}/{totalCount} files covered       โ•‘
โ•‘  Uncovered areas:                                              โ•‘
โ•‘    - {uncoveredFile1}                                          โ•‘
โ•‘    - {uncoveredFile2}                                          โ•‘
โ•‘  Risk Level: {LOW|MEDIUM|HIGH}                                 โ•‘
โ•‘                                                                โ•‘
โ•‘  {recommendation}                                              โ•‘
โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
  • LOW: ์ž๋™ ์ง„ํ–‰
  • MEDIUM: ์‚ฌ์šฉ์ž์—๊ฒŒ ํ™•์ธ ์š”์ฒญ ("Proceed with bugfix?" / "Switch to /plan โ†’ /build?")
  • HIGH: /plan โ†’ /build ์›Œํฌํ”Œ๋กœ์šฐ ๊ถŒ์žฅ (๊ตฌ์กฐ์  ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•  ๊ฐ€๋Šฅ์„ฑ ๋†’์Œ)

Step 1: Bug Report Creation (Optional)#

When --new option is provided:

// /bug-report ์Šคํ‚ฌ ํ˜ธ์ถœ
const bugReport = await Skill({
  skill:  " bug-report " ,
  args: `${imagePath}  " ${description} " `
});

// Extract created issue number
const issueNumber = bugReport.issue_number;

Step 2: Query Issue Info#

// Query issue info
const issueResult = await mcp__zenhub__searchLatestIssues({
  query: issue_number.toString()
});

const issue = issueResult.find(i = >   i.number === issue_number);

// Extract bug info
const bugInfo = {
  id: issue.id,
  number: issue.number,
  title: issue.title,
  body: issue.body,           // Includes reproduction steps, expected/actual results
  severity: extractSeverity(issue.labels),
  area: extractArea(issue.labels),
};

Step 3: Branch Creation#

// Generate branch name: fix/{number}-{slug}
const slug = createSlug(bugInfo.title);
const branchName = `fix/${bugInfo.number}-${slug}`;

// Create branch
await Bash(`git checkout -b ${branchName} origin/development`);

// Pipeline move: In Progress
await mcp__zenhub__moveIssueToPipeline({
  issueId: bugInfo.id,
  pipelineId: inProgressPipelineId
});

Step 4: Bug Fix Work#

// Bug cause analysis
// 1. Identify reproduction steps from issue body
// 2. Search related code (Grep, Glob)
// 3. Infer cause

// Code fix
// - Modify related files
// - Create incremental commits

await Bash(`git commit -m  " fix(${scope}): ๐Ÿ› ${bugInfo.title} " `);

Step 5: Unit Test Writing (Required)#

Frontend + backend unit tests must be written before PR creation.

5-1. Frontend Tests

Write the following tests depending on the changed code area:

// State tests: copyWith, nullable field clearing, Equatable, etc.
// File: test/presentation/bloc/{feature}_state_test.dart
// - Verify initial state default values
// - Verify copyWith updates
// - Verify nullable field clearing (clearXxx flags)
// - Verify value preservation (existing values maintained on copyWith() call)

// BLoC tests: event handlers โ†’ state transitions
// File: test/presentation/bloc/{feature}_bloc_test.dart
// - Verify per-event state transitions with blocTest()
// - Mock Repository setUp
// - Set initial state with seed()
// - Verify sequential state changes with expect()

// UseCase tests: parameter passing and error handling
// File: test/domain/usecase/{usecase}_test.dart
// - Verify correct parameter passing on Repository calls (verify)
// - Separate success/failure cases
// - Verify Params Equatable

5-2. Backend Tests

// Integration tests: using withServerpod()
// File: backend/kobic_server/test/integration/{feature}_test.dart
// - Auth test: reject unauthenticated access to requireLogin endpoints
// - Filter parameter passing test: verify correct calls per filter
// - Combined filter test: apply all filters simultaneously
// - Pagination test: pass limit/offset parameters

// Service unit tests (on business logic changes)
// File: backend/kobic_server/test/unit/{feature}/{service}_test.dart

5-3. Test Fixture Writing Rules

// Serverpod generated DTO classes have many required fields
// โ†’ Create test fixtures via helper functions
// e.g.: _createTestBook(), _createCategory()

// Mock generation: @GenerateNiceMocks + build_runner
// โ†’ Must regenerate mocks after writing test files
await Bash(`melos exec --scope=${package} -- dart run build_runner build -d`);

5-4. Test Commit

await Bash(`git commit -m  " test(${scope}): โœ… ${bugInfo.title} ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ " `);

Step 6: Test Execution and Verification#

// Run all tests
await Bash(`melos exec --scope=${package} -- flutter test`);

// Attempt auto-fix on failure
if (testFailed) {
  // Fix fixtures (generated class signature mismatches, etc.)
  // Build transitive dependencies (missing .g.dart, .module.dart)
  // Regenerate mocks
  // Re-run
}

// Verify all tests pass (required)
// Do not proceed with PR creation if tests fail

Step 7: PR Creation#

// Create PR
const prTitle = `fix(${scope}): ๐Ÿ› ${bugInfo.title}`;
const prBody = `
## Summary
- ${bugInfo.title} bug fix

## Changes
- ${changesSummary}

## Test Plan
- [ ] Reproduction steps verified
- [ ] Tests passed

Closes #${bugInfo.number}

๐Ÿค– Generated with [Claude Code](https://claude.com/claude-code)
`;

await Bash(`gh pr create --title  " ${prTitle} "   --body  " ${prBody} " `);

// Pipeline move: Review
await mcp__zenhub__moveIssueToPipeline({
  issueId: bugInfo.id,
  pipelineId: reviewPipelineId
});

Step 8: Merge#

// Squash merge โ†’ issue auto-Close via GitHub  " Closes # "   keyword
// No Done pipeline move needed (merge = complete)
await Bash(`gh pr merge --squash --delete-branch`);

Output Format#

On Success#

โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘  Bug Cycle Complete: #123                                      โ•‘
โ• โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ฃ
โ•‘                                                                โ•‘
โ•‘  ๐Ÿ› Bug: [Bug] ๋กœ๊ทธ์ธ: ์†Œ์…œ ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ๋ฏธ๋™์ž‘                  โ•‘
โ•‘  ๐ŸŒฟ Branch: fix/123-social-login-button                        โ•‘
โ•‘                                                                โ•‘
โ•‘  ๐Ÿ“ Commits:                                                   โ•‘
โ•‘    1. fix(auth): ๐Ÿ› ์†Œ์…œ ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ํด๋ฆญ ํ•ธ๋“ค๋Ÿฌ ์ˆ˜์ •           โ•‘
โ•‘    2. test(auth): โœ… ์†Œ์…œ ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€               โ•‘
โ•‘                                                                โ•‘
โ•‘  โœ… Tests:                                                     โ•‘
โ•‘    - FE State: 16/16 passed                                    โ•‘
โ•‘    - FE BLoC: 10/10 passed                                     โ•‘
โ•‘    - FE UseCase: 10/10 passed                                  โ•‘
โ•‘    - BE Integration: 10/10 passed                              โ•‘
โ•‘                                                                โ•‘
โ•‘  ๐Ÿ”€ PR: #456                                                   โ•‘
โ•‘    - URL: https://github.com/coco-de/kobic/pull/456            โ•‘
โ•‘    - Status: Merged โœ…                                         โ•‘
โ•‘                                                                โ•‘
โ•‘  ๐Ÿ“Š Duration: 8m 15s                                           โ•‘
โ•‘  ๐Ÿ Final State: CLOSED (by merge)                             โ•‘
โ•‘                                                                โ•‘
โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

On Failure#

โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘  Bug Cycle Failed: #123                                        โ•‘
โ• โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ฃ
โ•‘                                                                โ•‘
โ•‘  โŒ Failed at: Step 4 (Bug fix work)                             โ•‘
โ•‘                                                                โ•‘
โ•‘  Error Details:                                                โ•‘
โ•‘    - Cause identification failed: additional info needed       โ•‘
โ•‘    - Related code not found                                    โ•‘
โ•‘                                                                โ•‘
โ•‘  Current State:                                                โ•‘
โ•‘    - Branch: fix/123-social-login (exists)                     โ•‘
โ•‘    - Commits: 0                                                โ•‘
โ•‘    - Pipeline: In Progress                                     โ•‘
โ•‘    - PR: Not created                                           โ•‘
โ•‘                                                                โ•‘
โ•‘  Recovery Options:                                             โ•‘
โ•‘    1. Request additional info on the issue                     โ•‘
โ•‘    2. Manually analyze cause then retry                        โ•‘
โ•‘    3. /dev:bugfix 123 --skip-tests                     โ•‘
โ•‘                                                                โ•‘
โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

TodoWrite Integration#

Progress Tracking#

TodoWrite([
  { content:  " Bug report creation " , status:  " completed " , activeForm:  " Bug report creation complete "   },
  { content:  " Issue info query " , status:  " in_progress " , activeForm:  " Querying issue info "   },
  { content:  " Branch creation " , status:  " pending " , activeForm:  " Branch creation pending "   },
  { content:  " Bug fix work " , status:  " pending " , activeForm:  " Bug fix pending "   },
  { content:  " Unit test writing (FE+BE) " , status:  " pending " , activeForm:  " Test writing pending "   },
  { content:  " Test execution and verification " , status:  " pending " , activeForm:  " Test execution pending "   },
  { content:  " PR creation " , status:  " pending " , activeForm:  " PR creation pending "   },
  { content:  " Merge and close " , status:  " pending " , activeForm:  " Merge pending "   },
]);

Error Handling#

Step-by-Step Recovery Strategy#

Failed StepStateRecovery Method
Blast radius No changes Retry or switch to /plan โ†’ /build
Bug reportNo changesRetry /bug-report
Branch creationIssue existsRetry
Bug fixBranch existsManual fix then retry
Test writing Code modified Fix fixtures, regenerate mocks, build transitive deps
Test executionTests writtenManual test fix or --skip-tests
PR creationTests passedRun gh pr create manually
MergePR existsWait for CI pass then retry

Key Rules#

  1. Verify Bug Issue Type: Only process Bug type issues
  2. Branch Naming: Follow fix/{number}-{slug} format
  3. Commit Message: fix({scope}): ๐Ÿ› {description} format
  4. Tests Required (before PR): Frontend (State/BLoC/UseCase) + Backend (integration/unit) tests must be written and passed before PR creation
  5. Separate Test Commits: Separate fix commits from test commits for easier review
  6. Issue Link: Include Closes #{number} in PR
  7. State Tracking: Update Pipeline state at every step

  • /bug-report: Bug report creation
  • /dev:issue: General issue cycle
  • /zenhub:manage: ZenHub pipeline management
  • issue-state-agent: Issue state management
  • implementation-agent: Code implementation
  • test-runner-agent: Test execution
  • pr-lifecycle-agent: PR management