Skills Tree is a registry and developer platform. It contains Markdown skill instructions plus executable validation, API, CLI, MCP, and CI/CD components. Skill content is therefore treated as an agent-instruction supply-chain surface, not as inert documentation. However, we take security seriously for the following surfaces:
| Surface | Supported |
|---|---|
docs/index.html (GitHub Pages viewer) |
✅ Active |
GitHub Actions workflows (.github/workflows/) |
✅ Active |
| Skill file content (code examples) | ✅ Reviewed |
meta/ and skills/ markdown files |
✅ Reviewed |
| Dependency Auditor snippet execution (Phase 3) | ✅ Active |
If you discover a security issue in this repository — including but not limited to:
- XSS or injection vulnerabilities in the
docs/index.htmlviewer - Malicious code examples embedded in skill files
- Supply-chain risks in GitHub Actions workflows
- Exposed secrets or credentials accidentally committed
- Prompt injection payloads embedded in skill descriptions
- Adversarial snippets designed to abuse the Dependency Auditor
Please do not open a public GitHub issue.
Instead, report it privately:
- Email: Use GitHub's private vulnerability reporting
- Response time: We aim to acknowledge within 48 hours and resolve within 7 days for critical issues
- Credit: Responsible disclosures will be credited in the release notes
- Any vulnerability in the static GitHub Pages site (
docs/) - Malicious or misleading code examples in skill
.mdfiles - GitHub Actions workflow vulnerabilities (script injection, token exposure)
- Accidentally committed API keys, tokens, or credentials
- Adversarial snippets targeting the Phase 3 Dependency Auditor execution environment
- Issues in third-party frameworks or models referenced by skill files (report those upstream)
- Theoretical AI safety concerns in documented skills (open an issue for discussion instead)
- Social engineering attacks
When contributing skill files:
- ✅ Never include real API keys, tokens, or passwords in code examples — always use placeholders like
YOUR_API_KEY - ✅ Use environment variables for sensitive values in examples:
os.environ['API_KEY'] - ✅ Do not demonstrate actual exploits — describe vulnerabilities conceptually, don't provide working attack code
- ✅ Flag experimental skills with
stability: experimentalif they involve risky operations - ✅ Include security notes in skill files that involve privileged actions, file deletion, or network access
This section documents the threat model for the Dependency Auditor (
dependency-auditor.yml), which executes Python code snippets from skill files in isolated virtual environments on GitHub Actions runners as part of Phase 3 of the Dependency Watchdog pipeline.
dependency-auditor.yml runs on pull requests that touch skills/**/*.md files and on a
weekly cron schedule. It:
- Parses Python code blocks from skill Markdown files
- Creates an isolated
venvper skill usingtempfile.TemporaryDirectory()+venv.create(clear=True) - Installs the skill's declared
depsinto that venv - Executes each snippet via
subprocess.runwith a 30-second timeout - Proposes a Yellow → Green badge promotion PR if all snippets pass
The Risk:
Since snippets run via subprocess.run on a GitHub Actions runner, a malicious snippet
(e.g. a PR disguising crypto mining, data exfiltration, or credential harvesting as a
skill code example) would have full outbound network access during execution.
The Layered Mitigations (in order of current deployment):
| Layer | Mitigation | Status |
|---|---|---|
| Primary | Ephemeral GH Actions runner — discarded after every job. No persistent state survives. | ✅ Active |
| Secondary | PR review gate — maintainers review all PRs before the audit workflow triggers on pull_request. External PRs do not auto-trigger execution. |
✅ Active |
| Tertiary | 30-second subprocess timeout — caps runaway or stalling snippets. | ✅ Active |
| Escalation path | Docker --network=none container for snippet execution — completely severs outbound network for the execution subprocess. |
⏳ Available if abuse is detected |
Current Risk Assessment: CONTROLLED but material. The repository has containment controls, but skill content can influence agent behavior and some repository workflows execute code or install dependencies. This is not equivalent to a security audit or a guarantee that every published skill is safe in every environment.
For the current scope — a curated, maintainer-reviewed repository — the ephemeral runner model is the primary and sufficient containment strategy. The runner is discarded after every job, so even a successful exfiltration attempt finds no persistent secrets, no long-lived credentials, and no reusable environment.
If abuse is detected (e.g. a PR attempts network exfiltration from a snippet):
- Immediately close the PR and block the contributor
- Report via the private vulnerability channel above
- Enable Docker
--network=noneexecution by updating therun_snippet()call intools/dependency_auditor.pyto wrap the subprocess in:docker run --rm --network=none -v /tmp/snippet.py:/snippet.py python:3.11-slim python /snippet.py
- Audit the Actions runner logs for the affected job to assess blast radius
If this repository is ever opened to public, unreviewed PRs, the escalation to
Docker --network=none execution must be implemented before enabling auto-trigger
of the auditor on external PRs. Do not skip this step.
Skills in 14-security/ specifically cover agent safety patterns:
| Skill | Description |
|---|---|
| Sandboxed Execution | Run untrusted code in isolated environments |
| Secret Scanning | Detect credentials in agent outputs |
| Human-in-the-Loop | Require human approval for high-risk actions |
| Input Sanitization | Prevent prompt injection attacks |
| Permission Checking | Scope agent capabilities to minimum required |
| Audit Logging | Record all agent actions for review |
| Rollback / Undo | Reverse unintended agent actions |
| Rate Limiting | Cap agent tool calls to prevent runaway loops |
| Harm Detection | Classify and block harmful outputs |
| Privacy Preservation | Prevent leakage of PII and sensitive data |
Thank you to everyone who responsibly discloses security issues and helps keep the AI agent community safer.
Maintained by @SamoTech · Last updated: September 2026
Skills are executable instructions from an agent's point of view. A Markdown file can therefore create security impact even when it contains no executable source code itself.
The repository applies these rules to distributed skills:
- A skill must not require an external package, installer, CLI, URL, or service merely to understand the skill. External implementations are optional and must be clearly identified.
- Installation commands must not be presented as mandatory agent behavior unless the dependency and trust boundary are explicitly documented and the dependency is pinned or otherwise reproducibly identified.
- Skill content must not request secrets, disable security controls, weaken authentication, or execute destructive actions without an explicit safety boundary and human-approval path where appropriate.
- CI must not mutate contributor branches as part of validation. Validation should be read-only; generated artifacts should be reconciled through an explicit release or PR path.
- Automated dependency changes may merge only through the repository CI-gated merge rule: exact HEAD, required validation, security, tests, and repository invariants must pass. No separate human approval is required unless a higher-priority control-plane rule applies.
- A "battle-tested" quality label means the repository quality criteria were met. It is not a blanket trust or malware guarantee.
For the planned Agent Skills standard distribution, each published artifact will carry a stable name, description, source path, version/provenance information, and SHA-256 integrity digest. The discovery surface will follow the /.well-known/agent-skills/index.json model and will be generated from the same canonical source rather than maintained by hand.