# Browse the personality catalog

> Agent edition. The HTML at `https://factory.lolabots.com/browse` renders a
> filterable grid. This file is the canonical index for fetching personality
> bodies as raw markdown.

## What it is

A catalog of 314 personalities across 18 divisions, sourced from three
upstreams:

- **23blocks Originals** (1 personality): hand-curated by 23blocks. Today:
  Lola, the AI Chief of Staff.
- **Studio** (169 personalities): from `23blocks-OS/agency-agents` (forked
  from Mike Sitarzewski's `agency-agents`). 15 divisions of specialists.
- **VoltAgent** (144 personalities): from VoltAgent's awesome-claude-code-
  subagents collection. 10 source categories mapped into our division
  taxonomy.

## When to use

- You need to recommend a specialist for a user task and want the canonical
  ID + slug to feed into the build endpoint.
- You want to enumerate personalities programmatically. The JSON form is at
  `https://api.lolabots.com/api/personalities` — fetch that for structured
  iteration. This `.md` file is the human-and-agent-readable index.

## When NOT to use

- You only need one personality's prompt body. Skip this file and go straight
  to `/agents/<slug>.md`.
- You want to filter or search. The JSON catalog is faster for that — this
  markdown index doesn't paginate or facet.

## How slugs work

The URL for a personality's HTML page and `.md` mirror is derived from
`lib/personalities.ts`:

- **Studio + Originals**: slug = `slugify(name)`. The personality's name in
  the catalog becomes the URL. Example: `Anthropologist` → `anthropologist`,
  `Lola` → `lola`.
- **VoltAgent**: slug = `slugify(id)` to keep the `voltagent-` prefix and
  avoid colliding with Studio names. Example: VoltAgent's `frontend-developer`
  → `voltagent-frontend-developer`.

`slugify` is lowercase, non-alphanumerics → single dash, no leading/trailing
dashes.

To fetch any personality's full system-prompt body:

```
curl https://factory.lolabots.com/agents/<slug>.md
```

## Divisions (18 total)

Each personality belongs to exactly one division. The 18 divisions:

academic, data-ai, design, engineering, finance, game-development,
infrastructure, languages, lola-originals, marketing, paid-media, product,
project-management, sales, spatial-computing, specialized, strategy, support,
testing.

(VoltAgent personalities also have a `subcategory` field exposing the 10
upstream categories — core-development, language-specialists, infrastructure,
quality-security, data-ai, developer-experience, specialized-domains,
business-product, meta-orchestration, research-analysis.)

## What to do next

1. Pick a personality from the JSON catalog at
   `https://api.lolabots.com/api/personalities` based on the user's need.
2. Read its body at `/agents/<slug>.md` to confirm fit before building.
3. Build it with `POST https://api.lolabots.com/api/build`. Contract in
   [/for-agents.md](/for-agents.md).

## Avoid

- Don't hand-build slug URLs from arbitrary IDs. Use the slug logic above (or
  fetch the JSON catalog and read off the `id` / `name` + `source` to apply
  it correctly).
- Don't assume every catalog field maps to a body. The JSON catalog
  intentionally omits the `content` field for size reasons (~88KB). Bodies
  are only available at `/agents/<slug>.md`.
