Back to skill

Security audit

Shike Darwin Optimizer

Security checks for vulnerabilities and agentic risk

Overview

The skill is not deceptive, but it can broadly read, execute, and modify installed agent skills, so users should review it carefully before installing.

Install only if you intend to let an agent inspect and modify skill files. Use a clean repository or disposable branch, prefer dry-run evaluation first, review every diff before allowing writes or commits, sandbox live tests with no secrets or network access, and verify any package or ZIP source before installation.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (2)

T08 · Insecure Dependencies

Warning
Location
README_EN.md:115
Finding

Unpinned Installation Command and Unverified Alternate Distribution Source

Content
View full analysis

Vulnerability Details

File Location: README_EN.md:115-121
Vulnerability Type: Unpinned third-party installation and unverified remote artifact
Risk Level: Medium

Vulnerable Code Snippet

markdown
## Quick Start

```bash
npx skills add alchaincyf/darwin-skill

After installation, tell your agent: "optimize all skills" or "optimize [skill-name]". Works with any tool that supports the SKILL.md format.

Can't access GitHub? Download the zip: darwin-skill.zip. Extract and place SKILL.md in ~/.claude/skills/darwin-skill/.

text

Equivalent instructions also appear in `README.md:113-119`.

### Technical Analysis

The `npx` command does not pin the `skills` installer to a specific version or immutable package digest. Consequently, the command can retrieve and execute a version that differs from the one available when this project was audited.

The alternate ZIP is hosted at a mutable Cloudflare R2 URL. The documentation provides no SHA-256 digest, signature, immutable release identifier, or verification procedure. The integrity of content subsequently downloaded from that address therefore cannot be established from the audited repository.

The audited files do not contain a malicious dependency or payload. The vulnerability is the supply-chain trust model: compromise of a package publisher, distribution account, DNS path, or storage object could replace the reviewed content with an altered installer or Skill package.

### Attack Path

1. An attacker compromises the package publishing account, the repository/distribution account, or the mutable R2 object.
2. The attacker publishes an altered installer or replaces the downloadable ZIP.
3. A user follows the documented Quick Start without pinning or integrity verification.
4. `npx` retrieves and executes the changed package, or the user installs the modified ZIP into the A
...[truncated 899 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin the skills installer to an explicitly reviewed version rather than relying on the latest package:
    bash
    npx skills@<reviewed-version> add alchaincyf/darwin-skill@<immutable-version-or-commit>
    
  2. Prefer signed, versioned releases hosted through the authoritative repository.
  3. Publish a SHA-256 digest for every downloadable archive and require verification before extraction.
  4. Sign release artifacts with Sigstore, GPG, or an equivalent verifiable signing mechanism.
  5. Use immutable, version-specific artifact URLs rather than a reusable ZIP path.
  6. Document the expected package name, version, commit hash, checksum, and signer identity.
  7. Advise users to inspect downloaded Skill contents and installer lifecycle scripts before installation.
  8. Keep the English and Chinese installation instructions synchronized so both use the same pinned and verified process.

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:165
Finding

Untrusted Target Skills Are Behaviorally Executed Without a Required Sandbox

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:165-171
Vulnerability Type: Unsafe execution of untrusted Skill instructions
Risk Level: Medium

Vulnerable Instruction Snippet

The following is an English rendering of the operative instruction:

text
For each skill in the optimization scope:

  1. Read the complete SKILL.md.
  2. Score dimensions 1 through 7.

  3. For each test prompt, spawn a sub-agent:
     - with_skill: execute the test prompt with SKILL.md loaded
     - baseline: execute the same prompt without the skill

The behavior is repeated at SKILL.md:219-221, where the workflow instructs an independent sub-agent to rerun the target Skill after modification.

Technical Analysis

A target SKILL.md is active instruction content rather than passive test data. It may contain directives to invoke tools, read files, execute commands, make network requests, disclose information, or modify persistent state.

The workflow requires a sub-agent to load and execute the target Skill but does not require:

  • Network isolation.
  • Filesystem isolation or a disposable working copy.
  • Denial of shell and process-execution tools.
  • Removal of credentials and environment secrets.
  • A strict tool allowlist.
  • Prevention of persistent memory or state writes.
  • Human approval before side effects.
  • Treatment of target instructions and generated output as untrusted data.

Sub-agent separation provides scoring independence, but it is not a security boundary. If the spawned sub-agent inherits tools, filesystem access, credentials, or network capabilities, a malicious target Skill can attempt to use those capabilities during evaluation.

No malicious target Skill is included in this project, and the audited Skill does not itself direct credential theft or unauthorized access. The issue is that its evaluation design may execute externally supplied Skill instructions without defining mandator ...[truncated 1521 chars]

Remediation
View remediation

Remediation Suggestions

  1. Treat every target SKILL.md, test prompt, and generated response as untrusted input.
  2. Perform static inspection before any behavioral execution and reject Skills that request unrelated tools, credentials, persistence, privilege changes, or network access.
  3. Run each behavioral test in a disposable sandbox with:
    • No network access.
    • No secrets or inherited credentials.
    • No shell or process-execution tool.
    • No persistent memory.
    • No access to the user's home directory.
    • Read-only access to a temporary copy of only the required test fixtures.
  4. Use a strict tool allowlist tailored to the declared function of the target Skill.
  5. Require explicit user approval before any test that could produce filesystem, repository, network, account, or persistent-state side effects.
  6. Capture outputs as inert evaluation data and prevent them from becoming controlling instructions for the parent Agent.
  7. Apply CPU, memory, execution-time, output-size, and recursion limits to each sub-agent run.
  8. Record all attempted tool calls and flag behavior outside the target Skill's declared purpose.
  9. Add an explicit fallback to dry-run analysis when secure sandboxing is unavailable.
  10. State clearly that scoring independence through a sub-agent does not replace process and permission isolation.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (41)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The README describes autonomous editing of SKILL.md plus git commit and git revert behavior, but does not prominently warn that using the skill will mutate repository contents and history/state. This is dangerous because users may invoke optimization expecting advisory analysis, while the skill may instead modify tracked files and create or roll back commits, potentially disrupting active work or automated pipelines.

Content

No source excerpt is available for this finding.

Self-Modification

High
Category
Rogue Agent
Confidence
93% confidence
Finding

The documented workflow explicitly directs the agent to edit SKILL.md, commit changes, and revert via git based on automated scoring. This is a self-modification capability, and even with a human confirmation step, it can alter agent behavior, introduce unsafe prompt logic, or make unintended repository changes if triggered in the wrong context. The danger is heightened because the skill is designed for repeated autonomous optimization loops.

Content

Scanner excerpt · README_EN.md (reported line 96)May include surrounding context.

md
1. Find the lowest-scoring dimension
2. Generate one targeted improvement
3. Edit SKILL.md, git commit
4. Independent sub-agent re-scores
5. Score up → keep. Score down → git revert
6. Pause. Show diff + score delta. Wait for human confirmation

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · assets/banner-en.svg (reported line 6)May include surrounding context.

text
<style>
      @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;700;900&amp;display=swap');
    </style>
    <!-- Gradient for ratchet blocks -->
    <linearGradient id="blockGrad1" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0%" stop-color="#444444"/>
      <stop offset="100%" stop-color="#333333"/>

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · assets/banner.svg (reported line 6)May include surrounding context.

text
<style>
      @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;700;900&amp;display=swap');
    </style>
    <!-- Gradient for ratchet blocks -->
    <linearGradient id="blockGrad1" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0%" stop-color="#444444"/>
      <stop offset="100%" stop-color="#333333"/>

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · assets/banner-en.svg (reported line 64)May include surrounding context.

text
letter-spacing="-2"
  >达尔文.skill</text>

  <!-- Subtitle pipeline -->
  <text
    x="80"
    y="312"

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · assets/banner.svg (reported line 64)May include surrounding context.

text
letter-spacing="-2"
  >达尔文.skill</text>

  <!-- Subtitle pipeline -->
  <text
    x="80"
    y="312"

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · assets/banner-en.svg (reported line 143)May include surrounding context.

text
letter-spacing="0.3"
  >Inspired by Karpathy's autoresearch</text>

  <!-- ============================================================ -->
  <!-- RIGHT SIDE: Ratchet visualization                           -->
  <!-- 5 bars of increasing height + score labels, anchored right  -->
  <!-- ============================================================ -->

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · assets/banner.svg (reported line 143)May include surrounding context.

text
letter-spacing="0.3"
  >Inspired by Karpathy's autoresearch</text>

  <!-- ============================================================ -->
  <!-- RIGHT SIDE: Ratchet visualization                           -->
  <!-- 5 bars of increasing height + score labels, anchored right  -->
  <!-- ============================================================ -->

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · assets/banner-en.svg (reported line 159)May include surrounding context.

text
<rect x="944" y="252" width="36" height="68" rx="3" fill="url(#blockGrad2)"/>
  <text x="962" y="248" font-family="'Inter', system-ui, sans-serif" font-size="10" font-weight="600" fill="#777777" text-anchor="middle">55</text>

  <!-- Bar 3 — medium, warm brown (score ~68) -->
  <rect x="998" y="220" width="36" height="100" rx="3" fill="url(#blockGrad3)"/>
  <text x="1016" y="216" font-family="'Inter', system-ui, sans-serif" font-size="10" font-weight="600" fill="#8B5E3C" text-anchor="middle">68</text>

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · assets/banner.svg (reported line 159)May include surrounding context.

text
<rect x="944" y="252" width="36" height="68" rx="3" fill="url(#blockGrad2)"/>
  <text x="962" y="248" font-family="'Inter', system-ui, sans-serif" font-size="10" font-weight="600" fill="#777777" text-anchor="middle">55</text>

  <!-- Bar 3 — medium, warm brown (score ~68) -->
  <rect x="998" y="220" width="36" height="100" rx="3" fill="url(#blockGrad3)"/>
  <text x="1016" y="216" font-family="'Inter', system-ui, sans-serif" font-size="10" font-weight="600" fill="#8B5E3C" text-anchor="middle">68</text>

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · assets/banner-en.svg (reported line 167)May include surrounding context.

text
<rect x="1052" y="188" width="36" height="132" rx="3" fill="url(#blockGrad4)"/>
  <text x="1070" y="184" font-family="'Inter', system-ui, sans-serif" font-size="10" font-weight="600" fill="#C04020" text-anchor="middle">80</text>

  <!-- Bar 5 — tallest, brand orange (score ~92) -->
  <rect x="1106" y="152" width="36" height="168" rx="3" fill="url(#blockGrad5)"/>
  <text x="1124" y="148" font-family="'Inter', system-ui, sans-serif" font-size="12" font-weight="700" fill="#D4532B" text-anchor="middle">92</text>

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · assets/banner.svg (reported line 167)May include surrounding context.

text
<rect x="1052" y="188" width="36" height="132" rx="3" fill="url(#blockGrad4)"/>
  <text x="1070" y="184" font-family="'Inter', system-ui, sans-serif" font-size="10" font-weight="600" fill="#C04020" text-anchor="middle">80</text>

  <!-- Bar 5 — tallest, brand orange (score ~92) -->
  <rect x="1106" y="152" width="36" height="168" rx="3" fill="url(#blockGrad5)"/>
  <text x="1124" y="148" font-family="'Inter', system-ui, sans-serif" font-size="12" font-weight="700" fill="#D4532B" text-anchor="middle">92</text>

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · assets/banner-en.svg (reported line 174)May include surrounding context.

text
<!-- Baseline for bars -->
  <rect x="880" y="320" width="276" height="1" fill="#FFFFFF" opacity="0.12"/>

  <!-- Label below bars -->
  <text x="1018" y="344" font-family="'Inter', system-ui, sans-serif" font-size="11" font-weight="600" fill="#555555" text-anchor="middle" letter-spacing="2">SCORE PROGRESSION</text>

  <!-- Upward trend arrow on top-right -->

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · assets/banner.svg (reported line 174)May include surrounding context.

text
<!-- Baseline for bars -->
  <rect x="880" y="320" width="276" height="1" fill="#FFFFFF" opacity="0.12"/>

  <!-- Label below bars -->
  <text x="1018" y="344" font-family="'Inter', system-ui, sans-serif" font-size="11" font-weight="600" fill="#555555" text-anchor="middle" letter-spacing="2">SCORE PROGRESSION</text>

  <!-- Upward trend arrow on top-right -->

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · assets/chart-rubric-en.html (reported line 219)May include surrounding context.

html
<body>
<div class="container">

  <!-- Header -->
  <div class="header">
    <div>
      <div class="rubric-label">EVALUATION RUBRIC</div>

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

文件顶部将当前 README 呈现为中文版本,仅以链接形式指向英文文档,没有在正文中说明用户可自由选择语言或该版本仅面向特定受众。按组织语言/区域策略,若技能说明默认强制单一语言而无明确选择或适用范围,可能构成自然语言策略问题。

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
86% confidence
Finding

The README instructs users to run npx skills add alchaincyf/darwin-skill without pinning a specific package version. Because npx resolves the latest published package at execution time, users may unknowingly install changed or compromised code, creating a supply-chain risk before the skill is even reviewed.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
86% confidence
Finding

The second npx skills installation/use reference repeats the same unpinned dependency pattern, again allowing execution of whatever version is current at the time of install. In a skill that later performs autonomous optimization and repository mutations, that supply-chain uncertainty is more concerning because the installed tool can influence downstream edits and git operations.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The documented trigger phrases like '优化所有skills' or '优化某个skill' are broad, natural-language expressions that can overlap with ordinary conversation. In the context of this skill, accidental activation is risky because the skill is designed to autonomously edit SKILL.md files and perform git commit/revert operations, so a misfire could alter a user's workspace unexpectedly.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
86% confidence
Finding

The README instructs users to run npx skills add alchaincyf/darwin-skill without pinning a specific package version. This allows the fetched package behavior to change over time and increases supply-chain risk if the upstream package, dependency set, or registry resolution is compromised. In a skill-installation context, this is more dangerous because users are encouraged to execute the command directly from documentation.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
86% confidence
Finding

The quick-start section again uses npx skills add alchaincyf/darwin-skill without a pinned version, creating the same supply-chain and reproducibility risk. Repeating the unpinned command in a prominent install path increases the likelihood that users will execute mutable remote code without review.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The invocation examples use broad natural-language triggers like 'optimize all skills' or 'optimize [skill-name]'. Such generic phrases can overlap with ordinary user conversation, causing accidental activation of a powerful optimization workflow that edits skills and interacts with git. In this context, the risk is elevated because the skill's core behavior includes self-modification and automated iteration.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The manifest description contains many broad trigger phrases such as generic optimization, evaluation, and quality-improvement requests. This can cause the skill to activate in situations beyond the user's clear intent, increasing the chance it will read, score, modify, and version-control multiple skills or prompts when the user asked for something more limited. In this context, overbroad auto-invocation is risky because the skill performs repository-wide scanning and iterative modification workflows.

Content

No source excerpt is available for this finding.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
85% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

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

text
1. 确认优化范围:
   - 全部skills → 扫描 .claude/skills/*/SKILL.md
   - 指定skills → 用户指定列表
2. 创建 git 分支:auto-optimize/YYYYMMDD-HHMM
3. 初始化 results.tsv(如不存在)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The rule '中文为主、简洁为上' imposes a Chinese-primary response style without checking user preference. This can override the user's requested language, reduce transparency for reviewers, and lead to misunderstandings in safety-critical review or change-approval steps. In a skill that asks for user confirmation before edits, language mismatch makes the checkpoint controls less reliable.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.