1. Choose unique key for your extension
Every extension has unique name called extension key. It's built using Java like reverse domain naming to make it easier with identifying unique extensions and giving developers more flexibility on providing different extensions. So for example, if your website is civiconsulting.com and you're developing custom search showing only event payments, you can choose: com.civiconsulting.search.eventregistration as the key.
2. Create extension directory
Go to your extensions directory and create the directory named after your key. This will the the place where you'll put all the extension related files - it will be also put into zip archive when you're done, for further distribution.
3. Create info.xml file
Now you need to create a file which will be describing your extension. It needs to be called info.xml. For more information, visit Extension info file specification page.
4. Develop your extension!
Depending on the type of extension that you're building, you will need to follow different instructions. Please refer to separate manuals:
5. Test your extension
Make sure your extension works as planned! Once you have the info.xml file, you will be able to turn the extension on and off in Manage CiviCRM Extensions screen - use that to see what errors you're getting and react accordingly.
6. Package your extension
Once done with developing and testing, you need to put all the contents of your extensions directory into a zip file.
7. Submit your extension for public distribution
We are working on extension submission system, but in the meanwhile, just get in touch with us via project forum, Extensions board and put the info.xml file there. We'll do some testing and if everything works fine, we'll put your extension into public distribution. Once there, everyone will be able to install it once they get to "Manage CiviCRM Extensions" screen.