Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Intelligent coordinator — classify intent via structured extraction (action × object × style), map to skill chain, execute wave-by-wave via spawn_agents_on_csv. Barrier skills trigger coordinator-side artifact analysis between waves to dynamically assemble subsequent skill_call args. Each wave can be 1 or N parallel tasks.
.claude/skills/catlog22-ccw/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 389% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 679% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 140% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 208% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 285% | 0% |
When -y or --yes: Skip clarification and confirmation prompts. Pass -y through to each step's skill invocation.
bash$ccw "implement user authentication with JWT" $ccw -y "refactor the payment module" $ccw --continue $ccw --dry-run "add rate limiting to API endpoints" $ccw --chain feature "add dark mode toggle"
Flags:
-y, --yes — Auto mode: skip all prompts; propagate -y to each skill--continue — Resume latest paused session from last incomplete wave--dry-run — Display planned chain without executing--chain <name> — Force a specific chain (skips intent classification)Session state: .workflow/.ccw-coordinate/{session-id}/ Core Output: tasks.csv (master) + wave-{N}-results.csv (per wave) + context.md (report)
Wave-based pipeline coordinator. The coordinator loop builds one wave CSV at a time, calls spawn_agents_on_csv, then performs coordinator-side artifact analysis before assembling the next wave. Barrier skills produce artifacts (plan.json, analysis results, etc.) that the coordinator reads to dynamically resolve args for subsequent steps.
Intent → Structured Extract → Resolve Chain → [Wave Loop]:
(action×object×style) (chainMap)
┌─────────────────────────────────────────────────┐
│ 1. Identify next wave (1 or N parallel steps) │
│ 2. Build wave-{N}.csv with skill_call per row │
│ 3. spawn_agents_on_csv(wave-{N}.csv) │
│ 4. Read wave-{N}-results.csv │
│ 5. If barrier skill: analyze artifacts, │
│ update context for subsequent steps │
│ 6. Merge into master tasks.csv │
└─────────────────────────────────────────────────┘
→ ReportSkills that produce artifacts requiring coordinator-side analysis before the next wave can be assembled. After a barrier skill completes, the coordinator reads its output and updates the execution context.
| Skill | Artifacts to Read | Context Updates | |-------|------------------|-----------------| | analyze-with-file | .workflow/.analysis/ANL-*/conclusions.json | analysis_dir, gaps, phase | | brainstorm-with-file | .workflow/.brainstorm/*/ | brainstorm_dir, features | | workflow-plan | .workflow/active/WFS-*/workflow-session.json | plan_dir, task_count | | workflow-lite-planex | .workflow/.lite-plan/*/plan.json | plan_dir, task_count | | spec-generator | .workflow/.spec/*/ | spec_session_id | | roadmap-with-file | .workflow/.roadmap/*/roadmap.md | roadmap_dir | | workflow-tdd-plan | .workflow/.tdd-plan/*/ | tdd_plan_dir | | issue-discover | .workflow/.issues/*/ | issue_dir, issue_count | | debug-with-file | .workflow/.debug/*/ | debug_dir, findings |
Non-barrier skills (can be grouped into multi-task waves): workflow-execute, workflow-test-fix-cycle, review-cycle, clean, investigate, security-audit, ship, parallel-dev-cycle, brainstorm, all team-* skills
Extract a structured intent tuple using LLM semantic understanding, then route deterministically via an action × object matrix.
Extract structured intent from user input:
json{ "action": "<from action enum>", "object": "<from object enum>", "scope": "<module/file/area or null>", "style": "<from style enum>", "urgency": "<low | normal | high>" }
Action enum:
| action | Semantic meaning | |--------|-----------------| | create | Build something new — feature, project, component, spec | | fix | Repair something broken — fix bug, resolve error, patch | | analyze | Understand deeply — analyze, investigate, discuss, explore concept | | plan | Design approach — plan, break down, roadmap, decompose | | execute | Implement planned work — execute, implement, develop | | explore | Open-ended discovery — brainstorm, ideate, creative thinking | | debug | Diagnose failures — debug, diagnose, troubleshoot | | test | Run or create tests — test, generate test, TDD | | review | Evaluate code quality — review, code review | | refactor | Restructure code — refactor, clean up, tech debt | | convert | Bridge between workflows — convert brainstorm to issue |
Object enum:
| object | Meaning | |--------|---------| | feature | New functionality or enhancement | | bug | Defect, error, broken behavior | | issue | Issue-tracker item for batch/structured management | | code | Source code in general | | test | Tests, test suite, test coverage | | spec | Specification, PRD, product requirements | | doc | Documentation | | ui | User interface, design, component | | performance | Performance characteristics | | security | Security concerns | | architecture | System architecture, design decisions | | project | Entire project (greenfield) | | team | Team-based execution |
Style enum:
| style | Meaning | |-------|---------| | quick | Fast, lightweight, minimal ceremony | | documented | With file artifacts, discussion docs | | collaborative | Multi-agent, multi-perspective | | structured | Formal planning, spec-driven, phased | | iterative | Cycle-based, self-iterating with reflection | | tdd | Test-driven development | | default | No specific style preference |
Routing via detectTaskType(intent) → chain name → skill list.
javascriptfunction detectTaskType(intent) { const { action, object, style, urgency } = intent; // Urgency override if (urgency === 'high' && (action === 'fix' || object === 'bug')) return 'bugfix-hotfix'; // Style-first routing if (style === 'tdd') return 'tdd'; if (style === 'collaborative' && action === 'plan') return 'collaborative-plan'; if (style === 'collaborative' && action === 'analyze') return 'analyze-wave'; if (style === 'collaborative' && action !== 'plan') return 'multi-cli'; if (style === 'iterative' && object === 'test') return 'integration-test'; if (style === 'iterative' && action === 'refactor') return 'refactor'; // Action × Object matrix const matrix = { 'create': { 'project': 'greenfield', 'feature': 'feature', 'spec': 'spec-driven', 'test': 'test-gen', 'doc': 'documentation', 'ui': 'ui-design', 'issue': 'issue-batch', '_default': 'feature' }, 'fix': { 'bug': 'bugfix', 'test': 'test-fix', 'issue': 'issue-batch', 'code': 'bugfix', 'security': 'bugfix', '_default': 'bugfix' }, 'analyze':{ 'architecture': 'analyze-file', 'code': 'analyze-file', 'bug': 'debug-file', 'security': 'security', '_default': 'analyze-file' }, 'explore':{ 'feature': 'brainstorm', 'architecture': 'brainstorm', 'issue': 'issue-batch', '_default': 'exploration' }, 'plan': { 'feature': 'feature', 'project': 'greenfield', 'issue': 'issue-transition', '_default': 'feature' }, 'execute':{ 'issue': 'issue-transition', '_default': 'feature' }, 'debug': { 'bug': style === 'documented' ? 'debug-file' : 'debug', '_default': style === 'documented' ? 'debug-file' : 'debug' }, 'test': { 'test': 'test-fix', 'code': 'test-gen', 'feature': 'integration-test', '_default': 'test-gen' }, 'review': { '_default': 'review' }, 'refactor':{ '_default': 'refactor' }, 'convert':{ 'issue': 'brainstorm-to-issue', '_default': 'issue-transition' }, }; // Special compound detections if (action === 'plan' && style === 'structured' && /roadmap/.test(rawInput)) return 'roadmap'; if (/csv.?wave|wave.?pipeline|并行波|波次执行/.test(rawInput)) return 'analyze-wave'; if (object === 'team') return 'team-planex'; if (/ship|release|publish/.test(rawInput)) return 'ship'; const actionMap = matrix[action]; if (!actionMap) return 'feature'; return actionMap[object] || actionMap['_default'] || 'feature'; }
Skills with SKILL.md (spawn_agents_on_csv native): analyze-with-file, brainstorm, brainstorm-with-file, clean, csv-wave-pipeline, debug-with-file, issue-discover, parallel-dev-cycle, project-documentation-workflow, review-cycle, roadmap-with-file, spec-generator, workflow-execute, workflow-lite-planex, workflow-plan, workflow-tdd-plan, workflow-test-fix-cycle, team-planex, team-coordinate, team-lifecycle-v4, team-issue, team-review, team-testing, team-quality-assurance, team-tech-debt, team-perf-opt, team-arch-opt, team-brainstorm, team-ultra-analyze, team-uidesign, team-ui-polish, team-ux-improve, team-visual-a11y, team-frontend, team-frontend-debug, team-interactive-craft, team-motion-design, team-roadmap-dev
Skills with orchestrator.md (phase-based): investigate, security-audit, ship, memory-capture
> All $skill-name references below correspond to actual .codex/skills/{skill-name}/ directories. > B] = barrier skill (solo wave, coordinator analyzes artifacts after)
| task_type | Chain name | Steps (skills, in order) | |-----------|-----------|--------------------------| | bugfix-hotfix | bugfix.hotfix | $workflow-lite-planex --hotfix | | bugfix | bugfix.standard | $investigate → $workflow-lite-planex --bugfix B] → $workflow-test-fix-cycle | | feature (low) | rapid | $workflow-lite-planex B] → $workflow-test-fix-cycle | | feature (high) | coupled | $workflow-plan B] → $workflow-execute → $review-cycle → $workflow-test-fix-cycle | | greenfield | greenfield | $brainstorm-with-file B] → $workflow-plan B] → $workflow-execute → $workflow-test-fix-cycle | | brainstorm | brainstorm-to-plan | $brainstorm-with-file B] → $workflow-plan B] → $workflow-execute → $workflow-test-fix-cycle | | brainstorm-to-issue | brainstorm-to-issue | $brainstorm-with-file B] → $parallel-dev-cycle | | debug-file | debug-with-file | $debug-with-file | | debug | investigate | $investigate | | analyze-file | analyze-to-plan | $analyze-with-file B] → $workflow-lite-planex | | collaborative-plan | collaborative-plan | $brainstorm-with-file B] → $workflow-execute | | roadmap | roadmap | $roadmap-with-file B] → $team-planex | | spec-driven | spec-driven | $spec-generator B] → $workflow-plan B] → $workflow-execute → $workflow-test-fix-cycle | | tdd | tdd | $workflow-tdd-plan B] → $workflow-execute | | test-gen | test-gen | $workflow-test-fix-cycle | | test-fix | test-fix | $workflow-test-fix-cycle | | review | review | $review-cycle → $workflow-test-fix-cycle | | refactor | refactor | $clean | | integration-test | integration-test | $workflow-test-fix-cycle | | multi-cli | multi-cli | $brainstorm → $workflow-test-fix-cycle | | issue-batch | issue | $issue-discover B] → $parallel-dev-cycle | | issue-transition | rapid-to-issue | $workflow-lite-planex --plan-only B] → $parallel-dev-cycle | | team-planex | team-planex | $team-planex | | team-issue | team-issue | $team-issue | | team-qa | team-qa | $team-quality-assurance | | team-review | team-review | $team-review | | team-testing | team-testing | $team-testing | | documentation | docs | $project-documentation-workflow | | security | security | $security-audit | | ui-design | ui | $brainstorm-with-file B] → $workflow-plan B] → $workflow-execute | | exploration | full | $brainstorm → $workflow-plan B] → $workflow-execute → $workflow-test-fix-cycle | | analyze-wave | analyze-wave | $analyze-with-file B] → $csv-wave-pipeline → $workflow-test-fix-cycle | | ship | ship | $ship |
javascriptconst dateStr = new Date().toISOString().substring(0, 10).replace(/-/g, '') const timeStr = new Date().toISOString().substring(11, 19).replace(/:/g, '') const sessionId = `CCW-${dateStr}-${timeStr}` const sessionDir = `.workflow/.ccw-coordinate/${sessionId}` Bash(`mkdir -p ${sessionDir}`)
--continue mode: Glob .workflow/.ccw-coordinate/CCW-*/state.json sorted by name desc; load the most recent; resume from first pending wave.
Fresh mode:
.workflow/state.json for project context (current_phase, workflow_name)--chain is given, use it directly{action, object, scope, style, urgency} from user input using LLM semantic understandingdetectTaskType(intent) matrix to get task_typelow|medium|high) for complexity-adaptive routingAUTO_YES: ask one clarifying question via AskUserQuestionstate.json:javascriptWrite(`${sessionDir}/state.json`, JSON.stringify({ id: sessionId, intent, structured_intent: { action, object, scope, style, urgency }, task_type, complexity, chain: resolvedChain, auto_yes: AUTO_YES, status: "in_progress", started_at: new Date().toISOString(), context: { phase: resolvedPhase, plan_dir: null, analysis_dir: null, brainstorm_dir: null, spec_session_id: null, roadmap_dir: null, tdd_plan_dir: null, issue_dir: null, debug_dir: null, gaps: null }, waves: [], // populated as waves execute steps: CHAIN_STEPS[resolvedChain].map((skill, i) => ({ step_n: i + 1, skill: skill.cmd, args: skill.args ?? '', is_barrier: BARRIER_SKILLS.has(skill.cmd), status: "pending", wave_n: null })) }, null, 2))
--dry-run: Display the chain plan and stop.
Chain: <resolvedChain>
Type: <task_type> | Complexity: <complexity>
Steps:
1. $<cmd> <args> [BARRIER]
2. $<cmd> <args>
3. $<cmd> <args>User confirmation (skip if AUTO_YES): Display the plan above and prompt Proceed? (yes/no).
The coordinator iterates over pending steps, grouping them into waves and executing one wave at a time.
javascriptlet waveNum = 0; while (state.steps.some(s => s.status === 'pending')) { waveNum++; // 1. Determine wave contents const waveSteps = buildNextWave(state.steps); // 2. Assemble skill_call for each step (with latest context) const waveCsv = waveSteps.map((step, i) => ({ id: String(step.step_n), skill_call: buildSkillCall(step, state.context), topic: `Chain "${state.chain}" step ${step.step_n}/${state.steps.length}` })); // 3. Write wave CSV const csvContent = 'id,skill_call,topic\n' + waveCsv.map(r => `"${r.id}","${r.skill_call.replace(/"/g, '""')}","${r.topic}"` ).join('\n'); Write(`${sessionDir}/wave-${waveNum}.csv`, csvContent); // 4. Execute wave spawn_agents_on_csv({ csv_path: `${sessionDir}/wave-${waveNum}.csv`, id_column: "id", instruction: WAVE_INSTRUCTION, max_workers: waveSteps.length > 1 ? waveSteps.length : 1, max_runtime_seconds: 1800, output_csv_path: `${sessionDir}/wave-${waveNum}-results.csv`, output_schema: RESULT_SCHEMA }); // 5. Read results, update step status const results = readCSV(`${sessionDir}/wave-${waveNum}-results.csv`); for (const row of results) { const step = state.steps.find(s => s.step_n === parseInt(row.id)); step.status = row.status; step.findings = row.summary; step.artifacts = row.artifacts; step.wave_n = waveNum; } // 6. Barrier analysis (if wave contained a barrier skill) if (waveSteps.length === 1 && BARRIER_SKILLS.has(waveSteps[0].skill)) { analyzeBarrierArtifacts(waveSteps[0], results[0], state.context); } // 7. Persist state state.waves.push({ wave_n: waveNum, steps: waveSteps.map(s => s.step_n), results }); Write(`${sessionDir}/state.json`, JSON.stringify(state, null, 2)); // 8. Abort on failure if (results.some(r => r.status === 'failed')) { state.status = 'aborted'; state.steps.filter(s => s.status === 'pending').forEach(s => s.status = 'skipped'); Write(`${sessionDir}/state.json`, JSON.stringify(state, null, 2)); break; } }
你是 CSV job 子 agent。
先原样执行这一段技能调用:
{skill_call}
然后基于结果完成这一行任务说明:
{topic}
限制:
- 不要修改 .workflow/.ccw-coordinate/ 下的 state 文件
- skill 内部有自己的 session 管理,按 skill SKILL.md 执行即可
最后必须调用 `report_agent_job_result`,返回 JSON:
{"status":"completed|failed","skill_call":"{skill_call}","summary":"一句话结果","artifacts":"产物路径或空字符串","error":"失败原因或空字符串"}javascriptconst RESULT_SCHEMA = { type: "object", properties: { status: { type: "string", enum: ["completed", "failed"] }, skill_call: { type: "string" }, summary: { type: "string" }, artifacts: { type: "string" }, error: { type: "string" } }, required: ["status", "skill_call", "summary", "artifacts", "error"] };
After a barrier skill completes, the coordinator reads its artifacts and updates state.context:
javascriptconst BARRIER_SKILLS = new Set([ 'analyze-with-file', 'brainstorm-with-file', 'workflow-plan', 'workflow-lite-planex', 'spec-generator', 'roadmap-with-file', 'workflow-tdd-plan', 'issue-discover', 'debug-with-file' ]); function analyzeBarrierArtifacts(step, result, ctx) { const artifactPath = result.artifacts; switch (step.skill) { case 'analyze-with-file': // Read analysis conclusions → extract gaps, phase info const analysisFiles = Glob('.workflow/.analysis/ANL-*/conclusions.json'); const latest = analysisFiles.sort().pop(); if (latest) { const conclusions = JSON.parse(Read(latest)); ctx.analysis_dir = latest.replace('/conclusions.json', ''); ctx.gaps = conclusions.gaps ?? null; if (!ctx.phase) ctx.phase = conclusions.phase ?? null; } break; case 'brainstorm-with-file': ctx.brainstorm_dir = artifactPath; break; case 'workflow-plan': // Read workflow session → know task structure for execute const wfSessions = Glob('.workflow/active/WFS-*/workflow-session.json'); const latestWf = wfSessions.sort().pop(); if (latestWf) { const session = JSON.parse(Read(latestWf)); ctx.plan_dir = latestWf.replace('/workflow-session.json', ''); ctx.task_count = session.tasks?.length ?? 0; } break; case 'workflow-lite-planex': const litePlans = Glob('.workflow/.lite-plan/*/plan.json'); const latestPlan = litePlans.sort().pop(); if (latestPlan) { ctx.plan_dir = latestPlan.replace('/plan.json', ''); ctx.task_count = JSON.parse(Read(latestPlan)).tasks?.length ?? 0; } break; case 'spec-generator': ctx.spec_session_id = artifactPath; break; case 'roadmap-with-file': ctx.roadmap_dir = artifactPath; break; case 'workflow-tdd-plan': ctx.tdd_plan_dir = artifactPath; break; case 'issue-discover': ctx.issue_dir = artifactPath; break; case 'debug-with-file': ctx.debug_dir = artifactPath; ctx.findings = result.summary; break; } }
The coordinator builds each skill_call with resolved context — sub-agents just execute verbatim:
javascriptconst AUTO_FLAG_MAP = { 'brainstorm-with-file': '-y', 'analyze-with-file': '-y', 'debug-with-file': '-y', 'workflow-plan': '-y', 'workflow-lite-planex': '-y', 'workflow-execute': '-y', 'workflow-test-fix-cycle': '-y', 'workflow-tdd-plan': '-y', 'spec-generator': '-y', 'roadmap-with-file': '-y', 'issue-discover': '-y', 'parallel-dev-cycle': '-y', 'review-cycle': '-y', 'clean': '-y', 'brainstorm': '-y', 'csv-wave-pipeline': '-y', }; function buildSkillCall(step, ctx) { let args = (step.args ?? '') .replace(/{intent}/g, state.intent ?? '') .replace(/{phase}/g, ctx.phase ?? '') .replace(/{plan_dir}/g, ctx.plan_dir ?? '') .replace(/{analysis_dir}/g, ctx.analysis_dir ?? '') .replace(/{brainstorm_dir}/g, ctx.brainstorm_dir ?? '') .replace(/{spec_session_id}/g, ctx.spec_session_id ?? '') .replace(/{roadmap_dir}/g, ctx.roadmap_dir ?? '') .replace(/{tdd_plan_dir}/g, ctx.tdd_plan_dir ?? '') .replace(/{issue_dir}/g, ctx.issue_dir ?? '') .replace(/{debug_dir}/g, ctx.debug_dir ?? ''); // Inject intent as first arg if no args present if (!args.trim()) args = `"${state.intent}"`; if (state.auto_yes) { const flag = AUTO_FLAG_MAP[step.skill]; if (flag && !args.includes(flag)) args = args ? `${args} ${flag}` : flag; } return `$${step.skill} ${args}`.trim(); } function buildNextWave(steps) { const pending = steps.filter(s => s.status === 'pending'); if (!pending.length) return []; const first = pending[0]; // Barrier skill → solo wave if (BARRIER_SKILLS.has(first.skill)) return [first]; // Group consecutive non-barriers const wave = [first]; for (let i = 1; i < pending.length; i++) { if (BARRIER_SKILLS.has(pending[i].skill)) break; wave.push(pending[i]); } return wave; }
javascriptstate.status = state.steps.every(s => s.status === 'completed') ? 'completed' : state.status; state.completed_at = new Date().toISOString(); Write(`${sessionDir}/state.json`, JSON.stringify(state, null, 2));
Generate context.md:
markdown# CCW Coordinate Report — {chain} ## Summary - Session: {sessionId} - Chain: {chain} - Type: {task_type} | Complexity: {complexity} - Waves: {waveNum} executed - Steps: {completed}/{total} completed ## Wave Results ### Wave {N} (barrier: {skill}) | Step | Skill Call | Status | Summary | |------|-----------|--------|---------| | {step_n} | {skill_call} | {status} | {summary} | Artifacts: {artifacts} Context update: {what changed}
Display:
=== CCW COORDINATE COMPLETE ===
Session: <sessionId>
Chain: <chain>
Type: <task_type> | Complexity: <complexity>
Waves: <N> executed
Steps: <completed>/<total>
WAVE RESULTS:
[W1] $analyze-with-file -y → ✓ found 3 gaps [BARRIER]
[W2] $workflow-lite-planex -y → ✓ 12 tasks planned [BARRIER]
[W3] $workflow-test-fix-cycle -y → ✓ all tests pass
State: .workflow/.ccw-coordinate/<sessionId>/state.json
Resume: $ccw --continuecsvid,skill_call,topic "1","$analyze-with-file ""fix auth"" -y","Chain ""bugfix.standard"" step 1/3"
| Column | Description | |--------|-------------| | id | Step number from chain (string) | | skill_call | Full skill invocation assembled by coordinator with resolved context | | topic | Brief description for the agent |
csvid,skill,args,wave_n,status,findings,artifacts,error
Accumulated across all waves. Updated after each wave completes.
| Code | Severity | Condition | Recovery | |------|----------|-----------|----------| | E001 | error | Intent unclassifiable after clarification | Default to feature chain (rapid) | | E002 | error | --chain value not in chain map | List valid chains, abort | | E003 | error | Wave timeout (max_runtime_seconds) | Mark step failed, abort chain | | E004 | error | Barrier artifact not found | Retry wave once, then abort | | E005 | error | --continue: no session found | List sessions, prompt | | W001 | warning | Barrier artifact partial | Continue with available context |
state.json before any wavemax_workers = Nskill_call with resolved args--continue finds last completed wave and resumes from next pending stepaction × object × style) not regex for intent classification| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 10,674 | 8,184 | -23% | 1 | 1 | 0% | 1,885 | 9,217 | +389% | 0 | 0 | — |
case-02 | fail→fail | 3,141 | 4,708 | +50% | 1 | 1 | 0% | 486 | 7,876 | +1521% | 0 | 0 | — |
case-03 | fail→pass | 6,408 | 9,473 | +48% | 1 | 1 | 0% | 1,141 | 8,888 | +679% | 0 | 0 | — |
case-04 | fail→fail | 5,577 | 17,287 | +210% | 1 | 1 | 0% | 255 | 8,773 | +3340% | 0 | 0 | — |
case-05 | fail→fail | 2,726 | 11,444 | +320% | 1 | 1 | 0% | 364 | 8,301 | +2180% | 0 | 0 | — |
case-06 | fail→fail | 3,588 | 2,598 | -28% | 1 | 1 | 0% | 689 | 7,898 | +1046% | 0 | 0 | — |
case-07 | fail→fail | 9,387 | 12,036 | +28% | 1 | 1 | 0% | 1,590 | 8,422 | +430% | 0 | 0 | — |
case-08 | fail→fail | 4,626 | 13,625 | +195% | 1 | 1 | 0% | 124 | 8,817 | +7010% | 0 | 0 | — |
case-09 | fail→fail | 6,801 | 10,402 | +53% | 1 | 1 | 0% | 1,213 | 8,188 | +575% | 0 | 0 | — |
case-10 | fail→pass | 21,775 | 11,519 | -47% | 1 | 1 | 0% | 3,593 | 8,632 | +140% | 0 | 0 | — |
case-11 | fail→fail | 32,786 | 16,151 | -51% | 1 | 1 | 0% | 6,159 | 8,987 | +46% | 0 | 0 | — |
case-12 | fail→pass | 17,009 | 17,034 | +0% | 1 | 1 | 0% | 2,832 | 8,709 | +208% | 0 | 0 | — |
case-13 | fail→fail | 18,572 | 11,609 | -37% | 1 | 1 | 0% | 3,073 | 8,407 | +174% | 0 | 0 | — |
case-14 | fail→fail | 9,454 | 13,989 | +48% | 1 | 1 | 0% | 1,483 | 8,563 | +477% | 0 | 0 | — |
case-15 | fail→fail | 4,248 | 5,380 | +27% | 1 | 1 | 0% | 145 | 8,722 | +5915% | 0 | 0 | — |
case-16 | fail→pass | 13,921 | 5,340 | -62% | 1 | 1 | 0% | 2,233 | 8,599 | +285% | 0 | 0 | — |
case-17 | pass→pass | 17,287 | 7,473 | -57% | 1 | 1 | 0% | 2,278 | 9,081 | +299% | 0 | 0 | — |
case-18 | fail→pass | 8,809 | 5,492 | -38% | 1 | 1 | 0% | 1,493 | 8,648 | +479% | 0 | 0 | — |
case-19 | pass→pass | 8,914 | 5,420 | -39% | 1 | 1 | 0% | 1,272 | 8,980 | +606% | 0 | 0 | — |
case-20 | fail→fail | 5,372 | 8,738 | +63% | 1 | 1 | 0% | 858 | 8,244 | +861% | 0 | 0 | — |
case-21 | fail→pass | 16,228 | 13,801 | -15% | 1 | 1 | 0% | 1,943 | 9,434 | +386% | 0 | 0 | — |
case-22 | pass→pass | 12,733 | 6,600 | -48% | 1 | 1 | 0% | 1,723 | 8,947 | +419% | 0 | 0 | — |
case-23 | fail→fail | 13,843 | 11,219 | -19% | 1 | 1 | 0% | 2,618 | 8,344 | +219% | 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. 23 cases were attempted, and 11 counted toward the lift figure. The other 12 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 +30 percentage points is the difference between those two pass rates over the 11 comparable cases.
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.