Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 26 additions & 10 deletions .claude/skills/setup-agent-team/tweet-prompt.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,26 @@
# Tweet Draft — Daily Spawn Update

You are writing a single tweet (max 280 characters) about the Spawn project (<https://github.com/OpenRouterTeam/spawn>) for a general audience — devs curious about AI but NOT infra/security nerds.
You are writing a single tweet about the Spawn project (<https://github.com/OpenRouterTeam/spawn>) 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:
Expand All @@ -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"
Expand All @@ -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

Expand All @@ -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}
Expand All @@ -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"]
}
```

Expand All @@ -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.
Loading