Skip to content

fix(plugin): register skills/commands in plugin.json and harden plugin-abilities#296

Open
darrenhinde wants to merge 2 commits intomainfrom
fix/command-dispatch-and-plugin
Open

fix(plugin): register skills/commands in plugin.json and harden plugin-abilities#296
darrenhinde wants to merge 2 commits intomainfrom
fix/command-dispatch-and-plugin

Conversation

@darrenhinde
Copy link
Copy Markdown
Owner

Summary

  • Fixes [BUG] Claude Code plugin not working #281: Claude Code plugin skills not recognized — added skills (12) and commands (6) arrays to plugin.json so Claude Code can discover them
  • Addresses [TRACKING] Upstream opencode issue: slash command dispatcher crashes with command3.agent #285: Hardened plugin-abilities prototype — expanded types, executor, and execution manager to be internally consistent and secure (note: the actual command3.agent crash is in the OpenCode CLI binary, not this repo)
  • Fixed external-scoutexternal-research naming throughout README, updated counts, added explicit name: frontmatter to 3 command files
  • Added shell-escape interpolation to prevent command injection, prototype pollution guards, abort signal for cancellation

Test plan

  • 87/87 bun tests passing across 7 test files
  • Verify Claude Code recognizes all 12 skills after plugin install
  • Verify all 6 commands are discoverable via /oac:help, /brainstorm, /debug, etc.
  • Verify /external-research works (not /external-scout)

🤖 Generated with Claude Code

darrenhinde and others added 2 commits March 25, 2026 00:11
…n-abilities (#285, #281)

- Add skills (12) and commands (6) arrays to plugin.json so Claude Code
  discovers them (#281)
- Fix external-scout → external-research naming throughout README
- Add explicit name: frontmatter to 3 command files
- Expand plugin-abilities types to cover all 5 step types (agent, skill,
  approval, workflow, script) with full Ability and ExecutorContext definitions
- Rewrite executor to handle all step types with shell-escape interpolation
  to prevent command injection, prototype pollution guards, abort signal
  for cancellation, step output forwarding, and conditional execution
- Add cancelActive/onSessionDeleted/get/list to ExecutionManager
- Add null safety in plugin.ts getStepInstructions, clear stale state on
  re-initialize, remove redundant type casts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- cancelActive() no longer double-aborts; delegates to cancel() which
  owns both abort signal and state mutation
- onSessionDeleted() and cleanup() now abort the controller so in-flight
  execution loops actually stop
- Set activeExecution before awaiting executeAbility so getActive()
  returns a live reference during execution (fixes chat-context injection)
- Add early abort check in executeAbility before the step loop starts
- opencode-plugin.ts uses cancelActive() instead of cancel()

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] Claude Code plugin not working

1 participant