{"id":48931191,"url":"https://github.com/grippado/roaster-kit","last_synced_at":"2026-04-17T09:01:39.325Z","repository":{"id":351935912,"uuid":"1213108360","full_name":"grippado/roaster-kit","owner":"grippado","description":"Roast any developer's public GitHub in the voice of Linus Torvalds, Steve Jobs, Bill Gates, John Carmack + 4 other tech icons. Pure satire. Public data only. 🔥","archived":false,"fork":false,"pushed_at":"2026-04-17T06:27:50.000Z","size":72,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-17T06:33:54.418Z","etag":null,"topics":["anthropic","claude","claude-code","claude-code-skill","claude-skill","cli","developer-humor","github-api","open-source","roast","satire"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grippado.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-17T03:45:57.000Z","updated_at":"2026-04-17T06:27:52.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/grippado/roaster-kit","commit_stats":null,"previous_names":["grippado/roaster-kit"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/grippado/roaster-kit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grippado%2Froaster-kit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grippado%2Froaster-kit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grippado%2Froaster-kit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grippado%2Froaster-kit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grippado","download_url":"https://codeload.github.com/grippado/roaster-kit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grippado%2Froaster-kit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31922399,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"online","status_checked_at":"2026-04-17T02:00:06.879Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anthropic","claude","claude-code","claude-code-skill","claude-skill","cli","developer-humor","github-api","open-source","roast","satire"],"created_at":"2026-04-17T09:00:54.297Z","updated_at":"2026-04-17T09:01:39.293Z","avatar_url":"https://github.com/grippado.png","language":"JavaScript","readme":"# 🔥 roaster-kit\n\n\u003e Roast any developer's public GitHub in the voice of Linus Torvalds, Steve Jobs, Bill Gates, John Carmack, or six other tech icons. Pure satire. Public data only.\n\n```\n$ roaster torvalds --persona=steve-jobs --spice=spicy\n\n  ┌─ROAST────────────────────────────────────────────┐\n  │                                                   │\n  │  I looked at this GitHub. For a minute.          │\n  │  That was enough.                                 │\n  │                                                   │\n  │  → 1,247 repositories. One. Thousand. Two         │\n  │    hundred forty-seven.                           │\n  │  → Not one of them has an app icon.               │\n  │  → The most-starred repo is literally called      │\n  │    \"linux\". No creativity.                        │\n  │                                                   │\n  │  Find the one thing worth keeping.                │\n  │  Throw everything else away.                      │\n  │                                                   │\n  └───────────────────────────────────────────────────┘\n```\n\n## What is this\n\nA Claude-powered roast generator that turns anyone's public GitHub footprint into shareable comedy in the voice of a chosen tech persona. Ships three ways:\n\n- **Claude Code slash command** — `/roast grippado --persona=jobs`\n- **Claude skill** — drop into `~/.claude/skills/` and any Claude agent can call it\n- **Standalone CLI** — `npx roaster-kit grippado`\n\nAll three share the same core skill. The CLI is a thin wrapper that calls the Anthropic API with the skill injected as the system prompt.\n\nA **web version** at `roast.gripp.link` is on the way — paste a GitHub handle, pick your executioner, get roasted in the browser. See [Roadmap](#roadmap).\n\n## Install\n\n### CLI\n\n...\n\nBy default, roaster uses Claude Sonnet 4.6 for a good balance of quality and cost. You can opt into Opus with `--model=claude-opus-4-7` when you want the premium version.\n\nWorks with any Node 20+ package manager. No install needed — run it ephemerally:\n\n```bash\n# npm\nnpx roaster-kit \u003cgithub-username\u003e\n\n# yarn\nyarn dlx roaster-kit \u003cgithub-username\u003e\n\n# pnpm\npnpm dlx roaster-kit \u003cgithub-username\u003e\n```\n\nPrefer a global install?\n\n```bash\nnpm install -g roaster-kit\nyarn global add roaster-kit\npnpm add -g roaster-kit\n```\n\nThen use either `roaster` or `roast` as the command name.\n\nSet `ANTHROPIC_API_KEY` first ([get one here](https://console.anthropic.com)). Optionally set `GITHUB_TOKEN` to raise the GitHub rate limit from 60/hr to 5000/hr.\n\n### Claude Code slash command\n\n```bash\n# from the repo root\ncp slash-command/roast.md ~/.claude/commands/roast.md\ncp -r skill/roaster ~/.claude/skills/roaster\n```\n\nThen in any Claude Code session:\n\n```\n/roast grippado --persona=linus --spice=spicy\n```\n\n### Claude skill (Claude.ai or any agent)\n\n```bash\ncp -r skill/roaster ~/.claude/skills/roaster\n```\n\nThen just ask:\n\n\u003e \"Roast @grippado on GitHub in the style of Steve Jobs\"\n\n## Personas\n\n| Persona | Voice |\n|---|---|\n| `linus` *(default)* | Kernel-dev rigor applied to side-project chaos. Surgical. |\n| `steve-jobs` | Taste-based contempt. Cares about naming, not lint. |\n| `bill-gates` | Memo-era Gates. Metrics. Implied threats. |\n| `trump` | SNL-parody voice. Superlatives and nicknames. No real politics. |\n| `maddog` | UNIX greybeard weariness. \"Back in my day...\" |\n| `dhh` | Contrarian manifesto. Dismisses the popular AND the obscure. |\n| `carmack` | Terse Twitter-thread voice. Devastating precision. |\n| `terry-davis` | Respectful tribute to the philosophical voice only. |\n\nWant to add one? See [`skill/roaster/references/persona-template.md`](./skill/roaster/references/persona-template.md).\n\n## Spice levels\n\n- `mild` — PG-13. Lovingly mocking. Default for anyone flagged as a learner.\n- `spicy` *(default)* — Reddit-safe. Real jabs.\n- `nuclear` — HBO intensity. Stronger language. **Still no identity jokes, ever.**\n\n## Output formats\n\n- `reddit` *(default)* — long-form markdown, ready to paste into r/programming\n- `twitter` — single tweet, ≤280 chars\n- `linkedin` — ironic \"humbled to share\" motivational post\n- `terminal` — ASCII box for screenshots\n\n## Data sources\n\nRoast material comes from **public APIs only**:\n\n- **GitHub** *(always, anchor source)* — profile, repos, languages, commit cadence, READMEs\n- **npm** *(optional)* — published packages, downloads, dependency counts\n- **crates.io** *(optional)* — published Rust crates, versions, downloads\n- **pkg.go.dev** *(optional)* — published Go modules, importers\n\nAdd sources with `--sources=github,npm,crates,go`.\n\n## Hard ethical rules\n\nThe skill and CLI enforce these without exception:\n\n1. **Public data only.** No scraping, no private info, no combining sources to dossier someone.\n2. **Punch up or sideways.** Never at identity (race, gender, nationality, religion, sexuality, disability, mental health, appearance).\n3. **Consent-first for third parties.** If you roast someone who didn't opt in, the skill auto-softens and adds a \"commissioned by X\" attribution.\n4. **Learners get soft roasts.** If the target has \u003c3 public repos or signals they're learning, the skill downshifts to `mild` and adds an encouraging closer.\n5. **No fabricated stats.** Every number, percentage, year, and quoted bio fragment in the roast traces back to fields in the structured data block — enforced in the system prompt with an explicit allowlist of data paths. The stats footer is the credibility anchor.\n6. **Nuclear ≠ ethics off.** Nuclear unlocks language intensity. It does NOT unlock slurs, identity jokes, or punching down. Ever.\n\nSee [`skill/roaster/references/safety-examples.md`](./skill/roaster/references/safety-examples.md) for concrete before/after examples.\n\n## Example\n\n**Reddit format, Linus, spicy** (real output on a real profile):\n\n\u003e **Roasted by Linus Torvalds** · *spice: spicy*\n\u003e\n\u003e \u003e Forty-seven repositories. Forty-one with no description. This is not a portfolio. This is a cache of abandoned attempts.\n\u003e\n\u003e Three separate dotfiles repos: `dotfiles`, `dotfiles-old`, `dotfiles-new`. That's not version control. That's archaeology. And the `dotfiles-new` commits are all named \"update\". Update what. Update *what*.\n\u003e\n\u003e 73% of commits happen between 10pm and 4am. I'm not saying don't code at night. I'm saying every one of these late-night commits is followed by a morning commit named \"fix\". The correlation is doing some work.\n\u003e\n\u003e Pinned a repo with 412 stars that hasn't been touched since 2021. The README promises \"v2 coming soon\". *Soon* is doing a lot of load-bearing work in that sentence.\n\u003e\n\u003e Rewrite. Start over. Or at least delete the ones you're not going to finish.\n\u003e\n\u003e ---\n\u003e *Stats:* @user · 47 repos · 39 original · JavaScript 87% · 8y old · night-owl 73%\n\u003e\n\u003e *Generated from public data only. All love, no hate. ❤️ · powered by [roaster-kit](https://github.com/grippado/roaster-kit)*\n\n## Roast yourself first\n\nBefore you roast anyone else, roast yourself. It's the rule.\n\n```bash\nnpx roaster-kit $(git config github.user) --spice=nuclear\n# or\npnpm dlx roaster-kit $(git config github.user) --spice=nuclear\n```\n\n## Roadmap\n\n- [x] **v0.1** — Skill + CLI + Claude Code slash command, 8 personas, 4 sources\n- [ ] **v0.2** — `roast.gripp.link`: web version. Paste a GitHub handle, pick your executioner, get roasted in the browser. Share-as-image. Rate-limited, no-login.\n- [ ] **v0.3** — GitHub Action: `grippado/roaster-action` — open a PR, get roasted in the PR comments by the persona of your choice. Opt-in per repo.\n- [ ] **v0.4** — More personas (community PRs). Candidates: Ada Lovelace, Grace Hopper, Dijkstra, Guido, Rob Pike, the \"AI-transformation consultant\" satire.\n- [ ] **v0.5** — Team mode: roast a whole GitHub org. For retros that hurt.\n\n## FAQ\n\n**Is this mean?**\nIt's a roast. By design it's pointed. But the skill is built from the ground up to punch at patterns (abandoned repos, hype names, commit cadence) instead of at people. If you want a \"soft\" version, pass `--spice=mild`.\n\n**What if the target isn't in on it?**\nThe skill asks once if the target is third-party and consenting. If not, it keeps the spice low and frames the output as \"commissioned by @X\" satire. If you want to roast someone who didn't opt in at nuclear spice, the skill will refuse.\n\n**Can I add a persona?**\nYes — drop a markdown file in `skill/roaster/personas/` following the [template](./skill/roaster/references/persona-template.md). PRs welcome.\n\n**Does this work offline?**\nNo — it calls the Anthropic API and GitHub's public API.\n\n**How much does it cost per roast?**\nOne Claude API call per roast, usually ~2-4k input tokens and ~500-1k output tokens. Call it a fraction of a cent. The GitHub API calls are free (60/hr unauth, 5000/hr with a token).\n\n**Why Anthropic and not OpenAI?**\nBuilt by a heavy Claude Code user, runs on Claude. You can adapt `cli/src/prompt.js` to any model with a system-prompt API, but the persona calibrations were tuned against Claude.\n\n## Contributing\n\n- **New persona?** Follow [`persona-template.md`](./skill/roaster/references/persona-template.md) and the quality bar in it.\n- **New data source?** Add a collector in `cli/src/collectors/` and a matching markdown doc in `skill/roaster/collectors/`. Public-data-only.\n- **Fixing a bad roast pattern?** Add a before/after to [`safety-examples.md`](./skill/roaster/references/safety-examples.md).\n\n## License\n\nApache 2.0. See [LICENSE](./LICENSE).\n\n## Credits\n\nBuilt by [Gabriel Gripp](https://github.com/grippado) — also the person behind [FlagBridge](https://flagbridge.io), a feature flag platform that takes itself more seriously than this project does.\n\nAll roasts are satire. All love, no hate. ❤️\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrippado%2Froaster-kit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrippado%2Froaster-kit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrippado%2Froaster-kit/lists"}