Back to skill

Security audit

Skill Generator

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent skill-creation toolkit, but its installer and review viewer use risky local behaviors that should be reviewed before use.

Review this before installing. Prefer a pinned or marketplace install, avoid the README's curl-to-bash and PowerShell iex commands, do not use the all-platform installer unless you want persistent changes in every agent environment, and run the eval viewer only on trusted evaluation outputs.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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
Findings (5)

T03 · Remote Payload Retrieval and Execution

Error
Location
README.md:143
Finding

Unverified Remote Script Execution Through Pipe-to-Shell Installation

Content
View full analysis
Remediation
View remediation

T03 · Remote Payload Retrieval and Execution

Error
Location
install.sh:9
Finding

Mutable Remote Repository Content Is Installed Into Persistent Agent Instruction Locations

Content
View full analysis
> "$claude_md" print_success "Appended bridge to existing CLAUDE.md" else print_info "CLAUDE.md already has Skill Creator Ultra bridge" fi else echo "$bridge_text" > "$claude_md" print_success "Created CLAUDE.md with bridge" fi } ``` ### Technical Analysis The installer clones or updates the repository's current default branch without checking out an immutable commit or verifying a signed release. The local `VERSION` variable does not pin the content retrieved from GitHub. The fetched repository is subsequently copied into supported agent configuration locations. Bridge and rule files are also created or appended so future agent sessions l ...[truncated 1507 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Error
Location
eval-viewer/generate_review.py:287
Finding

Evaluation Viewer Automatically Terminates Unrelated Processes Using the Requested Port

Content
View full analysis
None: """Kill any process listening on the given port.""" try: result = subprocess.run( ["lsof", "-ti", f":{port}"], capture_output=True, text=True, timeout=5, ) for pid_str in result.stdout.strip().split("\n"): if pid_str.strip(): try: os.kill(int(pid_str.strip()), signal.SIGTERM) except (ProcessLookupError, ValueError): pass if result.stdout.strip(): time.sleep(0.5) except subprocess.TimeoutExpired: pass except FileNotFoundError: print("Note: lsof not found, cannot check if port is in use", file=sys.stderr) ``` Invocation: ```python # Kill any existing process on the target port port = args.port _kill_port(port) ``` ### Technical Analysis Before binding the local review server, the program uses `lsof` to identify every process associated with the selected port and sends each reported PID `SIGTERM`. It does not verify process ownership, identity, command, relationship to the viewer, or whether the process was started by a previous instance of this application. Terminating another application is unnecessary for the declared review-viewer functionality. The program already contains a safer fallback that binds to an automatically selected free port if the requested port remains unavailable. The issue violates least privilege by changing the state of unrelated local processes instead of restricting behavior to the viewer's own process and resources. ### Attack Path 1. A legitimate local application listens on the default port `3117`, or an attacker causes the viewer to be laun ...[truncated 731 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
eval-viewer/generate_review.py:250
Finding

Workspace-Controlled Data Can Break Out of the Inline Script in Generated Review Pages

Content
View full analysis
str: """Generate the complete standalone HTML page with embedded data.""" template_path = Path(__file__).parent / "viewer.html" template = template_path.read_text() previous_feedback: dict[str, str] = {} previous_outputs: dict[str, list[dict]] = {} if previous: for run_id, data in previous.items(): if data.get("feedback"): previous_feedback[run_id] = data["feedback"] if data.get("outputs"): previous_outputs[run_id] = data["outputs"] embedded = { "skill_name": skill_name, "runs": runs, "previous_feedback": previous_feedback, "previous_outputs": previous_outputs, } if benchmark: embedded["benchmark"] = benchmark data_json = json.dumps(embedded) return template.replace("/*__EMBEDDED_DATA__*/", f"const EMBEDDED_DATA = {data_json};") ``` ### Technical Analysis Evaluation prompts, grading data, feedback, and text output files are collected from the selected workspace and serialized with `json.dumps`. The serialized value is then inserted directly into an executable inline `` can close the original script element even when the sequence appears inside a JavaScript string. Following markup can then introduce a new script element or other active HTML. Because generated model output is inherently untrusted, a malicious or prompt-injected output can become a stored ...[truncated 1260 chars]
Remediation
View remediation
` element and read only its `textContent`. 3. Before embedding JSON in HTML, encode `<`, `>`, `&`, U+2028, and U+2029 using Unicode escape sequences. 4. Alternatively, serve the data through a local JSON endpoint and parse it with `response.json()`. 5. Add a restrictive Content Security Policy that disallows inline scripts and limits connections to the loopback origin. 6. Treat every prompt, output, grading field, benchmark field, and feedback value as untrusted. 7. Add regression tests containing `` and related parser-confusion payloads. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
eval-viewer/viewer.html:829
Finding

Untrusted Spreadsheet-Derived Markup Is Assigned to innerHTML Without Sanitization

Content
View full analysis
c.charCodeAt(0)); const wb = XLSX.read(raw, { type: "array" }); for (let i = 0; i < wb.SheetNames.length; i++) { const sheetName = wb.SheetNames[i]; const ws = wb.Sheets[sheetName]; if (wb.SheetNames.length > 1) { const sheetLabel = document.createElement("div"); sheetLabel.style.cssText = "font-weight:600; font-size:0.8rem; color:#b0aea5; margin-top:0.5rem; margin-bottom:0.25rem;"; sheetLabel.textContent = "Sheet: " + sheetName; container.appendChild(sheetLabel); } const htmlStr = XLSX.utils.sheet_to_html(ws, { editable: false }); const wrapper = document.createElement("div"); wrapper.innerHTML = htmlStr; container.appendChild(wrapper); } } catch (err) { container.textContent = "Error rendering spreadsheet: " + err.message; } } ``` ### Technical Analysis The review generator accepts XLSX files from evaluation output directories, Base64-encodes them, and embeds them in the page. The browser decodes the data and passes the workbook to the externally loaded SheetJS library. Markup returned by `XLSX.utils.sheet_to_html` is assigned directly to `wrapper.innerHTML` without an application-level sanitizer. This creates an unsafe rendering boundary: the security of DOM insertion depends entirely on the converter consistently escaping every workbook-controlled value and attribute. A crafted workbook or a vulnerable converter version could cause active markup to reach the DOM. The externally loaded SheetJS component is integrity-pinned, which reduces source substitution risk, but it does not remove the need to sanitize output generated from untrusted workb ...[truncated 934 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (148)

Self-Modification

High
Category
Rogue Agent
Confidence
85% confidence
Finding

Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.

Content

Scanner excerpt · README.md (reported line 53)May include surrounding context.

md
## Introduction

**Skill Creator Ultra** is a specialized AI Skill for **Google Antigravity** (and 7 other platforms). It helps you **create production-quality AI Skills** through an **8-phase pipeline** — even if you **DON'T know** what a skill is, what YAML is, or how to write SKILL.md.

**You only need:**

Chaining Abuse

High
Category
Tool Misuse
Confidence
98% confidence
Finding

The | bash construct is a classic chaining-abuse pattern because it directly connects network retrieval to command execution. This removes any opportunity for user review and turns compromise of the remote content into immediate local code execution.

Content

Scanner excerpt · README.md (reported line 143)May include surrounding context.

macOS / Linux:

bash
curl -sL https://raw.githubusercontent.com/marketingjuliancongdanh79-pixel/skill-generator/main/install.sh | bash

Windows (PowerShell):

Chaining Abuse

High
Category
Tool Misuse
Confidence
98% confidence
Finding

The same network-to-shell execution chain appears again in the Vietnamese section, preserving the same remote code execution risk. Because the skill targets multiple developer platforms, affected users may run the command in privileged development environments containing credentials and source code.

Content

Scanner excerpt · README.md (reported line 818)May include surrounding context.

macOS / Linux:

bash
curl -sL https://raw.githubusercontent.com/marketingjuliancongdanh79-pixel/skill-generator/main/install.sh | bash

Windows (PowerShell):

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description says this skill creates new AI skills or improves existing ones from user ideas/workflows. The supplied code does not implement skill creation, interviewing, pattern detection, workflow-to-skill transformation, or optimization logic. Instead, it is an eval-results viewer/review tool: it discovers run directories, reads prompts/outputs/grading metadata, embeds files into HTML, optionally serves them via a local web server, opens a browser, and persists human feedback. This is a materially different primary purpose with several undeclared capabilities related to local file access, web serving, process/port management, and feedback storage. Therefore the description does not accurately represent the code.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The declared description says this skill's purpose is to generate or improve AI skills from user ideas/workflows. However, the supplied code does not implement skill creation logic, interview flow, pattern detection, evaluation, testing, or optimization. Its primary function is installation/setup: fetching a repository, copying files into platform-specific locations, and editing local instruction/rule files to wire the skill into various coding agents. Those are materially different capabilities that are not declared. While installation could support the broader ecosystem, here it is the main behavior of the code chunk, so this is a clear description-behavior mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Mô tả khai báo nói về một skill chuyên hỗ trợ tạo mới, cải thiện, test, và tối ưu AI skill từ ý tưởng hoặc workflow của người dùng. Tuy nhiên, mã thực tế không xây dựng hay chỉnh sửa skill nào; nó chỉ là tiện ích CI đọc kết quả đánh giá từ một file JSON, kiểm tra ngưỡng điểm và các cảnh báo bảo mật, rồi xuất báo cáo và mã thoát phù hợp cho pipeline. Đây là khác biệt mục đích chính, không phải chi tiết triển khai phụ. Vì vậy mô tả không phản ánh đúng hành vi thực tế của code.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Có mismatch rõ ràng giữa mô tả và hành vi thực tế. Mô tả nói về một skill dùng để thiết kế/tạo hoặc tối ưu AI skill từ yêu cầu người dùng. Nhưng code được cung cấp chỉ là tiện ích packaging: xác thực sự tồn tại và định dạng của SKILL.md, parse YAML frontmatter, kiểm tra name/description, rồi nén thư mục thành file .skill. Đây là mục đích chính khác biệt về mặt vật chất, không phải chỉ là chi tiết triển khai hỗ trợ cho việc tạo skill. Mặc dù có bước 'validate skill', việc này chỉ là kiểm tra cấu trúc tối thiểu trước khi đóng gói, không tương ứng với các khả năng đã tuyên bố như phỏng vấn, phát hiện pattern, hay đánh giá chất lượng production.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Mô tả khai báo một capability mang tính sáng tạo và hỗ trợ xây dựng skill mới hoặc cải thiện skill hiện có thông qua phỏng vấn, phát hiện pattern và đánh giá định lượng. Tuy nhiên, code thực tế chỉ là một trình phân tích tĩnh/CLI cho một file SKILL.md đã tồn tại. Nó trích xuất các phần markdown, kiểm tra độ rõ ràng của các bước, sự hiện diện của ví dụ và constraints, rồi in báo cáo cùng điểm số. Phần 'đánh giá định lượng' có xuất hiện ở mức chấm điểm heuristic, nhưng đó chỉ là một phần nhỏ và không đủ để khớp với mục đích chính đã khai báo. Vì mục tiêu chính và năng lực cốt lõi khác biệt đáng kể, đây là mismatch rõ ràng.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Mô tả khai báo tập trung vào việc tạo mới skill từ ý tưởng hoặc workflow, kèm phỏng vấn thông minh và phát hiện pattern để sinh ra skill chất lượng production; cũng nói có thể cải thiện/test/optimize skill hiện có. Tuy nhiên mã được cung cấp không tạo skill, không phỏng vấn user, không sinh nội dung skill mới, không phát hiện pattern từ workflow đầu vào, và không thực hiện optimization tự động. Thay vào đó, nó là công cụ audit tĩnh một SKILL.md hiện có theo 7 tiêu chí heuristic. Dù có liên quan lỏng lẻo đến việc 'test' hoặc 'cải thiện' skill hiện có, chức năng chính là kiểm định/chấm điểm tài liệu skill trên filesystem, là một mục đích khác biệt đáng kể so với mô tả 'skill generator'. Vì vậy đây là mismatch rõ ràng giữa declared description và actual behavior.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Mô tả khai báo một skill generator/improver: nhận ý tưởng hoặc quy trình công việc, phỏng vấn người dùng, phát hiện pattern, rồi tạo hoặc tối ưu AI skill. Nhưng code thực tế không tạo skill, không nhận input hội thoại, không thực hiện pattern detection ở mức workflow, và không có bước sinh nội dung skill mới. Thay vào đó, nó là tiện ích dòng lệnh chuyên để so sánh hai phiên bản SKILL.md bằng các thống kê đếm dòng/từ/steps/examples/constraints, so sánh section, và đưa ra verdict. Đây là khác biệt mục đích chính, không chỉ là chi tiết triển khai phụ trợ, nên cần đánh dấu mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Mô tả khai báo một skill generator/optimizer giúp tạo hoặc cải thiện AI skill từ yêu cầu người dùng. Tuy nhiên, mã nguồn thực tế không hề tạo mới nội dung skill từ ý tưởng, không phân tích quy trình, không tối ưu, test, hay đánh giá chất lượng skill. Thay vào đó, nó chỉ nhận một SKILL.md có sẵn, trích xuất frontmatter/body, rồi render sang các template cho nhiều nền tảng và ghi ra file. Đây là khác biệt lớn về mục đích chính: 'skill creation/improvement' versus 'format export/conversion'. Vì vậy đây là mismatch rõ ràng, không chỉ là chi tiết triển khai phụ.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
91% confidence
Finding

Có liên quan bề mặt ở chỗ code hỗ trợ tạo skill mới, nhưng mô tả đã phóng đại đáng kể chức năng thực tế. Thay vì một công cụ AI-assisted tạo skill production-quality từ ý tưởng/quy trình với phân tích, đánh giá và tối ưu hóa, code chỉ scaffold cấu trúc thư mục và các file template. Chế độ interactive chỉ thu thập input cơ bản từ người dùng, không phải phỏng vấn thông minh hay suy luận về workflow. Ngoài ra code không hề test, audit, optimize skill hiện có; nó chỉ in gợi ý chạy các công cụ khác. Vì vậy đây là mismatch vật chất giữa declared purpose và actual behavior.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

Mô tả khai báo một skill mang tính sáng tạo và tương tác để thiết kế hoặc cải thiện AI skill. Trong khi đó, mã thực tế chỉ là công cụ phân tích tĩnh cho tài liệu SKILL.md hiện có. Nó không sinh skill, không hỏi người dùng, không chuyển quy trình thành skill, và không tối ưu hóa nội dung ngoài việc đưa ra thống kê/cảnh báo heuristic. Dù có nhắc đến 'quantitative evaluation', phần này chỉ xuất hiện như thống kê hỗ trợ tài liệu chứ không đủ để khớp với mục đích chính đã khai báo. Vì vậy đây là khác biệt đáng kể về mục đích chính và năng lực thực tế.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Mô tả khai báo nói về một skill mang tính sáng tạo và hỗ trợ xây dựng/cải thiện AI skill từ đầu hoặc từ workflow của người dùng. Tuy nhiên, code thực tế chỉ là công cụ kiểm định tĩnh cho một skill đã tồn tại, tập trung vào định dạng tài liệu và cấu trúc thư mục. Dù có một số điểm bề ngoài như 'evaluation' hoặc 'optimize skill hiện có', việc đánh giá ở đây chỉ là lint/validation của SKILL.md, không phải tạo mới, phỏng vấn, hay tối ưu hóa hành vi skill theo mô tả. Vì vậy đây là sai lệch mục đích chính, không chỉ là chi tiết triển khai phụ.

Content

No source excerpt is available for this finding.

Vague Triggers

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger description is extremely broad, covering generic requests like creating a skill, automating work, improving, testing, or optimizing existing skills, plus vague descriptions of repetitive workflows. Over-broad triggers can cause unintended activation in unrelated conversations, leading the agent to read files, generate packages, or initiate multi-phase workflows in the wrong context.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 127)May include surrounding context.

md
📚 **Đọc chi tiết:** `resources/composition_cookbook.md`, `resources/advanced_patterns.md`

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 173)May include surrounding context.

md
📚 **Đọc chi tiết:** `resources/composition_cookbook.md`, `resources/advanced_patterns.md`

Vague Triggers

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

The instruction to make descriptions more 'pushy' encourages deliberately broad trigger design, which undermines precision and increases accidental invocation. In agent ecosystems, this can create privilege confusion and unwanted side effects because a high-capability skill may activate on ordinary user intents.

Content

No source excerpt is available for this finding.

Vague Triggers

High
Category
Not specified by scanner
Confidence
94% confidence
Finding

The description optimization phase explicitly aims to broaden activation and verify coverage, but it does not require strong exclusion criteria or minimization of false positives. This makes the skill more likely to hijack unrelated requests, which is especially risky when the skill also discusses packaging, publishing, testing, and potential script usage.

Content

No source excerpt is available for this finding.

Vague Triggers

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The example explicitly advocates a very broad, 'pushy' trigger description so the agent will invoke the PDF skill for nearly anything involving PDFs. Overbroad routing increases the chance of inappropriate skill selection, which can bypass more specific safeguards, cause excessive file handling, or let a powerful skill act in situations where a narrower workflow should have been used.

Content

No source excerpt is available for this finding.

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
95% confidence
Finding

Removing '.git' from the copied target is not inherently malicious, but it uses a destructive primitive on a path derived from variables and follows an earlier recursive copy into user-selected install locations. In a broader installer that already overwrites directories, this increases the blast radius of path mistakes and makes post-install provenance auditing harder because repository metadata is stripped.

Content

Scanner excerpt · install.sh (reported line 82)May include surrounding context.

sh
# Copy files (exclude .git)
    cp -r "$TMP_DIR" "$target_dir"
    rm -rf "$target_dir/.git"
    
    print_success "Installed to: $target_dir"
}

Hidden Instructions

High
Category
Prompt Injection
Confidence
60% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · phases/phase1_interview.md (reported line 1)May include surrounding context.

md
## Phase 5: 🧪 Live Test & Refine — Test trực tiếp với User

Mục tiêu: Đảm bảo skill hoạt động đúng ý user TRƯỚC KHI deploy.

Hidden Instructions

High
Category
Prompt Injection
Confidence
60% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · phases/phase2_extract.md (reported line 1)May include surrounding context.

md
## Phase 5: 🧪 Live Test & Refine — Test trực tiếp với User

Mục tiêu: Đảm bảo skill hoạt động đúng ý user TRƯỚC KHI deploy.

Hidden Instructions

High
Category
Prompt Injection
Confidence
60% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · phases/phase3_detect.md (reported line 1)May include surrounding context.

md
## Phase 5: 🧪 Live Test & Refine — Test trực tiếp với User

Mục tiêu: Đảm bảo skill hoạt động đúng ý user TRƯỚC KHI deploy.

Hidden Instructions

High
Category
Prompt Injection
Confidence
60% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · phases/phase4_generate.md (reported line 1)May include surrounding context.

md
## Phase 5: 🧪 Live Test & Refine — Test trực tiếp với User

Mục tiêu: Đảm bảo skill hoạt động đúng ý user TRƯỚC KHI deploy.