Pushes all branches in a stack and opens or updates one dependent PR per slice. Use after stack-create to publish the stack or after adding commits to a slice.
npx skills add https://github.com/athola/claude-night-market --skill stack-push
Push all branches in a stack and open (or update) one PR
per slice, with each PR targeting its parent branch as base.
Run stack-push after stack-create has initialized the
branch topology and at least one commit exists on each
slice branch.
Also run it after adding commits to any slice to update
open PRs.
sanctum:stack-create)sanctum:stack-rebase)
stack-create completed: branches exist with commitsgh CLI authenticated (gh auth status)Create TodoWrite items before starting:
stack-push:branches-listedstack-push:branches-pushedstack-push:prs-openedstack-push:stack-summary-postedbranches-listed)Identify all branches in the stack.
By convention they share a stack/<feature-name>/ prefix:
STACK=stack/my-feature
BASE=master
git branch --list "${STACK}/*" | sed 's/^[* ]*//'
Verify each branch has commits beyond the base:
for branch in $(git branch --list "${STACK}/*" \
| sed 's/^[* ]*//'); do
count=$(git rev-list --count \
"$(git merge-base ${BASE} ${branch})..${branch}")
echo "${branch}: ${count} commit(s)"
done
Any branch showing 0 commits must have work added before
pushing.
branches-pushed)Push every slice branch to the remote in stack order
(base slice first):
for branch in $(git branch --list "${STACK}/*" \
| sed 's/^[* ]*//' | sort); do
git push --set-upstream origin "${branch}"
echo "pushed: ${branch}"
done
jj git push --all
prs-opened)Create one PR per slice, targeting its parent branch.
For the first slice the parent is master; for subsequent
slices the parent is the previous slice's branch.
PREV_BASE=master
for branch in $(git branch --list "${STACK}/*" \
| sed 's/^[* ]*//' | sort); do
# Check if a PR already exists for this branch
existing=$(gh pr list \
--head "${branch}" \
--json number \
--jq '.[0].number' 2>/dev/null)
if [ -n "${existing}" ]; then
echo "PR #${existing} already open for ${branch} -- skipping"
else
gh pr create \
--base "${PREV_BASE}" \
--head "${branch}" \
--title "[$(echo ${branch} | sed 's|.*/||')] <title>" \
--body "Part of stack \`${STACK}\`." \
--draft
echo "opened PR for ${branch} (base: ${PREV_BASE})"
fi
PREV_BASE="${branch}"
done
Fill in the actual PR titles and bodies before removing
the --draft flag.
Run Skill(sanctum:pr-prep) on each slice to generate
quality-gated descriptions.
stack-summary-posted)After all PRs are open, post a summary comment on the
first PR (the root of the stack) listing the full chain:
ROOT_PR=$(gh pr list \
--head "${STACK}/$(git branch --list \
"${STACK}/*" | sed 's/^[* ]*//' | sort | head -1 \
| sed 's|.*/||')" \
--json number --jq '.[0].number')
# Build the stack table
BODY="## Stack\n\n| # | Branch | PR |\n|---|--------|----|\n"
N=1
for branch in $(git branch --list "${STACK}/*" \
| sed 's/^[* ]*//' | sort); do
pr_num=$(gh pr list --head "${branch}" \
--json number --jq '.[0].number')
BODY="${BODY}| ${N} | \`${branch}\` | #${pr_num} |\n"
N=$((N+1))
done
gh pr comment "${ROOT_PR}" --body "$(printf "${BODY}")"
branch before the child PR is opened
--draft by default; promote slices to readyindividually as they pass review
git rebase --update-refs run, re-push withgit push --force-with-lease (never --force)
Skill(sanctum:stack-rebase)to cascade the rebase before updating the next PR's base
stack-push:branches-listed throughstack-push:stack-summary-posted) are created before pushing
starts and marked complete in order
before git push is called; branches with 0 commits are blocked
as base (root slice targets master/main)
## Stack comment containing a table withcolumns #, Branch, and PR listing all slices
gh pr list --head <branch> returns a PR number for eachpushed branch after the step completes
Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).
Automatically creates user-facing changelogs from git commits by analyzing commit history, categorizing changes, and transforming technical commits into clear, customer-friendly release notes. Turns hours of manual changelog writing into minutes of automated generation.
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup
Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).
React Native and Expo best practices for building performant mobile apps. Use when building React Native components, optimizing list performance, implementing animations, or working with native modules. Triggers on tasks involving React Native, Expo, mobile performance, or native platform APIs.
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.
Next.js best practices - file conventions, RSC boundaries, data patterns, async APIs, metadata, error handling, route handlers, image/font optimization, bundling
Use when starting feature work that needs isolation from current workspace or before executing implementation plans - creates isolated git worktrees with smart directory selection and safety verification
Take athola/stack-push from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.