github-workflow-automation

github.com/davila7/claude-code-templates
Verdict: Proceed with caution
0 critical4 high7 medium
C
SCORE 55 / 100
$skillox install github-workflow-automationSoon
Sign in to followFollowing emails you when a re-scan drops the grade. Opt-out is per-creator on /account/billing.

Why grade C?

score · 55 / 100

The current grade reflects 4 high-severity findings (3+ HIGHs → C).

0 CRIT4 HIGH7 MED0 LOW
To reach a higher grade
  • B
    Reach Btarget score 75

    Resolve 2 of 4 HIGH (cap is 2) + 2 of 7 MED (cap is 5).

  • A
    Reach Atarget score 95

    Resolve all 4 HIGH + 5 of 7 MED (cap is 2).

Thresholds are documented at /docs/grading. Source-of-truth is the grade() function in @skillox/scanner.

Latest scan findings

Scan crawl-o0o2o8xp24yvp0xdyngc5o6f · Thu, 28 May 2026 17:41:55 GMT · 3ms

high
Shell-injection vector: child_process exec/spawn with template literal
The skill constructs a shell command by interpolating into a string passed to an exec-family function (`child_process exec/spawn with template literal`). If the interpolated value comes from agent context or user input, this is direct command injection. Use parameterized APIs (`spawn` with an arg-array, `subprocess.run([...])` without `shell=True`).
rule: shell-injection-templateline: 559CWE-78
557async function smartCherryPick(commitHash: string, targetBranch: string) {
558 // Get commit info
559 const commitInfo = await exec(`git show ${commitHash} --stat`);child_process exec/spawn with template literal — use a parameterized API instead
560
561 // Check for potential conflicts
high
Shell-injection vector: child_process exec/spawn with template literal
The skill constructs a shell command by interpolating into a string passed to an exec-family function (`child_process exec/spawn with template literal`). If the interpolated value comes from agent context or user input, this is direct command injection. Use parameterized APIs (`spawn` with an arg-array, `subprocess.run([...])` without `shell=True`).
rule: shell-injection-templateline: 583CWE-78
581 `git checkout -b cherry-pick-${commitHash.slice(0, 7)} ${targetBranch}`
582 );
583 const result = await exec(`git cherry-pick ${commitHash}`, {child_process exec/spawn with template literal — use a parameterized API instead
584 allowFail: true,
585 });
high
Shell-injection vector: child_process exec/spawn with template literal
The skill constructs a shell command by interpolating into a string passed to an exec-family function (`child_process exec/spawn with template literal`). If the interpolated value comes from agent context or user input, this is direct command injection. Use parameterized APIs (`spawn` with an arg-array, `subprocess.run([...])` without `shell=True`).
rule: shell-injection-templateline: 596CWE-78
594 }
595 } else {
596 await exec(`git checkout ${targetBranch}`);child_process exec/spawn with template literal — use a parameterized API instead
597 await exec(`git cherry-pick ${commitHash}`);
598 }
high
Shell-injection vector: child_process exec/spawn with template literal
The skill constructs a shell command by interpolating into a string passed to an exec-family function (`child_process exec/spawn with template literal`). If the interpolated value comes from agent context or user input, this is direct command injection. Use parameterized APIs (`spawn` with an arg-array, `subprocess.run([...])` without `shell=True`).
rule: shell-injection-templateline: 597CWE-78
595 } else {
596 await exec(`git checkout ${targetBranch}`);
597 await exec(`git cherry-pick ${commitHash}`);child_process exec/spawn with template literal — use a parameterized API instead
598 }
599}
med
Arbitrary subprocess execution detected
The skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.
rule: subprocess-executionline: 559CWE-78
557async function smartCherryPick(commitHash: string, targetBranch: string) {
558 // Get commit info
559 const commitInfo = await exec(`git show ${commitHash} --stat`);spawns a subprocess outside declared capabilities
560
561 // Check for potential conflicts
med
Arbitrary subprocess execution detected
The skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.
rule: subprocess-executionline: 562CWE-78
560
561 // Check for potential conflicts
562 const targetDiff = await exec(spawns a subprocess outside declared capabilities
563 `git diff ${targetBranch}...HEAD -- ${affectedFiles}`
564 );
med
Arbitrary subprocess execution detected
The skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.
rule: subprocess-executionline: 580CWE-78
578 if (analysis.willConflict) {
579 // Create branch for manual resolution
580 await exec(spawns a subprocess outside declared capabilities
581 `git checkout -b cherry-pick-${commitHash.slice(0, 7)} ${targetBranch}`
582 );
med
Arbitrary subprocess execution detected
The skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.
rule: subprocess-executionline: 583CWE-78
581 `git checkout -b cherry-pick-${commitHash.slice(0, 7)} ${targetBranch}`
582 );
583 const result = await exec(`git cherry-pick ${commitHash}`, {spawns a subprocess outside declared capabilities
584 allowFail: true,
585 });
med
Arbitrary subprocess execution detected
The skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.
rule: subprocess-executionline: 596CWE-78
594 }
595 } else {
596 await exec(`git checkout ${targetBranch}`);spawns a subprocess outside declared capabilities
597 await exec(`git cherry-pick ${commitHash}`);
598 }
med
Arbitrary subprocess execution detected
The skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.
rule: subprocess-executionline: 597CWE-78
595 } else {
596 await exec(`git checkout ${targetBranch}`);
597 await exec(`git cherry-pick ${commitHash}`);spawns a subprocess outside declared capabilities
598 }
599}
med
No capability manifest declared
The skill ships without a `manifest.yaml` or `capabilities` block in its frontmatter. Without a manifest, the runtime cannot enforce what this skill is permitted to do.
rule: no-manifest
View latest scan →
skillox.io/c/github-workflow-automation