From project-toolkit
Executes CodeQL security scans with language detection, database caching, and SARIF output. Use for static security analysis on Python or GitHub Actions codebases.
npx claudepluginhub rjmurillo/ai-agents --plugin project-toolkitThis skill uses the workspace's default tool permissions.
Execute CodeQL security scans with automated language detection, database caching, and SARIF output generation.
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Execute CodeQL security scans with automated language detection, database caching, and SARIF output generation.
# Via Claude Code skill system
/codeql-scan
# Full scan with auto-detected languages
python3 .claude/skills/codeql-scan/scripts/invoke_codeql_scan.py --operation full
# Quick scan with cached databases
python3 .claude/skills/codeql-scan/scripts/invoke_codeql_scan.py --operation quick
# Validate configuration only
python3 .claude/skills/codeql-scan/scripts/invoke_codeql_scan.py --operation validate
Run CodeQL scanCheck for vulnerabilitiesValidate CodeQL configurationQuick security scanScan for security issuesNeed CodeQL analysis?
+-- First time setup --> python3 .codeql/scripts/install_codeql.py
+-- Validate config --> invoke_codeql_scan.py --operation validate
+-- Full repository scan --> invoke_codeql_scan.py --operation full
+-- Quick scan (cached) --> invoke_codeql_scan.py --operation quick
+-- Specific language --> invoke_codeql_scan.py --operation full --languages python
+-- CI mode --> invoke_codeql_scan.py --operation full --ci
| Operation | Use When | Performance | Output |
|---|---|---|---|
full | First scan, major changes, pre-PR validation | 30-60s | SARIF + Console |
quick | Iterative development, minor changes | 10-20s | SARIF + Console |
validate | Config changes, troubleshooting | <5s | Console only |
flowchart TD
A[Start CodeQL Scan] --> B{Operation Type}
B -->|full| C[Check CLI Installed]
B -->|quick| C
B -->|validate| D[Run test_codeql_config.py]
C --> E{CLI Available?}
E -->|No| F[Error: Install CLI]
E -->|Yes| G[Detect Languages]
G --> H[Run invoke_codeql_scan.py]
H --> I{Scan Successful?}
I -->|Yes| J[Generate SARIF]
I -->|No| K[Error: Scan Failed]
J --> L[Display Summary]
D --> M{Config Valid?}
M -->|Yes| N2[Display Config Status]
M -->|No| O2[Exit 2: Config Invalid]
L --> N[Exit 0]
N2 --> N
F --> O[Exit 3]
K --> P[Exit 3]
Run a comprehensive security analysis of the entire codebase.
Check Prerequisites:
# Verify CodeQL CLI is installed
test -f .codeql/cli/codeql || echo "CodeQL CLI not found. Run: python3 .codeql/scripts/install_codeql.py"
Run Scan:
python3 .claude/skills/codeql-scan/scripts/invoke_codeql_scan.py --operation full
Review Results:
.codeql/results/*.sarifUse for rapid iteration during development. Only re-scans if source files changed.
python3 .claude/skills/codeql-scan/scripts/invoke_codeql_scan.py --operation quick
Performance comparison:
Verify CodeQL configuration YAML syntax and query packs.
python3 .claude/skills/codeql-scan/scripts/invoke_codeql_scan.py --operation validate
Wrapper script providing skill-specific functionality.
| Parameter | Type | Default | Description |
|---|---|---|---|
--operation | choice | full | Operation type: full, quick, validate |
--languages | list | (auto-detect) | Languages to scan: python, actions |
--ci | flag | false | Enable CI mode (exit 1 on findings) |
Exit Codes (ADR-035):
| Code | Meaning | CI Behavior |
|---|---|---|
| 0 | Success (no findings or findings ignored) | Pass |
| 1 | Findings detected (CI mode only) | Fail |
| 2 | Configuration invalid | Fail |
| 3 | Scan execution failed | Fail |
This skill wraps these core CodeQL scripts:
| Script | Purpose | Location |
|---|---|---|
install_codeql.py | Download and install CodeQL CLI | .codeql/scripts/ |
invoke_codeql_scan.py | Execute security scans | .codeql/scripts/ |
test_codeql_config.py | Validate configuration | .codeql/scripts/ |
get_codeql_diagnostics.py | Comprehensive health check | .codeql/scripts/ |
| Avoid | Why | Instead |
|---|---|---|
| Skip config validation before scan | Wastes time on invalid config | Run --operation validate first |
| Ignore exit codes | Silent failures hide security issues | Check $? (Bash/Zsh) or $LASTEXITCODE (PowerShell) after every invocation |
| Suppress stderr before checking exit code | Loses diagnostic information | Capture output, check exit code, then filter |
| Full scan on every minor change | 3-5x slower than needed | Use --operation quick for iteration |
| Mix skill wrapper with direct script calls | Inconsistent behavior | Always use invoke_codeql_scan.py |
Before completing a security scan task:
--operation validate)invoke_codeql_scan.py completed successfully (exit code 0; see exit codes in Scripts section).codeql/results/| Skill | Purpose | When to Use |
|---|---|---|
security-detection | Detect security-critical file changes | Before CodeQL scan to identify high-risk changes |
github | GitHub operations (PR comments, issues) | Report CodeQL findings to PR reviews |
session-init | Initialize session with protocol | Before starting security analysis workflow |
.agents/SESSION-PROTOCOL.md=== CodeQL Security Scan ===
[OK] CodeQL CLI found at .codeql/cli/codeql
[OK] Languages detected: python, actions
[OK] Running full scan (no cache)...
Scanning python...
Database created: .codeql/db/python
Queries executed: 89
Findings: 1 (0 high, 0 medium, 1 low)
Scanning actions...
Database created: .codeql/db/actions
Queries executed: 45
Findings: 0
[OK] SARIF results saved to .codeql/results/
[OK] Scan completed successfully
Total findings: 1 (0 high, 0 medium, 1 low)
Results are saved in SARIF format for IDE integration.
Location: .codeql/results/<language>.sarif
{
"version": "2.1.0",
"runs": [{
"tool": {
"driver": {
"name": "CodeQL",
"version": "2.15.0"
}
},
"results": [{
"ruleId": "py/sql-injection",
"level": "error",
"message": {
"text": "Potential SQL injection vulnerability"
},
"locations": [{
"physicalLocation": {
"artifactLocation": {
"uri": "scripts/example.py"
},
"region": {
"startLine": 42
}
}
}]
}]
}]
}
{
"status": "findings_detected",
"languages": ["python", "actions"],
"findings": {
"total": 1,
"high": 0,
"medium": 0,
"low": 1
},
"sarif_files": [
".codeql/results/python.sarif",
".codeql/results/actions.sarif"
]
}
The PostToolUse hook automatically triggers targeted CodeQL scans after you write Python files (.py) or GitHub Actions workflows (.yml in .github/workflows/). Uses a focused query set (5-10 critical CWEs) to complete within 30 seconds.
Automatic Triggers:
Configuration:
.claude/hooks/PostToolUse/invoke_codeql_quick_scan.py.github/codeql/codeql-config-quick.ymlPerformance:
| Scenario | Duration |
|---|---|
| Cached DB | 5-15 seconds |
| First run | 20-30 seconds |
| Timeout budget | 30 seconds (graceful) |
Graceful Degradation:
# Console output (default)
python3 .codeql/scripts/get_codeql_diagnostics.py
# JSON output (programmatic parsing)
python3 .codeql/scripts/get_codeql_diagnostics.py --output-format json
# Markdown report
python3 .codeql/scripts/get_codeql_diagnostics.py --output-format markdown > diagnostics.md
| Check | What It Validates |
|---|---|
| CLI | Installation, version, executable permissions |
| Config | YAML syntax, query pack availability, language support |
| Database | Existence, cache validity, size, creation timestamp |
| Results | SARIF files, findings count, last scan timestamp |
| Code | Meaning |
|---|---|
| 0 | All checks passed |
| 1 | Some checks failed (warnings) |
| 3 | Unable to run diagnostics |
Error: CodeQL CLI not found at .codeql/cli/codeql
Solution:
python3 .codeql/scripts/install_codeql.py --add-to-path
codeql version
Error: Invalid query pack: codeql/unknown-queries
Solution:
python3 .codeql/scripts/test_codeql_config.py
codeql resolve qlpacks
Error: Query execution timed out after 300s
Solution: Reduce scope by scanning a specific language.
python3 .claude/skills/codeql-scan/scripts/invoke_codeql_scan.py --operation full --languages python
Warning: Using cached database, but source files changed
Solution: Force database rebuild with a full scan.
python3 .claude/skills/codeql-scan/scripts/invoke_codeql_scan.py --operation full
PostToolUse hook not running after file writes. Common causes:
.py and .yml in workflows)Verify:
python3 .codeql/scripts/get_codeql_diagnostics.py
test -f .claude/hooks/PostToolUse/invoke_codeql_quick_scan.py && echo "Hook exists"