# CAFE all stars

> For agents: start with the [agent guide](https://ratstack.sh/llms.txt). Every page is Markdown by default; add `Accept: text/html` for HTML.

New on /news: [alchemy-turbo-cache](/news).

## What it does

[CAFE all stars](/all-stars) lists people and channels whose public work builds with Cloudflare, [Alchemy](/skills/learn-alchemy), Foldkit and [Effect](/lore/effect-basics).
A channel is a YouTube channel, a GitHub org or a blog.

Each entry lives in `.brain/data/cafe/people.json`, beside the CAFE news file.
The content build decodes it with the `CafePerson` [schema](/lore/schemas-define-the-boundary) in `packages/core/src/cafe.ts`.
A bad entry fails the build with its index and field, the same way a bad news row does.

Five read-only capabilities answer every question about the data:

- `listPeople` lists every entry, and `listChannels` lists only the channels.
- `readPerson` reads one profile by its stable id: a GitHub login, or the handle of an org or channel.
- `searchPeople` matches words against names, handles, topics, packages, repos, bios and videos.
- `peopleFor` returns the entries whose topics or repo packages cover every term, with the evidence for each term. Entries that list a term as a topic rank ahead of entries that only list its package.

The `/all-stars` index and each `/all-stars/<id>` page are built from `listPeople` and `readPerson` answers.
They are Markdown by default and HTML for a browser.
`llms.txt` lists the index and every profile, and `/all-stars.xml` is an Atom feed of the entries and their activity.

A news row joins a profile when its GitHub login or X handle matches one of the profile's handles.
A row with no author joins the profile that owns its repo.
The profile lists those rows newest first, and the row on [/news](/news) links back to the profile.

## The standard

- A person or channel enters through a [/news](/news) row, pinned CAFE stack contributions, vendored or credited CAFE code, or sourced public CAFE work.
- The typed `entry` field records the basis. A `news` entry names at least one row.
- A `stack` entry names a pinned package and its contributors or maintainers source. A `vendored` entry links the credited upstream, which must itself build on or teach the CAFE stack.
- A `work` entry links the project and dated stack evidence.
- Choose the first qualifying basis in that order. Stack contributors lead or rank among the repository's top listed contributors. Public work builds on or teaches Cloudflare, Alchemy, Foldkit or Effect.
- There is no per-person preview. An entry ships with the next site update like any other content.
- The content build warns about every author with a /news row and no profile.
- Every fact carries its `source` URL and the `verified` date it was checked, so an agent can cite it.
- A bio holds two or three sentences about CAFE work only, each quoted or linked from its source. Use names or projects, not gendered pronouns; the content build rejects those pronouns.
- An avatar is a file committed under `apps/site/content/avatars`. Pages never load an image from another site.
- A profile never includes location, employer guesses, family, follower counts, private messages, or anything the person did not post publicly about their work.
- Each page ends with a removal line that opens an issue in `joelhooks/rat-stack`. A removal ships with the next site update.

To remove a profile, delete its entry from `people.json` and its avatar file, then rebuild.
Nothing else stores the profile.

## How to check

Run the core tests:

```sh
pnpm --filter @rat-stack/core exec vitest run test/cafe-people.test.ts
```

They check that a generated news row lands on exactly the profile that authored it, newest first.
They check that topic holders rank first in `peopleFor`, however many repos list a package.
They also answer three agent questions from the shipped data through the capabilities alone.

Then call a [capability](/systems/capabilities) on a running site:

```sh
curl --request POST 'https://ratstack.sh/api/peopleFor' \
  --header 'content-type: application/json' \
  --data '{"terms":["foldkit"]}'
```

## Sources

1. [rat-stack/packages/core/src at main · joelhooks/rat-stack · GitHub](https://github.com/joelhooks/rat-stack/tree/main/packages/core/src)
   GitHub joelhooks/rat-stack. The people schema in cafe.ts, the capabilities in cafe-directory.ts, and the join in cafe-people.ts. Accessed 2026-11-02.

## Lore on this page

- [CAFE names the Cloudflare, Alchemy, Foldkit and Effect stack](/lore/cafe-stack)

## Linked from

- Agent guide → An Effect stack so pure (aspirational) Kit Langton will blush. → [Read page](https://ratstack.sh/llms.txt)

- Change log → What changed in the files served here, newest first. → [Read page](https://ratstack.sh/log)

- Full agent guide → An Effect stack so pure (aspirational) Kit Langton will blush. → [Read page](https://ratstack.sh/llms-full.txt)

- Rat Stack systems | rat-stack → The systems rat-stack ships, the standard each keeps, and how to check it. → [Read page](https://ratstack.sh/systems)

- Source change history (log.md) → The generated change log as Markdown. → [Read page](https://ratstack.sh/log.md)
