Back to skill

Security audit

Test Publish Check

Security checks for vulnerabilities and agentic risk

Overview

The release-checklist prompts are mostly coherent, but an included utility silently stores command inputs/history locally and claims removal without deleting the stored data.

Review before installing. The checklist generator itself is low risk, but avoid passing secrets, tokens, internal hostnames, or sensitive release details to the included utility commands because they may be saved under the local test-publish-check data directory. Do not rely on its remove command to erase stored records; inspect and delete the local data files manually if needed.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/script.sh:4
Finding

Undisclosed Persistent Storage and Raw Activity Logging

Content
View full analysis
> "$DATA_DIR/history.log"; } ``` ```bash cmd_list() { [ -f "$DB" ] && cat "$DB" || echo " (empty)" _log "list" "${1:-}" } cmd_add() { echo "$(date +%Y-%m-%d) $*" >> "$DB"; echo " Added: $*" _log "add" "${1:-}" } ``` ### Technical Analysis The script creates a persistent data directory and stores user-supplied content in `data.log`. It also silently records command activity and the first supplied argument in `history.log`. This behavior is not aligned with the functionality documented in `SKILL.md`, which presents the skill as a generator of release-readiness checklists for code, APIs, deployment, versioning, launches, and regression tests. The documentation does not disclose that user input or command activity may be retained on disk. The storage destination is derived from `TEST_PUBLISH_CHECK_DIR`, `XDG_DATA_HOME`, or the user's home directory. Consequently, data can persist across executions and outside the audited project directory. Raw arguments are written without data classification, redaction, retention controls, or restrictive file permissions. This is not agent memory poisoning because the stored content is not shown to be loaded as future agent instructions. It is an insecure data-handling and privacy practice. ### Attack Path 1. A user or agent invokes `scripts/script.sh`, believing it provides the documented release-checking functionality. 2. The script creates a persistent directory under the configured data path. 3. The caller executes ...[truncated 1203 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/script.sh:54
Finding

Removal Command Falsely Reports Success Without Deleting Stored Data

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (12)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The description contains broad activation language such as 'Use when you need test publish check capabilities' and 'Use before releasing any software, website, app, or content to production,' which can cause the skill to trigger outside a narrowly defined invocation. Overbroad routing is dangerous because it can hijack unrelated release, QA, or deployment conversations, causing unintended skill execution and reducing user control over which tool is invoked.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

This shell script embeds natural-language instructions that require the model to 'Use Chinese' for generated output. The policy allows locale constraints only when the user can opt in or when the restriction is clearly justified, neither of which is present here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

This prompt mandates 'Use Chinese' for API checklist generation. Because the file provides no opt-in or rationale for restricting output language, it violates the language/locale policy for natural-language behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The deploy checklist prompt explicitly instructs the model to respond in Chinese. There is no indication that this is optional or required for a specific region-specific compliance context, so it constitutes a locale policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The version-management prompt requires Chinese output while offering no alternative language path. Under the stated policy, mandatory language restrictions need user opt-in or clear justification, which is absent here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

This launch-day checklist prompt directs the model to produce output in Chinese only. Because the file does not present this as an opt-in preference or justify it as region-specific, it violates the language/locale policy.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The regression-test prompt mandates Chinese output in a hard-coded way. The policy permits such constraints only with user choice or a documented, justified locale restriction, neither of which appears in this file.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The help text presents a multi-command utility with commands like 'remove', 'init', and 'config', implying meaningful operational behavior. In the implementation, several of these commands only print a message and append to a history log, while 'remove' does not modify stored data at all, which contradicts the apparent intent communicated to users.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The helper appends command names and arguments to "$DATA_DIR/history.log", and the script also persists entries to "$DB". While there is some runtime output for commands, there is no warning in comments, docstrings, or help text that user input and activity will be stored on disk, which is relevant to user data and privacy expectations.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The add command appends the user's supplied arguments directly into the data log file and only reports that an item was added, not that it is being permanently written to disk. The help text describes the tool only as a "Multi-purpose utility tool" and does not warn that user-provided content is stored locally.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This markdown file presents its operational guidance entirely in Chinese, including section headings and instructions, but does not state that the skill is region-specific or provide any user opt-in for language preference. Under the policy, forcing a specific language without user choice can be a natural-language policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The file presents core skill description and instructions in both Chinese and English, but does not state whether the skill adapts to the user's preferred language or requires a specific locale. This can violate language/locale policy expectations when no opt-in or selection mechanism is documented.

Content

No source excerpt is available for this finding.