github-workflow-automation
github.com/davila7/claude-code-templates
Scanned Thu, 28 May 2026 17:41:55 GMT
Scan ID crawl-o0o2o8xp24yvp0xdyngc5o6f · 3ms
C
SCORE 55 / 100
Verdict: Proceed with caution
4 high-severity findings.
This skill triggers the shell-injection-template rule plus 10 other issues listed below.
0 critical4 high7 medium1 rules passed
Why grade C?
score · 55 / 100The current grade reflects 4 high-severity findings (3+ HIGHs → C).
0 CRIT4 HIGH7 MED0 LOW
To reach a higher grade
- BReach Btarget score 75
Resolve 2 of 4 HIGH (cap is 2) + 2 of 7 MED (cap is 5).
- AReach 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.
Findings · ordered by severity
highShell-injection vector: child_process exec/spawn with template literalThe 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`).▾
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`).
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
highShell-injection vector: child_process exec/spawn with template literalThe 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`).▾
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`).
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 });
highShell-injection vector: child_process exec/spawn with template literalThe 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`).▾
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`).
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 }
highShell-injection vector: child_process exec/spawn with template literalThe 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`).▾
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`).
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}
medArbitrary subprocess execution detectedThe skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.▾
Arbitrary subprocess execution detected
The skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.
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
medArbitrary subprocess execution detectedThe skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.▾
Arbitrary subprocess execution detected
The skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.
560
561 // Check for potential conflicts
562 const targetDiff = await exec(← spawns a subprocess outside declared capabilities
563 `git diff ${targetBranch}...HEAD -- ${affectedFiles}`
564 );
medArbitrary subprocess execution detectedThe skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.▾
Arbitrary subprocess execution detected
The skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.
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 );
medArbitrary subprocess execution detectedThe skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.▾
Arbitrary subprocess execution detected
The skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.
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 });
medArbitrary subprocess execution detectedThe skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.▾
Arbitrary subprocess execution detected
The skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.
594 }
595 } else {
596 await exec(`git checkout ${targetBranch}`);← spawns a subprocess outside declared capabilities
597 await exec(`git cherry-pick ${commitHash}`);
598 }
medArbitrary subprocess execution detectedThe skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.▾
Arbitrary subprocess execution detected
The skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.
595 } else {
596 await exec(`git checkout ${targetBranch}`);
597 await exec(`git cherry-pick ${commitHash}`);← spawns a subprocess outside declared capabilities
598 }
599}
medNo capability manifest declaredThe 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▾
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-manifestskillox.io/r/crawl-o0o2o8xp24yvp0xdyngc5o6f