# Meridian:ship

> Use when you need Meridian to commit + Push + PR.

- Skill: `mattjaikaran/meridian-ship` (Agent Skill)
- Install (CLI): `npx skillmds@latest add mattjaikaran/meridian-ship`
- Raw SKILL.md: https://api.skillmd.com/api/skills/mattjaikaran/meridian-ship/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: mattjaikaran (https://skillmd.com/u/mattjaikaran)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/mattjaikaran/meridian-ship

---


# /meridian:ship — Commit + Push + PR

Ship completed work: commit staged changes, push to remote, create PR.

## Arguments
- `--commit-only` — Just commit, don't push or create PR
- `--push-only` — Push existing commits, create PR
- `--no-pr` — Push without creating PR
- `--branch <name>` — Override branch name

## Procedure

### Step 1: Check Git State
```bash
git status
git diff --stat
git log --oneline -5
```

### Step 2: Verify Tests Pass
Run the project's test suite before shipping:
```bash
# Detect and run appropriate test command
uv run pytest tests/  # Python
# or: bun test         # TypeScript
# or: cargo test       # Rust
```

If tests fail, do NOT ship. Show failures and suggest `/meridian:debug`.

### Step 3: Commit
Stage relevant files and commit with Meridian prefix:
```bash
git add <files>
git commit -m "[meridian] <descriptive message>"
```

### Step 4: Push
```bash
git push -u origin <branch>
```

### Step 5: Create PR
```bash
gh pr create --title "<title>" --body "$(cat <<'EOF'
## Summary
<bullet points from completed plans>

## Changes
<files changed summary>

## Testing
<test results>

## Meridian Context
- Milestone: <milestone>
- Phase: <phase>
- Plans completed: <count>

---
Generated by Meridian
EOF
)"
```

### Step 6: Record in State
Update plan commit SHAs and create checkpoint:
```bash
PYTHONPATH=$MERIDIAN_HOME uv run --project $MERIDIAN_HOME -- python -c "
from scripts.db import connect, get_db_path
from scripts.state import create_checkpoint
conn = connect(get_db_path('.'))
create_checkpoint(conn, trigger='phase_complete', notes='Shipped to PR')
conn.close()
"
```

### Step 7: Export State
```bash
PYTHONPATH=$MERIDIAN_HOME uv run --project $MERIDIAN_HOME -- python -c "
from scripts.export import export_state
export_state('.')
"
```

