# How Sahil Lavingia actually uses coding agents

Gumroad founder

**If you take one thing:** `Fourth-wall check`, enforced in CI on every PR. a hard rule, checked by a linter in CI, that prototype copy never calls itself a prototype or explains its changes.

- **Agent:** Claude Code ([source, 2026-07-02](https://github.com/slavingia/prototypes/blob/9c921329300d64ecb328e8fdb0fd633fc087d810/README.md#L17-L18))
- **Agent:** Codex ([source, 2026-10-06](https://github.com/antiwork/gumroad/pull/8193))
- **Model:** Claude Fable 5 ([source, 2026-08-28](https://github.com/slavingia/prototypes/commit/8985f8232b18e2068274f3a98c4d1fa31111f658))
- **Model:** GPT-6 ([source, 2026-10-06](https://github.com/antiwork/gumroad/pull/8193))
- **Review:** Does not just hit merge: QA, then asks a colleague to check ([source, 2025-04-22](https://www.lennysnewsletter.com/p/gumroad-ceos-playbook-to-40x-his))
- **Harness:** GitHub issue per feedback round, agent opens a PR with preview link and generated screenshots ([source, 2026-06-29](https://github.com/slavingia/prototypes/pull/2))
- **Rules file:** CONTRIBUTING.md hard rules, for humans and AI assistants ([source, 2026-08-25](https://github.com/slavingia/prototypes/blob/9c921329300d64ecb328e8fdb0fd633fc087d810/CONTRIBUTING.md#L30-L36))
- **Skills:** serve ([source, 2026-07-01](https://github.com/slavingia/prototypes/tree/9c921329300d64ecb328e8fdb0fd633fc087d810/.claude/skills))

## In their words

> `serve.sh` wraps `python3 -m http.server` and opens your browser. (In Claude
Code you can also just run the `/serve` skill.)

> Written with OpenAI Codex (GPT-6).

> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

> Written with OpenAI Codex (GPT-6).

> I don't normally just hit merge on these things.


Archetype (our label): Rules Lawyer. Newest source: 2026-10-06.
Card: https://www.prehistoriq.com/stacks/slavingia/ · Data: https://github.com/prehistoriq/stacks/blob/main/data/stacks/slavingia.json
