Contributing modules in [GO](https://golang.org/) can be achieved in a few simple steps as outlined below. As for supported GO version, we have tested with 1.11.2, no promised for version 2.
* Select the appropriate [module](https://github.com/rapid7/metasploit-framework/tree/master/modules) path based on the type of module you are trying to contribute
* Be sure to include appropriate module documentation under [here](https://github.com/rapid7/metasploit-framework/tree/master/documentation/modules)
* Test your documentation is correct by executing `info -d`
#### 2. Execution
* Include this line at the top of your module: `//usr/bin/env go run "$0" "$@"; exit "$?"`
* Ensure your file **is** an executable file
#### 3. Setup
* Initialize your module with the module metadata:
* For code that is shared specific to your module create a directory in your module directory:
`shared/src/` metasploit will automatically add these to the GOPATH
* For code that you think could be used across modules, add code [here](https://github.com/rapid7/metasploit-framework/tree/master/lib/msf/core/modules/external/go/src/metasploit)