---
name: zerg-appstore
description: Help people use the Zerg App Store (apps.zergai.com) from public docs only - find and explain apps in their organization's store, read catalog data they share, draft store listings and bounties for them to enter, and explain App Store errors. Use for any question about the Zerg App Store, a store at apps.zergai.com/o/{org}, creating an app listing, or an App Store error code. There is no agent credential, so the person acts in their own signed-in browser.
---

# Zerg App Store

The Zerg App Store is the private app store of each organization on Zerg, at
`https://apps.zergai.com/o/{org}`. Members browse, open and review apps, post and
answer bounties, and create apps by describing them. Agents build and maintain
every app; nobody uploads code through the store. The `zerg` store lists the
Zerg platform's own apps.

Read https://apps.zergai.com/agents.md for the full agent guide and
https://apps.zergai.com/docs/api.md for every route, shape and error. Both are
public and need no source checkout.

## Access

There is no agent credential today: no API token, API key, service account or
OAuth client. Only these need no sign-in:

```sh
curl -fsS https://apps.zergai.com/api/health
curl -fsS https://apps.zergai.com/api/version
curl -fsS https://apps.zergai.com/llms.txt
curl -fsS https://apps.zergai.com/api/v1/public/apps
```

The last one is the public app showcase: the Zerg apps anyone may see, as JSON
(`PublicApps` in the API reference).

Every store route needs a member's Zerg SSO browser session. Without it a store
read answers you `401 authentication_required`, and a write is refused first
with `403 cross_origin_mutation`. That is expected: work with the person, who
acts in their own browser, and stop at the first refusal. Never accept or ask
for a cookie, browser storage, an SSO code or a password, never drive their
signed-in browser, and never use the store's internal `ast1.` tool credential.
Credentials never go in chat, URLs or command arguments. If App Store agent
credentials appear later, the agent guide will document them; until then assume
none exists.

## Scope

- `{org}` is the store's slug (2 to 63 lowercase letters, digits, hyphens).
  Signed out, https://apps.zergai.com/ is the landing page; signed in, it opens
  the person's only store or lets them choose;
  https://apps.zergai.com/api/v1/session lists their stores in their browser.
- Unknown store, not a member and malformed slug all answer the same
  `404 organization_not_found`. Do not probe slugs.
- What a member may do comes from their roles; a deny always wins. A
  `403 capability_denied` names the missing capability in `data.capability`
  (`app.read`, `app.submit`, `catalog.curate` or `brand.manage` on these routes).

### Roles

| Role | Capabilities on these routes | Can do here |
| --- | --- | --- |
| Viewer | `app.read` | Browse, get and open apps, review live apps, ask the assistant, send feedback |
| Reviewer | `app.read` | The same as a viewer |
| Finance | `app.read` | The same as a viewer |
| CISO | `app.read` | The same as a viewer |
| Member | `app.read`, `app.submit` | Everything a viewer can, plus save app drafts and draft listings with AI |
| Administrator | `app.read`, `app.submit`, `catalog.curate`, `brand.manage` | Everything a member can, plus curate the catalog (featured apps, bounties) and edit the brand kit |
| Owner | `app.read`, `app.submit`, `catalog.curate`, `brand.manage` | Everything |

## Work you can do

- **Point the person to pages:** Discover https://apps.zergai.com/o/{org},
  search https://apps.zergai.com/o/{org}/search?q=expenses, an app
  https://apps.zergai.com/o/{org}/apps/{slug}, bounties
  https://apps.zergai.com/o/{org}/bounties, create
  https://apps.zergai.com/o/{org}/create, their apps
  https://apps.zergai.com/o/{org}/my-apps. Store admins edit the brand at
  https://apps.zergai.com/o/{org}/admin/brand and pick featured apps at
  https://apps.zergai.com/o/{org}/admin/featured.
- **Read data they share.** They open a JSON address such as
  https://apps.zergai.com/api/v1/appstore/orgs/{org}/apps?q=expenses or
  https://apps.zergai.com/api/v1/appstore/orgs/{org}/apps/{slug} in their own
  browser and share it. `null` means "not measured yet" (runs, savings, weekly
  users, the rating of an unreviewed app); never estimate it.
- **Draft a listing** and **draft a bounty** with the rules below; the person
  enters it and saves.
- **Explain errors** with the tables in https://apps.zergai.com/docs/api.md.
  Common ones: `409 review_exists`, `409 app_not_openable`,
  `409 slug_unavailable`, `422 unknown_category`, `429 rate_limited` (wait for
  `Retry-After`), `503 assistant_unavailable` (write the listing by hand).

### Draft a listing

On Create the person chooses Draft with AI or Write the listing myself, then
Save as draft. Saving makes a private draft; nothing is published and no code
exists yet.

| Field | Rules |
| --- | --- |
| Brief | Up to 8,000 characters; Draft with AI takes 10 to 4,000 |
| Name | Up to 80 characters |
| Tagline | Up to 200 characters |
| Description | Markdown store copy, up to 20,000 characters |
| Kind | Web app, Chat, Workflow, or Workflow + chat |
| Categories | 1 to 4 of the store's existing categories |
| Tags | Up to 12; lowercase words or kebab-case, 32 characters each |
| Icon | A monogram of 1 to 3 letters or digits, and a colour |

### Draft a bounty

For a curator (`catalog.curate`), who chooses Post a bounty:

| Field | Rules |
| --- | --- |
| Title | Up to 120 characters |
| Description | Markdown, up to 4,000 characters |
| Reward | Optional; whole US dollars |
| Closing day | Optional |

## Boundaries

- Building, submitting or publishing apps is not available to agents yet.
- Never put code, patches, diffs, files or uploads into a brief, listing,
  review, bounty or feedback; the store accepts descriptions only.
- Reviews, opening apps, drafts, bounties, brand changes and feedback are the
  person's own actions and need their explicit instruction.
- Never use operator tools, scripts, database access or an administrator
  session to get around a refusal, and never read another organization's store.
- Public documentation is guidance, not authorization.

## Install

```sh
mkdir -p "$HOME/.codex/skills/zerg-appstore"
curl --fail --show-error --location https://apps.zergai.com/skills/zerg-appstore/SKILL.md --output "$HOME/.codex/skills/zerg-appstore/SKILL.md"
```

For Claude Code use `$HOME/.claude/skills/zerg-appstore/SKILL.md`.
