Feature Reference
PR Pilot Tool WindowActivity Bar Panel
PR Pilot lives in a dedicated tool window that docks to the right side of the IDE. Click the PR Pilot icon in the side panel to expand it. The tool window contains two views:
- Pull Requests — browse and manage PRs for the current repository
- Files Changed — inspect the changed files for the selected PR
The tool window automatically detects the remote URL of the open project and initialises for the configured Git provider (GitHub or Bitbucket).
PR Pilot lives in a dedicated Activity Bar panel on the left side of VS Code. Click the PR Pilot icon in the Activity Bar to expand the panel, which contains two tree views:
- Pull Requests — browse and manage PRs for the current repository
- Files Changed — inspect the changed files for the selected PR
The panel automatically detects the remote URL of the open workspace and initialises for the configured Git provider (GitHub or Bitbucket).
PR Browser
The main view of the tool windowpanel lists all pull requests for the current repository. Each row in the list shows:
- PR ID — the numeric identifier
- Title — full PR title
- Author — display name of the PR author
- Source → Target branch
- File count badge — number of changed files (populated after the first diff fetch)
- Status indicator — OPEN / MERGED / DECLINED
Double-clicking a pull request immediately opens the file diff view for that PR.
Filtering Pull Requests
The toolbar above the PR list provides four controls:
| Control | Description |
|---|---|
| 🔄 Refresh | Reload the PR list from the API |
| Status dropdown | Filter by OPEN, MERGED, DECLINED, or ALL |
| ID field | Type a PR number to jump directly to that PR |
| Title field | Free-text search across PR titles (case-insensitive) |
All filters are applied client-side instantly — no additional API calls.
Side-by-Side Diff Viewer
Clicking the View Files icon button (or double-clicking a PR) fetches the full unified diff for that PR and parses it into per-file entries.
File list view
A breadcrumb bar shows the PR number, title, and source→target branch. Below it is a stats bar summarising:
- 🟡 N modified
- 🟢 N added
- 🔴 N deleted
Each row in the file list shows the file path and a colour-coded status badge: ADDED, MODIFIED, DELETED, or RENAMED.
Opening a diff
Click any file row to open IntelliJ's native side-by-side diff viewerVS Code's built-in diff editor. The viewer:
- Uses IntelliJ's built-in diff engineVS Code's built-in diff engine with full syntax highlighting
- Reconstructs the “before” and “after” file contents from the unified diff patch
- Supports keyboard navigation between diff hunks using IntelliJ'sVS Code's standard diff shortcuts
- Tracks open diff editors — clicking the same file a second time focuses the existing editor instead of opening a duplicate
Note: The diff editor reconstructs file content from the patch. For very large files the reconstructed content may be truncated. For full file context, use IntelliJ's built-in Git diff toolsVS Code's built-in Git diff tools after clicking through to the file.
AI Code Review (AI Summary)
Click the ⚡ AI Summary icon button with a PR selected to generate a comprehensive AI code review report.
What the AI receives
The AI receives a carefully constructed multi-layer prompt (see Skills → How Skills Are Injected):
- Skills block — your team's
system_prompt.md,review_rules.md,coding_standards.md - PR context — PR ID, title, author, branches, file count
- Structured code analysis — for each changed file: language, line count, impacted classes, method signatures with line numbers, changed line ranges
- File snippets — up to 3,000 characters of actual file content per changed file
- Referenced files — files imported by changed files, included as context (1,500 chars each)
What the report contains
The default system_prompt.md instructs the AI to produce a structured Markdown report with:
- Overview — what the PR does and its overall quality
- File Analysis — per-file feedback with severity labels (🔴 Critical, 🟡 Warning, 🟢 Suggestion)
- Summary table — consolidated list of all issues found
Viewing the report
The report is displayed in a resizable dialog window with:
- Rendered HTML (Markdown converted to styled HTML)
- IDE-aware theme colours (light/dark mode)IDE-aware theme colours (light/dark mode)
- Scrollable content area
- Action buttons: Approve, Request Changes (posts inline comments), and Post Inline Comments
Inline Comments
After generating an AI review, PR Pilot can post the AI's feedback as inline comments directly on the pull request — visible to all reviewers in Bitbucket Cloud or GitHub, attached to the exact line number identified by the AI.
How it works
- Click ⚡ AI Summary to generate the review report.
- In the review dialog, click Post Inline Comments to push all AI-identified issues to the PR as line-level comments, or click Request Changes to post the comments and register a formal "Changes Requested" review at the same time.
- The AI's
severitylabel is prepended to each comment so reviewers instantly see 🔴 / 🟡 / 🟢 priority. - If Jira is configured, a Jira comment is also posted automatically when Request Changes is used.
Comment format posted to the PR
Each inline comment follows this structure on the pull request:
[warning] Missing null-check before dereferencing `user.profile`.
Consider adding a guard clause or using the safe-call operator.
Inline comment schema (AI output)
The AI is instructed to emit a machine-parseable JSON block at the end of every response, delimited by HTML comment tags. This block is parsed by the plugin to extract the per-line comments before displaying the dialog. See Skills → Inline Comment Format for the exact prompt contract.
Empty array is valid: If the AI finds no issues worth flagging inline, it outputs [] and the dialog shows "No inline issues found". The overall summary is still displayed in full.
Code Analyzer
PR Pilot includes a built-in source-code analyser that extracts structural information from each changed file before sending it to the AI. This makes the AI review far more precise because the model can reference exact class names, method signatures, and line numbers.
What is extracted
- Classes / interfaces / objects / enums — name, kind, and declaration line number
- Methods / functions — name, full signature, line number, whether the line falls inside a changed diff hunk
- Impacted methods — methods whose body overlaps with the PR's changed lines are highlighted with 🔴
- Changed line ranges — compact ranges (e.g.
42–58, 97) extracted from the unified diff - Import statements — used to resolve referenced (dependent) files
Supported languages
| Language | Extensions | Parsed constructs |
|---|---|---|
| Kotlin | .kt, .kts | class, interface, object, enum class, fun |
| Java | .java | class, interface, enum, @interface, method |
| Python | .py | class, def (methods & top-level functions) |
| TypeScript | .ts, .tsx | class, interface, function, arrow functions |
| JavaScript | .js, .jsx, .mjs | class, function, arrow functions |
| Go | .go | struct, interface, func (methods & functions) |
| Swift | .swift | class, struct, protocol, enum, func |
| Scala | .scala | class, case class, object, trait, def |
| C / C++ | .c, .h, .cpp, .cc, .cxx | struct, class, function signatures |
| Other | * | Line count and changed ranges only (no class/method extraction) |
Import-Chain Analysis
Beyond the directly changed files, PR Pilot resolves first-degree imports to understand the full "blast radius" of a change.
For each changed file, the analyser:
- Extracts all import statements.
- Filters for imports that map to local project files (not third-party libraries).
- Reads those local files and runs the same structural analysis on them.
- Marks them as
isReferenced = trueand includes them in the AI prompt under a "Referenced Files" section.
This allows the AI to understand, for example, that a changed method in a service class is calling an interface defined in another file — and review the change in context of the full contract.
De-duplication: Each file is included at most once. If multiple changed files import the same dependency, it is analysed once and shared in context.
PR Actions
The action bar in the PR list view contains icon buttons for managing pull requests:
| Button | Action | Tooltip |
|---|---|---|
| 📄 Diff | View Changed Files | Opens the file diff view for the selected PR |
| ⚡ AI | AI Summary | Generates an AI code review report |
| ✔ Approve | Approve PR | Approves the selected PR |
| ⤢ Merge | Merge PR | Merges the selected PR into its target branch |
| ✘ Decline | Decline / Close PR | Declines (Bitbucket) or closes (GitHub) the selected PR |
| 💬 Request Changes | Request Changes | Posts inline AI comments on the PR and registers a "Changes Requested" review; also updates the linked Jira issue |
| 📌 Post Inline Comments | Post Inline Comments | Posts AI-generated inline line comments on the PR without a formal Changes Requested status |
All actions require a PR to be selected in the list first. If no PR is selected, a brief notification reminds you to select one.
Merge warning: The merge action is immediate and permanent. PR Pilot does not prompt for a merge commit message — it uses the default strategy for the configured provider. Make sure the PR is ready to merge before clicking.
GitHub — Approve behaviour
Submits a GitHub Pull Request Review with event: APPROVE. This adds an approval from the authenticated user's account.
GitHub — Decline behaviour
GitHub has no "decline" concept. PR Pilot closes the pull request instead (equivalent to clicking "Close pull request" on GitHub.com).
Bitbucket — Approve behaviour
Calls the Bitbucket POST /pullrequests/{id}/approve endpoint using the repository's configured PAT.
Bitbucket — Merge behaviour
Calls the Bitbucket POST /pullrequests/{id}/merge endpoint with the default merge strategy.
Multi-Provider Architecture
PR Pilot uses a provider-agnostic service layer (PullRequestService) that delegates every operation to either the GitHub client or the Bitbucket client based on the active provider setting. Switching providers is a one-click operation in settings.
For Bitbucket, a client registry (BitbucketClientRegistry) maintains one pre-configured HTTP client per workspace/repo pair, each carrying the correct PAT for that repository. This makes multi-repo Bitbucket setups fully transparent — you never need to manually switch tokens.
In-IDEEditor Notifications
PR Pilot uses the IDE notification system to surface important events:
- Successfully approved, merged, or declined a PR
- AI summary generation started / completed
- Error conditions (authentication failure, API error, network timeout)
Notifications appear as IDE balloon alerts (bottom-right) and are also logged to the Event Log. They can be dismissed individually.
Notifications appear as VS Code info/error popups (bottom-right) and can be dismissed individually.
Status bar
A persistent status label at the bottom of the PR Pilot panel shows the current operation state in real time: "Loading pull requests…", "Building AI summary…", "Ready", etc.
Jira Integration
PR Pilot can automatically sync review outcomes to Atlassian Jira. When you approve, merge, or decline a pull request, the plugin detects the linked Jira issue key and posts a comment — and on a decline, also reassigns the issue back to the PR author.
How issue keys are detected
PR Pilot scans the following PR fields (in order) and uses the first matching Jira issue key found:
- PR title
- PR description
- Source branch name
- Target branch name
- PR URL
The default detection pattern matches standard Jira keys like PROJ-123 or MYAPP-42. A custom regex can be set in the PR Pilot Settings → Jira Integration.
What happens on each action
| PR Action | Jira Effect |
|---|---|
| Approve | Posts "Code Review Passed." as a comment on the linked issue |
| Merge | Posts "Code Review Passed." as a comment on the linked issue |
| Decline | Posts the AI review summary (or a fallback message) as a comment, then reassigns the issue to the PR author |
| Request Changes | Posts the AI review summary as a Jira comment with a note that changes were requested |
| Post Inline Comments | Posts the AI review summary as a Jira comment noting inline feedback was left on the PR |
If Jira is not configured, or no issue key is found in the PR data, the integration is silently skipped. See the Jira configuration guide for setup instructions.