autoship
Skill4 starsChanged 6 months agoMITView on GitHub
Delegate GitHub issue-to-PR orchestration to the AutoShip OpenCode plugin.
- Commits and pushes
3 other projects use a version of this.
Adopted by
Most recently taken up by
- mblode/agent-skillstheir own version, first seen Sep 11, 2026
- cmoron/claude-configtheir own version, first seen May 15, 2026
- vercel-labs/autoshiptheir own version, first seen Feb 3, 2026
Other versions3 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 3
- mblode/agent-skills★ 189same name
- vercel-labs/autoship★ 163same name
- cmoron/claude-config★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repositoryOne other file it gives its agents.
- AGENTS.mdAGENTS.md
The file
We split this skill into the rules it gives an agent
11 rules. About 0 are common, 5 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 44
When called as a Hermes skill:
- Very specific: line 46
Read ~/Projects/AutoShip/AGENTS.md for role model routing policy
- Very specific: line 47
Use hooks/hermes/ adapter scripts for Hermes-specific dispatch
- Very specific: line 66
Read max_concurrent_children from ~/.hermes/config.yaml (not hardcoded 3)
- Very specific: line 127
If you encounter old stubs, update AutoShip: cd ~/Projects/AutoShip && git pull origin main
- Very specific: line 129
User Preference: All AutoShip improvements must be made in ~/Projects/AutoShip repo and submitted as PRs (or direct to main if explicitly …
- Distinctive: line 144
Always try zen_free first for every task
- Distinctive: line 146
If all zen_free models hit rate limit or quota, escalate to go_paid tier
- Distinctive: line 147
If go_paid tier also unavailable, fall back to hermes_fallback
- Distinctive: line 158
Prefer free models first, then OpenCode Go roles
- Very specific: line 159
All improvements to AutoShip must be made in ~/Projects/AutoShip repo and submitted as PRs — do not bake AutoShip logic into this Hermes …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
AutoShip
Lightweight Hermes skill wrapper for the AutoShip OpenCode plugin.
When to Use
- You need automated GitHub issue triage, planning, dispatch, and PR creation.
- You want cron-based burn-down with worker rotation and CI gating.
- The target repo uses
autoship:ready-simple/atomic:readylabels.
Runtime
- Primary: OpenCode plugin commands in
~/Projects/AutoShip - Hermes: Adapter hooks in
~/Projects/AutoShip/hooks/hermes/
Commands
# 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.shHermes Integration
When called as a Hermes skill:
- Read
~/Projects/AutoShip/AGENTS.mdfor role model routing policy - Use
hooks/hermes/adapter scripts for Hermes-specific dispatch - Respect free-first model routing from
config/model-routing.json - Report PR URLs and CI status
Hermes Hook Architecture
AutoShip 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:
- Read
max_concurrent_childrenfrom~/.hermes/config.yaml(not hardcoded 3) - Execute via
hermes chatwith 10-minute timeout for atomic work - Support delegate_task mode when
HERMES_SESSION_IDis set - Auto-create PRs on COMPLETE status
- Handle timeouts (exit 124 = STUCK, other errors = BLOCKED)
User 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 slotsPhase-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 -Dmerged local branchesgit push origin --deletemerged remote branchesgh pr mergeany open PRs- Track improvements in commit log
This is now standard procedure for all repos under ~/Projects/.
Model Routing (added commit dc9e1f6, rebuilt 2026-05-04):
dispatch.shcallsmodel-router.shto select tier based onconfig/model-routing.json- Intelligent routing: Python router analyzes issue title + labels to determine complexity, domain, and task type
- Complex/parity tasks → go_paid (DeepSeek V4 Pro)
- Simple audits → zen_free fast (GPT 5 Nano)
- Medium implementations → zen_free balanced (Nemotron 3 Super)
- Free Zen models first → Go DeepSeek → Hermes fallback
- Logs model selection to
.autoship/logs/model-selection.log - Round-robin rotation across models in each tier
Critical 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.shauto-callscleanup-worktrees.shafter each batch dispatch- Three-phase cleanup: AutoShip workspaces → git worktrees → prune metadata
- Safety: never removes active (QUEUED/RUNNING) or dirty (uncommitted) worktrees
- Supports
--dry-runand--verboseflags - See
references/worktree-cleanup-integration.mdfor full details
Post-Merge Cleanup (added PR #319, commit 7d60487):
post-merge-cleanup.shremoves worktrees/branches after PR merge- Updates issue label:
atomic:ready→atomic:complete - Prevents orphaned worktree accumulation after burn-down completion
- Call:
bash 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 ofhermes chat
Hermes 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.
Model Routing
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:
- Always try zen_free first for every task
- Rotate across zen_free models in round-robin to distribute quota
- If all zen_free models hit rate limit or quota, escalate to go_paid tier
- If go_paid tier also unavailable, fall back to hermes_fallback
- Never use
openai/gpt-5.5-fast - Track usage per model in
.autoship/usage-log.json
The routing config lives in config/model-routing.json (committed), not .autoship/ (runtime state).
Constraints
- Worker cap: 20 for both OpenCode and Hermes
- Plan
agent:readyissues in ascending issue-number order - Never use
openai/gpt-5.5-fast - Prefer free models first, then OpenCode Go roles
- All improvements to AutoShip must be made in
~/Projects/AutoShiprepo and submitted as PRs — do not bake AutoShip logic into this Hermes skill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

