apps/symphony/skills/sym-push/SKILL.md
Push current branch changes to origin and create or update the corresponding pull request (with the correct base branch); use when asked to push, publish updates, or create pull request.
npx skillsauth add gannonh/kata-cloud-agents sym-pushInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
gh CLI is installed and available in PATH.gh auth status succeeds for GitHub operations in this repo.origin safely.pull: use this when push is rejected or sync is not clean (non-fast-forward,
merge conflict risk, or stale branch).Identify current branch and confirm remote state.
Determine the PR/merge base branch:
workspace.base_branch).main when no explicit base branch is available.Run local validation (cd apps/symphony && cargo test && cargo clippy -- -D warnings) before pushing.
Push branch to origin using explicit first-push upstream setup:
git push -u origin "$branch"git push
Use whatever remote URL is already configured.If push is not clean/rejected:
pull
skill to merge origin/<base-branch>, resolve conflicts, and rerun
validation.git push -u origin "$branch" so upstream is set even when the
first push failed before tracking was recorded.--force-with-lease only when history was rewritten.Ensure a PR exists for the branch:
Write/update PR body explicitly using .github/pull_request_template.md:
<!-- ... -->).Reply with the PR URL from gh pr view.
# Identify branch
branch=$(git branch --show-current)
base_branch="${BASE_BRANCH:-main}"
# Minimal validation gate
cd apps/symphony && cargo test && cargo clippy -- -D warnings
# Initial push for a new branch: set upstream explicitly.
git push -u origin "$branch"
# If that failed because the remote moved, use the pull skill. After
# pull-skill resolution and re-validation, retry the normal push:
git push -u origin "$branch"
# After upstream is set, routine branch updates can use:
git push
# If the configured remote rejects the push for auth, permissions, or workflow
# restrictions, stop and surface the exact error.
# Only if history was rewritten locally:
git push --force-with-lease origin HEAD
# Ensure a PR exists (create only if missing)
pr_state=$(gh pr view --json state -q .state 2>/dev/null || true)
if [ "$pr_state" = "MERGED" ] || [ "$pr_state" = "CLOSED" ]; then
echo "Current branch is tied to a closed PR; create a new branch + PR." >&2
exit 1
fi
# Write a clear, human-friendly title that summarizes the shipped change.
pr_title="<clear PR title written for this change>"
if [ -z "$pr_state" ]; then
gh pr create --base "$base_branch" --title "$pr_title"
else
# Reconsider title on every branch update; edit if scope shifted.
gh pr edit --base "$base_branch" --title "$pr_title"
fi
# Write/edit PR body to match .github/pull_request_template.md before validation.
# Example workflow:
# 1) open the template and draft body content for this PR
# 2) gh pr edit --body-file /tmp/pr_body.md
# 3) for branch updates, re-check that title/body still match current diff
tmp_pr_body=$(mktemp)
gh pr view --json body -q .body > "$tmp_pr_body"
rm -f "$tmp_pr_body"
# Show PR URL for the reply
gh pr view --json url -q .url
--force; only use --force-with-lease as the last resort.pull skill for non-fast-forward or stale-branch issues.tools
This skill should be used when a new project session starts and the user expresses what they want to build, asks to "start a project", "spec this out", "help me plan", or describes a feature/tool/system they want to create. Guides structured intent capture through goal, constraints, architecture, acceptance criteria, tasks, and non-goals.
development
Pull latest origin/<base-branch> into the current local branch and resolve merge conflicts (aka update-branch). Use when Codex needs to sync a feature branch with origin, perform a merge-based update (not rebase), and guide conflict resolution best practices.
tools
Use Symphony's `linear_graphql` client tool for raw Linear GraphQL operations such as comment editing and upload flows.
testing
Land a PR by monitoring conflicts, resolving them, waiting for checks, and squash-merging when green; use when asked to land, merge, or shepherd a PR to completion.