Stacked PRs Workflow
Workflows for managing stacked (dependent) pull requests with proper visualization, merge-based updates, and iterative CodeRabbit review cycles.
Core Principles
-
No Force Pushes - Always use merge commits, never rebase/force-push
-
Draft First - PRs start as drafts until CI passes and CodeRabbit approves
-
Bottom-Up Processing - Address feedback from lowest PR in stack first
-
Comprehensive Reviews - Address all CodeRabbit comments including nitpicks
-
Visual Stack - Use PR titles and descriptions to show stack relationships
Skill Contents
Sections
-
Core Principles
-
Workflow Overview
-
Quick Reference
-
Scripts
-
References
-
Key Requirement: CodeRabbit Approval
-
Programmatic Automation
-
Skill Dependencies
-
Related
Available Resources
📚 references/ - Detailed documentation
-
automation patterns
-
merge workflow
-
pr formatting
-
readiness checklist
-
review cycles
🔧 scripts/ - Automation scripts
- check stack status
Workflow Overview
Phase Description Reference
Creation Create stacked PRs with proper titles and descriptions references/pr-formatting.md
Updates Merge changes through the stack (no rebasing) references/merge-workflow.md
Reviews Process CodeRabbit feedback in cycles references/review-cycles.md
Readiness Mark ready only after CI + CodeRabbit approval references/readiness-checklist.md
Quick Reference
PR Title Format
[JIRA-KEY] type(scope): description (PR N/M)
Stack Visualization (in PR Description)
PR Stack
| # | PR | Title | Status |
|---|---|---|---|
| 1 | #78 | PNPM migration | Merged |
| 2 | #79 | Shell to JS | This PR |
| 3 | #80 | Skills content | Depends on #79 |
| 4 | #81 | Validation & CI | Depends on #80 |
Merge Flow (Not Rebase)
After fixing issues in PR #79
git checkout feat/pr-80-branch git merge feat/pr-79-branch --no-edit git push origin feat/pr-80-branch
Repeat for subsequent PRs in stack
Scripts
Script Purpose
scripts/check-stack-status.ts
Check CI and CodeRabbit status for all PRs in stack
References
Reference Content
references/pr-formatting.md
PR title and description templates
references/merge-workflow.md
How to propagate changes through the stack
references/review-cycles.md
Processing CodeRabbit feedback iteratively
references/readiness-checklist.md
When to mark PRs ready for review
references/automation-patterns.md
Polling loops, callbacks, and autonomous operation
Key Requirement: CodeRabbit Approval
PRs should only be marked "Ready for Review" when:
-
All CI checks pass
-
All CodeRabbit comments addressed (including nitpicks)
-
CodeRabbit has approved (happens automatically after addressing feedback)
-
All previous PRs in the stack are merged
Important: Do NOT explicitly request CodeRabbit approval. It approves automatically after you've addressed all its comments and pushed fixes.
Programmatic Automation
For autonomous AI agents, use polling loops to monitor status:
async function waitForPRReady(prNumber: number, repo: string, maxAttempts = 30, intervalMs = 60000) { for (let attempt = 1; attempt <= maxAttempts; attempt++) { const status = await checkPRStatus(prNumber, repo);
if (status.ciPassed && status.coderabbitApproved && status.openComments === 0) {
return { ready: true, status };
}
console.log(`Attempt ${attempt}/${maxAttempts}: CI=${status.ciPassed}, CR=${status.coderabbitApproved}, Comments=${status.openComments}`);
if (attempt < maxAttempts) {
await sleep(intervalMs);
}
} return { ready: false, reason: 'timeout' }; }
See references/automation-patterns.md for complete polling implementations.
Skill Dependencies
Skill Purpose
coderabbit-workflow
Thread replies, comment export, local CLI reviews
pr-workflow
Base PR management patterns
Related
-
coderabbit-workflow - Detailed CodeRabbit workflow patterns
-
pr-workflow - GitHub CLI commands for PR management