CiviCRM is a fantastic tool right “out of the box” but there are also some important features not available in the core. Therefore we have CiviCRM Extensions, which are add-ons that give CiviCRM extended functionality. These extensions cover all kinds of features such as Webform integration, alerts, discounts, volunteer management, extended reporting and more. Almost all extensions work on Drupal and WordPress, and also Joomla.
The official directory maintains a centralized list of all “official” extensions and that’s here: Extensions Directory. But you don’t normally need to visit there because extensions can be installed from within your own CiviCRM site.
The basic procedure is quite easy. When your CiviCRM is set up correctly, extensions can be installed from within your site. Go to Administer > System Settings > Extensions. Then click on the Add New tab.
You should see there a list of extensions that are compatible with your version of CiviCRM. You may not see all the extensions that are in the official Extensions Directory as not all will be compatible with your particular version.
To install one, click on the Download link and then on the next page click on the Install link. The rest is automatic.
Check out the civix tool. The CiviCRM describes it like this:
The civix command-line tool is the community-endorsed method for building your CiviCRM extensions.
It sets up the basic structure for you, automatically, to build your own extensions.