stacked-prs
Create and manage stacked (dependent) pull requests for complex features
What this skill does
# Stacked Pull Requests ## Overview Stacked PRs are dependent pull requests where each PR builds on the previous one. Use this pattern for complex features that need logical separation and parallel review. ## When to Use ### ✅ Use Stacked PRs When: - User explicitly requests "stacked PRs" or "dependent PRs" - Large feature needs to be split into logical phases - Each phase has clear dependencies on previous phases - User is comfortable with rebase workflows ### ❌ Use Main-Based PRs When (Default): - Features are independent - Simple bug fixes or enhancements - Multiple agents working in parallel - User doesn't specify preference **DEFAULT: Always prefer main-based PRs unless user explicitly requests stacking.** ## Branch Naming Convention Use sequential numbering to show dependencies: ```bash feature/001-base-authentication # PR-001 (base) feature/002-user-profile # PR-002 (depends on 001) feature/003-admin-panel # PR-003 (depends on 002) ``` Alternative patterns: ```bash auth/01-foundation auth/02-user-flow auth/03-admin-features ``` ## Creating Stacked PRs ### Step 1: Create Base PR (PR-001) ```bash # Start from main git checkout main git pull origin main # Create base branch git checkout -b feature/001-base-auth # Implement base functionality # ... work ... # Push and create PR git push -u origin feature/001-base-auth # Create PR in GitHub/GitLab # Title: "[1/3] Base authentication foundation" # Base: main # Description: Include stack overview (see template below) ``` ### Step 2: Create Dependent PR (PR-002) **CRITICAL: Base on previous feature branch, NOT main** ```bash # Start from PR-001's branch git checkout feature/001-base-auth git pull origin feature/001-base-auth # Create dependent branch git checkout -b feature/002-user-profile # Implement dependent functionality # ... work ... # Push and create PR git push -u origin feature/002-user-profile # Create PR in GitHub/GitLab # Title: "[2/3] User profile management" # Base: feature/001-base-auth ← NOT main! # Description: "Depends on PR #123" ``` ### Step 3: Create Final PR (PR-003) ```bash # Start from PR-002's branch git checkout feature/002-user-profile git pull origin feature/002-user-profile # Create final branch git checkout -b feature/003-admin-panel # Implement final functionality # ... work ... # Push and create PR git push -u origin feature/003-admin-panel # Create PR in GitHub/GitLab # Title: "[3/3] Admin panel with full auth" # Base: feature/002-user-profile ← NOT main! # Description: "Depends on PR #124" ``` ## PR Description Template Use this template for stacked PRs: ```markdown ## This PR [Brief description of changes in THIS PR only] ## Depends On - PR #123 (feature/001-base-auth) - Must merge first - Builds on top of authentication foundation ## Stack Overview 1. PR #123: Base authentication (feature/001-base-auth) ← MERGE FIRST 2. PR #124: User profile (feature/002-user-profile) ← THIS PR 3. PR #125: Admin panel (feature/003-admin-panel) - Coming next ## Review Guidance To see ONLY this PR's changes: ```bash git diff feature/001-base-auth...feature/002-user-profile ``` Or on GitHub: Compare `feature/002-user-profile...feature/001-base-auth` (three dots) ## Testing - Tested in combination with PR #123 - Includes tests for user profile functionality - Integration tests pass with base auth layer ``` ## Managing Rebase Chains ### When Base PR Changes (Review Feedback) If PR-001 gets updated, rebase dependent PRs: ```bash # Update PR-001 (base) git checkout feature/001-base-auth git pull origin feature/001-base-auth # Rebase PR-002 on updated base git checkout feature/002-user-profile git rebase feature/001-base-auth git push --force-with-lease origin feature/002-user-profile # Rebase PR-003 on updated PR-002 git checkout feature/003-admin-panel git rebase feature/002-user-profile git push --force-with-lease origin feature/003-admin-panel ``` **IMPORTANT: Use `--force-with-lease` not `--force` for safety** ### Merge Strategy **Option A: Sequential Merging (Recommended)** 1. Merge PR-001 to main 2. Change PR-002's base to main (GitHub: "Edit" button on PR) 3. Merge PR-002 to main 4. Change PR-003's base to main 5. Merge PR-003 to main **Option B: Keep Stack Until End** 1. Merge PR-001 to main 2. Keep PR-002 based on feature/001 until PR-001 fully merged 3. Then rebase PR-002 onto main 4. Repeat for PR-003 ## Common Pitfalls ### ❌ WRONG: All PRs from main ```bash git checkout main git checkout -b feature/001-base # PR: feature/001-base → main git checkout main # ← WRONG git checkout -b feature/002-next # PR: feature/002-next → main # ← WRONG (independent, not stacked) ``` ### ✅ CORRECT: Each PR from previous ```bash git checkout main git checkout -b feature/001-base # PR: feature/001-base → main git checkout feature/001-base # ← CORRECT git checkout -b feature/002-next # PR: feature/002-next → feature/001-base # ← CORRECT (stacked) ``` ## Agent Instructions When delegating stacked PR creation to version-control agent: ``` Task: Create stacked PR branch structure Stack Sequence: 1. PR-001: feature/001-base-auth → main (base layer) 2. PR-002: feature/002-user-profile → feature/001-base-auth (depends on 001) 3. PR-003: feature/003-admin-panel → feature/002-user-profile (depends on 002) Requirements: - Each branch MUST be based on previous feature branch - Use sequential numbering (001, 002, 003) - Include "depends on" notes in commit messages - Create PR description with stack overview CRITICAL: PR-002 bases on feature/001-base-auth, NOT on main CRITICAL: PR-003 bases on feature/002-user-profile, NOT on main ``` ## Verification Checklist Before creating stacked PRs: - [ ] User explicitly requested stacked PRs - [ ] Feature has clear logical phases - [ ] Each phase has dependency on previous - [ ] User understands rebase workflow - [ ] Branch names use sequential numbering - [ ] Each branch created from correct base (previous feature branch) - [ ] PR descriptions include dependency information - [ ] Stack overview documented in each PR ## Related Skills - `git-worktrees` - Work on multiple PRs simultaneously - `git-workflow` - General git branching patterns - `code-review` - Review strategies for stacked PRs
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.