[BUG] Skill tool fails to activate plugin-dev skills - missing build.sh script

Status Closed — not planned
Maintainer reply None cached
Activity 10 comments · opened Nov 23, 2025 · closed Feb 8, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

The Skill tool fails when attempting to activate any skill from the plugin-dev plugin (part of
the claude-code-plugins marketplace) due to a missing build script. This prevents users from
accessing authoritative plugin development guidance during slash command creation, agent
development, and plugin auditing workflows.

Steps to Reproduce

  1. Ensure claude-code-plugins marketplace is installed
  2. Attempt to activate any plugin-dev skill:

Skill --skill plugin-dev:command-development
# or
Skill --skill plugin-dev:agent-development
# or any other plugin-dev skill

  1. Observe error

Expected Behavior

The skill should load and display its content (guidance for command development, agent
development, hook development, etc.) to inform the user's workflow.

Actual Behavior

Error is returned:
Bash command failed for pattern "!bash ~/.claude/plugins/marketplaces/claude-code-pl
ugins/plugins/plugin-dev/scripts/build.sh
": [stderr]
bash: ~/.claude/plugins/marketplaces/claude-code-plugins/plugins/plugin-dev/scripts/b
uild.sh: No such file or directory

Analysis: The Skill tool appears to be attempting to execute a build script to dynamically
generate skill content, but this script doesn't exist in the plugin-dev plugin installation.

Environment

  • Platform: Linux (WSL2)
  • OS Version: Linux 6.6.87.2-microsoft-standard-WSL2
  • Claude Code Version: [current version]
  • Marketplace: claude-code-plugins
  • Plugin: plugin-dev
  • Skill Names Affected: All plugin-dev skills
  • plugin-dev:command-development
  • plugin-dev:agent-development
  • plugin-dev:hook-development
  • plugin-dev:skill-development
  • plugin-dev:mcp-integration
  • plugin-dev:plugin-structure
  • plugin-dev:plugin-settings

Impact

Severity: Medium-High

User Impact:

  • Cannot access authoritative plugin development criteria during audits
  • Slash command and agent creation workflows lack proper guidance
  • Plugin quality validation operates without official standards
  • Users must rely on general knowledge instead of plugin-dev best practices

Workaround: None available - skills simply don't load

Use Case Example

When using /audit-request command to audit a slash command, the specification
requires mandatory skill evaluation:

## MANDATORY SKILL EVALUATION - PHASE 0.5

CRITICAL BLOCKING INSTRUCTION: You MUST complete this skill evaluation
phase BEFORE Phase 1 (Discovery & Parsing). Auditing plugin components
without authoritative skill criteria makes your compliance assessment WORTHLESS.

For EACH skill below, explicitly output:

  • YES with specific reason this skill applies to current audit
  • NO with specific reason this skill doesn't apply

For each skill evaluated as YES, immediately invoke using Skill tool:
```bash
Skill --skill plugin-dev:command-development

This workflow is completely blocked by the missing build script.

### Additional Context

File Path Expected: ~/.claude/plugins/marketplaces/claude-code-plugins/plugins/p
lugin-dev/scripts/build.sh

Possible Root Causes:

  1. The build script was never included in the plugin-dev plugin package
  2. The script exists elsewhere but path configuration is incorrect
  3. The Skill tool is incorrectly trying to execute a build script when it should directly load

skill content

  1. Installation process failed to create/copy the build script

Related Files (if they help):

  • Plugin manifest:

.claude/plugins/marketplaces/claude-code-plugins/plugins/plugin-dev/.claude-plugin/plugin.json

  • Skills directory:

.claude/plugins/marketplaces/claude-code-plugins/plugins/plugin-dev/skills/ (may contain skill
markdown files)

### Suggested Fix

If skills are markdown files in a skills/ directory, the Skill tool should directly read those
files rather than executing a build script. If dynamic generation is required, the build script
should either:

  1. Be included in the plugin package
  2. Have a fallback to read pre-generated content
  3. Be documented in the plugin-dev installation instructions

What Should Happen?

The skill should load and display its content (guidance for command development, agent
development, hook development, etc.) to inform the user's workflow.

Error Messages/Logs

Bash command failed for pattern "!`bash ~/.claude/plugins/marketplaces/claude-code-pl
  ugins/plugins/plugin-dev/scripts/build.sh`": [stderr]
  bash: ~/.claude/plugins/marketplaces/claude-code-plugins/plugins/plugin-dev/scripts/b
  uild.sh: No such file or directory

Steps to Reproduce

Prerequisites

  1. Have Claude Code installed with claude-code-plugins marketplace
  2. Verify plugin-dev plugin exists:

ls ~/.claude/plugins/marketplaces/claude-code-plugins/plugins/plugin-dev

  1. Expected: Shows README.md, agents/, commands/, skills/ directories

Reproduction Steps

Step 1: Attempt to activate the command-development skill
Skill --skill plugin-dev:command-development

Step 2: Observe the error
Bash command failed for pattern "!bash /home/chnzca/.claude/plugins/marketplaces/claude-code-pl
ugins/plugins/plugin-dev/scripts/build.sh
": [stderr]
bash: /home/chnzca/.claude/plugins/marketplaces/claude-code-plugins/plugins/plugin-dev/scripts/b
uild.sh: No such file or directory

Step 3: Verify the build script is indeed missing
ls ~/.claude/plugins/marketplaces/claude-code-plugins/plugins/plugin-dev/scripts/
Expected error: No such file or directory

Step 4: Verify the skill content exists but isn't being loaded
cat ~/.claude/plugins/marketplaces/claude-code-plugins/plugins/plugin-dev/skills/command-develop
ment/SKILL.md | head -20
Expected: Shows complete skill content (proves content exists and doesn't need building)

Expected Behavior

The skill should load and display its content to provide command development guidance.

Actual Behavior

Error about missing build.sh script, skill fails to load despite SKILL.md existing and being
complete.

Affects

All 7 plugin-dev skills:

  • plugin-dev:command-development
  • plugin-dev:agent-development
  • plugin-dev:hook-development
  • plugin-dev:skill-development
  • plugin-dev:mcp-integration
  • plugin-dev:plugin-structure
  • plugin-dev:plugin-settings

Claude Model

None

Is this a regression?

Yes, this worked in a previous version

Last Working Version

2.0.59

Claude Code Version

2.0.50

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

WSL (Windows Subsystem for Linux)

Additional Information

_No response_

View original on GitHub ↗

10 Comments

technicallychudi · 10 months ago

What’s Wrong?

The Skill tool is executing example code embedded in plugin-dev skill documentation (SKILL.md). Inline examples that demonstrate the command execution syntax are being treated as live directives, causing cascading failures (e.g., missing scripts/build.sh, then missing scripts/analyze.js, etc.). This makes plugin-dev skills unusable.

  • I can activate skills from other marketplace plugins without issue.
  • The failures are specific to plugin-dev skills, at minimum plugin-dev:command-development.

Steps to Reproduce

Prereqs

  • Claude Code with marketplace claude-code-plugins installed
  • Plugin location: ~/.claude/plugins/marketplaces/claude-code-plugins/plugins/plugin-dev

Repro

  1. Activate the command-development skill:
  • Skill --skill plugin-dev:command-development
  1. Observe that the Skill tool attempts to run example code from the documentation, first trying a missing build script, then a missing Node script:
  • First error (build script missing):
  • bash: ~/.claude/plugins/marketplaces/claude-code-plugins/plugins/plugin-dev/scripts/build.sh: No such file or directory
  • After creating a dummy scripts/script.sh to bypass one example, a new error appears:
  • Node script missing (executed from a different inline example):
  • See logs below.
  1. Verify the skill content exists and is static markdown:
  • cat ~/.claude/plugins/marketplaces/claude-code-plugins/plugins/plugin-dev/skills/command-development/SKILL.md | head -20
  • Content renders; there’s no need to “build” anything.

Actual Behavior

  • The Skill tool executes documentation examples that use the command execution dialect (! + backticked shell), even when they are clearly presented as fenced code examples in the skill docs.
  • This leads to failing subprocess calls whenever referenced example files do not exist (e.g., scripts/build.sh, scripts/analyze.js).

Example error showing execution of an inline example:

EVALUATE: plugin-dev:command-development

  Evaluation Question: Is the audit target a slash command or command specification?

  My Evaluation: YES - The audit analyzes 34 commands in the linko-metaprompt plugin. Request 113 specifically requires validating command frontmatter (name, description, version, allowed-tools), which are command-specific quality criteria provided by this skill.

  Activating NOW:

  ⎿  Error: Bash command failed for pattern "!`node /home/chnzca/.claude/plugins/marketplaces/claude-code-plugins/plugins/plugin-dev/scripts/analyze.js $1`":
      [stderr]
      node:internal/modules/cjs/loader:1215
        throw err;
        ^
      Error: Cannot find module '/home/chnzca/.claude/plugins/marketplaces/claude-code-plugins/plugins/plugin-dev/scripts/analyze.js'
          at Module._resolveFilename (node:internal/modules/cjs/loader:1212:15)
          at Module._load (node:internal/modules/cjs/loader:1043:27)
          at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:164:12)
          at node:internal/main/run_main_module:28:49

This happens despite the skill being static documentation. It also occurs with other example lines, e.g. !bash ${CLAUDE_PLUGIN_ROOT}/scripts/script.sh.

Expected Behavior

  • Skill docs should render as static guidance. Example code in SKILL.md must not be executed.
  • No subprocesses should be spawned unless a skill explicitly declares a dynamic mode and explicitly opts in to command execution.

Evidence in the Skill File (Examples Being Executed)

Examples from plugin-dev:command-development skill that should be treated as literal examples but are being executed:

```541:549:/home/chnzca/.claude/plugins/marketplaces/claude-code-plugins/plugins/plugin-dev/skills/command-development/SKILL.md
---
description: Analyze using plugin script
allowed-tools: Bash(node:*)
---

Run analysis: node ${CLAUDE_PLUGIN_ROOT}/scripts/analyze.js $1

Review results and report findings.


```555:557:/home/chnzca/.claude/plugins/marketplaces/claude-code-plugins/plugins/plugin-dev/skills/command-development/SKILL.md
# Execute plugin script
!`bash ${CLAUDE_PLUGIN_ROOT}/scripts/script.sh`

There are many similar fenced examples throughout the doc (e.g., ! + backticked commands for git, npm, gh, node, etc.).

Analysis / Likely Root Cause

  • The Skill tool appears to apply the “command execution” dialect (the ! backtick runner and possibly inline backticked commands) to skill documentation. It should not parse or execute those inside skills, particularly inside fenced code blocks meant purely as examples.
  • The behavior suggests the same interpreter used for runnable slash commands is being reused for skill rendering without a safe “docs-only” mode.

Scope

  • Affects at least plugin-dev:command-development. Given similar content patterns, likely affects all plugin-dev skills with executable examples:
  • plugin-dev:agent-development
  • plugin-dev:hook-development
  • plugin-dev:skill-development
  • plugin-dev:mcp-integration
  • plugin-dev:plugin-structure
  • plugin-dev:plugin-settings

Other marketplace plugins’ skills activate normally.

Severity

  • Medium-High: Blocks users from accessing the canonical plugin development guidance that other workflows depend on (command audits, agent creation, plugin QA).

Suggested Fix

Engine-side changes for Skill tool:

  • Do not execute any ! backtick commands or inline backticked shell within skills by default.
  • Treat fenced code blocks as literal text; never execute contents.
  • If “live examples” are ever desired, require an explicit, opt-in frontmatter on the skill (e.g., dynamic: true + explicit allowed-tools), with the default being safe, non-executing render.
  • Consider filtering the execution dialect entirely for skills and only enabling it in actual slash commands.

Optional docs-side hardening (belt-and-suspenders):

  • The plugin-dev skills could add a frontmatter flag (e.g., disable-execution: true) that the Skill tool respects to force safe rendering. But the core fix should be on the Skill tool to avoid executing examples by default.

Environment

  • Platform: Linux (WSL2)
  • OS: Linux 6.6.87.2-microsoft-standard-WSL2
  • Marketplace: claude-code-plugins
  • Plugin: plugin-dev
  • Skills affected: see Scope
  • Claude Code Version: [current version]
  • Regression: Yes (previously worked)
  • Last known good: 2.0.59
  • Current: 2.0.50 (as reported)

Workarounds Tried

  • Creating a dummy scripts/script.sh suppresses one failing example, but execution then cascades to other example commands (e.g., missing scripts/analyze.js). This is not a viable workaround.

What Should Happen?

  • Skills should render their markdown as static guidance. No example code should be executed when a user opens a skill.
technicallychudi · 10 months ago

Update

  • I replaced all runnable example markers in plugin-dev:command-development from leading ! to the literal text “exclamation_mark” (e.g., exclamation_mark\bash ...\`) in skills/command-development/SKILL.md`.
  • After this change, the skill activates successfully and no subprocesses are attempted. This confirms the Skill tool was executing inline examples from the documentation.

Implications

  • The execution parser is being applied to skill documentation. Fenced example blocks and inline backticked examples are not treated as inert text in skills.
  • Other marketplace plugins’ skills still activate normally; this appears specific to plugin-dev skills that include runnable-style examples.

Recommendation

  • Engine: Disable command execution inside skills by default; treat fenced code as literal. If “live examples” are desired, require an explicit opt-in (e.g., dynamic: true + allowed-tools) at the skill level.
  • Plugin content: Until the engine fix ships, replace leading ! in examples with a safe literal (e.g., “exclamation_mark”) or another non-executable token across all plugin-dev skills.
  • Optional guardrails: Add a CI/lint check in the marketplace to flag !-backticked command patterns in skills/**/SKILL.md.

Current Status

  • Workaround verified: plugin-dev:command-development now loads and displays content without errors after replacing ! markers.
  • Request: Please fix the Skill tool’s default behavior and/or update plugin-dev skill docs accordingly; similar changes may be needed in the other six plugin-dev skills.
PaulRBerg · 10 months ago

Also encountering this when trying to use command-development

<img width="1000" src="https://github.com/user-attachments/assets/926eec51-8df7-4dd9-8d25-6d6a6a30f3be" />

kylesnowschwartz · 10 months ago

Replicated on macOS (Darwin 24.6.0) with Claude Code 2.0.60.

Root cause confirmed: The skill files contain ! backtick patterns that are meant as documentation examples showing users how to write their own commands, but the skill loader executes every ! backtick pattern it finds - including ones inside code blocks and example sections.

The problematic patterns in plugins/plugin-dev/skills/command-development/SKILL.md and its referenced files:

Line 547: Run analysis: !`node ${CLAUDE_PLUGIN_ROOT}/scripts/analyze.js $1`
Line 638: Build: !`bash ${CLAUDE_PLUGIN_ROOT}/scripts/build.sh`
Line 639: Test: !`bash ${CLAUDE_PLUGIN_ROOT}/scripts/test.sh`
Line 640: Package: !`bash ${CLAUDE_PLUGIN_ROOT}/scripts/package.sh`
Line 799: - Script: !`test -x ${CLAUDE_PLUGIN_ROOT}/bin/analyze && echo "✓" || echo "✗"`
Line 814: Execute build: !`bash ${CLAUDE_PLUGIN_ROOT}/scripts/build.sh 2>&1 || echo "BUILD_FAILED"`

Plus additional references in examples/plugin-commands.md and references/plugin-features-reference.md.

These are example snippets showing users the syntax for embedding bash in their own commands - they were never intended to be executed. The scripts they reference (analyze.js, build.sh, test.sh, package.sh) don't exist and were never created.

Fix options:

  1. Skill loader should not execute ! patterns inside fenced code blocks or example sections
  2. Escape the ! in documentation examples so they're rendered as literal text
  3. Remove the executable syntax from examples entirely and just show the pattern conceptually
kylesnowschwartz · 10 months ago

cc @dhollman hope you don't mind being tagged in on this issue 🙇

github-actions[bot] · 9 months ago

This issue has been inactive for 30 days. If the issue is still occurring, please comment to let us know. Otherwise, this issue will be automatically closed in 30 days for housekeeping purposes.

kylesnowschwartz · 9 months ago

Still valid.

github-actions[bot] · 8 months ago

This issue has been automatically closed due to 60 days of inactivity. If you're still experiencing this issue, please open a new issue with updated information.

marcindulak · 8 months ago

This issue was closed incorrectly despite recent human comments. This behavior of the bot is reported at https://github.com/anthropics/claude-code/issues/16497. Please upvote that issue, so maybe it gets noticed.

github-actions[bot] · 7 months 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.