SH_STATE sh_handle_{command_name}(char **words, int n_words) {{
    SH_STATE state = SH_CONTINUE;

    {required_declarations}

    {arguments_declarations}

    bool is_alias, finish = false;
    char *argument = NULL;
    int i;

    for (i = 1; i < n_words && !finish; i++) {{
        argument = shu_extract_argument(words[i], &is_alias);

        if (argument == NULL) {{
            shu_value_without_argument(words[i], {write});
        }}
        else {{
            {arguments_conditions}
        }}
    }}

    {required_check}

    if (!finish) {{  
        state = {command_function}
    }}

    return state;
}}
