actions-marketplace-validations/Multi-Provider Code Review

Hybrid AST + LLM code review with multiple providers

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Activelast commit Apr 8, 2026
License
MIT

Pinned Snippet

workflow.ymlSHA-pinned
uses: actions-marketplace-validations/keithah_multi-provider-code-review@607bbafc14d8ba8d5b79a63934a87fb0f8146ec6 # no releases — HEAD as of 2026-07-13

tags can be moved; commit SHAs can't. why a SHA?

namedescriptionrequireddefault
GITHUB_TOKENGitHub tokenyes
PR_NUMBERPull request numberyes
REVIEW_PROVIDERSComma-separated provider list (e.g., "openrouter/model1,opencode/model2"). BEHAVIOR CHANGE (v0.2.0+): - Previously: Defaulted to specific hardcoded providers - Now: Defaults to empty string (enables dynamic discovery) DEFAULT (empty): Enables dynamic provider discovery - automatically selects best free models from OpenRouter API (if OPENROUTER_API_KEY set), OpenCode CLI, and hardcoded fallbacks. Well-tested and recommended for most users. CUSTOM: Override discovery with specific providers. Disables automatic fallback chain. Use when you need specific models or want predictable provider selection. no""
FALLBACK_PROVIDERSComma-separated fallback providers used when primary providers fail. DEFAULT (empty): Uses automatic fallback discovery (same mechanism as REVIEW_PROVIDERS). CUSTOM: Override with specific fallback models. Only used when REVIEW_PROVIDERS is also set (custom mode). no""
SYNTHESIS_MODELModel used for synthesis/promptsnoopenrouter/free
INLINE_MAX_COMMENTSMaximum inline commentsno5
INLINE_MIN_SEVERITYMinimum severity for inline commentsnomajor
INLINE_MIN_AGREEMENTProviders required to agreeno2
MIN_CHANGED_LINESSkip if below this line countno0
MAX_CHANGED_FILESSkip if over this file countno0
SKIP_LABELSComma-separated labels to skipno""
PROVIDER_LIMITLimit number of providers to rotateno6
PROVIDER_RETRIESRetries per providerno2
PROVIDER_MAX_PARALLELMaximum providers to run in parallelno3
DIFF_MAX_BYTESMaximum diff bytes to send to providersno120000
RUN_TIMEOUT_SECONDSTimeout per provider runno600
BUDGET_MAX_USDBudget guard in USDno0
ENABLE_AST_ANALYSISEnable AST analysisnotrue
ENABLE_SECURITYEnable security scannotrue
ENABLE_CACHINGEnable caching of findingsnotrue
ENABLE_TEST_HINTSEnable test coverage hintsnotrue
ENABLE_AI_DETECTIONEnable AI-generated code detectionnotrue
INCREMENTAL_ENABLEDEnable incremental review (only review changed files on PR updates)notrue
INCREMENTAL_CACHE_TTL_DAYSDays to keep incremental review cacheno7
LEARNING_ENABLEDEnable feedback learning systemnotrue
LEARNING_MIN_FEEDBACK_COUNTMinimum feedback count before adjusting confidenceno5
QUIET_USE_LEARNINGUse learned confidence thresholds in quiet modenotrue
QUIET_MIN_CONFIDENCEMinimum confidence threshold for quiet mode filtering (0.0-1.0)no0.5
GRAPH_ENABLEDEnable code graph for dependency trackingnotrue
GRAPH_CACHE_ENABLEDCache code graph between runsnotrue
GRAPH_MAX_DEPTHMaximum depth for dependency traversalno5
GRAPH_TIMEOUT_SECONDSTimeout for graph building in secondsno10
REPORT_BASENAMEBase name for JSON/SARIF reportsnomulti-provider-review
SKIP_TRIVIAL_CHANGESSkip reviews for trivial changes (dependency locks, docs, config files, test fixtures)notrue
SKIP_DEPENDENCY_UPDATESSkip dependency lock file updates (package-lock.json, yarn.lock, etc.)notrue
SKIP_DOCUMENTATION_ONLYSkip documentation-only changes (*.md, docs/, README, CHANGELOG)notrue
SKIP_FORMATTING_ONLYSkip formatting-only changes (whitespace, indentation)nofalse
SKIP_TEST_FIXTURESSkip test fixture changes (__fixtures__, __snapshots__, *.snap)notrue
SKIP_CONFIG_FILESSkip config file changes (.eslintrc, .prettierrc, .gitignore, .gitattributes, tsconfig.json)notrue
SKIP_BUILD_ARTIFACTSSkip build artifact changes (dist/, build/, *.min.js, *.map)notrue
TRIVIAL_PATTERNSCustom regex patterns for trivial files (comma-separated)no""
PATH_BASED_INTENSITYEnable path-based review intensity (opt-in feature)nofalse
PATH_INTENSITY_PATTERNSJSON array of path patterns with intensities (e.g., [{"pattern":"src/auth/**","intensity":"thorough"}])no""
PATH_DEFAULT_INTENSITYDefault review intensity for files that don't match patterns (thorough, standard, light)nostandard
DRY_RUNPreview mode - run review without posting to GitHubnofalse
OPENROUTER_API_KEYAPI key for OpenRouterno
namedescription
findings_countNumber of findings
critical_countCritical findings count
cost_usdTotal cost in USD
total_costTotal cost in USD (alias for cost_usd)
ai_likelihoodAverage AI-generated likelihood