Help us improve
Share bugs, ideas, or general feedback.
From claude-commands
Four-layer minimal repro ladder for PR-blocker regressions related to BYOK (Bring Your Own Key) and provider settings, from unit tests through browser UI verification.
npx claudepluginhub jleechanorg/claude-commands --plugin claude-commandsHow this skill is triggered — by the user, by Claude, or both
Slash command
/claude-commands:pr-blocker-min-reproThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
The four-layer minimal repro protocol provides a fast escalation ladder for PR blockers:
Runs a four-layer minimal repro ladder (unit, end2end, MCP/HTTP API, browser) to reproduce PR blockers quickly with evidence-backed classification.
Verifies GitHub PRs end-to-end with browser automation tests via Chrome DevTools, investigates gaps, fixes review comments, and preps for merge in modes like verify or fix-and-ship.
Reproduces failures before fixes and verifies resolutions after via command mappings, BEFORE/AFTER .progress.md docs, VF tasks, and mock test anti-pattern checks.
Share bugs, ideas, or general feedback.
The four-layer minimal repro protocol provides a fast escalation ladder for PR blockers:
unit -> 2) end2end -> 3) testing_mcp -> 4) testing_ui browser.Use this when a PR has unresolved blocker beads and you need evidence-backed status updates quickly.
If beads list is unstable, query the JSONL database directly (requires .beads/ to be initialized in the repo):
[ -f .beads/issues.jsonl ] && \
jq -r 'select(.labels // [] | index("pr-blocker")) | [.id, .title, .status, .priority] | @tsv' \
.beads/issues.jsonl | sort -t$'\t' -k4 -n
./vpython -m pytest \
$PROJECT_ROOT/tests/test_settings_api.py::TestSettingsAPI::test_update_and_clear_byok_key_reflects_has_custom_flag \
$PROJECT_ROOT/tests/test_settings_api.py::TestSettingsAPI::test_update_settings_allows_openrouter_provider -q
./vpython -m pytest \
$PROJECT_ROOT/tests/test_end2end/test_faction_settings_end2end.py::TestFactionSettingsEndToEnd::test_byok_api_key_clear_roundtrip \
$PROJECT_ROOT/tests/test_end2end/test_llm_provider_end2end.py::TestLLMProviderSettingsEndToEnd::test_round_trips_openrouter_and_gemini_preferences -q
./vpython testing_mcp/faction/test_faction_settings_real.py \
--byok-providers gemini,openrouter,cerebras \
--byok-parallel-workers 1
BYOK_CASES=1,2 \
BYOK_PARALLEL=true \
BYOK_PROVIDERS=gemini,openrouter,cerebras \
BYOK_TEST_PORT=8088 \
./vpython testing_ui/streaming/test_streaming_byok_browser.py
TEST PASSED or explicit failure.rg -n "status: 400|Failed to create campaign|non-stream|invalid-key validation message|did not update state|Traceback" \
/tmp/$PROJECT_NAME/browser/byok-parallel-*/**/worker.log
Use this pattern in bead notes:
Repro ladder results: unit=pass|fail, end2end=pass|fail, mcp=pass|fail, browser=pass|fail.Classification: backend, mcp, ui, or external-provider.Evidence: absolute path(s) + key log line(s).Decision: keep open, close, or downgrade priority.