It is recommended not to use the shell module when you have the specialized module available.
So what you can do in this case is, create directories using the file module:
- name: create project directory {{ common.project_dir }}
file: state=directory path={{ common.project_dir }}
You can download files with the get_url module below is code for the same:
- name: download sources
get_url: url={{ opencv.url }} dest={{ common.project_dir }}/{{ opencv.file }}