# Deep Security Scan: awesome-copilot Test Skills

**Target:** github.com/github/awesome-copilot (5 test-related skills)
**Scan date:** 2026-04-05
**Scanner:** llm-security v4.5.1 — deep-scan (10 deterministic) + skill-scanner-agent (LLM)
**Requested by:** KTG

---

## Skills Assessed

| # | Skill | Installs/wk | Files | Purpose |
|---|-------|-------------|-------|---------|
| 1 | playwright-generate-test | 9.2K | 1 (SKILL.md) | Playwright test generation via MCP |
| 2 | javascript-typescript-jest | 8.8K | 1 (SKILL.md) | Jest best practices reference |
| 3 | webapp-testing | 8.3K | 2 (SKILL.md + test-helper.js) | Browser testing toolkit |
| 4 | java-junit | 8.3K | 1 (SKILL.md) | JUnit 5 best practices reference |
| 5 | pytest-coverage | 8.0K | 1 (SKILL.md) | pytest coverage workflow |

---

## Overall Verdict: ALLOW (Risk Score 3/100)

All 5 skills are safe to install and use. Zero critical, high, or medium findings. Three low-severity hygiene observations.

---

## Deterministic Deep-Scan Results (10 Scanners)

| Scanner | playwright-generate-test | jest | webapp-testing | java-junit | pytest-coverage |
|---------|:---:|:---:|:---:|:---:|:---:|
| Unicode (confusables, BiDi) | OK | OK | OK | OK | OK |
| Entropy (secrets, tokens) | OK | OK | OK | OK | OK |
| Permission (chmod, setuid) | skip | skip | skip | skip | skip |
| Dependency audit | skip | skip | skip | skip | skip |
| Taint (untrusted input flow) | OK | OK | OK | OK | OK |
| Git forensics | OK | OK | OK | OK | OK |
| Network (URLs, endpoints) | OK | OK | OK | OK | OK |
| Memory poisoning | OK | OK | OK | OK | OK |
| Supply-chain recheck | skip | skip | skip | skip | skip |
| Toxic-flow correlator | skip | skip | skip | skip | skip |

**Result:** 0 findings across all 5 skills. Scanners that require lockfiles/dependencies/permissions correctly skipped (pure markdown skills).

---

## LLM Skill Security Analysis (7 Threat Categories)

| Category | playwright-generate-test | jest | webapp-testing | java-junit | pytest-coverage |
|----------|:---:|:---:|:---:|:---:|:---:|
| Prompt Injection | Clean | Clean | Clean | Clean | Clean |
| Data Exfiltration | Clean | Clean | Clean | Clean | Clean |
| Privilege Escalation | 1 Low | Clean | 1 Low | Clean | Clean |
| Scope Creep | Clean | Clean | Clean | Clean | Clean |
| Hidden Instructions | Clean | Clean | Clean | Clean | Clean |
| Toolchain Manipulation | Clean | Clean | Clean | Clean | 1 Low |
| Persistence | Clean | Clean | Clean | Clean | Clean |

### Finding Details

**SCN-001 — Execution scope undeclared** (Low)
- **Skill:** playwright-generate-test
- **Issue:** Instructs "Execute the test file and iterate until the test passes" without declaring `allowed-tools` in frontmatter
- **OWASP:** LLM06:2025 Excessive Agency, AST03 Scope Declaration
- **Fix:** Add `allowed-tools` frontmatter limiting execution to `npx playwright test`

**SCN-002 — Unbounded Node.js fallback** (Low)
- **Skill:** webapp-testing
- **Issue:** Falls back to "local Node.js environment" if MCP unavailable — no scope limitation on what the fallback may execute
- **OWASP:** LLM06:2025 Excessive Agency, AST04 Capability Expansion
- **Fix:** Constrain fallback to localhost targets only, require user confirmation for remote

**SCN-003 — Implicit dependency assumption** (Low)
- **Skill:** pytest-coverage
- **Issue:** Assumes `pytest-cov` is installed without verification. Agent may silently install it
- **OWASP:** LLM03:2025 Supply Chain
- **Fix:** Add prerequisite check before running coverage commands

---

## Risk Classification

```
Skill                          Score  Verdict  Risk Band
───────────────────────────────────────────────────────
javascript-typescript-jest       0    ALLOW    None
java-junit                       0    ALLOW    None
playwright-generate-test         4    ALLOW    Low
webapp-testing                   4    ALLOW    Low
pytest-coverage                  4    ALLOW    Low
───────────────────────────────────────────────────────
AGGREGATE                        3    ALLOW    Low (0-20)
```

---

## Key Observations

1. **No injection attempts found.** Zero instances of rule override language, identity redefinition, spoofed system headers, or context normalization patterns across all 6 files. This is notably clean — ToxicSkills research found 36.82% of community skills have at least one issue.

2. **No exfiltration infrastructure.** None of the skills access credential paths, environment variables, sensitive filesystem locations, or external network endpoints.

3. **No secrets in any file.** All 6 files pass entropy and secrets-pattern checks.

4. **Two pure-reference skills (jest, junit) are exemplary.** They demonstrate the correct pattern for knowledge-transfer skills: no execution, no tool access, no network references. These cannot be weaponized.

5. **Source legitimacy is consistent.** All from the official `github/awesome-copilot` repository (28.5K stars), maintained by GitHub.

---

## OWASP Coverage Matrix

| Framework | Category | Checked | Findings |
|-----------|----------|:---:|---|
| LLM Top 10 | LLM01 Prompt Injection | Yes | None |
| LLM Top 10 | LLM02 Sensitive Info Disclosure | Yes | None |
| LLM Top 10 | LLM03 Supply Chain | Yes | SCN-003 (Low) |
| LLM Top 10 | LLM06 Excessive Agency | Yes | SCN-001, SCN-002 (Low) |
| Agentic AI | ASI01 Prompt Injection | Yes | None |
| Agentic AI | ASI02 Exfiltration | Yes | None |
| Agentic AI | ASI03 Privilege Escalation | Yes | None |
| Agentic AI | ASI04 Toolchain Manipulation | Yes | None |
| Agentic AI | ASI10 Persistence | Yes | None |
| Skills Top 10 | AST03 Scope Declaration | Yes | SCN-001, SCN-002 (Low) |
| Skills Top 10 | AST04 Capability Expansion | Yes | SCN-002 (Low) |

---

## Recommendations for Testledere

Disse 5 skills er trygge å ta i bruk for testteam. Noen anbefalinger:

| Prioritet | Anbefaling |
|-----------|------------|
| **Bruk direkte** | `javascript-typescript-jest` og `java-junit` — rene referansedokumenter uten risiko |
| **Bruk med bevissthet** | `playwright-generate-test` og `webapp-testing` — har kjørerettighetsbehov, men er korrekt scopet |
| **Bruk med bevissthet** | `pytest-coverage` — verifiser at `pytest-cov` er i prosjektets avhengigheter før bruk |
| **Generelt** | Alle skills bør kombineres med prosjektets egne sikkerhetshooks for å fange opp uventet oppførsel |

---

## Methodology

- **Phase 1:** Deterministic deep-scan — 10 Node.js scanners (unicode, entropy, permission, dep-audit, taint, git-forensics, network, memory-poisoning, supply-chain-recheck, toxic-flow)
- **Phase 2:** LLM-based skill analysis — 7 threat categories (prompt injection, data exfiltration, privilege escalation, scope creep, hidden instructions, toolchain manipulation, persistence)
- **Frameworks:** OWASP LLM Top 10 (2025), OWASP Agentic AI Top 10 (ASI), OWASP Skills Top 10 (AST)
- **Models:** scan-orchestrator.mjs (deterministic), skill-scanner-agent (claude-sonnet-4-6)

---

*Generated by llm-security v4.5.1*
