You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Browse filesBrowse the repository at this point in the historyBrowse files
authored
feat(create): guided wizard with use-case and language filters (#1278)
Closes#1236.
**TL;DR** — `apify create` becomes a guided wizard: **use case →
language → best-match template**, plus `apify templates ls` for
discovery. Local scaffold only; the git-sourced flow is #1237 and
`--json`/`--origin` is #1238.
## What changed
- **Wizard** — asks _"What do you want to build?"_ then the language,
then shows one scrollable, fit-ranked template list: exact matches first
(top preselected), a separator, then the closest alternatives.
- **New flags** `-u/--use-case`, `-l/--language`. `-t/--template` stays
authoritative and skips the wizard; `-u`/`-l` are ignored when it's
passed.
- **Language aliases** `js` / `ts` / `py`. No `other` option — every
template has a language.
- **New command** `apify templates ls [--json]`; `--json` emits the full
template objects, including `useCases[]`.
- **Ported** `getTemplateRecommendation` from apify-core, with two CLI
changes: per-template `isExactMatch` and no result limit.
## Flag → manifest mapping
| `--use-case` | manifest tag | | `--language` (+ alias) | `category` |
|---|---|---|---|---|
| `web-scraper` | `WEB_SCRAPING` | | `javascript` / `js` | `javascript`
|
| `ai-agent` | `AI` | | `typescript` / `ts` | `typescript` |
| `data-pipeline` | `INTEGRATION` | | `python` / `py` | `python` |
| `browser-automation` | `AUTOMATION` | | | |
"Any use case" and "Any language" both mean **no filter**
(`ANY_TEMPLATE_USE_CASE` / `ANY_TEMPLATE_LANGUAGE` — symmetric by
design).
## Tests
Unit tests for `getTemplateRecommendation` (tiers, dedup, any-language,
no-exact), `buildTemplateChoiceList` (separator, labels, hint), and the
flag→tag mappings; `create` covers `--template` precedence. `build` /
`lint` / `format` clean, `docs/` regenerated, wizard driven end-to-end
in a terminal.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Edyta <142720610+szaganek@users.noreply.github.com>
Co-authored-by: David Hanuš <david.hanus@apify.com>
'Prompts for an Actor nameand template if not provided. To run non-interactively, pass the name as a positional argument and --template.';
54
+
'Prompts for an Actor name, then guides you through what you want to build, a language, and a template when they are not provided. To run non-interactively, pass the name and --template. Use --use-case and --language to narrow the template list.';
54
55
55
56
staticoverrideexamples=[
56
57
{
57
-
description: 'Create a new Actor project interactively (prompts for nameand template).',
58
+
description: 'Create a new Actor project interactively (guided name, use case, language, and template prompts).',
58
59
command: 'apify create',
59
60
},
61
+
{
62
+
description: 'Narrow the guided template list by use case and language.',
0 commit comments