diff --git a/composer.json b/composer.json
index a5e27970282b9e24f1a96d0df2b87cff60f3cbea..7d7e72e13da7fe99241569092596778f3951b1b6 100644
--- a/composer.json
+++ b/composer.json
@@ -30,5 +30,10 @@
     },
     "extra": {
         "class": "LakeDrops\\DrupalSpoons\\Plugin"
+    },
+    "scripts": {
+        "post-package-install": [
+            "LakeDrops\\DrupalSpoons\\Plugin::postPackageInstall"
+        ]
     }
 }
diff --git a/src/CommandProvider.php b/src/CommandProvider.php
index bb8fda89bee1aeec3dc8380054e974494272badd..a6d42b4225336590cac0795c829597ea295e11b5 100644
--- a/src/CommandProvider.php
+++ b/src/CommandProvider.php
@@ -14,7 +14,8 @@ class CommandProvider implements CommandProviderCapability {
    */
   public function getCommands(): array {
     return [
-      new DrupalSpoonsCommand(),
+      new PrepareComposerCommand(),
+      new PrepareProjectCommand(),
     ];
   }
 }
diff --git a/src/Handler.php b/src/Handler.php
index 06a6f2ac8bfeb4d616a0f7db981cda0f1aba50a2..e49c1e971eabdbabee1616020a591def2be1d6e6 100644
--- a/src/Handler.php
+++ b/src/Handler.php
@@ -50,7 +50,7 @@ class Handler {
     $projectRoot = getcwd();
 
     // Append DrupalSpoon related components to composer.json.
-    $jsonFile = new JsonFile($projectRoot . '/composer.json.disabled');
+    $jsonFile = new JsonFile($projectRoot . '/composer.disabled.json');
     $content = [];
     if ($jsonFile->exists()) {
       $content = $jsonFile->read();
@@ -58,7 +58,7 @@ class Handler {
     $content = array_merge_recursive($content, $options);
     $jsonFile->write($content);
     $fs->remove($projectRoot . '/composer.json');
-    $fs->rename($projectRoot . '/composer.json.disabled', $projectRoot . '/composer.json');
+    $fs->rename($projectRoot . '/composer.disabled.json', $projectRoot . '/composer.json');
   }
 
   /**
diff --git a/src/Plugin.php b/src/Plugin.php
index 24979bf97eefb05e3f23f0200f86bc0f0402ab3f..32fd108950cdd5f45db85aa7fc0bbdd45decc873 100644
--- a/src/Plugin.php
+++ b/src/Plugin.php
@@ -4,6 +4,7 @@ namespace LakeDrops\DrupalSpoons;
 
 use Composer\Composer;
 use Composer\EventDispatcher\EventSubscriberInterface;
+use Composer\Installer\PackageEvent;
 use Composer\IO\IOInterface;
 use Composer\Plugin\Capable;
 use Composer\Plugin\PluginInterface;
@@ -43,19 +44,16 @@ class Plugin implements PluginInterface, EventSubscriberInterface, Capable {
    */
   public static function getSubscribedEvents(): array {
     return [
-      ScriptEvents::POST_INSTALL_CMD => 'configureComposerJson',
       ScriptEvents::POST_UPDATE_CMD => 'configureProject',
     ];
   }
 
   /**
-   * Post install command event callback.
-   *
-   * @param \Composer\Script\Event $event
-   *   The event that triggered the plugin.
+   * @param \Composer\Installer\PackageEvent $event
    */
-  public function configureComposerJson(Event $event) {
-    $this->handler->configureComposerJson();
+  public static function postPackageInstall(PackageEvent $event) {
+    $handler = new Handler($event->getComposer(), $event->getIO());
+    $handler->configureComposerJson();
   }
 
   /**
diff --git a/src/PrepareComposerCommand.php b/src/PrepareComposerCommand.php
new file mode 100644
index 0000000000000000000000000000000000000000..c8594aef2f2f46fb212391d0c79b6b088a53b873
--- /dev/null
+++ b/src/PrepareComposerCommand.php
@@ -0,0 +1,27 @@
+<?php
+
+namespace LakeDrops\DrupalSpoons;
+
+use Composer\Command\BaseCommand;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class PrepareComposerCommand extends BaseCommand {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function configure() {
+    $this->setName('drupalspoons:prepare');
+    $this->setDescription('Prepare composer.json for DrupalSpoons.');
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function execute(InputInterface $input, OutputInterface $output) {
+    $handler = new Handler($this->getComposer(), $this->getIO());
+    $handler->configureComposerJson();
+  }
+
+}
diff --git a/src/DrupalSpoonsCommand.php b/src/PrepareProjectCommand.php
similarity index 73%
rename from src/DrupalSpoonsCommand.php
rename to src/PrepareProjectCommand.php
index 0d54b680b70264c0969533cd75cf747d3f69043e..222e152db49c9045f1f33eea2ab3a55b0e2f609e 100644
--- a/src/DrupalSpoonsCommand.php
+++ b/src/PrepareProjectCommand.php
@@ -6,14 +6,14 @@ use Composer\Command\BaseCommand;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 
-class DrupalSpoonsCommand extends BaseCommand {
+class PrepareProjectCommand extends BaseCommand {
 
   /**
    * {@inheritdoc}
    */
   protected function configure() {
-    $this->setName('lakedrops:drupalspoons');
-    $this->setDescription('Prepare Drupal project for CI and/or local tests.');
+    $this->setName('drupalspoons:configure');
+    $this->setDescription('Configure project for DrupalSpoons.');
   }
 
   /**