vaibhavkumar-sf/AI PR Review Action

Comprehensive AI-powered code review for TypeScript/Angular/LoopBack4 projects with parallel specialist agents

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Stale
License
None
namedescriptionrequireddefault
github_tokenGitHub token for PR access (usually secrets.GITHUB_TOKEN)yes
anthropic_auth_tokenAPI key for the AI endpoint (Anthropic, z.ai/GLM, OpenRouter, OpenAI, or any compatible provider)yes
ai_providerAPI dialect: 'anthropic' for Anthropic-compatible endpoints (default, the existing behavior); 'openai' for OpenAI-compatible /chat/completions endpoints (OpenAI, OpenRouter, z.ai coding API, local servers). The anthropic_* inputs apply to whichever dialect is selectednoanthropic
anthropic_base_urlBase URL for the AI API. Change for z.ai/GLM, OpenRouter, OpenAI, or custom endpointsnohttps://api.anthropic.com
anthropic_modelModel id, or a comma-separated fallback chain tried in order (the next is used when a model is rejected as unknown or exhausts its retries on a capacity/transient failure)noglm-5.2
model_pricingOptional per-model prices in USD per MILLION tokens, comma-separated model=input/output pairs (e.g. "glm-5.2=0.6/2.2,glm-5.2[1m]=1/3"). When set, the summary comment, action outputs and Backstage payload include an estimated run cost. Client-side estimate from token counts — not billing datano""
max_tokens0 (default) = auto: use the model's full native output capacity (e.g. 131072 on GLM-5.2) so a review is never truncated by a self-imposed cap; if an endpoint advertises a smaller maximum in its rejection, it is discovered and latched automatically. Set a positive number to cap output tokens manuallyno0
thinking_budgetExtended-thinking budget in tokens, added on top of max_tokens. NOTE: GLM endpoints treat thinking as on/off and do NOT enforce this budget — with the default max_tokens auto mode the full output capacity absorbs even a long think. Set 0 to disable thinking. Auto-disabled if the endpoint rejects the thinking paramno4096
context_windowTotal context window of the target model, in tokens. The prompt is trimmed to fit within this minus reserved output, avoiding model_context_window_exceeded. Default 1000000 (GLM-5.2 / Opus 4.8); if a request still overflows after a fallback to a smaller model, the compact retry recovers itno1000000
temperatureAI temperature (0.0 - 1.0)no0.2
review_modecombined (default): one comprehensive all-at-once review covering every category. separate: 8 parallel specialist agents selected by review_profile/togglesnocombined
review_profileReview intensity for separate mode: strict (all 8 agents), standard (6 agents), minimal (2 agents). Ignored in combined modenostandard
enable_security_reviewEnable/disable the security review agent in separate mode (true/false overrides the profile; empty follows the profile)no""
enable_code_quality_reviewEnable/disable the code quality review agent in separate mode (true/false overrides the profile; empty follows the profile)no""
enable_performance_reviewEnable/disable the performance review agent in separate mode (true/false overrides the profile; empty follows the profile)no""
enable_type_safety_reviewEnable/disable the type safety review agent in separate mode (true/false overrides the profile; empty follows the profile)no""
enable_architecture_reviewEnable/disable the architecture review agent in separate mode (true/false overrides the profile; empty follows the profile)no""
enable_testing_reviewEnable/disable the testing review agent in separate mode (true/false overrides the profile; empty follows the profile)no""
enable_api_design_reviewEnable/disable the api design review agent in separate mode (true/false overrides the profile; empty follows the profile)no""
enable_documentation_reviewEnable/disable the documentation review agent in separate mode (true/false overrides the profile; empty follows the profile)no""
frameworkFramework for prompt additions: angular, loopback4, both, generic (none), auto (detect from repo)noauto
pr_numberPull request number to review. Defaults to the PR of the triggering pull_request eventno""
jira_urlJIRA instance URL (e.g., https://company.atlassian.net)no""
jira_emailJIRA user email for API authenticationno""
jira_api_tokenJIRA API tokenno""
jira_project_keyJIRA project key for ticket validation (e.g., PLM, PROJ)no""
fail_on_criticalFail the action (exit code 1) when findings at or above fail_threshold existnofalse
fail_thresholdMinimum severity to fail: critical, high, mediumnocritical
post_inline_commentsPost inline review comments on specific diff linesnotrue
post_data_urlOptional Backstage/webhook endpoint. When set, review metrics and all individual findings are POSTed as JSON after the review — including skip/failure runs, so the tracker sees every run (fire-and-forget, never fails the action). See docs/backstage-integration.mdno""
enable_reply_handlingVerify human replies on previous review threads against the code, post a justification reply in each, and resolve the thread when the reply is validnotrue
enable_rerun_focusOn re-runs (a completed AI review already exists on this PR): limit NEW inline comments to critical/high findings plus documentation suggestions, reopen resolved threads whose critical/high issue reappeared, and keep the existing PR description/diagrams. Summary totals still count all severities. Disable to restore full first-run behavior on every runnotrue
enable_bot_comment_cleanupMinimize noisy recurring bot comments (e.g. sonarqubecloud, unit-test-quality reports): known noise is hidden entirely, other recurring types keep only the latest occurrencenotrue
max_files_to_reviewSkip review if PR has more changed files than thisno50
exclude_patternsComma-separated glob patterns to exclude (appended to built-in defaults: package-lock, openapi.json, migrations, .bpmn, dist, node_modules, .d.ts, etc.)no""
include_patternsComma-separated glob patterns to include (if set, only these are reviewed)no""
enable_context_toolsLet the reviewer model fetch missing context itself via bounded local-repo tools (read_file, grep, find_references, list_dir). Hard-capped: at most 2 extra AI turns per review and 12 tool calls per run; requires the local-clone context engine (falls back to no tools when unavailable)notrue
related_contextHow much unchanged-file context is fetched for the reviewer: full (import graph incl. tsconfig path aliases, npm-workspace packages and barrel re-exports, plus framework expansion — Angular sibling templates/styles/modules, LoopBack4 string-key DI bindings), imports-only (import graph only), off (none)nofull
system_prompt_overrideFull replacement of the default system prompt (replaces all built-in prompts)no""
system_prompt_appendText appended to the default system prompt (adds to built-in prompts)no""
angular_prompt_appendAdditional instructions appended for Angular-specific reviewsno""
loopback4_prompt_appendAdditional instructions appended for LoopBack4-specific reviewsno""
comment_headerCustom header for the review summary commentnoAI Code Review
comment_footerCustom footer text for the review summary commentno""
enable_diagramsGenerate AI Mermaid diagrams (validated via Kroki.io, rendered natively by GitHub) in the PR descriptionnotrue
agent_timeoutTimeout in seconds for each review agent AI call. Progress-aware: it applies in full to silent calls (no tokens = hung endpoint), but a call still streaming tokens at the deadline keeps running while deltas keep arriving — up to a 30-minute hard cap (or this value if set higher). A stream silent for 60s past the deadline is aborted as stalledno800
max_retriesMaximum retries per agent on transient AI API failure (5xx/network). Rate limits (429) retry on their own patient budget — up to 400 attempts with escalating waits (10s up to 2min, max 5h total, riding out fair-usage throttling spells) — independent of this settingno3
cancel_on_pr_closeCancel the review run (neutral exit, not a failure) if the PR is closed or merged while the review is still running, freeing the runner and AI quotanotrue
debugEnable debug loggingnofalse
namedescription
review_statusReview status: completed, skipped
skip_reasonReason for skipping: too_many_files, no_agents (empty if not skipped)
review_comment_idID of the review summary comment posted on the PR
review_comment_urlURL of the review summary comment
total_findingsTotal number of findings across all agents
critical_countNumber of critical severity findings
high_countNumber of high severity findings
medium_countNumber of medium severity findings
low_countNumber of low severity findings
nit_countNumber of nit severity findings
review_passedWhether the review passed (no findings at or above fail_threshold)
agents_runComma-separated list of agents that ran
agents_failedComma-separated list of agents that failed (if any)
duration_secondsTotal review duration in seconds
backstage_reportedWhether review data was successfully POSTed to post_data_url (true/false, empty if post_data_url not set)
replies_postedNumber of justification replies posted on review threads that had human replies
threads_resolved_from_repliesNumber of threads resolved because a human reply was verified as valid
threads_reopenedNumber of resolved threads reopened because their critical/high issue was detected again on a re-run
bot_comments_hiddenNumber of noisy bot comments minimized during cleanup
ai_callsNumber of AI chat calls made during the run (agents, consolidation, replies, description, diagrams)
input_tokensTotal input tokens consumed across all AI calls this run
output_tokensTotal output tokens (including thinking) across all AI calls this run
estimated_cost_usdEstimated run cost in USD from token counts x model_pricing (client-side estimate, not billing data; empty when model_pricing is unset)