ship-digest
Detect new GitHub repos and generate formatted ship announcements for social media. Monitors your GitHub profile for new repos pushed today, writes a technical digest, and drafts Twitter/Reddit posts for approval. Triggers on "ship digest", "new repos", "what did I ship", "github
What it does
Ship Digest Skill
Automatically detect new GitHub repos and turn them into social media announcements.
Setup
export GITHUB_USERNAME="yourusername"
How It Works
- Fetch your GitHub repos sorted by
pushed_at - Compare against a state file (
memory/ship-digest-state.json) - For any new repo pushed today → analyze README + commits
- Generate a technical digest + social media drafts
- Send drafts for approval (NEVER auto-post)
Workflow
Step 1: Fetch New Repos
gh api /users/$GITHUB_USERNAME/repos?sort=pushed&per_page=10
Compare pushed_at timestamps against state file. A repo is "new" if:
- Not in state file at all, OR
pushed_atis today and has 3+ new commits since last check
Step 2: Analyze Repo Content
# README
gh api /repos/$GITHUB_USERNAME/{repo}/readme --jq .content | base64 -d
# Recent commits
gh api /repos/$GITHUB_USERNAME/{repo}/commits?per_page=5
# File tree (for tech stack detection)
gh api /repos/$GITHUB_USERNAME/{repo}/git/trees/HEAD?recursive=1 --jq '[.tree[].path] | join(", ")'
Step 3: Generate Ship Digest
Output format:
🚢 Ship Digest — [date]
Caught a new repo: **{repo_name}**, pushed today.
**What you shipped:**
[2-3 sentence technical description based on README + commits]
📊 **{N} lines** in initial commit. [Tech stack summary].
→ github.com/{username}/{repo}
---
**✍️ DRAFT — Option A: [Hook type]**
[Twitter draft A]
**✍️ DRAFT — Option B: [Hook type]**
[Twitter draft B]
Reply "A" or "B" to post, or tell me what to change.
Step 4: Await Approval
User picks Option A or B (or requests edits). Then post using social-post skill or twitter-cultivate skill.
NEVER auto-post without explicit user confirmation.
Draft Generation Rules
Voice
- First-person, authentic, no hype
- Lead with the problem solved OR the interesting technical choice
- Include one specific metric (lines of code, platforms supported, speed improvement)
Hook Types to Try
- Contrarian Hook — "Everyone says X, but actually Y"
- Data Hook — "[Number] lines. [N] platforms. [capability]."
- Problem Hook — "Every [person] hits [pain point] eventually..."
- Story Hook — "Been thinking about [problem] for [time]. Finally shipped something."
Banned Words
Never use: revolutionize, supercharge, game-changer, 10x, viral, hacks, disrupt, groundbreaking
State File
Location: memory/ship-digest-state.json
{
"github_username": "yourusername",
"last_checked": "ISO8601",
"known_repos": {
"repo-name": {
"pushed_at": "ISO8601",
"last_commit_count": 42,
"announced": true
}
}
}
Cron Schedule
Runs 2x daily: 09:00 and 16:00 (your local time).
If no new repos: reply HEARTBEAT_OK.
Capabilities
Install
Quality
deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 13 github stars · SKILL.md body (2,820 chars)