- Gemini CLI Security Skill
- Overview
- This skill adapts the Gemini CLI Security Extension's analysis methodology for the agent-studio framework. The original extension uses two MCP server patterns — a security analysis server and an OSV-Scanner integration — to provide dual-vector coverage. This skill implements equivalent analysis using native Claude Code tools (WebFetch for OSV.dev API, Grep/Bash for static analysis patterns).
- Source repository
- :
- https://github.com/gemini-cli-extensions/security
- License
-
- Apache 2.0
- Performance
- 90% precision, 93% recall (OpenSSF CVE benchmark, TypeScript/JavaScript) When to Use Before merging pull requests to detect introduced vulnerabilities During security reviews of new code changes For dependency auditing against known CVE databases For LLM-integrated applications requiring prompt injection defense review As part of CI/CD pipeline security gates Iron Law NO PRODUCTION CODE WITHOUT SECURITY ANALYSIS FOR AUTH/SECRETS/EXTERNAL-INPUT HANDLERS All code paths handling authentication, hardcoded values, external input, or AI model outputs MUST be analyzed before production deployment. Vulnerability Coverage Category 1: Secrets Management Pattern Detection Method Hardcoded API keys Grep for key patterns + entropy analysis Hardcoded passwords Credential keyword detection Private keys in source PEM block / base64 key detection Encryption keys Symmetric key constant patterns Category 2: Injection Attacks Attack Type Examples SQL injection String concatenation in queries XSS Unescaped user content in HTML/JS output Command injection Shell exec with user-controlled args SSRF User-controlled URLs in server requests Template injection Unsanitized user input in template engines Category 3: Authentication Flaws Flaw Detection Session bypass Missing auth middleware Weak tokens Predictable token generation Insecure password reset Token-less or email-only resets Missing MFA enforcement Auth flows without 2FA checks Category 4: Data Handling Issue Detection Weak cryptography MD5/SHA1 for secrets; DES/RC4 usage Sensitive data in logs PII/credential patterns in log statements PII violations Unencrypted PII storage or transmission Insecure deserialization Unsafe pickle/eval/deserialize calls Category 5: LLM Safety (Novel) Risk Detection Prompt injection User content injected into LLM prompts without sanitization Unsafe output handling LLM output used in exec/eval/shell without validation Insecure tool integration Tool calls with unchecked LLM-provided parameters Usage Invocation // From an agent Skill ( { skill : 'gemini-cli-security' } ) ; // With arguments via Bash integration Skill ( { skill : 'gemini-cli-security' , args : 'src/ --scan-deps' } ) ; Workflow Execution
Analyze code in a directory
node .claude/skills/gemini-cli-security/scripts/main.cjs --target src/
Scan dependencies for CVEs
node .claude/skills/gemini-cli-security/scripts/main.cjs --scan-deps
JSON output for CI integration
node .claude/skills/gemini-cli-security/scripts/main.cjs --target . --json
Scoped analysis with natural language
node .claude/skills/gemini-cli-security/scripts/main.cjs --target src/auth/ --scope "focus on token handling and session management" Output Format Default output (markdown report):
Security Analysis Report
CRITICAL
[AUTH-001] Hardcoded API key found in src/config.ts:42
Pattern:
const API_KEY = "sk-..."
Remediation: Move to environment variable
HIGH
[INJ-002] SQL injection risk in src/db/users.ts:87 Pattern: String concatenation in query builder Remediation: Use parameterized queries
Dependencies
- lodash@4.17.15 → CVE-2021-23337 (HIGH) - Prototype pollution
- Fix: Upgrade to lodash@4.17.21+
- JSON output
- (
- --json
- flag):
- {
- "findings"
- :
- [
- {
- "id"
- :
- "AUTH-001"
- ,
- "severity"
- :
- "CRITICAL"
- ,
- "category"
- :
- "secrets"
- ,
- "file"
- :
- "src/config.ts"
- ,
- "line"
- :
- 42
- ,
- "description"
- :
- "Hardcoded API key"
- ,
- "remediation"
- :
- "Move to environment variable"
- }
- ]
- ,
- "dependencies"
- :
- [
- {
- "package"
- :
- "lodash"
- ,
- "version"
- :
- "4.17.15"
- ,
- "cve"
- :
- "CVE-2021-23337"
- ,
- "severity"
- :
- "HIGH"
- ,
- "fix"
- :
- "4.17.21"
- }
- ]
- ,
- "summary"
- :
- {
- "critical"
- :
- 1
- ,
- "high"
- :
- 2
- ,
- "medium"
- :
- 3
- ,
- "low"
- :
- 0
- ,
- "precision"
- :
- 0.9
- ,
- "recall"
- :
- 0.93
- }
- }
- OSV.dev Dependency Scanning
- The skill integrates with the
- OSV.dev
- API (no authentication required) to check dependencies:
- // OSV.dev batch query endpoint
- WebFetch
- (
- {
- url
- :
- 'https://api.osv.dev/v1/querybatch'
- ,
- prompt
- :
- 'Extract vulnerability IDs, severity, and affected versions for these packages'
- ,
- }
- )
- ;
- Supported ecosystems
- npm, PyPI, RubyGems, Maven, Go, Cargo, NuGet, Packagist GitHub Actions Integration The original extension supports PR analysis via GitHub Actions. This skill includes an equivalent workflow template:
.github/workflows/security.yml
- name
- :
- Security Analysis
- on
- :
- [
- pull_request
- ]
- jobs
- :
- security
- :
- runs-on
- :
- ubuntu
- -
- latest
- steps
- :
- -
- uses
- :
- actions/checkout@v4
- -
- name
- :
- Run security analysis
- run
- :
- node .claude/skills/gemini
- -
- cli
- -
- security/scripts/main.cjs
- -
- -
- target .
- -
- -
- json
- Implementation Notes
- Why native tools over MCP servers:
- The original extension uses two MCP servers (security analysis server + OSV-Scanner binary). This skill uses native Claude Code tools instead:
- WebFetch replaces OSV-Scanner for dependency CVE lookups (OSV.dev has a public REST API)
- Grep/Bash replace the security analysis server for pattern-based detection
- This approach works immediately without binary installation or session restart
- Deviation from source
- The original uses Gemini AI for code analysis; this skill uses the pattern-based detection methodology documented in the extension's benchmarking. The AI analysis component can be provided by the invoking agent (security-architect) rather than an embedded AI call. Assigned Agents Agent Role security-architect Primary: comprehensive security audits developer Supporting: pre-commit security checks code-reviewer Supporting: PR review security layer Memory Protocol (MANDATORY) Before starting: Read .claude/context/memory/learnings.md After completing: New vulnerability pattern found -> .claude/context/memory/learnings.md Issue with scanning -> .claude/context/memory/issues.md Decision about scope -> .claude/context/memory/decisions.md ASSUME INTERRUPTION: If it's not in memory, it didn't happen.