arabelatso/bug-reproduction-test-generator
Automatically generates executable tests that reproduce reported bugs from issue reports and code repositories. Use when users need to: (1) Create a test that reproduces a bug described in an issue report, (2) Generate failing tests from bug descriptions, stack traces, or error messages, (3) Validate bug reports by creating reproducible test cases, (4) Convert issue reports into executable regression tests. Takes a repository and issue report as input and produces test code that reliably triggers the reported bug.
npx skills add https://github.com/ArabelaTso/Skills-4-SE --skill bug-reproduction-test-generator
Generate executable tests that reproduce reported bugs based on issue reports and code repositories.
Follow these steps to generate a bug reproduction test:
Extract key information from the issue report:
Identify relevant code and context:
Create a minimal, focused test that:
Test structure:
Assertions:
Documentation:
Provide:
Issue Report:
Title: Division by zero in calculate_average()
Description: When calling calculate_average([]) with an empty list,
the function crashes with ZeroDivisionError instead of returning 0.
Stack trace:
File "stats.py", line 15, in calculate_average
return sum(values) / len(values)
ZeroDivisionError: division by zero
Generated Test (Python/pytest):
import pytest
from stats import calculate_average
def test_calculate_average_empty_list_reproduction():
"""
Reproduces bug: calculate_average([]) raises ZeroDivisionError
Issue: #123
Expected: Should return 0 for empty list
Actual: Raises ZeroDivisionError
"""
# Trigger the bug with empty list input
with pytest.raises(ZeroDivisionError):
result = calculate_average([])
# This test currently passes (reproduces the bug)
# After fix, change to: assert calculate_average([]) == 0
Summary:
## Bug Reproduction Test
**Issue**: Division by zero in calculate_average()
**How it reproduces the bug:**
- Calls `calculate_average([])` with an empty list
- Asserts that ZeroDivisionError is raised (the buggy behavior)
**Symptoms validated:**
- Exception type: ZeroDivisionError
- Location: stats.py line 15
**Assumptions:**
- The function should return 0 for empty lists (common convention)
**Running the test:**
pytest test_stats.py::test_calculate_average_empty_list_reproduction
**After the bug is fixed:**
Replace the `pytest.raises` assertion with:
assert calculate_average([]) == 0
import pytest
def test_bug_reproduction_issue_123():
"""Reproduces bug #123: [brief description]"""
# Setup: Create conditions that trigger the bug
# Execute: Run the code that exhibits the bug
# Assert: Verify the buggy behavior occurs
with pytest.raises(ExpectedException):
buggy_function()
@Test
public void testBugReproduction_Issue123() {
// Reproduces bug #123: [brief description]
// Setup: Create conditions that trigger the bug
// Execute and Assert: Verify the buggy behavior
assertThrows(ExpectedException.class, () -> {
buggyMethod();
});
}
test('reproduces bug #123: [brief description]', () => {
// Setup: Create conditions that trigger the bug
// Execute and Assert: Verify the buggy behavior
expect(() => {
buggyFunction();
}).toThrow(ExpectedException);
});
When the issue report lacks details:
Example:
def test_bug_reproduction_issue_456():
"""
Reproduces bug #456: Null pointer exception in processData()
ASSUMPTION: The bug occurs when input is null (not specified in issue)
ASSUMPTION: Using default configuration (not specified in issue)
"""
# Test with null input (assumed trigger)
with pytest.raises(NullPointerException):
processData(None)
Take arabelatso/bug-reproduction-test-generator from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.