Versioned security assessment

Report ID: SA-1B5B6C49

7/19/2026, 3:42:50 AM

Command Development security assessment v9

Skill Security Certification Report

Audit History
Scanner version 3.0.0 Audit model: codex Latest published report
Skill name
Command Development
Version
v0.2.0
Maintainer
anthropics
Coverage
11 Files scanned · 7,237 Lines analyzed
Policy version
skillstore-security-audit-policy-v1

Highest confirmed finding severity

Medium

1 confirmed security finding requires attention.

Installation context

Check the current Skill page

This page summarizes report evidence only. The Skill page provides the canonical install advisory.

Open current Skill page

This report does not block or authorize the manifest or ZIP.

Most static detections are Markdown formatting, expected Claude paths, test syntax, or documentation links. Multiple executable templates directly interpolate positional arguments into shell text, creating command-injection risk. Predictable temporary files and repeated Bash(*) grants add avoidable exposure, but no prompt injection or covert exfiltration intent was found. Static review was capped at 400/429 representative findings; omitted static matches are unconfirmed, so automatic publishing stays disabled until manual review.

Report position

Latest published report

Latest refers to the report sequence, not to artifact currentness.

Audit attestation

Attestation unavailable

No public attestation is available for this report.

Human verification

Not verified

No human verification is recorded for this report.

Coverage

11 Files scanned · 7,237 Lines analyzed

42 items shown for review

Limitations

This report does not claim runtime or sandbox execution and does not prove the absence of side effects.

Evidence chain

Follow the evidence from source binding to the install contract. Available evidence supports verification; it is not a safety guarantee.

  1. Source

    Commit and path bound

  2. Artifact

    Content and tree hashes bound

  3. Audit

    Complete

  4. Install contract

    Open manifest to verify

    Open manifest

Capabilities observed

Observed means this report recorded supporting evidence. Not recorded does not prove that a capability is absent.

Contains scripts

May execute code included with the Skill.

Not recorded by this audit

Network access

May connect to external services.

Observed in 8 evidence locations

Filesystem access

May read or write local files.

Observed in 25 evidence locations

Env variables

May read values from the process environment.

Not recorded by this audit

External commands

May invoke commands or programs outside the Skill.

Observed in 66 evidence locations

Capability review items (41)
High
Ruby/shell backtick execution
!`node ${CLAUDE_PLUGIN_ROOT}/scripts/quality-check.js $1`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
!`bash ${CLAUDE_PLUGIN_ROOT}/scripts/security-scan.sh $1`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
!`bash ${CLAUDE_PLUGIN_ROOT}/scripts/perf-analyze.sh $1`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
!`bash ${CLAUDE_PLUGIN_ROOT}/scripts/best-practices.sh $1`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
!`bash ${CLAUDE_PLUGIN_ROOT}/scripts/pre-release-check.sh $1`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
!`bash ${CLAUDE_PLUGIN_ROOT}/scripts/build-release.sh $1`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
!`bash ${CLAUDE_PLUGIN_ROOT}/scripts/package.sh $1`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
Run plugin analyzer: !`node ${CLAUDE_PLUGIN_ROOT}/scripts/analyze.js $1`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
Validate environment argument: !`echo "$1" | grep -E "^(dev|staging|prod)$" && echo "VALID" || echo
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
Verify configuration available: !`test -f ${CLAUDE_PLUGIN_ROOT}/config/$1.json && echo "FOUND" || ec
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
**Execute build:** !`bash ${CLAUDE_PLUGIN_ROOT}/scripts/build.sh $1 2>&1`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
**Validation results:** !`bash ${CLAUDE_PLUGIN_ROOT}/scripts/validate-build.sh $1 2>&1`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
Determine check level: !`echo "$1" | grep -E "^prod$" && echo "FULL" || echo "BASIC"`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
!`node ${CLAUDE_PLUGIN_ROOT}/scripts/script-name.js $1`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
Validate input: !`echo "$1" | grep -E "^pattern$" && echo "OK" || echo "ERROR"`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
Validate: !`echo "$1" | grep -E "^(dev|staging|prod)$" || echo "INVALID"`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
Test execution: !`npm test $1`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
!`gh pr view $1 --json title,body,author,files`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
Files changed: !`gh pr diff $1 --name-only`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
Test status: !`gh pr checks $1`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
Deployment details: !`gh api /deployments/$1`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
Lint results: !`node ${CLAUDE_PLUGIN_ROOT}/bin/lint.js $1`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
Step 1 - Prepare: !`bash ${CLAUDE_PLUGIN_ROOT}/scripts/prepare.sh $1`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
Step 3 - Execute: !`${CLAUDE_PLUGIN_ROOT}/bin/execute $1`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
Run: !`${CLAUDE_PLUGIN_ROOT}/bin/process.sh $1 $2`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
Environment check: !`echo "Deploying to: $1"`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
Stage changes: !\`git add $1\`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
Commit changes: !\`git commit -m "$2"\`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
!`node ${CLAUDE_PLUGIN_ROOT}/scripts/lint.js $1`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
Validate environment: !`echo "$1" | grep -E "^(dev|staging|prod)$" || echo "INVALID"`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
Check file: !`test -f $1 && echo "EXISTS" || echo "MISSING"`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
Validate inputs: !`test -n "$1" -a -n "$2" && echo "OK" || echo "MISSING"`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
Try processing: !`node ${CLAUDE_PLUGIN_ROOT}/scripts/process.js $1 2>&1 || echo "ERROR: $?"`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
Run tests: !`npm test $1`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
1. Fetch PR: !`gh pr view $1`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
High
Ruby/shell backtick execution
Run analysis: !`node ${CLAUDE_PLUGIN_ROOT}/scripts/analyze.js $1`
The executable inline command inserts a positional argument directly into shell text. Crafted input could alter token boundaries or quoting and execute additional shell syntax.
Medium
Temp directory access
echo "Test content" > /tmp/test-file.txt
The example writes to a predictable shared /tmp filename without exclusive creation. A preexisting symlink could redirect the write and clobber another file.
Medium
Temp directory access
echo "Second file" > /tmp/test-file-2.txt
The example writes to a predictable shared /tmp filename without exclusive creation. A preexisting symlink could redirect the write and clobber another file.
Medium
Temp directory access
dd if=/dev/zero of=/tmp/large-file.bin bs=1M count=100
The test writes 100 MB to a fixed path under /tmp using /dev/zero. This can follow a preexisting symlink, overwrite data, or consume unnecessary disk space.
Medium
Temp directory access
rm /tmp/test-file*.txt /tmp/large-file.bin
The cleanup uses a wildcard under a shared temporary directory. It can delete unrelated matching files created by another process or user.
Medium
Standard device file access
dd if=/dev/zero of=/tmp/large-file.bin bs=1M count=100
The test writes 100 MB to a fixed path under /tmp using /dev/zero. This can follow a preexisting symlink, overwrite data, or consume unnecessary disk space.

Risk findings

Confirmed security concerns are separated from items that still need review.

Confirmed security concerns (1)

RISK-001 Medium
Overbroad Shell Permissions in Reusable Templates
Several reusable examples grant Bash(*) despite the skill recommending narrow permissions. Generated commands could therefore run shell operations beyond their stated workflow.
The unrestricted Bash grants are explicit and repeated in reusable command templates. The risk is partially mitigated by separate guidance favoring narrow permissions.

Remediation

Suggested fixes recorded by this audit. Applying them is the maintainer’s responsibility.

  1. FIX-001
    High
    Inline shell templates interpolate raw positional arguments.
    Avoid textual argument insertion into shell commands. Use strict allowlists, safe parameter passing, and shell escaping that cannot be broken by command input.
  2. FIX-002
    Medium
    Static review capped
    Manually review the omitted 29 static analyzer matches or reduce bundled generated/vendor/reference content before enabling automatic publication.
  3. FIX-003
    Medium
    Reusable templates grant unrestricted Bash access.
    Replace Bash(*) with the smallest required command families and remove shell access from templates that only read files or provide instructions.
  4. FIX-004
    Medium
    Testing examples write predictable files under /tmp.
    Create a private directory with mktemp, quote every path, add a cleanup trap, and avoid wildcard deletion in shared temporary directories.

Expert evidence

Immutable subject identity, scanner metadata, dismissed matches, and source-level evidence.

Artifact subject

Marketplace commit
1b5b6c4962b2ad5a7a34603cab2685bbbd1b61ef
Content hash
34a5b317562e909cf259222cc2f097a957f6d6a95f7f70fed705f74c527c2116
Tree hash
0bbddf32c86415d3c718464ad5f757aa23f1724e5ef3c99ea4671085af9b327b
Skill path
skills/command-development
Audit payload hash
346788413a7bfc37db3937dc0cad5379

Analysis metadata

Audit model: codex

Analysis state: Complete

Scope is limited to the recorded files, lines, methods, and evidence. No runtime or sandbox execution is claimed.

Verify and export

The manifest and lockfile bind install artifacts to cryptographic hashes. This integrity claim is separate from the security assessment.

Audit attestation: unavailable