Skip to content

Rule packs

Rule packs are bundles of detection patterns and policy checks that Pullminder runs against every pull request. Each pack targets a specific concern — leaked secrets, language-specific vulnerabilities, workflow standards, and more. When a pattern matches a line in the PR diff, Pullminder creates a finding that feeds into the risk score.

Pullminder ships two kinds of rule packs:

  • Detection packs use regex pattern matching against the PR diff to find security issues, risky code patterns, and notable changes. Each pattern targets specific languages or file types and carries a severity level.
  • Policy packs enforce team workflow standards such as test naming conventions, PR description quality, and commit message formatting. They evaluate structural properties of the PR rather than individual lines of code.

Both kinds of packs produce findings that contribute to the overall risk score.

On every pull request event (open, synchronize, reopen), Pullminder fetches the diff and runs it through all enabled packs in order:

  1. Each enabled pack iterates over its patterns.
  2. Each pattern is matched against the relevant files in the diff, filtered by language and path.
  3. When a pattern matches, Pullminder creates a finding with the pattern’s severity, category, and suggested fix.
  4. Findings are scored using the pack’s scoring model and aggregated into the PR risk score.

Packs that do not match any file in the diff produce no findings and have zero impact on the score.

Every pack declares an action that determines what happens when it produces findings:

ActionBehaviorUsed by
flagAdd findings to the risk score and include them in the reviewer brief. This is the default.Available as an override for any pack
warnPost an inline comment on the PR for each finding. Findings also contribute to the risk score.Most packs (language security, governance, policy, bot-detection, ai-detection, dependency-detection, sensitive-paths)
blockSet the Pullminder status check to “failure” so the PR cannot be merged until findings are resolved.secrets, infra-security

You can override the action for any pack in the dashboard under Settings > Rule packs.

Pullminder enables a set of default packs out of the box. These cover the most common concerns and require no configuration. Optional packs target specific languages or advanced use cases and must be enabled explicitly.

The following packs are available from the official Pullminder registry at github.com/pullminder/registry.

SlugNameDescriptionDefault
secretsSecretsLeaked API keys, tokens, passwords, and credentials in codeYes
go-securityGo SecuritySQL injection, command injection, and unsafe pointer usage in GoNo
python-securityPython SecurityUnsafe deserialization, eval, and SQL injection in PythonNo
rust-securityRust SecurityUnsafe blocks and memory safety issues in RustNo
ruby-securityRuby SecurityMass assignment, command injection, and common Rails vulnerabilitiesNo
php-securityPHP SecuritySQL injection, file inclusion, and remote code execution in PHPNo
react-securityReact SecurityXSS vectors, unsafe innerHTML, and client-side injection in React/JSXNo
infra-securityInfrastructure SecurityDockerfile, Kubernetes, Terraform, and CI/CD misconfigurationYes
bot-detectionBot DetectionPRs opened by bots and automated toolsYes
ai-detectionAI DetectionAI-generated code detection patternsYes
dependency-detectionDependency DetectionLockfile and manifest changes (package.json, go.sum, etc.)Yes
java-securityJava SecuritySQL injection, XXE, deserialization in JavaNo
csharp-securityC# SecuritySqlCommand injection, BinaryFormatter in C#No
kotlin-securityKotlin SecurityWebView, SharedPreferences, exported component issues in Kotlin/AndroidNo
swift-securitySwift SecurityATS bypass, keychain, biometric auth issues in Swift/iOSNo
shell-securityShell SecurityEval injection, curl-pipe, chmod issues in Shell/BashNo
sensitive-pathsSensitive PathsChanges to auth, crypto, permissions, and infrastructure filesYes
SlugNameDescriptionDefault
ai-senior-reviewAI Senior Review RequiredRequires senior reviewer approval for high-risk AI-generated PRsYes
pii-leakagePII Leakage DetectionDetects PII (SSN, credit cards, emails) in logging and output contextsNo
crypto-anti-patternsCryptographic Anti-PatternsLanguage-agnostic weak crypto detection (MD5, DES, ECB, small keys)No
migration-safetyMigration SafetyDangerous SQL migration patterns (DROP TABLE, type changes, missing defaults)No
license-riskLicense Risk DetectionFlags copyleft license introductions (GPL, AGPL, SSPL) in dependency manifestsNo
owasp-mappingOWASP Top 10 MappingMaps detection rules to OWASP Top 10 categories for compliance reportingNo
SlugNameDescriptionDefault
test-conventionsTest ConventionsTest naming, coverage thresholds, and file organization standardsYes
review-qualityReview QualityPR description completeness, commit message format, and review standardsYes
Terminal window
# List all available packs and their status
pullminder packs list
# Enable an optional pack
pullminder packs enable go-security
# Disable a default pack
pullminder packs disable bot-detection

Navigate to Settings > Rule packs in the Pullminder dashboard. Each pack shows its current status, the number of findings it has produced, and a toggle to enable or disable it. You can also override the action (flag, warn, block) for each pack from this view.

In addition to the official registry, you can configure a custom private registry for proprietary rule packs. Custom registries use the same pack format and can be hosted as a Git repository or served from an HTTP endpoint. See the Authoring custom packs guide for details on creating your own packs and registries.