While the question is old, I just stumbled upon, having a similar question. And I found the answer rather incomplete. So here is what I found out.
Actually the code example makes no sense. When using default=True, you should always specify an extra for name of the variable, otherwise either the variable or the option has a reversed logic.
So, in the original example, if you want --status to be the default, re-write the code like this:
@click.option(
"-n",
"--no-status",
"status"
default=True,
is_flag=True,
help="Do not show status",
)
def main(status):
...
If you change an existing tool like this, you may also want to re-add --status as a documented obsolete option to stay compatible.