CLI

Open documentation actions

Browse and Search Options

List option categories and their options, or search every ecosystem by ID, label, or alias, and get the CLI flag that selects each option.

list and search read the option catalog that ships with the CLI. They answer questions such as "what auth options exist for Go" and "which category is drizzle in, and what is its flag" without prompts, a browser, or a project directory. Both commands are read-only and send no telemetry.

List categories and options

Without a category, list prints every option category with its flag and option count. --ecosystem keeps only the categories that ecosystem uses:

bash
bunx create-better-fullstack@latest list --ecosystem go

With a category ID, list prints that category's options. Each row shows the option ID, its label, the exact argument that selects it, and any legacy IDs:

bash
bunx create-better-fullstack@latest list goAuth --ecosystem go
text
●  Go Auth (goAuth), single select, --go-auth
│
│  id      label                flag              legacy ids
│  casbin  Casbin               --go-auth casbin
│  jwt     golang-jwt           --go-auth jwt
│  goth    Goth                 --go-auth goth
│  oauth2  golang.org/x/oauth2  --go-auth oauth2
│  none    None                 --go-auth none

Category IDs are the option catalog's names, such as orm, webFrontend, or goAuth. An unknown category exits with status 1 and names the valid categories, or the closest match when you typed a flag name such as go-auth.

bfs_get_schema names some categories differently: webFrontend and nativeFrontend are both frontend there, and backendLibraries is effect. It has no entry for aiDocs, git, install, or versionChannel. The JSON output gives each category's bfs_get_schema name as schemaCategory.

Search across ecosystems

search matches text against option IDs, labels, and aliases in every category. Exact matches come first, then prefix matches, then other substring matches:

bash
bunx create-better-fullstack@latest search drizzle
text
│  id       label    flag           category  ecosystems  legacy ids
│  drizzle  Drizzle  --orm drizzle  orm       typescript

Add --ecosystem <id> to search one ecosystem. A search with no matches exits with status 0 and prints a notice, or an empty matches array in JSON mode.

Some categories have no dedicated flag, such as the tooling categories selected through --part. Their rows show - as the flag.

JSON output

Pass --json to either command for machine-readable output. JSON mode writes only the JSON document to stdout, so it is safe to pipe into jq. Errors go to stderr with a non-zero exit code.

list without a category returns the categories:

json
{
  "ecosystem": "go",
  "categories": [
    {
      "id": "goAuth",
      "label": "Go Auth",
      "schemaCategory": "goAuth",
      "selectionMode": "single",
      "flag": "--go-auth",
      "ecosystems": ["go"],
      "optionCount": 5
    }
  ]
}

list <category> returns one category object in the same shape plus an options array:

json
{
  "ecosystem": "go",
  "category": { "id": "goAuth", "label": "Go Auth", "...": "..." },
  "options": [{ "id": "casbin", "label": "Casbin", "aliases": [], "flag": "--go-auth casbin" }]
}

search returns the trimmed query and each match with its category and ecosystems:

json
{
  "query": "sveltekit",
  "ecosystem": null,
  "matches": [
    {
      "id": "svelte",
      "label": "SvelteKit",
      "aliases": ["sveltekit"],
      "flag": "--frontend svelte",
      "category": "webFrontend",
      "categoryLabel": "Web Frontend",
      "ecosystems": ["typescript"]
    }
  ]
}
FieldMeaning
ecosystemThe --ecosystem filter, or null.
schemaCategoryThe category name bfs_get_schema accepts, or null when it has no entry.
selectionModesingle or multiple. Multiple-select flags accept several space-separated values.
flagOn a category, the flag name. On an option, the full argument. null when none exists.
ecosystemsEcosystems whose stacks use the category.
aliasesOlder IDs for the option. See below.

Aliases are IDs an option used to have, such as sveltekit for svelte. Builder share URLs and saved builder stacks that still contain one load as the current option, and search matches them. create flags do not accept them: pass the value shown in flag.

AI agents get the same data from the bfs_list_options and bfs_search_options MCP tools.

To see what one option requires and excludes, and whether it fits a stack, use explain.

GitHub Sponsors