Claude Code now ships a bundled workflow-authoring skill that is registered at startup alongside cowork-setup, loop, schedule-remote-agents, claude-api and claude-code, and pulls itself into a turn when you mention a workflow keyword or enter ultracode with a full reminder. Script-writing guidance now tells the model to load it before writing a script, and the Workflow tool's own instructions open with a hard rule that multi-agent orchestration only runs when you asked for it. Together this means workflows are written with real guidance in context, and are not started behind your back.
- The Workflow tool may only be called after an explicit opt-in: the keyword "ultracode", session-level Ultracode, an explicit request in your own words, a skill or slash command that says to, or a named saved workflow; otherwise the model is told to use the Agent tool, or to estimate the cost and ask you first.
- The tool description embeds a canonical
pipeline()/parallel()example and requires a plain literalexport const meta = {...}. - The skill is unavailable when the entrypoint is
local-agent, whenskillOverridessetsworkflow-authoringtoofforuser-invocable-only, or when a configured skill allow-list excludes it; the Workflow tool then falls back to a shorter description. - Availability is computed once and cached for the session, so changing the override mid-session has no effect until you restart.
- Each autoload fires the
tengu_workflow_authoring_skill_autoloadevent withtriggerset to keyword or ultracode. - Unlike the API and Code skills, which have
CLAUDE_CODE_DISABLE_CLAUDE_API_SKILLandCLAUDE_CODE_DISABLE_CLAUDE_CODE_SKILL, there is no environment variable to disable this one; the skill override is the only switch.
workflow-authoring, registerWorkflowAuthoringSkill, tengu_workflow_authoring_skill_autoload, ONLY call this tool when the user has explicitly opted into multi-agent orchestration.
Strings lifted out of the shipped bundle, so the claim above can be checked against them.
Improved the Workflow tool's prompt footprint: its description is now about 1k tokens instead of 5.7k, with the script-writing reference…