Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Chain-based CCW workflow orchestrator. Intent analysis, workflow routing, and Skill pipeline execution via progressive chain loading. Triggers on "ccw chain", "chain ccw", "workflow chain".
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-16 | ✗→✓ | ▲ Improved | — | — |
| case-04 | ✗→✓ | ▲ Improved | — | — |
| case-12 | ✗→✓ | ▲ Improved | — | — |
| case-05 | ✗→✓ | ▲ Improved | — | — |
| case-06 | ✗→✓ | ▲ Improved | — | — |
Chain-based workflow orchestrator using chain_loader for progressive step loading and LLM-driven decision routing.
chain_loader list — list all chains with triggers, entries, and descriptionstriggers.task_types / triggers.keywordschain_loader inspect — preview chain node graph and available entrieschain_loader start — begin from default entry, named entry (entry_name), or any node (node)When chain_loader delivers a step node with a skill/command doc:
Skill(skill_name, args)args = "${analysis.goal}"args = "" (auto-receives session context)--bugfix, --hotfix, --plan-only)-y to argsSkill(skill_name, args) — blocking, wait for completionchain_loader done to proceed to next stepjavascriptconst autoYes = /\b(-y|--yes)\b/.test($ARGUMENTS); function assembleCommand(skillName, args, previousResult) { if (!args && previousResult?.session_id) { args = `--session="${previousResult.session_id}"`; } if (autoYes && !args.includes('-y') && !args.includes('--yes')) { args = args ? `${args} -y` : '-y'; } return { skill: skillName, args }; }
-y / --yes)-y injected into every downstream Skill callWhen chain_loader returns delegate_depth > 0:
returned_from_delegate: true, resume parent chain contextWhen chain_loader start returns preloaded_keys:
chain_loader content for the entire sessionAfter each chain_loader done, call chain_loader visualize to show progress. Display the visualization in execution log for user awareness.
Intent analysis results (task_type, goal, auto_yes) are stored as chain variables. assembleCommand() reads variables from chain_loader status for Skill args. Variables automatically flow through delegation via pass_variables/receive_variables.
When the current chain is a skill-level chain (entered via delegation from a category chain):
Skill() callskill-context for orchestration patterns (TodoWrite, data flow, error handling)ccw-chain/chains/ — routing and orchestration (ccw-main, ccw-standard, etc.).claude/workflow-skills/*/chains/ — skill-level chains with phase content.claude/skills/*/phases/ — original phase files, referenced via @skills/ prefixfindChainAcrossSkills() fallback@phases/ = skill-relative, @skills/ = project .claude/skills/ relative| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
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 19 counted toward the lift figure. The other 3 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 +50 percentage points is the difference between those two pass rates over the 19 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.