Overview
TheSCM (Source Control Management) interface is the richest plugin interface, covering the full PR pipeline: PR detection, state tracking, CI checks, code reviews, and merge operations.
Plugin Slot: scmDefault Plugin:
github
Interface Definition
PR Lifecycle Methods
(session: Session, project: ProjectConfig) => Promise<PRInfo | null>
required
Detect if a session has an open PR (by branch name).Parameters:
session- Session to checkproject- Project configuration
(pr: PRInfo) => Promise<PRState>
required
Get current PR state.Parameters:
pr- PR info
"open", "merged", or "closed"(pr: PRInfo) => Promise<object>
Optional: Get PR summary with stats (state, title, additions, deletions).Parameters:
pr- PR info
(pr: PRInfo, method?: MergeMethod) => Promise<void>
required
Merge a PR.Parameters:
pr- PR infomethod- Merge method:"merge","squash", or"rebase"(default: repo settings)
(pr: PRInfo) => Promise<void>
required
Close a PR without merging.Parameters:
pr- PR info
CI Tracking Methods
(pr: PRInfo) => Promise<CICheck[]>
required
Get individual CI check statuses.Parameters:
pr- PR info
(pr: PRInfo) => Promise<CIStatus>
required
Get overall CI summary.Parameters:
pr- PR info
"pending", "passing", "failing", or "none"Review Tracking Methods
(pr: PRInfo) => Promise<Review[]>
required
Get all reviews on a PR.Parameters:
pr- PR info
(pr: PRInfo) => Promise<ReviewDecision>
required
Get the overall review decision.Parameters:
pr- PR info
"approved", "changes_requested", "pending", or "none"(pr: PRInfo) => Promise<ReviewComment[]>
required
Get pending (unresolved) review comments.Parameters:
pr- PR info
(pr: PRInfo) => Promise<AutomatedComment[]>
required
Get automated review comments (bots, linters, security scanners).Parameters:
pr- PR info
Merge Readiness Method
(pr: PRInfo) => Promise<MergeReadiness>
required
Check if PR is ready to merge.Parameters:
pr- PR info
Related Types
PRInfo
number
required
PR number
string
required
Full URL to PR
string
required
PR title
string
required
Repository owner
string
required
Repository name
string
required
Source branch name
string
required
Target/base branch name
boolean
required
Whether PR is in draft mode
PRState
CICheck
CIStatus
Review
ReviewDecision
ReviewComment
AutomatedComment
MergeReadiness
boolean
required
Overall merge readiness (all checks must pass)
boolean
required
Whether CI is passing
boolean
required
Whether PR is approved
boolean
required
Whether PR has no merge conflicts
string[]
required
Array of blocker descriptions (e.g.
"CI failing", "Changes requested")MergeMethod
Usage Examples
Implementing an SCM Plugin
Using SCM in Lifecycle Manager
Implementation Notes
Authentication
SCM plugins typically use CLI tools or API tokens:- GitHub:
ghCLI (uses~/.config/gh/hosts.yml) - GitLab:
glabCLI orGITLAB_TOKEN
Rate Limiting
Be mindful of API rate limits:- Cache PR info in session metadata
- Batch requests when possible
- Use GraphQL for complex queries (GitHub)
Review Comment Filtering
Distinguish between:- Human reviews (priority)
- Bot comments (linters, security scanners)
- Resolved vs unresolved comments
Built-in Plugins
- github - GitHub (default, uses
ghCLI)
