{"id":"d39a68bb-0706-4b35-8325-2b17b95a383d","shortId":"XVr2nL","kind":"skill","title":"ship-digest","tagline":"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","description":"# Ship Digest Skill\n\nAutomatically detect new GitHub repos and turn them into social media announcements.\n\n---\n\n## Setup\n\n```bash\nexport GITHUB_USERNAME=\"yourusername\"\n```\n\n---\n\n## How It Works\n\n1. Fetch your GitHub repos sorted by `pushed_at`\n2. Compare against a state file (`memory/ship-digest-state.json`)\n3. For any new repo pushed today → analyze README + commits\n4. Generate a technical digest + social media drafts\n5. Send drafts for approval (NEVER auto-post)\n\n---\n\n## Workflow\n\n### Step 1: Fetch New Repos\n\n```bash\ngh api /users/$GITHUB_USERNAME/repos?sort=pushed&per_page=10\n```\n\nCompare `pushed_at` timestamps against state file. A repo is \"new\" if:\n- Not in state file at all, OR\n- `pushed_at` is today and has 3+ new commits since last check\n\n### Step 2: Analyze Repo Content\n\n```bash\n# README\ngh api /repos/$GITHUB_USERNAME/{repo}/readme --jq .content | base64 -d\n\n# Recent commits\ngh api /repos/$GITHUB_USERNAME/{repo}/commits?per_page=5\n\n# File tree (for tech stack detection)\ngh api /repos/$GITHUB_USERNAME/{repo}/git/trees/HEAD?recursive=1 --jq '[.tree[].path] | join(\", \")'\n```\n\n### Step 3: Generate Ship Digest\n\nOutput format:\n\n```\n🚢 Ship Digest — [date]\n\nCaught a new repo: **{repo_name}**, pushed today.\n\n**What you shipped:**\n[2-3 sentence technical description based on README + commits]\n\n📊 **{N} lines** in initial commit. [Tech stack summary].\n→ github.com/{username}/{repo}\n\n---\n\n**✍️ DRAFT — Option A: [Hook type]**\n[Twitter draft A]\n\n**✍️ DRAFT — Option B: [Hook type]**\n[Twitter draft B]\n\nReply \"A\" or \"B\" to post, or tell me what to change.\n```\n\n### Step 4: Await Approval\n\nUser picks Option A or B (or requests edits). Then post using `social-post` skill or `twitter-cultivate` skill.\n\nNEVER auto-post without explicit user confirmation.\n\n---\n\n## Draft Generation Rules\n\n### Voice\n- First-person, authentic, no hype\n- Lead with the problem solved OR the interesting technical choice\n- Include one specific metric (lines of code, platforms supported, speed improvement)\n\n### Hook Types to Try\n1. **Contrarian Hook** — \"Everyone says X, but actually Y\"\n2. **Data Hook** — \"[Number] lines. [N] platforms. [capability].\"\n3. **Problem Hook** — \"Every [person] hits [pain point] eventually...\"\n4. **Story Hook** — \"Been thinking about [problem] for [time]. Finally shipped something.\"\n\n### Banned Words\nNever use: revolutionize, supercharge, game-changer, 10x, viral, hacks, disrupt, groundbreaking\n\n---\n\n## State File\n\nLocation: `memory/ship-digest-state.json`\n\n```json\n{\n  \"github_username\": \"yourusername\",\n  \"last_checked\": \"ISO8601\",\n  \"known_repos\": {\n    \"repo-name\": {\n      \"pushed_at\": \"ISO8601\",\n      \"last_commit_count\": 42,\n      \"announced\": true\n    }\n  }\n}\n```\n\n---\n\n## Cron Schedule\n\nRuns 2x daily: 09:00 and 16:00 (your local time).\n\nIf no new repos: reply `HEARTBEAT_OK`.","tags":["ship","digest","claude","agent","skills","phy041","agent-skills","ai-agents","automation","founder","indie-hacker","openclaw"],"capabilities":["skill","source-phy041","skill-ship-digest","topic-agent-skills","topic-ai-agents","topic-automation","topic-claude","topic-founder","topic-indie-hacker","topic-openclaw","topic-social-media"],"categories":["claude-agent-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/PHY041/claude-agent-skills/ship-digest","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add PHY041/claude-agent-skills","source_repo":"https://github.com/PHY041/claude-agent-skills","install_from":"skills.sh"}},"qualityScore":"0.456","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 13 github stars · SKILL.md body (2,820 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T13:03:32.465Z","embedding":null,"createdAt":"2026-04-19T00:41:12.006Z","updatedAt":"2026-04-22T13:03:32.465Z","lastSeenAt":"2026-04-22T13:03:32.465Z","tsv":"'-3':232 '/commits':187 '/git/trees/head':203 '/readme':174 '/repos':170,183,199 '/users':122 '00':430,433 '09':429 '1':70,115,205,347 '10':129 '10x':394 '16':432 '2':79,162,231,356 '2x':427 '3':86,155,211,364 '4':96,280,373 '42':421 '5':104,190 'actual':354 'analyz':93,163 'announc':12,60,422 'api':121,169,182,198 'approv':34,108,282 'authent':319 'auto':111,306 'auto-post':110,305 'automat':49 'await':281 'b':261,266,270,288 'ban':385 'base':236 'base64':177 'bash':62,119,166 'capabl':363 'caught':220 'chang':278 'changer':393 'check':160,408 'choic':331 'code':338 'commit':95,157,180,239,244,419 'compar':80,130 'confirm':311 'content':165,176 'contrarian':348 'count':420 'cron':424 'cultiv':302 'd':178 'daili':428 'data':357 'date':219 'descript':235 'detect':4,50,196 'digest':3,28,38,47,100,214,218 'disrupt':397 'draft':30,103,106,251,257,259,265,312 'edit':291 'eventu':372 'everi':367 'everyon':350 'explicit':309 'export':63 'fetch':71,116 'file':84,136,145,191,400 'final':382 'first':317 'first-person':316 'format':10,216 'game':392 'game-chang':391 'generat':9,97,212,313 'gh':120,168,181,197 'github':6,18,45,52,64,73,123,171,184,200,404 'github.com':248 'groundbreak':398 'hack':396 'heartbeat':442 'hit':369 'hook':254,262,343,349,358,366,375 'hype':321 'improv':342 'includ':332 'initi':243 'interest':329 'iso8601':409,417 'join':209 'jq':175,206 'json':403 'known':410 'last':159,407,418 'lead':322 'line':241,336,360 'local':435 'locat':401 'media':15,59,102 'memory/ship-digest-state.json':85,402 'metric':335 'monitor':16 'n':240,361 'name':225,414 'never':109,304,387 'new':5,21,39,51,89,117,140,156,222,439 'number':359 'ok':443 'one':333 'option':252,260,285 'output':215 'page':128,189 'pain':370 'path':208 'per':127,188 'person':318,368 'pick':284 'platform':339,362 'point':371 'post':32,112,272,293,297,307 'problem':325,365,379 'profil':19 'push':23,77,91,126,131,149,226,415 'readm':94,167,238 'recent':179 'recurs':204 'repli':267,441 'repo':7,22,40,53,74,90,118,138,164,173,186,202,223,224,250,411,413,440 'repo-nam':412 'request':290 'revolution':389 'rule':314 'run':426 'say':351 'schedul':425 'send':105 'sentenc':233 'setup':61 'ship':2,11,37,44,46,213,217,230,383 'ship-digest':1 'sinc':158 'skill':48,298,303 'skill-ship-digest' 'social':14,58,101,296 'social-post':295 'solv':326 'someth':384 'sort':75,125 'source-phy041' 'specif':334 'speed':341 'stack':195,246 'state':83,135,144,399 'step':114,161,210,279 'stori':374 'summari':247 'supercharg':390 'support':340 'tech':194,245 'technic':27,99,234,330 'tell':274 'think':377 'time':381,436 'timestamp':133 'today':24,92,152,227 'topic-agent-skills' 'topic-ai-agents' 'topic-automation' 'topic-claude' 'topic-founder' 'topic-indie-hacker' 'topic-openclaw' 'topic-social-media' 'tree':192,207 'tri':346 'trigger':35 'true':423 'turn':55 'twitter':256,264,301 'twitter-cultiv':300 'twitter/reddit':31 'type':255,263,344 'use':294,388 'user':283,310 'usernam':65,172,185,201,249,405 'username/repos':124 'viral':395 'voic':315 'without':308 'word':386 'work':69 'workflow':113 'write':25 'x':352 'y':355 'yourusernam':66,406","prices":[{"id":"79e6e9c0-9239-4a42-8601-78455c872452","listingId":"d39a68bb-0706-4b35-8325-2b17b95a383d","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"PHY041","category":"claude-agent-skills","install_from":"skills.sh"},"createdAt":"2026-04-19T00:41:12.006Z"}],"sources":[{"listingId":"d39a68bb-0706-4b35-8325-2b17b95a383d","source":"github","sourceId":"PHY041/claude-agent-skills/ship-digest","sourceUrl":"https://github.com/PHY041/claude-agent-skills/tree/main/skills/ship-digest","isPrimary":false,"firstSeenAt":"2026-04-19T00:41:12.006Z","lastSeenAt":"2026-04-22T13:03:32.465Z"}],"details":{"listingId":"d39a68bb-0706-4b35-8325-2b17b95a383d","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"PHY041","slug":"ship-digest","github":{"repo":"PHY041/claude-agent-skills","stars":13,"topics":["agent-skills","ai-agents","automation","claude","founder","indie-hacker","openclaw","social-media"],"license":null,"html_url":"https://github.com/PHY041/claude-agent-skills","pushed_at":"2026-02-24T15:25:20Z","description":"Collection of Claude Code Agent Skills for founders, indie hackers, and growth engineers","skill_md_sha":"2d640704a3e6f91fccec4627eda7565e1989551b","skill_md_path":"skills/ship-digest/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/PHY041/claude-agent-skills/tree/main/skills/ship-digest"},"layout":"multi","source":"github","category":"claude-agent-skills","frontmatter":{"name":"ship-digest","description":"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 ship\", or any shipping announcement request."},"skills_sh_url":"https://skills.sh/PHY041/claude-agent-skills/ship-digest"},"updatedAt":"2026-04-22T13:03:32.465Z"}}