ship-digest
npx machina-cli add skill PHY041/claude-agent-skills/ship-digest --openclawShip 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.
Source
git clone https://github.com/PHY041/claude-agent-skills/blob/main/skills/ship-digest/SKILL.mdView on GitHub Overview
Automatically detect new GitHub repos pushed today for a specified user, write a concise technical digest from the README and recent commits, and draft Twitter/Reddit posts for approval. It maintains a memory state to distinguish truly new repos and ensures you approve before posting.
How This Skill Works
It fetches repos sorted by pushed_at for the configured GitHub username, compares them against memory/ship-digest-state.json to identify new repos, analyzes the README, recent commits, and file tree to infer the tech stack, then generates a Ship Digest and social drafts. Drafts are presented for approval and will not be posted automatically until you confirm.
When to Use It
- You want to announce a new repo you pushed today and capture technical details.
- You need ready-to-post Twitter or Reddit drafts for a fresh project.
- You want a quick recap of what you shipped for teammates or followers.
- Youβre monitoring your GitHub profile for new activity and want automatic summaries.
- You want to trigger from phrases like 'ship digest' or 'what did I ship' to start the workflow.
Quick Start
- Step 1: Set GITHUB_USERNAME (export GITHUB_USERNAME="yourusername").
- Step 2: Trigger the skill with 'ship digest' to scan todayβs repos and generate drafts.
- Step 3: Review the 2 draft options and approve the one you want posted (no auto-post).
Best Practices
- Set and maintain the GITHUB_USERNAME environment variable for accurate detection.
- Review both A and B draft options and tailor them to platform constraints (Twitter character limit, Reddit style).
- Keep the memory state up to date with last_checked and known_repos to minimize false positives.
- Include a concise README-based description and at least one concrete metric in the digest.
- Never auto-post; use the approved workflow to publish via social-post or twitter-cultivate.
Example Use Cases
- π’ Ship Digest β 2026-03-08: New repo 'data-pipeline-toolkit' pushed today. What you shipped: README with architecture overview; 2 commits. Tech stack: Python, Docker. github.com/yourusername/data-pipeline-toolkit
- π’ Ship Digest β 2026-03-08: New repo 'ui-components' pushed today. What you shipped: small component library; 1 README update + 4 UI modules. Tech stack: TypeScript, React. github.com/yourusername/ui-components
- π’ Ship Digest β 2026-03-08: New repo 'monitoring-stack' pushed today. What you shipped: monitoring dashboard and config; 3 commits. Tech stack: Go, Prometheus, Grafana. github.com/yourusername/monitoring-stack
- π’ Ship Digest β 2026-03-08: New repo 'ml-pipelines' pushed today. What you shipped: data processing pipelines described in README; 3 commits. Tech stack: Python, ML frameworks. github.com/yourusername/ml-pipelines
- π’ Ship Digest β 2026-03-08: New repo 'infra-templates' pushed today. What you shipped: IaC templates with Terraform; 2 commits. Tech stack: Terraform, AWS. github.com/yourusername/infra-templates