with one click
autoship
// Delegate GitHub issue-to-PR orchestration to the AutoShip OpenCode plugin.
// Delegate GitHub issue-to-PR orchestration to the AutoShip OpenCode plugin.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | autoship |
| description | Delegate GitHub issue-to-PR orchestration to the AutoShip OpenCode plugin. |
| version | 1.0.0 |
| author | Kira Vanguard |
| license | MIT |
| metadata | {"hermes":{"tags":["github","opencode","autoship","automation","pr"],"homepage":"https://github.com/Maleick/AutoShip","related_skills":["textquest-development","github-issues","github-pr-workflow"]}} |
Lightweight Hermes skill wrapper for the AutoShip OpenCode plugin.
autoship:ready-simple / atomic:ready labels.~/Projects/AutoShip~/Projects/AutoShip/hooks/hermes/# Plan issues
cd ~/Projects/AutoShip && bash hooks/opencode/plan-issues.sh
# Dispatch workers
cd ~/Projects/AutoShip && bash hooks/opencode/dispatch.sh
# Check status
cd ~/Projects/AutoShip && bash hooks/hermes/status.sh
When called as a Hermes skill:
~/Projects/AutoShip/AGENTS.md for role model routing policyhooks/hermes/ adapter scripts for Hermes-specific dispatchconfig/model-routing.jsonAutoShip provides Hermes-specific hooks in hooks/hermes/:
| Hook | Purpose | Entry Point |
|---|---|---|
setup.sh | Detect Hermes capabilities, write hermes-model-routing.json | bash hooks/hermes/setup.sh |
plan-issues.sh | Fetch and filter issues for Hermes dispatch | bash hooks/hermes/plan-issues.sh |
dispatch.sh | Create worktree, write prompt, queue issue, auto-select model tier | bash hooks/hermes/dispatch.sh <issue_num> [task_type] [model] |
runner.sh | Execute queued workspace via hermes chat or delegate_task, auto-cleanup after batch | bash hooks/hermes/runner.sh [issue_key] |
cleanup-worktrees.sh | Remove completed/abandoned worktrees (3-phase: workspaces → git worktrees → prune) | bash hooks/hermes/cleanup-worktrees.sh [--dry-run] [--verbose] |
model-router.sh | Read config/model-routing.json and return next model in rotation | bash hooks/hermes/model-router.sh dispatch_with_routing [code] [simple|complex] |
status.sh | Show Hermes runtime state | bash hooks/hermes/status.sh |
Critical: dispatch.sh and runner.sh were historically empty stubs that only printed instructions. As of commit 90df8b9, they properly:
max_concurrent_children from ~/.hermes/config.yaml (not hardcoded 3)hermes chat with 10-minute timeout for atomic workHERMES_SESSION_ID is setUser Preference: AutoShip over Cron Burn-Down
The user explicitly deleted the textquest-issue-burn-down cron and prefers AutoShip dispatch exclusively. Do not recreate cron-based burn-down. Use:
# Batch dispatch 10 issues
cd ~/Projects/AutoShip
for issue in $(gh issue list --label atomic:ready --limit 10 --json number --jq '[.[].number] | join(" ")'); do
bash hooks/hermes/dispatch.sh "$issue"
done
bash hooks/hermes/runner.sh # executes up to max_concurrent slots
Phase-End Protocol At the end of each work phase, the user expects:
git pull origin main (or master) to sync latestgit worktree prune + remove stale worktrees for inactive issuesgit branch -D merged local branchesgit push origin --delete merged remote branchesgh pr merge any open PRsThis is now standard procedure for all repos under ~/Projects/.
Model Routing (added commit dc9e1f6, rebuilt 2026-05-04):
dispatch.sh calls model-router.sh to select tier based on config/model-routing.json.autoship/logs/model-selection.logCritical bug fixed: auto-prune.sh used ls -1 which counts files inside workspaces, not directories. This caused it to report 30+ workspaces when only 10 existed, leading to premature pruning of QUEUED issues. Fixed with find -type d.
Worktree Cleanup (added PR #317, commit 3e88b9):
runner.sh auto-calls cleanup-worktrees.sh after each batch dispatch--dry-run and --verbose flagsreferences/worktree-cleanup-integration.md for full detailsPost-Merge Cleanup (added PR #319, commit 7d60487):
post-merge-cleanup.sh removes worktrees/branches after PR mergeatomic:ready → atomic:completebash hooks/hermes/post-merge-cleanup.sh <issue_number>Environment Variables:
HERMES_TARGET_REPO_PATH: Must be set to target repo path (default: $HOME/Projects/TextQuest)HERMES_SESSION_ID: Auto-detected; triggers delegate_task mode instead of hermes chatHermes result-file pitfall: Hermes prompts write HERMES_RESULT.md, while shared OpenCode PR helpers default to AUTOSHIP_RESULT.md. hooks/hermes/runner.sh must pass $worktree_path/HERMES_RESULT.md into hooks/opencode/create-pr.sh; otherwise completed Hermes work can create PRs but log VERDICT: FAIL - AUTOSHIP_RESULT.md missing.
Issue closure pitfall: Worker prompts must NOT tell Hermes to run gh issue close after PR creation. Use Closes #N in the PR body and let GitHub close the issue after merge. Manually closing issues while their PRs are open hides follow-up work from AutoShip planners and breaks issue/PR lifecycle state.
If you encounter old stubs, update AutoShip: cd ~/Projects/AutoShip && git pull origin main
User Preference: All AutoShip improvements must be made in ~/Projects/AutoShip repo and submitted as PRs (or direct to main if explicitly approved). Do not bake AutoShip logic into this Hermes skill — keep skills as thin wrappers.
Skill sync: This skill is symlinked to ~/Projects/AutoShip for live updates. Do not copy SKILL.md manually.
AutoShip uses a three-tier free-first routing strategy:
| Tier | Priority | Provider | Models | Cost |
|---|---|---|---|---|
| zen_free | 1 | opencode-zen | Big Pickle, MiniMax M2.5, Ling 2.6 Flash, Hy3 Preview, Nemotron 3 Super, GPT 5 Nano | Free |
| go_paid | 2 | opencode-go | DeepSeek V4 Pro, DeepSeek V4 Flash | Paid |
| hermes_fallback | 3 | hermes | Kimi K2.6, GPT 5.5 | Subscription |
Rules:
openai/gpt-5.5-fast.autoship/usage-log.jsonThe routing config lives in config/model-routing.json (committed), not .autoship/ (runtime state).
agent:ready issues in ascending issue-number orderopenai/gpt-5.5-fast~/Projects/AutoShip repo and submitted as PRs — do not bake AutoShip logic into this Hermes skill