x-promoterlisted
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