Skip to content

Commit 86286b6

Browse files
committed
docs: improve project presentation
1 parent 7d1be40 commit 86286b6

5 files changed

Lines changed: 123 additions & 6 deletions

File tree

CONTRIBUTING.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Contributing
2+
3+
Thanks for helping improve `skill-security-guard`.
4+
5+
## Local Setup
6+
7+
The scanner uses only the Python standard library.
8+
9+
```bash
10+
git clone https://github.com/rrrrrredy/skill-security-guard.git
11+
cd skill-security-guard
12+
python -m unittest discover -s tests -p "test_*.py"
13+
```
14+
15+
## Rule Changes
16+
17+
When adding or changing detection rules:
18+
19+
1. Add or update a fixture under `tests/fixtures/`.
20+
2. Add an assertion in `tests/test_scan.py`.
21+
3. Update `references/detection-rules.md`.
22+
4. Run `python scripts/scan.py .` and confirm the repository still rates `A`.
23+
24+
Rules should be conservative. Direct `F` findings should be limited to patterns that are clearly dangerous, such as exfiltration, tunneling, destructive commands, reverse shells, or remote script execution.
25+
26+
## Pull Requests
27+
28+
Please keep pull requests focused. Good PRs usually include:
29+
30+
- a clear rule or scanner behavior change
31+
- a fixture showing the expected behavior
32+
- updated documentation when scoring or output changes
33+
- local test results

README.md

Lines changed: 58 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
# skill-security-guard
22

3-
Static security scanner for OpenClaw/Codex-style skill packages.
3+
[![CI](https://github.com/rrrrrredy/skill-security-guard/actions/workflows/ci.yml/badge.svg)](https://github.com/rrrrrredy/skill-security-guard/actions/workflows/ci.yml)
4+
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
5+
[![Python](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/)
46

5-
It performs a deterministic 7-dimension scan, assigns an A-F rating, reports confidence levels, and gives remediation guidance. The CLI is implemented in Python standard library only, so it runs on Windows, macOS, and Linux without project dependencies.
7+
Static security scanner for agent skill packages.
68

7-
> OpenClaw Skill — works with [OpenClaw](https://github.com/openclaw/openclaw) AI agents and can also be used as a standalone scanner.
9+
`skill-security-guard` performs a deterministic 7-dimension scan, assigns an A-F risk rating, reports confidence levels, and gives remediation guidance. The CLI uses only the Python standard library, so it runs on Windows, macOS, and Linux without project dependencies.
10+
11+
It can be used as an OpenClaw skill or as a standalone scanner for local skill packages.
812

913
## What It Scans
1014

@@ -46,6 +50,38 @@ Ignore a reviewed rule for one run:
4650
python scripts/scan.py path/to/skill-directory --ignore R3-N5
4751
```
4852

53+
## Example Output
54+
55+
Safe skill:
56+
57+
```text
58+
Skill Security Report: safe-skill
59+
Rating: A (100/100)
60+
61+
Issues: none
62+
63+
Passed dimensions:
64+
- Prompt injection
65+
- Sensitive file access / data exfiltration
66+
- Compliance violations
67+
- Malicious scripts
68+
- Dependency safety
69+
- Description trigger reasonability
70+
- Frontmatter compliance
71+
```
72+
73+
High-risk skill:
74+
75+
```text
76+
Skill Security Report: high-risk-skill
77+
Rating: F (0/100)
78+
79+
Issues (5):
80+
- [high/confirmed] M4-REMOTE-SCRIPT-EXEC: Remote script execution detected
81+
- [high/confirmed] S2-EXFILTRATION: Sensitive data exfiltration pattern detected
82+
- [medium/confirmed] P1-PROMPT-INJECTION: Prompt-injection instruction detected
83+
```
84+
4985
## Input Support
5086

5187
- `SKILL.md` or any local text/code file
@@ -57,6 +93,13 @@ python scripts/scan.py path/to/skill-directory --ignore R3-N5
5793

5894
Directory and zip scans include `SKILL.md` and files under `scripts/` by default. Reference docs are skipped to reduce false positives; use `--include-references` when you explicitly want to scan reference markdown too.
5995

96+
## Requirements
97+
98+
- Python 3.10+
99+
- No runtime package dependencies
100+
101+
The CI workflow currently tests Python 3.11 and 3.12 on Ubuntu.
102+
60103
## Rating Model
61104

62105
- `A`: no findings
@@ -82,6 +125,12 @@ python scripts/scan.py tests/fixtures/safe-skill
82125
python scripts/scan.py tests/fixtures/high-risk-skill
83126
```
84127

128+
Run the scanner against this repository:
129+
130+
```bash
131+
python scripts/scan.py .
132+
```
133+
85134
## Project Structure
86135

87136
```text
@@ -102,6 +151,12 @@ skill-security-guard/
102151

103152
This is a static scanner. It does not execute skills, monitor runtime behavior, prove package provenance, or replace human security review. Findings are intentionally conservative and should be reviewed before blocking a skill.
104153

154+
## Contributing
155+
156+
Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for local development and rule-design guidance.
157+
158+
For vulnerability reports, see [SECURITY.md](SECURITY.md).
159+
105160
## License
106161

107162
[MIT](LICENSE)

SECURITY.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Security Policy
2+
3+
## Reporting a Vulnerability
4+
5+
Please do not open a public issue for a vulnerability that could help attackers abuse skill packages.
6+
7+
Report security issues through GitHub private vulnerability reporting if it is available on this repository. If private reporting is unavailable, open a minimal public issue that says a security report is available without including exploit details.
8+
9+
Useful report details include:
10+
11+
- affected rule or input path
12+
- sample input that triggers the issue
13+
- expected vs actual scanner behavior
14+
- whether the issue causes a false negative, false positive, crash, or unsafe extraction
15+
16+
## Scope
17+
18+
In scope:
19+
20+
- unsafe zip handling
21+
- false negatives for high-risk patterns
22+
- crashes on reasonable skill inputs
23+
- output that could mislead users into installing a clearly unsafe skill
24+
25+
Out of scope:
26+
27+
- requests to classify organization-specific policy without sample rules
28+
- runtime behavior of third-party skills after installation
29+
- vulnerabilities in external tools that are not bundled by this project

SKILL.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
---
22
name: skill-security-guard
3-
description: "Scan OpenClaw/Codex-style skill packages for static security risks. Use for skill audit, security check, prompt-injection review, suspicious scripts, unsafe dependencies, zip package review, and pre-install skill review. Not for runtime monitoring."
3+
description: "Scan agent skill packages for static security risks. Use for skill audit, security check, prompt-injection review, suspicious scripts, unsafe dependencies, zip package review, and pre-install skill review. Not for runtime monitoring."
44
---
55

66
# skill-security-guard
77

8-
扫描 OpenClaw/Codex-style Skill 包的静态安全风险,输出 A-F 评级、置信度、证据行和修复建议。
8+
扫描 agent skill 包的静态安全风险,输出 A-F 评级、置信度、证据行和修复建议。
99

1010
## 场景映射
1111

scripts/scan.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/usr/bin/env python3
2-
"""Static security scanner for OpenClaw/Codex-style skill packages."""
2+
"""Static security scanner for agent skill packages."""
33

44
from __future__ import annotations
55

0 commit comments

Comments
 (0)