Last reviewed: 2026-01-25 Reviewed by: Claude (via /security-review skill) Status: ✅ PASSED
The combo skill codebase has been reviewed for security vulnerabilities using the security-review skill checklist. No security issues were found.
| Category | Status | Notes |
|---|---|---|
| Secrets Management | ✅ Pass | No hardcoded secrets; tokens from env vars |
| Input Validation | ✅ Pass | CLI args via argparse; no unsafe input() |
| Command Injection | ✅ Pass | subprocess uses list args, not shell=True |
| Code Execution | ✅ Pass | No eval()/exec()/compile() |
| Path Traversal | ✅ Pass | Paths restricted to ~/.claude/ |
| Unsafe Deserialization | ✅ Pass | No pickle/yaml.unsafe_load |
| Network Security | ✅ Pass | All requests have timeouts (5-30s) |
| File Operations | ✅ Pass | Limited to ~/.claude/skills/ directory |
# Good: Token from environment variables
token = os.environ.get("GITHUB_TOKEN") or os.environ.get("GH_TOKEN")
# Good: Fallback to gh CLI (secure credential store)
result = subprocess.run(["gh", "auth", "token"], ...)No hardcoded API keys, passwords, or tokens found.
All subprocess calls use list arguments (not shell strings):
# Good: List arguments prevent shell injection
subprocess.run(["gh", "auth", "token"], capture_output=True, timeout=5)
subprocess.run([sys.executable, str(script_path)] + args)No shell=True found anywhere in the codebase.
All HTTP requests include timeouts to prevent hanging:
# Good: Timeouts prevent indefinite blocking
urllib.request.urlopen(req, timeout=10)
urllib.request.urlopen(req, timeout=30)All file operations are restricted to the user's .claude directory:
# Good: Paths restricted to user directory
self.skills_dir = Path.home() / ".claude" / "skills"
self.cache_dir = Path.home() / ".claude" / "cache" / "skill-registry"No path traversal (../) patterns found.
The codebase uses only Python standard library modules:
argparse,json,os,re,shutil,subprocesssys,tempfile,urllib.request,zipfile,pathlibdataclasses,typing,datetime,enum,base64
No third-party dependencies = minimal supply chain risk.
- Consider adding input sanitization for skill names to prevent edge cases
- Add rate limiting awareness when making GitHub API calls
- Document security model for users installing third-party skills
# Use the security-review skill
/security-review /home/ubuntu/.claude/skills/comboThis report was generated using the combo skill's delegation principle, routing to the /security-review skill for systematic analysis.