git-spice
This skill should be used when the user asks about "stacked branches", "git-spice", "gs command", "stacked PRs", "stacked pull requests", "stacked merge requests", "branch stacks", "restack branches", "submit stack", "gs branch", "gs stack", "gs upstack", "gs downstack", "gs repo sync", or needs help managing multiple dependent branches.
What this skill does
# git-spice CLI git-spice (`gs`) is a CLI tool for managing stacked Git branches. It tracks relationships between branches, enables easy navigation, and creates stacked Pull Requests on GitHub or Merge Requests on GitLab. ## Key Concepts - **Stack**: Collection of branches stacked on top of each other - **Trunk**: The default branch (main/master) with no base - **Upstack**: Branches above the current branch - **Downstack**: Branches below the current branch (not including trunk) - **Restacking**: Rebasing a branch onto its base to maintain linear history ## Command Reference ### Repository Commands (`gs repo` / `gs r`) | Command | Shorthand | Description | |---------|-----------|-------------| | `gs repo init` | `gs ri` | Initialize git-spice in a repository | | `gs repo sync` | `gs rs` | Pull latest changes, delete merged branches | | `gs repo restack` | `gs rr` | Restack all tracked branches | ### Branch Commands (`gs branch` / `gs b`) | Command | Shorthand | Description | |---------|-----------|-------------| | `gs branch create <name>` | `gs bc` | Create and track a new stacked branch | | `gs branch track` | `gs bt` | Track an existing branch | | `gs branch untrack` | `gs but` | Stop tracking a branch (keep in Git) | | `gs branch checkout <name>` | `gs bco` | Check out a branch (interactive if no name) | | `gs branch delete <name>` | `gs bd` | Delete a tracked branch | | `gs branch rename <new>` | `gs brn` | Rename the current branch | | `gs branch submit` | `gs bs` | Submit current branch as a CR | | `gs branch restack` | `gs br` | Restack current branch onto its base | | `gs branch edit` | `gs be` | Interactive rebase of branch commits | | `gs branch squash` | `gs bsq` | Squash all commits in current branch | | `gs branch split` | `gs bsp` | Split branch into multiple branches | | `gs branch onto <base>` | `gs bo` | Move branch to a different base | | `gs branch fold` | `gs bf` | Fold branch into its base | ### Stack Commands (`gs stack` / `gs s`) | Command | Shorthand | Description | |---------|-----------|-------------| | `gs stack submit` | `gs ss` | Submit all branches in the stack | | `gs stack restack` | `gs sr` | Restack all branches in the stack | | `gs stack edit` | `gs se` | Edit order of branches in the stack | | `gs stack delete` | `gs sd` | Delete all branches in the stack | ### Upstack Commands (`gs upstack` / `gs us`) | Command | Shorthand | Description | |---------|-----------|-------------| | `gs upstack submit` | `gs uss` | Submit current branch and those above | | `gs upstack restack` | `gs usr` | Restack current branch and upstack | | `gs upstack onto <base>` | `gs uso` | Move branch and upstack to new base | | `gs upstack delete` | `gs usd` | Delete all branches above current | ### Downstack Commands (`gs downstack` / `gs ds`) | Command | Shorthand | Description | |---------|-----------|-------------| | `gs downstack submit` | `gs dss` | Submit current branch and those below | | `gs downstack track` | `gs dst` | Track multiple branches at once | | `gs downstack edit` | `gs dse` | Edit order of downstack branches | ### Commit Commands (`gs commit` / `gs c`) | Command | Shorthand | Description | |---------|-----------|-------------| | `gs commit create` | `gs cc` | Commit and restack upstack branches | | `gs commit amend` | `gs ca` | Amend last commit and restack | | `gs commit split` | `gs csp` | Split last commit into two | | `gs commit fixup` | `gs cf` | Create a fixup commit | | `gs commit pick` | `gs cp` | Cherry-pick commits into branch | ### Navigation Commands | Command | Shorthand | Description | |---------|-----------|-------------| | `gs up` | `gs u` | Move up one branch in the stack | | `gs down` | `gs d` | Move down one branch in the stack | | `gs top` | `gs U` | Move to top of stack | | `gs bottom` | `gs D` | Move to bottom of stack | | `gs trunk` | - | Move to trunk branch | ### Log Commands (`gs log` / `gs l`) | Command | Shorthand | Description | |---------|-----------|-------------| | `gs log short` | `gs ls` | Show branches as a tree | | `gs log long` | `gs ll` | Show branches with commits | Add `--all` to show all stacks, not just the current one. Add `--json` for machine-readable output. ### Authentication (`gs auth`) | Command | Description | |---------|-------------| | `gs auth login` | Authenticate with GitHub/GitLab | | `gs auth logout` | Log out from the service | | `gs auth status` | Show authentication status | ### Rebase Commands (`gs rebase` / `gs rb`) | Command | Shorthand | Description | |---------|-----------|-------------| | `gs rebase continue` | `gs rbc` | Continue interrupted rebase | | `gs rebase abort` | `gs rba` | Abort the current rebase | ## Common Workflows ### Create a New Stack ```bash # Start from trunk gs trunk # Create first feature branch git add file.txt gs branch create feat1 # Stack another branch on top git add another.txt gs branch create feat2 ``` ### Submit a Stack for Review ```bash # Submit entire stack gs stack submit # Or submit with auto-filled PR info gs stack submit --fill ``` ### Modify Mid-Stack and Update ```bash # Navigate to the branch to modify gs down # or: gs bco feat1 # Make changes and commit git add file.txt gs commit create -m "fix typo" # Submit updates to all CRs gs stack submit ``` ### Sync After Merges ```bash # Pull latest, delete merged branches, restack remaining gs repo sync ``` ### Move a Branch to Different Base ```bash # Move current branch and upstack to main gs upstack onto main # Move only current branch (leave upstack in place) gs branch onto main ``` ### Split a Branch ```bash # Interactively split current branch at commit boundaries gs branch split ``` ## Common Flags - `--fill` / `-c`: Auto-fill CR info from commits - `--draft` / `--no-draft`: Set CR draft status - `--force`: Force push (override safety checks) - `--update-only`: Only update existing CRs, don't create new ones - `-n` / `--dry-run`: Show what would happen without doing it - `--no-prompt`: Disable interactive prompts ## Configuration Set options with `git config`: ```bash # Create branches without committing by default git config spice.branchCreate.commit false # Add prefix to all created branches git config spice.branchCreate.prefix "user/" # Create CRs as drafts by default git config spice.submit.draft true # Open browser when CR is created git config spice.submit.web created # Add default labels to all CRs git config spice.submit.label "needs-review" # Add default reviewers git config spice.submit.reviewers "alice,myorg/team" ``` ## Tips - Use `--help` on any command to see its shorthand - Interactive prompts provide fuzzy search for branch selection - Navigation commands accept `-n` to print target without switching - Use `gs bco` without arguments for an interactive branch picker
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.