github-workflow-automation
github.com/sickn33/antigravity-awesome-skills
Scanned Thu, 28 May 2026 17:14:39 GMT
Scan ID crawl-d5uu66ev7skdoqw8j4l9ps71 · 4ms
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 / 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.

Findings · ordered by severity

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: 562CWE-78
560async function smartCherryPick(commitHash: string, targetBranch: string) {
561 // Get commit info
562 const commitInfo = await exec(`git show ${commitHash} --stat`);child_process exec/spawn with template literal — use a parameterized API instead
563
564 // 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: 586CWE-78
584 `git checkout -b cherry-pick-${commitHash.slice(0, 7)} ${targetBranch}`
585 );
586 const result = await exec(`git cherry-pick ${commitHash}`, {child_process exec/spawn with template literal — use a parameterized API instead
587 allowFail: true,
588 });
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: 599CWE-78
597 }
598 } else {
599 await exec(`git checkout ${targetBranch}`);child_process exec/spawn with template literal — use a parameterized API instead
600 await exec(`git cherry-pick ${commitHash}`);
601 }
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: 600CWE-78
598 } else {
599 await exec(`git checkout ${targetBranch}`);
600 await exec(`git cherry-pick ${commitHash}`);child_process exec/spawn with template literal — use a parameterized API instead
601 }
602}
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
560async function smartCherryPick(commitHash: string, targetBranch: string) {
561 // Get commit info
562 const commitInfo = await exec(`git show ${commitHash} --stat`);spawns a subprocess outside declared capabilities
563
564 // 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: 565CWE-78
563
564 // Check for potential conflicts
565 const targetDiff = await exec(spawns a subprocess outside declared capabilities
566 `git diff ${targetBranch}...HEAD -- ${affectedFiles}`
567 );
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 if (analysis.willConflict) {
582 // Create branch for manual resolution
583 await exec(spawns a subprocess outside declared capabilities
584 `git checkout -b cherry-pick-${commitHash.slice(0, 7)} ${targetBranch}`
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: 586CWE-78
584 `git checkout -b cherry-pick-${commitHash.slice(0, 7)} ${targetBranch}`
585 );
586 const result = await exec(`git cherry-pick ${commitHash}`, {spawns a subprocess outside declared capabilities
587 allowFail: true,
588 });
med
Arbitrary subprocess execution detected
The skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.
rule: subprocess-executionline: 599CWE-78
597 }
598 } else {
599 await exec(`git checkout ${targetBranch}`);spawns a subprocess outside declared capabilities
600 await exec(`git cherry-pick ${commitHash}`);
601 }
med
Arbitrary subprocess execution detected
The skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.
rule: subprocess-executionline: 600CWE-78
598 } else {
599 await exec(`git checkout ${targetBranch}`);
600 await exec(`git cherry-pick ${commitHash}`);spawns a subprocess outside declared capabilities
601 }
602}
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
Scan another →Share
skillox.io/r/crawl-d5uu66ev7skdoqw8j4l9ps71