[Feature Request] Slash command chaining for plugin composition in workflows

Resolved 💬 3 comments Opened Jan 8, 2026 by MigelAngelEC Closed Feb 28, 2026

Bug Description

Feature Request: Reliable Slash Command Chaining for Complex Workflows

Summary

I'm trying to create custom slash commands that orchestrate multiple plugin commands (like /code-review:code-review, /pr-review-toolkit:review-pr, and /review) into a unified PR review workflow. Currently, there's no reliable way to invoke plugin commands from within custom commands.

Use Case

I'm building a comprehensive PR review workflow that:

  1. Reads project documentation (CLAUDE.md, README.md) to understand team conventions
  2. Fetches existing bot comments (CodeRabbitAI, GitHub Actions) to avoid duplicates
  3. Runs multiple review plugins to get comprehensive analysis:
  • /code-review:code-review
  • /pr-review-toolkit:review-pr
  • /review
  1. Filters duplicate issues that other bots already reported
  2. Posts inline comments via GitHub CLI with only NEW findings

This workflow would save significant time by combining the strengths of multiple review tools while preventing comment spam from duplicate issues.

Current Behavior

When I create a custom command (.claude/commands/pr-review-no-duplicates.md) with instructions like:

---
description: Review PR avoiding duplicates with CodeRabbitAI
allowed-tools: Bash(gh:*), Read, Grep, Glob, SlashCommand
---

## Step 3: Run Review Plugins

Invoke `/code-review:code-review` with instruction: "Analyze only, do not post comments"
Invoke `/pr-review-toolkit:review-pr` with instruction: "Generate report only"
Invoke `/review` with instruction: "Analysis only"

What happens: Claude executes the bash commands and file reads correctly, but never actually invokes the plugin commands. It proceeds as if the plugins don't exist or silently skips them.

Expected Behavior

I would expect one of these to work:

  1. Explicit invocation syntax in command files:

``markdown
@invoke /code-review:code-review
@invoke /pr-review-toolkit:review-pr
``

  1. SlashCommand tool actually invoking plugin commands when instructed in the command file
  1. A chaining mechanism similar to hooks:

```yaml
---
chain:

  • /code-review:code-review
  • /pr-review-toolkit:review-pr
  • /review

---
```

Why This Matters

  • Plugin ecosystem value: Plugins become more powerful when they can be composed into workflows
  • Reduced duplication: Users shouldn't need to copy-paste plugin logic into their own commands
  • Team standardization: Teams could create unified review commands that leverage multiple community plugins
  • Automation: Complex multi-step workflows (review → test → deploy) become possible

Environment

  • Claude Code version: Latest
  • OS: macOS
  • Plugins installed: code-review, pr-review-toolkit

Related Issues

  • #2691 - [Feature-Request] Allow calling (chaining) commands within prompt
  • #8421 - Custom slash command stops after nested SlashCommand call
  • #8499 - Claude thinks slash commands are executing when they are not

Suggested Solution

Either:

  1. Make SlashCommand tool work reliably with plugin commands (not just custom commands)
  2. Add explicit invocation syntax (@invoke, !command, or similar) that guarantees execution
  3. Add chain frontmatter for declarative command sequencing with control over output handling

I'd be happy to help test any proposed solutions. This feature would significantly improve the plugin ecosystem's composability.

---

Submitted by: Miguel
Date: January 2026

Environment Info

  • Platform: darwin
  • Terminal: WarpTerminal
  • Version: 2.1.1
  • Feedback ID: 13bf9570-230c-4980-8bc4-ee60eb1ca753

Errors

[{"error":"Error: NON-FATAL: Lock acquisition failed for /Users/miguel50flowers/.local/share/claude/versions/2.1.1 (expected in multi-process scenarios)\n    at oXR (/$bunfs/root/claude:2994:2164)\n    at WKA (/$bunfs/root/claude:2994:1884)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-08T19:45:47.333Z"}]

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗