verify-security — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited verify-security (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Verify code for security anti-patterns and vulnerabilities. All analysis happens locally—code never leaves your machine.
Trigger this skill when the user asks to:
Note: For full verification including patterns, quality, and language-specific checks, tell the user to say "verify agent".
Locate files to analyze:
Configuration files:
package.json, pyproject.toml, Cargo.toml - Dependencies.env, .env.example, .env.local - Environment filesconfig.py, settings.py, config.ts - ConfigurationSource files:
*.py, *.ts, *.js, *.go, *.rs - Source codeauth, api, client, secret, config in nameExclude:
node_modules/, .venv/, venv/, __pycache__/*.test.*, *.spec.*, *_test.go#### Check Tiers
Tag every finding with [P] for pattern or [H] for heuristic.
#### 2.1 [PATTERN] Hardcoded Secrets
Scan for assignments matching these patterns (case-insensitive):
| Variable pattern | Fail condition |
|---|---|
API_KEY | Assigned to string literal |
SECRET | Assigned to string literal |
PASSWORD | Assigned to string literal |
TOKEN | Assigned to string literal |
PRIVATE_KEY | Assigned to string literal |
AWS_ACCESS_KEY_ID | Assigned to string literal |
AWS_SECRET_ACCESS_KEY | Assigned to string literal |
Examples of failures:
# ❌ Issue
API_KEY = "sk-abc123..."
password = "hunter2"
OPENAI_API_KEY = "sk-proj-..."
# ✅ Pass
API_KEY = os.environ["API_KEY"]
password = os.getenv("PASSWORD")
api_key = settings.API_KEYAlso flag:
sk-... (OpenAI)sk-ant-... (Anthropic)AKIA... (AWS)ghp_... (GitHub)xoxb-... (Slack)Severity: ❌ Issue
#### 2.2 [PATTERN] Dependency Version Pinning
Python (`requirements.txt`):
| Pattern | Severity |
|---|---|
package>=1.0 | ❌ Issue |
package>1.0 | ❌ Issue |
package (no version) | ❌ Issue |
package==1.0.0 | ✅ Pass |
package~=1.0 | ✅ Pass |
Python (`pyproject.toml`):
Check [project.dependencies] and [tool.poetry.dependencies]:
>= versions → ❌ Issue== or ^ or ~ → ✅ PassJavaScript/TypeScript (`package.json`):
| Pattern | Severity |
|---|---|
"package": "*" | ❌ Issue |
"package": "latest" | ❌ Issue |
"package": ">=1.0.0" | ⚠️ Warning |
"package": "^1.0.0" | ✅ Pass |
"package": "~1.0.0" | ✅ Pass |
"package": "1.0.0" | ✅ Pass |
#### 2.3 [HEURISTIC] Input Validation
Check for external data handling:
Look for:
@app.route, router.get, etc.)request.body, req.params, input())Flag if:
Severity: ⚠️ Warning
Example patterns to flag:
# ⚠️ Warning - SQL without parameterization
query = f"SELECT * FROM users WHERE id = {user_id}"
# ⚠️ Warning - Path traversal risk
file_path = os.path.join(base_dir, user_filename)
# ✅ Pass - Parameterized query
cursor.execute("SELECT * FROM users WHERE id = ?", (user_id,))#### 2.4 [HEURISTIC] Error Message Exposure
Check error handling for information leakage:
Flag if:
Look for:
# ⚠️ Warning
except Exception as e:
return {"error": str(e)} # Exposes internal details
# ⚠️ Warning
app = Flask(__name__)
app.debug = True # Debug in production
# ✅ Pass
except Exception as e:
logger.error(f"Error: {e}")
return {"error": "An error occurred"}Severity: ⚠️ Warning
#### 2.5 [HEURISTIC] Secure Defaults
Check configuration for insecure defaults:
| Setting | Insecure | Secure |
|---|---|---|
| CORS | * (allow all) | Specific origins |
| SSL verification | verify=False | verify=True or omitted |
| Debug mode | debug=True | debug=False |
| Cookie security | secure=False | secure=True |
| CSRF | Disabled | Enabled |
Examples:
# ⚠️ Warning
requests.get(url, verify=False)
app.config["SESSION_COOKIE_SECURE"] = False
CORS(app, origins="*")
# ✅ Pass
requests.get(url) # verify=True is default
app.config["SESSION_COOKIE_SECURE"] = True
CORS(app, origins=["https://example.com"])Severity: ⚠️ Warning
#### 2.6 [HEURISTIC] Sensitive Data Logging
Check logging statements for sensitive data:
Flag if logging includes:
Look for:
# ⚠️ Warning
logger.info(f"User login: {username} with password {password}")
print(f"API response: {response.json()}") # May contain tokens
# ✅ Pass
logger.info(f"User login: {username}")
logger.debug(f"Request to {url}") # No sensitive dataSeverity: ⚠️ Warning
# Security Verification Report
**Project:** [name or path]
**Date:** [current date]
**Files analyzed:** [count]
## Summary
✅ X checks passed | ⚠️ Y warnings | ❌ Z issues
## Secrets
- [x] No hardcoded secrets found
- [ ] ❌ Hardcoded secret at `[file:line]`
## Dependencies
- [x] All dependencies pinned
- [ ] ❌ Unpinned dependencies in `[file]`
## Input Validation
- [x] External input properly validated
- [ ] ⚠️ Potential injection at `[file:line]`
## Error Handling
- [x] Errors properly sanitized
- [ ] ⚠️ Information leakage at `[file:line]`
## Findings
> `[P]` = pattern-matched · `[H]` = heuristic
### ✅ Passing
- `[P]` No hardcoded API keys or secrets
- `[P]` Dependencies properly pinned
### ⚠️ Warnings
- `[H]` [Check]: [description]
- **Location:** [file:line]
- **Risk:** [what could go wrong]
- **Suggestion:** [how to fix]
### ❌ Issues
- `[P]` [Check]: [description]
- **Location:** [file:line]
- **Rule:** [which rule violated]
- **Fix:** [specific remediation]
## Recommendations
1. [Priority recommendation]
2. [Additional improvements]For full verification including patterns, quality, and language-specific checks, say "verify agent".
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.