This skill should be used when the user asks to "triage security findings", "fix a Checkmarx finding", "review SonarCloud results", "dismiss a false positive", "check code scanning alerts", or needs to work with GitHub Advanced Security alerts, scanner annotations on PRs, or Grype vulnerability results.
npx skills add https://github.com/bitwarden/ai-plugins --skill triaging-security-findings
Bitwarden uses three scanners, all triggered by the scan.yml GitHub Actions workflow in each repository:
Checkmarx One — SAST (static analysis) and IaC (infrastructure as code) scanning. Dedicated cloud tenant named "bitwarden". Results upload to GitHub Advanced Security via SARIF format and post as PR annotations. Checkmarx understands branch differences, so PR results show only what changed. Access the Checkmarx webapp at the AST WebApp (tenant: "bitwarden") or via the Workspace Directory.
SonarCloud — Quality and security hotspot scanning. Free public cloud offering (not licensed for private repos). Uses quality profiles and gates for customized results. Posts PR annotations. Results also propagate to GitHub's security section. Configure via sonar-config input: default, dotnet, or maven.
Grype — Container image and filesystem vulnerability scanner. CVE-focused. Used for supply chain and dependency vulnerability detection.
Use these gh api commands to query and manage security findings:
# List all open code scanning alerts
gh api /repos/{owner}/{repo}/code-scanning/alerts --jq '.[] | {number, state, rule: .rule.id, severity: .rule.security_severity_level, path: .most_recent_instance.location.path}'
# Get details for a specific alert
gh api /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}
# Filter alerts by path (useful for file-specific triage)
gh api "/repos/{owner}/{repo}/code-scanning/alerts?ref={branch}&state=open" --jq '.[] | select(.most_recent_instance.location.path | startswith("src/Api"))'
# Filter by tool (separate Checkmarx from SonarCloud results)
gh api "/repos/{owner}/{repo}/code-scanning/alerts?tool_name=Checkmarx&state=open"
gh api "/repos/{owner}/{repo}/code-scanning/alerts?tool_name=SonarQube&state=open"
# Dismiss an alert as false positive
gh api -X PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number} \
-f state=dismissed \
-f dismissed_reason=false\ positive \
-f dismissed_comment="Rationale for dismissal"
# Dismiss as won't fix
gh api -X PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number} \
-f state=dismissed \
-f dismissed_reason=won\'t\ fix \
-f dismissed_comment="Rationale"
# List open Dependabot alerts
gh api /repos/{owner}/{repo}/dependabot/alerts --jq '.[] | {number, state, severity: .security_vulnerability.severity, package: .security_vulnerability.package.name, ecosystem: .security_vulnerability.package.ecosystem}'
# Get specific alert details
gh api /repos/{owner}/{repo}/dependabot/alerts/{alert_number}
# List secret scanning alerts
gh api /repos/{owner}/{repo}/secret-scanning/alerts --jq '.[] | {number, state, secret_type, created_at}'
These are the states available in Checkmarx for managing findings. Getting the state right matters — it affects whether the finding reappears in future scans.
| State | When to Use | Effect |
| ---------------------------- | -------------------------------------------------------------------------- | --------------------------------------------------------- |
| Not Exploitable | CERTAIN there is no potential risk at ANY point in the product's lifecycle | Finding stops appearing in subsequent scans |
| Proposed Not Exploitable | Suspected false positive, needs team verification | Flags for review; requires manager approval for promotion |
| Confirmed | Vulnerability poses a real risk to be addressed during development | Tracked as known issue |
| Urgent | Acute risk requiring immediate attention | Escalated priority |
SonarCloud categorizes findings as issues (code quality and bugs) and security hotspots (code that needs manual security review).
Before dismissing any finding, follow this decision tree:
If any step is uncertain, mark as Proposed Not Exploitable rather than Not Exploitable.
Common remediation patterns by vulnerability type:
| Vulnerability | Wrong | Right |
| ------------------------ | -------------------------------------------- | -------------------------------------------------- |
| SQL Injection | String concatenation in queries | Parameterized queries / stored procedures |
| XSS | Raw interpolation in HTML | Output encoding / framework auto-escaping |
| Path Traversal | Direct use of user-supplied paths | Canonicalize + validate against allowed base path |
| SSRF | Direct use of user-supplied URLs | Allowlist of permitted hosts/schemes |
| Insecure Deserialization | Deserializing untrusted input with type info | Use safe serializers, avoid TypeNameHandling.All |
| Hardcoded Secrets | Credentials in source code | Environment variables / Azure Key Vault |
| XXE | Default XML parser settings | Disable DTD processing and external entities |
upload-sarif: false to the Checkmarx reusable workflow.quality job from scan.yml entirely for private repos.Expert in secure backend coding practices specializing in input validation, authentication, and API security. Use PROACTIVELY for backend security implementations or security code reviews.
This skill should be used when the user asks to "perform cloud penetration testing", "assess Azure or AWS or GCP security", "enumerate cloud resources", "exploit cloud misconfigurations", "test O365 security", "extract secrets from cloud environments", or "audit cloud infrastructure". It provides comprehensive techniques for security assessment across major cloud platforms.
You are a dependency security expert specializing in vulnerability scanning, license compliance, and supply chain security. Analyze project dependencies for known vulnerabilities, licensing issues, outdated packages, and provide actionable remediation strategies.
Comprehensive Flow Nexus platform management - authentication, sandboxes, app deployment, payments, and challenges
This skill should be used when the user asks to "escalate privileges on Linux", "find privesc vectors on Linux systems", "exploit sudo misconfigurations", "abuse SUID binaries", "exploit cron jobs for root access", "enumerate Linux systems for privilege escalation", or "gain root access from low-privilege shell". It provides comprehensive techniques for identifying and exploiting privilege escalation paths on Linux systems.
Expert malware analyst specializing in defensive malware research, threat intelligence, and incident response. Masters sandbox analysis, behavioral analysis, and malware family identification. Handles static/dynamic analysis, unpacking, and IOC extraction. Use PROACTIVELY for malware triage, threat hunting, incident response, or security research.
This skill should be used when the user asks to "use Metasploit for penetration testing", "exploit vulnerabilities with msfconsole", "create payloads with msfvenom", "perform post-exploitation", "use auxiliary modules for scanning", or "develop custom exploits". It provides comprehensive guidance for leveraging the Metasploit Framework in security assessments.
Expert in secure mobile coding practices specializing in input validation, WebView security, and mobile-specific security patterns. Use PROACTIVELY for mobile security implementations or mobile security code reviews.
Take bitwarden/triaging-security-findings from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.