一键导入
push
Push current branch changes to origin and create or update the corresponding pull request; use when asked to push, publish updates, or create pull request.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Push current branch changes to origin and create or update the corresponding pull request; use when asked to push, publish updates, or create pull request.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Import OpenSymphony memory for work completed outside the orchestrator and Linear tracker. Use when asked to capture GitHub PRs, merge commits, direct commits, or other off-run-loop work into project memory by creating a temporary YAML evidence file, running `opensymphony memory import`, and syncing docs.
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.
Pull the latest configured target branch into the current local branch and resolve merge conflicts (aka update-branch). Use when syncing a feature branch with origin, perform a merge-based update (not rebase), and guide conflict resolution best practices.
Use this skill when a docs/tasks/task-package.yaml planning wave should be validated, previewed, or published to Linear with milestone assignments, parent/sub-issue relationships, blocker relations, and publish state.
Use repo-local GraphQL helpers to read and write Linear through `LINEAR_API_KEY`.
Consult OpenSymphony project memory before planning nontrivial work, during review rework, and before documentation updates.
| name | push |
| description | Push current branch changes to origin and create or update the corresponding pull request; use when asked to push, publish updates, or create pull request. |
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.
Run local validation that matches the changed surface before pushing:
git diff --check.AGENTS.md
(cargo check-system-duckdb, focused cargo test-system-duckdb ..., or
fallback dev aliases if system DuckDB is unavailable).npm run type-check plus focused
Jest/build commands for the touched packages.git diff --check is sufficient.Push branch to origin with upstream tracking if needed, using whatever
remote URL is already configured.
If push is not clean/rejected:
pull
skill to merge the configured target branch, resolve conflicts, and rerun
validation.--force-with-lease only when history was rewritten.Ensure a PR exists for the branch:
WORKFLOW.md Target branch: and use it as the PR base.Write/update PR body explicitly using .github/pull_request_template.md:
<!-- ... -->).If the repo has a PR body checker, run it and fix all reported issues. Otherwise, manually ensure the PR body has no placeholders and matches the current diff.
Reply with the PR URL from gh pr view.
# Identify branch
branch=$(git branch --show-current)
# Minimal validation gate; add focused Rust/frontend/docs checks for your diff.
git diff --check
# Initial push: respect the current origin remote.
git push -u origin HEAD
# 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 HEAD
# 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)
target_branch=$(awk -F': *' '/^Target branch:/ { branch=$2; gsub(/`/, "", branch); gsub(/\r/, "", branch); gsub(/^[ \t]+|[ \t]+$/, "", branch); print branch; exit }' WORKFLOW.md)
if [ -z "$target_branch" ]; then
echo "WORKFLOW.md is missing a Target branch marker; run opensymphony update --target-branch <branch> before creating or retargeting a PR." >&2
exit 1
fi
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 "$target_branch" --title "$pr_title"
else
current_base=$(gh pr view --json baseRefName -q .baseRefName)
if [ "$current_base" != "$target_branch" ]; then
gh pr edit --base "$target_branch"
fi
# Reconsider title on every branch update; edit if scope shifted.
gh pr edit --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"
if [ -x scripts/check-pr-body ]; then
scripts/check-pr-body "$tmp_pr_body"
else
! rg -n "<!--|TODO|TBD" "$tmp_pr_body"
fi
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.