بنقرة واحدة
harness-ship
Phase skill: commit changes, push branch, create a GitHub pull request, and watch CI to green
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Phase skill: commit changes, push branch, create a GitHub pull request, and watch CI to green
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Phase skill: fetch Linear ticket or parse task description into structured context
Phase skill: post-merge cleanup — merge the approved PR, verify Railway deploy, finalize Linear status, remove worktree
Universal state machine driver — reads state file, dispatches to phase skills, loops until workflow complete
Phase skill: TDD implementation — write tests first, then make them pass
Phase skill: create an implementation plan with TDD test strategy
Phase skill: run all quality checks — typecheck, tests, lint, format
| name | harness-ship |
| description | Phase skill: commit changes, push branch, create a GitHub pull request, and watch CI to green |
| user-invocable | false |
Package the work into a well-described PR linked to the Linear ticket, then watch CI to green so the human review gate has a known-good state to evaluate.
Scope: ship is pre-merge only. PR merge, Railway healthcheck, Linear "Done", and worktree removal happen in harness-cleanup after the human approves and the review phase flips from waiting to done.
Stage and commit:
git add -A).harness/conversations/<task-id>.md — this file is part of the deliverable and lives outside the typical source dirs, so it's easy to miss. It is NOT gitignored.git logPush branch:
git push -u origin <branch-name>
Create PR:
gh pr create --title "<concise title>" --body "$(cat <<'EOF'
## Summary
<what changed and why, 1-3 bullets>
## Linear ticket
<ticket-id>: <title>
## Changes
<list of key changes>
## Test plan
- [ ] <checklist of what to verify>
## Evidence
<screenshots or API response summaries from verify phase>
EOF
)"
Capture PR URL in state outputs
Update Linear ticket — if the task is a Linear ticket (AGE-XX pattern):
In Reviewsave_issue with a links entry:
links: [{ url: "<pr-url>", title: "Pull Request: <pr-title>" }]
Watch CI — wait for all checks to complete on the PR:
gh pr checks <pr-number> --watch
ci_runsgh run view <run-id> --log-failed), attempt one fix, push, and re-watchRecord to conversation file:
Insert before the ## Harness Issues marker in .harness/conversations/<task-id>.md (use Edit tool with ## Harness Issues as the anchor — do NOT literally append, that would land below the issues section):
## Ship
**Branch:** <branch-name>
**PR:** <url>
**Commits:** <count>
**CI:** pass (run: <url>) / fail
If you hit friction (CI failed and required a fix, push rejected, PR creation failed), append an entry to the literal end of the file — it will land inside the ## Harness Issues section since that section is last.
Commit & push the ship-phase conversation update — step 7 wrote the ## Ship section to the conversation file after the initial commit in step 1, so those changes are uncommitted. Capture them in a follow-up commit so they survive worktree cleanup and are visible on the PR:
git add .harness/conversations/<task-id>.md
git commit -m "chore: record ship phase to <task-id> conversation log"
git push
If there are no changes, skip silently.
Mark ship phase done. The engine will move to the review phase, see status waiting, and stop. The human reviews on GitHub and signals approval. Once review flips to done, the engine resumes into harness-cleanup, which performs the merge, Railway healthcheck, Linear → "Done", and worktree removal.
Do not merge the PR, run Railway checks, or remove the worktree from this skill — those are harness-cleanup's job.
review waiting gate)git push fails (e.g., auth issue), tell the human