| name | push |
| description | Finalize the local feature branch and create or update a local PR record on |
Push (offline-demo)
There is no origin remote in this demo. "Push" means: make sure the branch
is in a clean reviewable state and record a local PR entry on the issue via
the tasks CLI so the human reviewer can drag the issue to Merging when
ready.
Prerequisites
- Working tree is clean (everything committed via the
commit skill).
- You know the issue identifier (it's in the prompt as
{{ issue.identifier }}
for the agent that invoked you, but you can also re-read it from the
workpad).
- The branch you're on is
symphony/<identifier> — that's what the
after_create hook set up.
Steps
-
Identify branch: branch=$(git branch --show-current).
-
Verify the working tree is clean and committed:
git status --porcelain
If anything is unstaged, commit it first via the commit skill.
-
Resolve the issue identifier. If your branch is named symphony/eng-3,
the identifier is the suffix uppercased: ENG-3. If you're unsure, check
the workpad header you stamped earlier.
-
Build the PR body. If the workpad has a clean summary, reuse it; otherwise
write a concise outcome-focused note covering:
- What — short summary of the change
- Why — link back to the issue (
tasks://{{ issue.identifier }})
- How — implementation notes
- Validation — how you verified it works
Write it to a file:
cat > /tmp/pr_body.md <<'EOF'
...
tasks://IDENT — see issue body.
...
...
EOF
-
Check whether a local PR already exists for this issue:
tasks pr-view IDENT --json
- If output is
null or (no PR) — create one:
tasks pr-create IDENT \
--branch "$branch" \
--title "<clear PR title>" \
--body-file /tmp/pr_body.md \
--label symphony
- If state is
OPEN — update it in place:
tasks pr-update IDENT \
--title "<clear PR title>" \
--body-file /tmp/pr_body.md \
--label symphony
- If state is
MERGED or CLOSED — that PR is final. Create a fresh one
(the tasks CLI will refuse to create over an OPEN PR but accepts a new
one over a closed/merged one):
tasks pr-create IDENT \
--branch "$branch" \
--title "<clear PR title>" \
--body-file /tmp/pr_body.md \
--label symphony
-
Confirm the local PR is recorded:
tasks pr-view IDENT
Capture the PR number — it's pr.number in the JSON output.
-
The branch lives only on this machine. Do NOT call git push and do NOT
call gh — neither will work. The branch is the artifact; the local PR
record points at it.
Guardrails
- Never call
git push, gh pr ..., or any remote-touching command. There
is no remote.
- Never
--force anything; there's nothing to force against.
- Never paste the local PR record into the workpad — the issue's
pr field
is the canonical view, accessible via tasks pr-view IDENT.