
Autoship
Wire autoship into GitHub Actions for scheduled or label-triggered semver releases without hand-running changelog and publish steps.
Install
npx skills add https://github.com/vercel-labs/autoship --skill autoshipWhat is this skill?
- GitHub Actions workflows for scheduled releases (cron) and workflow_dispatch inputs for repo and release type
- Release-on-label PR automation pattern when teams tag PRs for shipping
- pnpm global install, ~/.autoship/config.json, and secrets for AUTOSHIP_CONFIG, AI_GATEWAY_API_KEY, GH_TOKEN
- Non-interactive autoship CLI flags including -t patch|minor|major and -y
- CI/CD integration doc focused on fully automated releases
Adoption & trust: 323 installs on skills.sh; 153 GitHub stars; 2/3 security scanners passed (skills.sh audits).
Recommended Skills
Azure Kubernetesmicrosoft/azure-skills
Github Actions Docsxixu-me/skills
Deploy To Vercelvercel-labs/agent-skills
Vercel Cli With Tokensvercel-labs/agent-skills
Turborepovercel/turborepo
Docker Expertsickn33/antigravity-awesome-skills
Journey fit
Common Questions / FAQ
Is Autoship safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Autoship
# CI/CD Integration Run autoship in CI/CD pipelines for fully automated releases. ## GitHub Actions ### Scheduled Releases Release on a schedule (e.g., weekly): ```yaml name: Scheduled Release on: schedule: - cron: '0 9 * * 1' # Every Monday at 9am UTC workflow_dispatch: inputs: repo: description: 'Repository to release' required: true type: string type: description: 'Release type' required: true type: choice options: - patch - minor - major jobs: release: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v2 - uses: actions/setup-node@v4 with: node-version: 20 cache: pnpm - name: Install autoship run: pnpm add -g autoship - name: Configure repository run: | mkdir -p ~/.autoship echo '${{ secrets.AUTOSHIP_CONFIG }}' > ~/.autoship/config.json - name: Run release env: AI_GATEWAY_API_KEY: ${{ secrets.AI_GATEWAY_API_KEY }} GH_TOKEN: ${{ secrets.GH_TOKEN }} run: | autoship ${{ inputs.repo || 'myproject' }} \ -t ${{ inputs.type || 'patch' }} \ -y ``` ### Trigger on Label Release when a PR is labeled: ```yaml name: Release on Label on: pull_request: types: [labeled] jobs: release: if: contains(github.event.label.name, 'release:') runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v2 - uses: actions/setup-node@v4 with: node-version: 20 cache: pnpm - name: Determine release type id: type run: | LABEL="${{ github.event.label.name }}" if [[ "$LABEL" == "release:major" ]]; then echo "type=major" >> $GITHUB_OUTPUT elif [[ "$LABEL" == "release:minor" ]]; then echo "type=minor" >> $GITHUB_OUTPUT else echo "type=patch" >> $GITHUB_OUTPUT fi - name: Install and run autoship env: AI_GATEWAY_API_KEY: ${{ secrets.AI_GATEWAY_API_KEY }} GH_TOKEN: ${{ secrets.GH_TOKEN }} run: | pnpm add -g autoship mkdir -p ~/.autoship echo '${{ secrets.AUTOSHIP_CONFIG }}' > ~/.autoship/config.json autoship myproject -t ${{ steps.type.outputs.type }} -y ``` ## Environment Variables Set these secrets in your CI environment: | Secret | Description | |--------|-------------| | `AI_GATEWAY_API_KEY` | API key for AI features | | `GH_TOKEN` | GitHub token with repo access (or use `GITHUB_TOKEN`) | | `AUTOSHIP_CONFIG` | Contents of `~/.autoship/config.json` | ### Creating AUTOSHIP_CONFIG Secret ```bash # Copy your local config to clipboard cat ~/.autoship/config.json | pbcopy # macOS cat ~/.autoship/config.json | xclip # Linux # Add as secret in GitHub repo settings ``` ## Best Practices ### 1. Use Workflow Dispatch for Manual Triggers Always include `workflow_dispatch` for manual triggering: ```yaml on: workflow_dispatch: inputs: type: description: 'Release type' required: true type: choice options: [patch, minor, major] ``` ### 2. Pin autoship Version For reproducible builds, pin the version: ```yaml - run: pnpm add -g autoship@1.0.0 ``` ### 3. Validate Before Release Add a validation step: ```yaml - name: Validate run: | # Ensure we have changes to release if git diff --quiet HEAD $(git describe --tags --abbrev=0); then echo "No changes since last release" exit 0 fi ``` ### 4. Notify on Completion ```yaml - name: Notify if: success() run: | curl -X POST "${{ secrets.SLACK_WEBHOOK }}" \ -H "Content-Type: application/json" \ -d '{"text": "Released ${{ inputs.repo }} (${{ inputs.type }})"}'