benchmark
“Performance regression detection using the browse daemon. (gstack)”
aipkg.jsonLICENSE.txtREADME.mdSKILL.mdSKILL.md.tmpl- 01SDI-185%MEDIUM
SKILL.md:33
detailhide
The skill's declared purpose is 'Performance regression detection using the browse daemon.' However, the preamble (lines 33-122) executes extensive telemetry collection, configuration management, session persistence, upgrade checks, and analytics logging—none of which are necessary for benchmarking. This creates scope creep that violates the principle of least privilege: the user invokes /benchmark expecting performance measurement, but the skill silently collects usage data, tracks sessions, manages state files, and makes network calls to check for upgrades. An attacker or compromised skill could exploit this pattern to exfiltrate behavioral data or inject malicious configuration.
31## Preamble (run first)3233```bash34_UPD=$(~/.claude/skills/gstack/bin/gstack-update-check 2>/dev/null || .claude/skills/gstack/bin/gstack-update-check 2>/dev/null || true)35[ -n "$_UPD" ] && echo "$_UPD" || truefix 1. Extract all telemetry, config, and state management into a separate 'gstack-core' preamble. 2. The benchmark skill should only run setup checks for the browse daemon and performance metrics. 3. If telemetry is necessary, move it to a centralized location that the user explicitly opts into once, not per-skill invocation. 4. Document in SKILL.md exactly which operations are 'core to the skill' vs 'framework overhead'.
- 02SDI-280%MEDIUM
SKILL.md:64
detailhide
Lines 64-88 execute analytics logging to ~/.gstack/analytics/skill-usage.jsonl, telemetry configuration checks, and session tracking without any user interaction or consent within the skill invocation itself. The preamble assumes telemetry is 'gated on telemetry setting' (line 67), but earlier prompts (lines 191-212) show this gate can be set without the user's active agreement in the current session. A skill invocation that produces no visible output to the user but logs behavioral data is a privacy violation and a supply-chain risk vector.
62_QUESTION_TUNING=$(~/.claude/skills/gstack/bin/gstack-config get question_tuning 2>/dev/null || echo "false")63echo "QUESTION_TUNING: $_QUESTION_TUNING"64mkdir -p ~/.gstack/analytics65if [ "$_TEL" != "off" ]; then66echo '{"skill":"benchmark","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || echo "unknown")'"}' >> ~/.gstack/analytics/skill-usage.jsonl 2>/dev/null || truefix 1. Move all telemetry/analytics initialization to an explicit setup phase, not preamble. 2. Require user opt-in (AskUserQuestion) before logging any data in the first invocation of any skill in a session. 3. Respect the user's telemetry choice but do not silently log 'skill-usage.jsonl' in preamble—make this a post-workflow step only. 4. Audit ~/.gstack/analytics/skill-usage.jsonl to verify no data is logged without explicit consent.
- 03SDI-375%MEDIUM
SKILL.md:10
detailhide
The skill's declared allowed-tools are Bash, Read, Write, Glob, and AskUserQuestion. However, the preamble invokes binaries from ~/.claude/skills/gstack/bin/ (gstack-update-check, gstack-config, gstack-repo-mode, gstack-telemetry-log, etc.) which are not listed as allowed tools. This is a permission boundary violation: the skill claims it can only use Bash to call external commands, but actually invokes a private binary ecosystem that is not declared. An attacker could replace these binaries with malicious versions, and the skill would execute them without scrutiny.
08 - check page speed09 - detect performance regression10allowed-tools:11 - Bash12 - Readfix 1. Explicitly declare all external binary dependencies in allowed-tools or a new 'external-binaries' section. 2. Add cryptographic checksums (sha256) for each ~/.claude/skills/gstack/bin/* binary so the preamble can verify integrity before execution. 3. If these binaries are 'framework' dependencies, move them out of the skill's preamble and into a separate trusted initialization phase that runs once per session, not per-skill. 4. Document what each binary does and why it is necessary for this skill.