Individual skill
pyspector-security-audit
Run a full Python codebase security audit using PySpector (https://github.com/ParzivalHack/PySpector), a Rust-core SAST scanner. Use this skill whenever the user asks for a security audit, vulnerability scan, SAST scan, code security review, or dependency/CVE check of a Python codebase or repository, including phrasing like "check this repo for vulnerabilities," "is my code secure," "audit my project," "scan for CVEs," or "find security issues." Also trigger if the user mentions PySpector by name for any reason (install, upgrade, run, configure). This skill installs PySpector (including its required Rust toolchain) if missing, selects scan flags based on what the codebase actually looks like, runs the scan, verifies findings against the real source before reporting them, and produces a report the user can read. Do not use this skill for non-Python codebases, for generic code review unrelated to security, or for fixing/patching vulnerabilities after the report already exists (that's a normal coding task).
SKILL.md
Source commit 3b4fb2354899c41cdf0d019e46d627680863535d
What was checked
- Matches the observed repository HEAD
- Yes
- Scanner rules are current
- Yes
- Repository scan complete
- No
- Skill scan complete
- No
- Observed behavior
- Network or broad shell
- Last checked
- Nov 6, 2026
These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.
Install this skill
Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.
An install command is unavailable: current rules, complete repository and skill scans, an eligible behavior level and a permitted license are required.
Repository context
- Repository stars (not skill ratings)
- 153
- Repository last updated
- Oct 20, 2026
- License
- Apache-2.0
Observed agent integration: No specific integration evidence. Standard SKILL.md installation does not imply verified compatibility.
- appsec Repository topic
- cybersecurity-tools Repository topic
- python3 Repository topic
- sast Repository topic
- sast-rust Repository topic
- contributions-welcome Repository topic
- python-rust Repository topic
- security Derived category
- engineering Derived category
Files and excerpt
File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.
Browse files
.dockerignoreasset · 284 bytes.github/SECURITY.mddoc · 11,340 bytes.gitignoreasset · 929 bytes.pre-commit-config.yamlasset · 1,553 bytes.pre-commit-hooks.yamlasset · 252 bytes.satori.ymlasset · 1,171 bytesCODE_OF_CONDUCT.mddoc · 5,226 bytesCONTRIBUTING.mddoc · 5,866 bytesCargo.tomlasset · 459 bytesDockerfileruns · 1,580 bytesLICENSEasset · 11,357 bytesMANIFEST.inasset · 290 bytesNOTICE.mddoc · 693 bytesREADME.mddoc · 27,320 bytesSKILL.mdcore · 13,905 bytesSKILL.mdcore · 13,905 bytesSKILL.mdcore · 13,905 bytesSKILL.mdcore · 13,905 bytesSKILL.mdcore · 13,905 bytesSKILL.mdcore · 13,905 bytesSKILL.mdcore · 13,905 bytesSKILL.mdcore · 13,905 bytesSKILL.mdcore · 13,905 bytesSKILL.mdcore · 13,905 bytesSKILL.mdcore · 13,905 bytesSKILL.mdcore · 13,905 bytesSKILL.mdcore · 13,905 bytesSKILL.mdcore · 13,905 bytesSKILL.mdcore · 13,905 bytesbenchmarks/speed/bandit.ymlasset · 794 bytesbenchmarks/speed/benchmark.shruns · 23,665 bytesbenchmarks/speed/benchmark_results_20260828_132828.csvasset · 1,050 bytesbenchmarks/speed/benchmarkfulloutputandrawdata.txtdoc · 41,263 bytesbenchmarks/speed/benchmarkgraph.pyruns · 12,934 bytesbenchmarks/speed/benchmarkresultscreenshot.pngasset · 245,901 bytesbenchmarks/speed/fastapi_fastapi_bandit_run5_20260828_145113.logasset · 254 bytesbenchmarks/speed/pyspector.ymlasset · 1,439 bytesbenchmarks/speed/pyspector_benchmark_graphs.pngasset · 504,183 bytesbenchmarks/speed/semgrep.ymlasset · 976 bytesimage.pngasset · 28,090 bytesindex.htmlasset · 127,615 byteslogo.pngasset · 91,169 bytespyproject.tomlasset · 638 bytesrequirements.txtdoc · 223 bytesscripts/setup_cron.shruns · 1,740 bytessetup.cfgasset · 155 bytessetup.pyruns · 1,711 bytessrc/main.rsasset · 6,038 bytessrc/pyspector/__init__.pyruns · 0 bytessrc/pyspector/_ast_encode.pyruns · 4,646 bytessrc/pyspector/_parallel.pyruns · 4,699 bytessrc/pyspector/_rust_core/Cargo.tomlasset · 538 bytessrc/pyspector/_rust_core/src/analysis/ast_analysis.rsasset · 4,461 bytessrc/pyspector/_rust_core/src/analysis/config_analysis.rsasset · 3,407 bytessrc/pyspector/_rust_core/src/analysis/mod.rsasset · 7,568 bytessrc/pyspector/_rust_core/src/analysis/taint_analysis.rsasset · 97,244 bytessrc/pyspector/_rust_core/src/ast_parser.rsasset · 736 bytessrc/pyspector/_rust_core/src/graph/call_graph_builder.rsasset · 8,388 bytessrc/pyspector/_rust_core/src/graph/cfg_builder.rsasset · 6,517 bytessrc/pyspector/_rust_core/src/graph/mod.rsasset · 72 bytessrc/pyspector/_rust_core/src/graph/representation.rsasset · 1,885 bytessrc/pyspector/_rust_core/src/issues.rsasset · 2,014 bytessrc/pyspector/_rust_core/src/lib.rsasset · 5,335 bytessrc/pyspector/_rust_core/src/rules.rsasset · 8,923 bytessrc/pyspector/_rust_core/src/supply_chain.rsasset · 21,441 bytessrc/pyspector/ast_cache.pyruns · 23,380 bytessrc/pyspector/cli.pyruns · 45,416 bytessrc/pyspector/config.pyruns · 3,117 bytessrc/pyspector/messages.pyruns · 3,352 bytessrc/pyspector/reporting.pyruns · 8,974 bytessrc/pyspector/rules/__init__.pyruns · 0 bytessrc/pyspector/rules/built-in-rules-ai.tomlasset · 22,799 bytessrc/pyspector/rules/built-in-rules.tomlasset · 108,030 bytessrc/pyspector/stats.pyruns · 11,082 bytessrc/pyspector/triage.pyruns · 9,741 bytestests/examples/hardcoded_anthropic_key.pyruns · 95 bytestests/unit/ast_cache_test.pyruns · 26,345 bytestests/unit/reporting_test.pyruns · 13,558 bytestests/unit/test_a_sink_rules.pyruns · 7,361 bytestests/unit/test_ai_rules.pyruns · 17,530 bytestests/unit/test_config.pyruns · 2,691 bytestests/unit/test_false_positive_reductions.pyruns · 17,715 bytestests/unit/test_frontend_parallel.pyruns · 10,028 bytestests/unit/test_get_asts.pyruns · 3,084 bytestests/unit/test_group_a_rules.pyruns · 9,718 bytestests/unit/test_missing_rules.pyruns · 18,853 bytestests/unit/test_semantic_provenance.pyruns · 8,001 bytestests/unit/test_symlink_containment.pyruns · 2,401 bytestests/unit/test_taint_engine_extension.pyruns · 10,380 bytes
Read excerpt
# PySpector Security Audit
Drive an end-to-end Python codebase security audit with PySpector: install, verify, learn the CLI, recon the codebase, scan with the right flags, verify, report.
PySpector is a Rust-core, Python-CLI SAST tool with a flow-sensitive, inter-procedural taint engine. Its ruleset spans regex (secrets/config), AST (anti-patterns), and graph/taint (data-flow vulnerability chains), plus optional AI/LLM-specific rules and dependency CVE checks. Full project context: https://github.com/ParzivalHack/PySpector
## Workflow overview
1. Check for an existing install; install if missing (including Rust)
2. Confirm the install actually works
3. Read `pyspector --help` and `pyspector scan --help` to get the real, current flag set. Never assume flags from this document alone
4. Recon the target codebase to decide which optional rulesets apply
5. Run the scan(s) with the right flags
6. Statically re-verify the findings that matter before reporting anything