Ship in 30 seconds
Pick the fastest method for you. No accounts, no writing, no blog setup.
bolt
Claude Code skill
FASTESTType /shipped in your terminal. AI reads your git log, generates a ship, you confirm. One prompt. Done.
/shipped AI auto-gathers context from your git commits, diff, and package.json. Generates title, tags, full blog post. You just confirm.
smart_toy
Any AI coding agent
Cursor, Windsurf, Copilot, or any agent that can run git. Copy this prompt:
Fork github.com/t4s-club/shipped to my account.
Create my profile at people/MY_HANDLE/vibecoder.md with:
- handle: MY_HANDLE
- name: MY_NAME
- bio: one line about me
Create today's ship at shipped/MY_HANDLE/2026-02-19/shipped.md with:
Frontmatter:
- handle, date (2026-02-19), tags, category
- projectName: (optional) project name for timeline tracking
- projectUrl: (optional) live URL
- repoUrl: (optional) GitHub repo URL
- techStack: (optional) [tech1, tech2]
Sections:
- ## The Ship - what I built
- ## Why - motivation
- ## The Hard Part - challenges
- ## Story - (optional) first-person narrative of the journey
Open a PR to t4s-club/shipped with title "Ship: [brief description]" or do it manually
1
2
Create Your Profile (first time only)
Create a file at people/your-handle/vibecoder.md:
---
handle: your-handle
name: Your Name
bio: Builder, maker, shipper.
twitter: yourhandle
github: yourhandle
website: https://your.site
---
Optional longer bio in markdown.
3
Create Your Ship File
Create a file at shipped/your-handle/2026-02-19/shipped.md:
---
handle: your-handle
date: 2026-02-19
tags: [feature, web]
category: feature
# Optional: for project tracking
projectName: my-project
projectUrl: https://my-project.com
repoUrl: https://github.com/user/my-project
techStack: [TypeScript, React, Tailwind]
---
## The Ship
Describe what you shipped today. Be specific — what did you build, fix, design, or deploy?
## Why
Why did you build this? What problem does it solve? What motivated you?
## The Hard Part
What was challenging about this? What did you learn? What would you do differently?
## Story
(Optional) Tell the story in first person. How did it start? What happened along the way? Where did it end up?
4
Open a Pull Request
Commit your changes and open a PR to the main content repo.
info
Tip: Your PR will be reviewed and merged quickly. Once merged, your ship appears on shipped.md!
check
Done!
Once your PR is merged, your ship will appear on shipped.md/today and your profile page will show your shipping streak.
content_copy Quick Copy Template
---
handle: your-handle
date: 2026-02-19
tags: [feature]
category: feature
projectName: my-project
---
## The Ship
What I shipped today...
## Why
Why I built this...
## The Hard Part
What was challenging... Optional Fields
projectName — group related ships into a project timeline projectUrl — link to the live project repoUrl — link to the code repository techStack — list of technologies used [React, Node.js] Categories
feature — new functionalityfix — bug fixdocs — documentationrelease — version releaserefactor — code improvementdesign — visual/UX worktest — testingother — everything else bolt
Auto-Ship from Git
Push to main = automatic ship entry. Add this GitHub Action to your repo:
# .github/workflows/auto-ship.yml
name: Auto-Ship to shipped.md
on:
push:
branches: [main]
jobs:
auto-ship:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Gather context
id: context
run: |
echo "commits<<EOF" >> $GITHUB_OUTPUT
git log --oneline -10 >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
echo "diff_stat<<EOF" >> $GITHUB_OUTPUT
git diff --stat HEAD~1 >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Generate ship entry via AI
id: generate
env:
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
run: |
# Send context to OpenRouter API
RESPONSE=$(curl -s https://openrouter.ai/api/v1/chat/completions \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-sonnet-4",
"messages": [{"role": "user",
"content": "Generate a shipped.md entry..."}]
}')
# Parse and write to file
- name: Create PR on t4s-club/shipped
env:
GH_TOKEN: ${{ secrets.SHIPPED_PAT }}
run: |
gh repo clone t4s-club/shipped /tmp/shipped
# Copy generated file, commit, push, create PR key
Required secrets:
OPENROUTER_API_KEY (for AI generation) and SHIPPED_PAT (GitHub PAT with access to t4s-club/shipped)