skillify
“Codify the most recent successful /scrape flow into a permanent browser-skill on disk. (gstack)”
aipkg.jsonLICENSE.txtREADME.mdSKILL.mdSKILL.md.tmpl- 01SQP-285%MEDIUM
SKILL.md.tmpl:301
detailhide
The skill invokes subprocess commands like `$B goto`, `$B html`, `$B skill test`, and `$B skill list` without explicit documentation of what these commands are, where they come from, or validation of their safety. An attacker controlling the gstack environment could inject malicious behavior. The skill also uses Bash and shell redirection without clearly documenting potential injection vectors.
299to `$B skill test` next, then to `commitSkill` or `discardStaged`.300301## Step 8 — Run `$B skill test` against the staged dir302303```bashfix (1) Document that all `$B` commands are invocations of the gstack CLI and validate the path to the gstack binary before use. (2) Use array-form subprocess calls (not shell strings) to prevent command injection. (3) Add explicit user warnings in step descriptions whenever executing external tools. (4) Validate SDK path resolution results before reading/writing files with them.
- 02SQP-288%LOW
SKILL.md.tmpl:203
detailhide
The SDK path resolution logic attempts multiple candidates but provides minimal error handling guidance. If the resolution fails or returns a compromised path, the skill will read potentially untrusted code into the staged skill directory via `sdkContents`. No validation confirms the resolved path is actually the canonical SDK, nor does it verify the file contents before copying to `_lib/browse-client.ts`.
201```202203## Step 6 — Resolve the canonical SDK path + read it204205The canonical SDK lives at `<gstack-install>/browse/src/browse-client.ts`.fix (1) Add cryptographic integrity checks (hash verification) for the resolved SDK file. (2) Log the resolved path and show it to the user for approval before reading/staging. (3) Verify the SDK file is owned by the gstack installation process. (4) Fail explicitly with clear messaging if resolution candidates don't exist rather than silently falling through.