Guided `apify create` wizard: use-case → language → best-match template · Issue #1236 · apify/apify-cli · GitHub
Skip to content

Guided apify create wizard: use-case → language → best-match template #1236

Closed

Description

@DaveHanns

Reshape apify create into the guided wizard flow. Local scaffold only (--source apify); the Git path is a separate sub-issue.

  • Add the -u, --use-case and -l, --language filter flags; keep -t, --template authoritative.
  • Skip the template prompt when the filter leaves exactly one match.
  • Reuse the recommendation algorithm already in apify-core: getTemplateRecommendation (src/console/frontend/src/ui/actors/actor_new_wizard/get_template_recommendation.ts, returns { templates, isExactMatch }). isExactMatch drives the skip case above.
  • ... see parent epic for additional context.

Activity

  1. self-assigned this
    on Jul 9, 2026
  2. l2ysho commented on Jul 9, 2026

    @l2ysho
    Contributor
    1. isExactMatch just check if all pickedTemplates are exactMatch and it always return pickedTemplates according to limit. So pickedTemplates.length === options.limit, there is no way now to get exactly one match unless limit is 1 (but there can be more exact matches anyway). Do we have a plan to change it in console? or should I match the console in cli wizard and also suggest 2 templates (with info if they are exact match or not)?
    2. only combination without exact match I was able to get in console right now is Browser automation + Javascript, do we want to cover this hint also in CLI wizard?
    Image
  3. DaveHanns commented on Jul 9, 2026

    @DaveHanns
    ContributorAuthor
    1. isExactMatch just check if all pickedTemplates are exactMatch and it always return pickedTemplates according to limit. So pickedTemplates.length === options.limit, there is no way now to get exactly one match unless limit is 1 (but there can be more exact matches anyway). Do we have a plan to change it in console? or should I match the console in cli wizard and also suggest 2 templates (with info if they are exact match or not)?
    2. only combination without exact match I was able to get in console right now is Browser automation + Javascript, do we want to cover this hint also in CLI wizard?
    Image

    Yeah, all good points ...

    No plan to change Console, and no need to mirror its 2-suggestion limit either.

    Since the CLI ports the algorithm anyway let's change the return shape to Array<{ template, isExactMatch }>, a per-template flag instead of one flag for the whole list.

    The template prompt then always renders as one scrollable list (viewport of ~8 rows): exact matches first with the top one preselected, then a non-selectable separator row ("The templates below don't exactly match your selection"), then the remaining templates in tier order. Let's drop the "skip when exactly one match" behavior, a preselected list costs one Enter and keeps alternatives visible.

    Let's either set the options.limit to arbitrary high value (100?) or not at all (might clash with the "Template Actors in Store" initiative in preparation, leading to high number of templates available).
    In case the limit is omitted, the getTemplateRecommendation returns list in order from the most fitting templates to least ones.

    Happy path

    $ apify create
    ✔ Name of your new Actor: my-actor
    ✔ What do you want to build? Web scraping
    ✔ Choose the programming language of your new Actor: Python
    ? Choose a template for your new Actor. More info at https://apify.com/templates
    ❯ Crawlee + BeautifulSoup
      Crawlee + Playwright + Chrome
      Scrapy
      One-Page HTML Scraper with BeautifulSoup
      ── The templates below don't exactly match your selection ──
      Standby Python project
      Empty Python project
      Selenium + Chrome
    (Use arrow keys to see more)
    

    No exact matches

    ? Choose a template for your new Actor. More info at https://apify.com/templates
    i  No template matches Browser automation + JavaScript exactly — showing the closest alternatives.
    ❯ Crawlee + Puppeteer + Chrome (TypeScript)
      Empty JavaScript project
      …
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request.t-buildersIssues owned by the Builders team.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions