diff --git skinr.module skinr.module
index 64fd526..2992464 100644
--- skinr.module
+++ skinr.module
@@ -988,11 +988,12 @@ function skinr_get_skin_info() {
       );
       // Load the extension's plugins, if any.
       if ($files = skinr_load_plugins($extension)) {
-        // The source path for a plugin is the directory it is contained in.
+        // Set a base directory for this extension's plugins.
         $dir = $extension['path'] . '/' . $extension['directory'];
         foreach ($files as $plugin => $file) {
+          // Plugin files live in a sub-directory; one directory per plugin.
           $hooks["{$name}_skinr_skin_{$plugin}_info"] = array(
-            'path' => $dir,
+            'path' => $dir . '/' . basename(dirname($file->uri)),
           ) + $extension;
         }
       }
@@ -1028,11 +1028,12 @@ function skinr_get_group_info() {
       );
       // Load the extension's plugins, if any.
       if ($files = skinr_load_plugins($extension)) {
-        // The source path for a plugin is the directory it is contained in.
+        // Set a base directory for this extension's plugins.
         $dir = $extension['path'] . '/' . $extension['directory'];
         foreach ($files as $plugin => $file) {
+          // Plugin files live in a sub-directory; one directory per plugin.
           $hooks["{$name}_skinr_group_{$plugin}_info"] = array(
-            'path' => $dir,
+            'path' => $dir . '/' . basename(dirname($file->uri)),
           ) + $extension;
         }
       }