Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Configure Static Application Security Testing (SAST) tools for automated vulnerability detection in application code. Use when setting up security scanning, implementing DevSecOps practices, or automating code vulnerability detection.
.claude/skills/microck-sast-configuration/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-17 | ✗→✓ | ▲ Improved | 23% | 0% |
| case-22 | ✓→✗ | ▼ Worse | 57% | 0% |
| case-18 | ✓→✓ | = Same ✓ | 50% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 15% | 0% |
| case-15 | ✓→✓ | = Same ✓ | 37% | 0% |
Static Application Security Testing (SAST) tool setup, configuration, and custom rule creation for comprehensive security scanning across multiple programming languages.
This skill provides comprehensive guidance for setting up and configuring SAST tools including Semgrep, SonarQube, and CodeQL. Use this skill when you need to:
bash# Semgrep quick start pip install semgrep semgrep --config=auto --error # SonarQube with Docker docker run -d --name sonarqube -p 9000:9000 sonarqube:latest # CodeQL CLI setup gh extension install github/gh-codeql codeql database create mydb --language=python
yaml# GitHub Actions example - name: Run Semgrep uses: returntocorp/semgrep-action@v1 with: config: >- p/security-audit p/owasp-top-ten
bash# .pre-commit-config.yaml - repo: https://github.com/returntocorp/semgrep rev: v1.45.0 hooks: - id: semgrep args: ['--config=auto', '--error']
bash./scripts/run-sast.sh --setup --language python --tools semgrep,sonarqube
yaml# See references/semgrep-rules.md for detailed examples rules: - id: hardcoded-jwt-secret pattern: jwt.encode($DATA, "...", ...) message: JWT secret should not be hardcoded severity: ERROR
bash# PCI-DSS focused scan semgrep --config p/pci-dss --json -o pci-scan-results.json
| Tool | Best For | Language Support | Cost | Integration | |------|----------|------------------|------|-------------| | Semgrep | Custom rules, fast scans | 30+ languages | Free/Enterprise | Excellent | | SonarQube | Code quality + security | 25+ languages | Free/Commercial | Good | | CodeQL | Deep analysis, research | 10+ languages | Free (OSS) | GitHub native |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-18 | pass→pass | 18,186 | 23,895 | +31% | 1 | 1 | 0% | 2,942 | 4,421 | +50% | 0 | 0 | — |
case-05 | pass→pass | 15,930 | 8,881 | -44% | 1 | 1 | 0% | 2,776 | 3,197 | +15% | 0 | 0 | — |
case-15 | pass→pass | 15,737 | 6,315 | -60% | 1 | 1 | 0% | 1,744 | 2,392 | +37% | 0 | 0 | — |
case-16 | pass→pass | 18,714 | 26,269 | +40% | 1 | 1 | 0% | 2,743 | 3,951 | +44% | 0 | 0 | — |
case-01 | pass→pass | 19,113 | 18,958 | -1% | 1 | 1 | 0% | 3,327 | 4,858 | +46% | 0 | 0 | — |
case-02 | pass→pass | 16,985 | 13,014 | -23% | 1 | 1 | 0% | 2,782 | 3,491 | +25% | 0 | 0 | — |
case-03 | pass→pass | 15,230 | 74,226 | +387% | 1 | 1 | 0% | 2,531 | 3,715 | +47% | 0 | 0 | — |
case-04 | pass→pass | 13,207 | 11,110 | -16% | 1 | 1 | 0% | 2,194 | 3,135 | +43% | 0 | 0 | — |
case-06 | pass→pass | 11,389 | 5,581 | -51% | 1 | 1 | 0% | 2,180 | 2,274 | +4% | 0 | 0 | — |
case-07 | pass→pass | 13,410 | 7,816 | -42% | 1 | 1 | 0% | 2,402 | 2,670 | +11% | 0 | 0 | — |
case-08 | pass→pass | 6,284 | 4,669 | -26% | 1 | 1 | 0% | 1,155 | 2,024 | +75% | 0 | 0 | — |
case-09 | pass→pass | 7,554 | 5,257 | -30% | 1 | 1 | 0% | 1,248 | 2,158 | +73% | 0 | 0 | — |
case-17 | fail→pass | 31,158 | 12,235 | -61% | 1 | 1 | 0% | 3,027 | 3,727 | +23% | 0 | 0 | — |
case-10 | pass→pass | 9,932 | 3,399 | -66% | 1 | 1 | 0% | 1,685 | 1,848 | +10% | 0 | 0 | — |
case-11 | fail→fail | 16,480 | 18,062 | +10% | 1 | 1 | 0% | 2,476 | 4,044 | +63% | 0 | 0 | — |
case-12 | pass→pass | 17,922 | 17,786 | -1% | 1 | 1 | 0% | 2,734 | 4,415 | +61% | 0 | 0 | — |
case-13 | pass→pass | 17,481 | 18,265 | +4% | 1 | 1 | 0% | 2,616 | 4,248 | +62% | 0 | 0 | — |
case-14 | pass→pass | 17,145 | 20,816 | +21% | 1 | 1 | 0% | 2,767 | 4,714 | +70% | 0 | 0 | — |
case-19 | fail→fail | 7,012 | 5,781 | -18% | 1 | 1 | 0% | 1,075 | 2,267 | +111% | 0 | 0 | — |
case-20 | pass→pass | 6,269 | 6,182 | -1% | 1 | 1 | 0% | 985 | 2,367 | +140% | 0 | 0 | — |
case-21 | pass→pass | 13,953 | 7,005 | -50% | 1 | 1 | 0% | 2,031 | 2,674 | +32% | 0 | 0 | — |
case-22 | pass→fail | 14,880 | 14,928 | +0% | 1 | 1 | 0% | 2,253 | 3,539 | +57% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of 0 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.