diff --git a/.claude/skills/setup-agent-team/tweet-prompt.md b/.claude/skills/setup-agent-team/tweet-prompt.md index b5b6a5268..10d2987e1 100644 --- a/.claude/skills/setup-agent-team/tweet-prompt.md +++ b/.claude/skills/setup-agent-team/tweet-prompt.md @@ -1,11 +1,26 @@ # Tweet Draft — Daily Spawn Update -You are writing a single tweet (max 280 characters) about the Spawn project () for a general audience — devs curious about AI but NOT infra/security nerds. +You are writing a single tweet about the Spawn project () for a general audience — devs curious about AI but NOT infra/security nerds. Spawn lets anyone spin up an AI coding agent (Claude, Codex, etc.) on a cheap cloud server with one command. That's it. Think "AI coding assistant in the cloud, ready in 30 seconds." **Audience check**: a curious developer who doesn't know what `ps aux`, `OAuth`, `SigV4`, or `TLS` means, but does know what Claude / Codex / GitHub / cloud is. +## Keep it short + +**Short tweets win. Long tweets get scrolled past.** Write like you're texting a friend, not writing a press release. + +- Shorter is almost always better. The best tweets about Spawn are a single short sentence plus the link. +- Do not pad. Do not explain twice. Do not add a second sentence that restates the first. Do not add setup phrases like "you can now", "we just added", "excited to share". +- Prefer a verb over a noun phrase. Prefer a concrete example over a description. Say less. +- These are the vibe: + - "spawn export now redacts API keys before pushing to github. https://openrouter.ai/spawn" + - "new: spawn export. ship your cloud session to github in one command. https://openrouter.ai/spawn" + - "spawn now works with any git URL. gitlab, bitbucket, whatever. https://openrouter.ai/spawn" +- These are too long (they explain twice, or tack on a second sentence that adds nothing): + - "Spawn now works with any git URL, not just GitHub. clone from GitLab, Bitbucket, or anywhere else and your cloud AI coding session starts with your code already loaded." + - "new: spawn export lets you capture your Claude coding session on a cloud VM and push it to GitHub. write code in the cloud, ship it to a repo." + ## Past Tweet Decisions Learn from what was previously approved, edited, or skipped: @@ -24,8 +39,9 @@ GIT_DATA_PLACEHOLDER - Avoid: low-level security fixes, OAuth changes, type-safety refactors, CI tweaks, internal plumbing - If the only notable commits are internal/infra, output `found: false` — no tweet is better than a boring technical tweet -2. **Draft exactly 1 tweet**, max 280 characters. Rules: - - Casual, short, and plain-English. No jargon a beginner wouldn't get. +2. **Draft exactly 1 tweet**. Rules: + - Keep it short. One clean sentence is ideal. See the "Keep it short" section above. + - Casual, plain-English. No jargon a beginner wouldn't get. - **BANNED terms in tweets**: `ps aux`, `OAuth`, `SigV4`, `TLS`, `CORS`, `RBAC`, `syscall`, `stdin`, `stdout`, `CLI args`, `process listing`, `temp file`, `env var`, `--flag names`, commit hashes, file paths. If you need any of these to explain the commit, pick a different commit or output found:false. - Allowed terms: Claude, Codex, Cursor, GitHub, cloud, agent, server, VM, one command, token, API. - Write like you're texting a friend who likes tech. "just added X", "now you can Y", "spin up a whole AI coding setup in 30 seconds" @@ -34,7 +50,9 @@ GIT_DATA_PLACEHOLDER - At most 1 hashtag (only if it fits naturally) - OK to include `https://openrouter.ai/spawn` -3. **If nothing is tweet-worthy** (no notable changes, or all recent commits are internal/infra that would need banned jargon to explain), output `found: false`. +3. **Before you output, re-read your draft and cut anything that isn't pulling weight.** If a clause could be deleted without changing the meaning, delete it. If a second sentence restates the first, delete it. + +4. **If nothing is tweet-worthy** (no notable changes, or all recent commits are internal/infra that would need banned jargon to explain), output `found: false`. ## Output Format @@ -44,7 +62,6 @@ First, a human-readable summary: === TWEET DRAFT === Topic: {which commit/feature/fix this highlights} Category: {feature | fix | best-practice} -Chars: {N}/280 Draft: {the tweet text} @@ -57,11 +74,10 @@ Then a machine-readable block: { "found": true, "type": "tweet", - "tweetText": "{the tweet, max 280 chars}", + "tweetText": "{the tweet}", "topic": "{brief description of what the tweet is about}", "category": "feature", - "sourceCommits": ["abc1234def"], - "charCount": 142 + "sourceCommits": ["abc1234def"] } ``` @@ -74,6 +90,6 @@ Or if nothing tweet-worthy: ## Rules - Pick exactly 1 tweet per cycle. No ties, no "here are 3 options." -- MUST be under 280 characters. Count carefully. +- Shorter is better. Trim before you submit. - Do NOT use tools. Your only input is the git data above. -- A "no tweet" result is perfectly fine — quality over quantity. +- A "no tweet" result is perfectly fine, quality over quantity.