[FEATURE] Make Workflow scripts (.claude/workflows/*.js) a distributable plugin component

Status Fixed / completed
Maintainer reply ✓ Yes — bcherny
Activity 3 comments · opened Jun 7, 2026 · closed Aug 17, 2026
💡 Likely answer: A maintainer (bcherny, collaborator) responded on this thread — see the highlighted reply below.

Preflight Checklist

  • [x] I have searched existing requests and the closest prior issues are #63876 and #59069 — both differ from this request. See "Differentiation from prior issues" at the bottom.
  • [x] This is a single feature request (not multiple features)

Problem Statement

The Workflow tool runs deterministic orchestration scripts (.claude/workflows/*.js) — fan-out with parallel(), pipelining with pipeline(), loop-until-dry, budget-scaled agent fleets, structured-output schemas. These are among the most powerful automation primitives in Claude Code, but they are project-local and non-distributable.

A plugin can today bundle skills, agents, commands, hooks, MCP servers, LSP servers, and monitors — but not workflow scripts. So there is no supported way to share a workflow with a team or the community through a marketplace; the available workarounds (covered under Alternatives) are all either lossy or manual.

This is compounded by #63876: even user-global ~/.claude/workflows/ scripts aren't resolvable by name today, so cross-project reuse is broken before you even get to distribution.

Proposed Solution

Add workflows as a first-class plugin component, exactly analogous to skills / agents:

  1. Plugin layout — a workflows/ directory (or a "workflows": "./path/" field in plugin.json), auto-discovered like other components.
  2. Named invocation — plugin-provided workflows resolve by namespaced name (plugin-name:workflow-name), consistent with how skills and commands already namespace, and show up in /workflows.
  3. Distribution rides existing rails — no new marketplace mechanism needed. A workflow ships inside a plugin, and marketplace.json + /plugin install distribute it like any other component, with the same versioning and update story.
  4. Name resolution fix (ties to #63876) — workflows should be dispatchable by name, not only by scriptPath, for both plugin-provided and user-global scripts.

This keeps the workflow as a workflow — deterministic JS intact — while making it versionable, discoverable, team-installable, and updatable.

Alternative Solutions

  1. Repackage the orchestration as a skill or agent. This is the core reason the feature is needed: a skill/agent only describes intent to the model, whereas a workflow guarantees the orchestration shape (loops, barriers, pipelines, budget logic). Rewriting a workflow as a skill throws away exactly the deterministic control flow that motivated using a workflow in the first place. They are not interchangeable.
  2. Manually copy the .js into each project's .claude/workflows/. No versioning, no update path, no namespacing, no discovery — doesn't scale past one machine.
  3. Ship the script via a plugin bin/ executable that writes it into .claude/workflows/. Hacky, bypasses /workflows integration, and reintroduces the #63876 name-resolution gap.

None of these let a team install a workflow, as a workflow, from a marketplace.

Priority

Medium - Would be very helpful

Feature Category

Plugins and marketplace / extensibility

Use Case Example

Our team maintains a review-changes workflow — the canonical "review across dimensions in parallel → adversarially verify each finding → synthesize" pipeline. We want every engineer to get it via our internal team marketplace: versioned, namespaced, and updatable with /plugin install review-tools@team-marketplace, then invoked as /workflows → review-tools:review-changes, pinned to a version and updatable upstream. There is currently no way to distribute it as a workflow.

Additional Context — Differentiation from prior issues

| Issue | State | What it asks for | Why this FR is different |
|-------|-------|------------------|--------------------------|
| #63876 | OPEN (bug) | scriptPath dispatch drops args; user-global ~/.claude/workflows/ not resolvable by name | Scoped as a local-resolution bug. This FR is the broader capability — workflows as a distributable plugin component. #63876's fix is necessary plumbing for this, referenced as a dependency, not a duplicate. |
| #59069 | OPEN (feature) | User-side namespace alias for a plugin that wraps a workflow-as-skills | Presupposes you've already repackaged your workflow into skills and just want shorter typing. This FR removes the need to repackage at all — ship the workflow script itself. Orthogonal: both could land independently. |
| #16932 / #42167 | CLOSED | Chaining/composing plugin commands into a workflow at runtime | About runtime composition of commands, not packaging/distributing a workflow script. Different layer. |

Putting these together, the unclaimed gap is precisely: a workflow script as a versioned, namespaced, marketplace-installable plugin component — which no existing issue requests.

Drafted with Claude AI and manually reviewed by me before submitting.

View original on GitHub ↗

3 Comments

2underscores · 3 months ago

+1. The lack of plugin support means we've had to move away from using dynamic workflows entirely, and instead using script approaches that bundle in plugin scripts - Using scripts with claude-agent-sdk for claude integration, and now looking at other libs entirely like langgraph. These work well, but pull us away from plugins in a few places.

Use cases we have is for large numbers of LLM evals/QA/info extraction that run in parallel on different kinds of internal tickets and customer interations.

bcherny collaborator · 2 months ago

Good news — this shipped in a recent release. Plugins can now bundle workflow scripts: put them in a workflows/ directory at the plugin root (or point the workflows field in plugin.json at another path). They're namespaced by plugin name, so a plugin acme-tools with a workflow whose meta.name is release-audit runs as /acme-tools:release-audit, and they distribute through marketplaces like any other component. Personal workflows in ~/.claude/workflows/ also resolve in every project.

Docs: https://code.claude.com/docs/en/workflows#distribute-a-workflow-in-a-plugin and https://code.claude.com/docs/en/plugins-reference — changelog: https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md

🤖 Generated with Claude Code

github-actions[bot] · 9 days ago

This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.