Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Frontend debugging team using Chrome DevTools MCP. Dual-mode — feature-list testing or bug-report debugging. Triggers on "team-frontend-debug", "frontend debug".
.claude/skills/catlog22-team-frontend-debug/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 71% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 286% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 56% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 244% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 70% | 0% |
Dual-mode frontend debugging: feature-list testing or bug-report debugging, powered by Chrome DevTools MCP.
Skill(skill="team-frontend-debug", args="feature list or bug description")
|
SKILL.md (this file) = Router
|
+--------------+--------------+
| |
no --role flag --role <name>
| |
Coordinator Worker
roles/coordinator/role.md roles/<name>/role.md
|
+-- analyze input → select pipeline → dispatch → spawn → STOP
|
┌──────────────────────────┼──────────────────────┐
v v v
[test-pipeline] [debug-pipeline] [shared]
tester(DevTools) reproducer(DevTools) analyzer
fixer
verifier| Input | Pipeline | Flow | |-------|----------|------| | Feature list / 功能清单 | test-pipeline | TEST → ANALYZE → FIX → VERIFY | | Bug report / 错误描述 | debug-pipeline | REPRODUCE → ANALYZE → FIX → VERIFY |
| Role | Path | Prefix | Inner Loop | |------|------|--------|------------| | coordinator | roles/coordinator/role.md | — | — | | tester | roles/tester/role.md | TEST- | true | | reproducer | [roles/reproducer/role.md](roles/reproducer/role.md) | REPRODUCE- | false | | analyzer | roles/analyzer/role.md | ANALYZE- | false | | fixer | [roles/fixer/role.md](roles/fixer/role.md) | FIX- | true | | verifier | roles/verifier/role.md | VERIFY- | false |
Parse $ARGUMENTS:
--role <name> → Read roles/<name>/role.md, execute Phase 2-4--role → roles/coordinator/role.md, execute entry routerCoordinator is a PURE ORCHESTRATOR. It coordinates, it does NOT do.
Before calling ANY tool, apply this check:
| Tool Call | Verdict | Reason | |-----------|---------|--------| | spawn_agent, wait_agent, close_agent, send_message, followup_task | ALLOWED | Orchestration | | list_agents | ALLOWED | Agent health check | | request_user_input | ALLOWED | User interaction | | mcp__ccw-tools__team_msg | ALLOWED | Message bus | | Read/Write on .workflow/.team/ files | ALLOWED | Session state | | Read on roles/, commands/, specs/ | ALLOWED | Loading own instructions | | Read/Grep/Glob on project source code | BLOCKED | Delegate to worker | | Edit on any file outside .workflow/ | BLOCKED | Delegate to worker | | Bash("ccw cli ...") | BLOCKED | Only workers call CLI | | Bash running build/test/lint commands | BLOCKED | Delegate to worker |
If a tool call is BLOCKED: STOP. Create a task, spawn a worker.
No exceptions for "simple" tasks. Even a single-file read-and-report MUST go through spawn_agent.
TFD.workflow/.team/TFD-<date>-<slug>/ccw cli --mode analysis (read-only), ccw cli --mode write (modifications)mcp__ccw-tools__team_msg(session_id=<session-id>, ...)Coordinator MUST resolve paths at Phase 2 before spawning workers:
Bash({ command: "pwd" }) → capture project_root (absolute path)skill_root = <project_root>/.claude/skills/team-frontend-debugteam-session.json:json { "project_root": "/abs/path/to/project", "skill_root": "/abs/path/to/skill" }
role_spec values MUST use <skill_root>/roles/<role>/role.md (absolute)This ensures workers always receive an absolute, resolvable path regardless of their working directory.
All browser inspection operations use Chrome DevTools MCP. Reproducer and Verifier are primary consumers.
| Tool | Purpose | |------|---------| | mcp__chrome-devtools__navigate_page | Navigate to target URL | | mcp__chrome-devtools__take_screenshot | Capture visual state | | mcp__chrome-devtools__take_snapshot | Capture DOM/a11y tree | | mcp__chrome-devtools__list_console_messages | Read console logs | | mcp__chrome-devtools__get_console_message | Get specific console message | | mcp__chrome-devtools__list_network_requests | Monitor network activity | | mcp__chrome-devtools__get_network_request | Inspect request/response detail | | mcp__chrome-devtools__performance_start_trace | Start performance recording | | mcp__chrome-devtools__performance_stop_trace | Stop and analyze trace | | mcp__chrome-devtools__click | Simulate user click | | mcp__chrome-devtools__fill | Fill form inputs | | mcp__chrome-devtools__hover | Hover over elements | | mcp__chrome-devtools__evaluate_script | Execute JavaScript in page | | mcp__chrome-devtools__wait_for | Wait for element/text | | mcp__chrome-devtools__list_pages | List open browser tabs | | mcp__chrome-devtools__select_page | Switch active tab |
Coordinator spawns workers using this template:
spawn_agent({
agent_type: "team_worker",
task_name: "<task-id>",
fork_turns: "none",
message: `## Role Assignment
role: <role>
role_spec: <skill_root>/roles/<role>/role.md
session: <session-folder>
session_id: <session-id>
requirement: <task-description>
inner_loop: <true|false>
Read role_spec file (<skill_root>/roles/<role>/role.md) to load Phase 2-4 domain instructions.
## Task Context
task_id: <task-id>
title: <task-title>
description: <task-description>
pipeline_phase: <pipeline-phase>
## Upstream Context
<prev_context>`
})After spawning, use wait_agent({ timeout_ms: 1800000 }) to collect results. If result.timed_out, send STATUS_CHECK via followup_task (wait 3 min), then FINALIZE with interrupt (wait 3 min), then mark timed_out and close agents. Use close_agent({ target }) each worker.
Debug workflows require tool-heavy interaction (Chrome DevTools MCP). Reasoning effort varies by role.
| Role | reasoning_effort | Rationale | |------|-------------------|-----------| | tester | medium | Systematic feature testing via DevTools, follows test plan | | reproducer | medium | Reproduce bugs via DevTools interaction steps | | analyzer | high | Root cause analysis requires deep reasoning about evidence | | fixer | high | Code fixes must address root cause precisely | | verifier | medium | Verification follows defined success criteria via DevTools |
| Command | Action | |---------|--------| | check / status | View execution status graph | | resume / continue | Advance to next step | | revise <TASK-ID> [feedback] | Revise specific task | | feedback <text> | Inject feedback for revision | | retry <TASK-ID> | Re-run a failed task |
| Intent | API | Example | |--------|-----|---------| | Queue supplementary info (don't interrupt) | send_message | Send DevTools evidence to running analyzer | | Assign new work / trigger debug round | followup_task | Assign re-fix after verification failure | | Check running agents | list_agents | Verify agent health during resume |
Use list_agents({}) in handleResume and handleComplete:
// Reconcile session state with actual running agents
const running = list_agents({})
// Compare with team-session.json active tasks
// Reset orphaned tasks (in_progress but agent gone) to pendingWorkers are spawned with task_name: "<task-id>" enabling direct addressing:
send_message({ target: "ANALYZE-001", message: "..." }) -- send evidence from reproducer to analyzerfollowup_task({ target: "FIX-001", message: "..." }) -- assign fix based on analysis resultsclose_agent({ target: "VERIFY-001" }) -- cleanup after verificationWhen verifier reports a fix did not resolve the issue, coordinator uses followup_task to trigger re-analysis and re-fix:
// Verifier reports failure -> coordinator dispatches re-fix
followup_task({
target: "FIX-001", // reuse existing fixer if inner_loop, or spawn new
message: `## Re-fix Assignment
verification_result: FAIL
failure_evidence: <verifier's screenshot/console evidence>
previous_fix_summary: <what was tried>
instruction: Analyze verification failure and apply corrected fix.`
})This pattern enables iterative debug rounds: FIX -> VERIFY -> re-FIX -> re-VERIFY (max 3 rounds).
When pipeline completes, coordinator presents:
functions.request_user_input({
questions: [{
question: "Pipeline complete. What would you like to do?",
header: "Completion",
multiSelect: false,
options: [
{ label: "Archive & Clean (Recommended)", description: "Archive session, clean up" },
{ label: "Keep Active", description: "Keep session for follow-up debugging" },
{ label: "Export Results", description: "Export debug report and patches" }
]
}]
}).workflow/.team/TFD-<date>-<slug>/
├── team-session.json # Session state + role registry
├── evidence/ # Screenshots, snapshots, network logs
├── artifacts/ # Test reports, RCA reports, patches, verification reports
├── wisdom/ # Cross-task debug knowledge
└── .msg/ # Team message bus| Scenario | Resolution | |----------|------------| | All features pass test | Report success, pipeline completes without ANALYZE/FIX/VERIFY | | Bug not reproducible | Reproducer reports failure, coordinator asks user for more details | | Browser not available | Report error, suggest manual reproduction steps | | Analysis inconclusive | Analyzer requests more evidence via iteration loop | | Fix introduces regression | Verifier reports fail, coordinator dispatches re-fix | | No issues found in test | Skip downstream tasks, report all-pass | | Unknown command | Error with available command list | | Role not found | Error with role registry |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 11,036 | 11,039 | +0% | 1 | 1 | 0% | 265 | 3,472 | +1210% | 0 | 0 | — |
case-02 | fail→fail | 4,209 | 21,867 | +420% | 1 | 1 | 0% | 265 | 3,292 | +1142% | 0 | 0 | — |
case-03 | fail→fail | 11,044 | 6,983 | -37% | 1 | 1 | 0% | 324 | 3,424 | +957% | 0 | 0 | — |
case-04 | fail→pass | 13,336 | 8,856 | -34% | 1 | 1 | 0% | 2,421 | 4,149 | +71% | 0 | 0 | — |
case-05 | fail→pass | 10,012 | 3,324 | -67% | 1 | 1 | 0% | 880 | 3,398 | +286% | 0 | 0 | — |
case-06 | fail→pass | 12,300 | 2,897 | -76% | 1 | 1 | 0% | 2,168 | 3,377 | +56% | 0 | 0 | — |
case-07 | fail→pass | 7,464 | 9,379 | +26% | 1 | 1 | 0% | 1,383 | 4,761 | +244% | 0 | 0 | — |
case-08 | fail→pass | 13,659 | 6,648 | -51% | 1 | 1 | 0% | 2,391 | 4,072 | +70% | 0 | 0 | — |
case-09 | pass→pass | 15,775 | 2,963 | -81% | 1 | 1 | 0% | 2,663 | 3,374 | +27% | 0 | 0 | — |
case-10 | fail→fail | 13,119 | 5,270 | -60% | 1 | 1 | 0% | 2,251 | 3,140 | +39% | 0 | 0 | — |
case-11 | fail→fail | 11,043 | 8,493 | -23% | 1 | 1 | 0% | 1,888 | 4,339 | +130% | 0 | 0 | — |
case-12 | fail→pass | 13,835 | 3,101 | -78% | 1 | 1 | 0% | 1,841 | 3,392 | +84% | 0 | 0 | — |
case-13 | fail→pass | 13,470 | 3,511 | -74% | 1 | 1 | 0% | 2,327 | 3,420 | +47% | 0 | 0 | — |
case-14 | fail→pass | 10,618 | 5,392 | -49% | 1 | 1 | 0% | 1,630 | 3,699 | +127% | 0 | 0 | — |
case-15 | fail→pass | 12,673 | 3,444 | -73% | 1 | 1 | 0% | 1,856 | 3,423 | +84% | 0 | 0 | — |
case-16 | fail→pass | 10,011 | 3,760 | -62% | 1 | 1 | 0% | 2,019 | 3,374 | +67% | 0 | 0 | — |
case-21 | pass→fail | 13,444 | 8,105 | -40% | 1 | 1 | 0% | 2,724 | 3,305 | +21% | 0 | 0 | — |
case-17 | pass→pass | 9,848 | 3,603 | -63% | 1 | 1 | 0% | 1,596 | 3,448 | +116% | 0 | 0 | — |
case-18 | fail→pass | 10,949 | 7,680 | -30% | 1 | 1 | 0% | 1,849 | 3,836 | +107% | 0 | 0 | — |
case-19 | pass→pass | 6,769 | 5,279 | -22% | 1 | 1 | 0% | 1,076 | 3,568 | +232% | 0 | 0 | — |
case-20 | pass→pass | 14,190 | 7,183 | -49% | 1 | 1 | 0% | 2,386 | 4,551 | +91% | 0 | 0 | — |
case-22 | pass→fail | 5,906 | 6,926 | +17% | 1 | 1 | 0% | 1,044 | 3,176 | +204% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 16 counted toward the lift figure. The other 6 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +41 percentage points is the difference between those two pass rates over the 16 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.