← ClaudeAtlas

x-promoterlisted

Turn a public GitHub repo into a posted X (Twitter) tweet. Three primitives: `summarize-repo.sh` (gh/WebFetch → structured JSON), `draft-tweet.sh` (JSON → 3 variants, ≤280 chars each, with provenance), `post-tweet.sh` (Playwright, persistent profile, draft-then-approve, posts a single tweet or a 2–5 tweet thread). Triggered when the user asks to promote, tweet, or "post on X" a given GitHub project.
korbinjoe/cogents · ★ 1 · Code & Development · score 77
Install: claude install-skill korbinjoe/cogents
# x-promoter — GitHub repo → X tweet This skill is the end-to-end primitive the `growth-marketer` agent composes. Other agents may call the individual scripts directly when they only need one phase. ## Primitives | Script | Input | Output | |--------|-------|--------| | `scripts/summarize-repo.sh <repoUrl>` | A `https://github.com/<owner>/<repo>` URL | Structured JSON on stdout | | `scripts/draft-tweet.sh --summary <path> [--lang en\|zh] [--thread] [--style hook\|narrative]` | A summary JSON file | Markdown draft at `~/.openteam/agents/growth-marketer/drafts/<owner>-<repo>-<ts>.md` | | `scripts/post-tweet.sh --draft <path> [--variant A\|B\|C] [--confirm]` | A draft markdown file | Without `--confirm`: prints `would post: <body>` (exit 11). With `--confirm`: posts via Playwright, prints permalink URL on success (exit 0) | ## Defaults that matter - **Draft-then-approve.** `post-tweet.sh` is a dry-run unless `--confirm` is passed. There is no global override. - **Persistent profile.** The Playwright user-data dir is `~/.openteam/browser-profiles/x/`. Log in once interactively; cookies persist across runs. The dir is created with mode `0700` and walked to restrict every file to owner-only. - **Headed by default.** `post-tweet.mjs` launches Chromium with `headless: false` because X aggressively challenges headless contexts. Override by exporting `X_HEADLESS=1` only if you have verified your account is not gated. - **Locale-aware selectors.** Composer / Add-post / Post / View