What is prompt variable working scope?

Prompt variable working scope is inventory host scope or playbook scope?
Basically, variable is inventory host scope. But prompt vars seem not.

main.yml includes 1.yml and 2.yml.1.yml creates prompt variable var1 and its target hosts are host1 and host2.
2.yml wants to use the var1 and its target host is host1.

I suppose 2.yml can get var1, but indeed not. Who can confirm it?

main.yml

vars_prompt variables are set on the play.

In nearly all cases, --extra-vars on the ansible-playbook command line is a better way to go.

Can you explain why you think this is a “better way to go” in nearly all cases? I recently found out the hard way (after a bit of head-banging) that vars_prompt only applies to the current play and also doesn’t apply to included playbooks. Since you also cannot pass parameterized options to included playbooks as you can with roles, there’s effectively no way to pass a variable gathered via vars_prompt to a child playbook without using -e. I’ve resorted to using -e for now, but I find it rather odd that I now have to wrap Ansible in “something else” (Shell script, Python, etc.) in order to programmatically input a simple variable to the playbook and have it accessible in places one could reasonably expect it to be.

Can you explain why you think this is a "better way to go" in nearly all
cases?

For one, because it can be used non-interactively. For two, for the
question you raise below...

I recently found out the hard way (after a bit of head-banging) that
vars_prompt only applies to the current play and also doesn't apply to
included playbooks.

This is implied by the fact that vars_prompt is an attribute of the play.
It's just the same as if doing "vars" or "vars_files" in that play.

Since you also cannot pass parameterized options to included playbooks as
you can with roles, there's effectively no way to pass a variable gathered
via vars_prompt to a child playbook without using -e. I've resorted to
using -e for now, but I find it rather odd that I now have to wrap
Ansible in "something else" (Shell script, Python, etc.) in order to
programmatically input a simple variable to the playbook and have it
accessible in places one could reasonably expect it to be.

Sorry!

There's no construct for asking questions at "overall playbook" level since
playbooks are just a list data structure of plays, there is no where to
attach this.

We could add a 'vars_prompt_global' kind of thing that left them in global
scope, but I'd be worried a bit more about language sprawl, so you may be
stuck.