diff --git skin_creator/skin_creator.info skin_creator/skin_creator.info
new file mode 100644
index 0000000..d739ffa
--- /dev/null
+++ skin_creator/skin_creator.info
@@ -0,0 +1,8 @@
+; $Id$
+
+name = Skin Creator
+description = "A module for generating the text for a skin for Skinr."
+core = 7.x
+package = Skinr
+dependencies[] = skinr
+dependencies[] = skinr_ui
\ No newline at end of file
diff --git skin_creator/skin_creator.module skin_creator/skin_creator.module
new file mode 100644
index 0000000..33345c4
--- /dev/null
+++ skin_creator/skin_creator.module
@@ -0,0 +1,263 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * This is the main nodule file for Skin Creator.
+ */
+define('SKIN_CREATOR_DEFAULT_THEME_HOOKS', "page\nnode\nregion\nblock\ncomment_wrapper\nviews_view\npanels_display\npanels_region\npanels_pane");
+
+/**
+ * Implementation of hook_menu()
+ */
+function skin_creator_menu() {
+  $items['admin/appearance/skinr/skincreator'] = array(
+    'title' => 'Skin Creator',
+    'description' => 'Use to create skins for Skinr',
+    'access arguments' => array('administer skinr'),
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('skin_creator_form'),
+    'type' => MENU_LOCAL_TASK,
+    'weight' => '3',
+  );
+  $items['admin/appearance/skinr/skin_creator_settings'] = array(
+    'title' => 'Skin Creator Settings',
+    'description' => 'Use to configure settings for Skinr',
+    'access arguments' => array('administer skinr'),
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('skin_creator_settings_form'),
+    'type' => MENU_LOCAL_TASK,
+    'weight' => '4',
+  );
+  return $items;
+}
+
+
+/*
+ * This is the main form that skin creator is using.
+ */
+
+function skin_creator_form($form, &$form_state, $generated = NULL) {
+  
+  //drupal_add_css(drupal_get_path('module', 'skin_creator') . '/css/skin_creator.css');
+  
+  $form = array();
+  
+  // Prevent browser caching by adding the timestamp to the field name.
+
+  $form['theme_hook'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Theme Hook'),
+    '#collapsible' => FALSE,
+    '#collapsed' => FALSE,
+  );
+// Lists installed themes
+  $themes = list_themes();
+  $options = array();
+
+  foreach ($themes as $theme) {
+    if (!empty($theme->info['hidden'])) {
+      continue;
+    }
+    if ($theme->status) {
+      $options[$theme->name] = $theme->info['name'] . ' [' . t('enabled') . ']';
+    }
+    else {
+      $options[$theme->name] = $theme->info['name'];
+    }
+  }  
+
+//Function elements
+  $form['theme_hook']['source_name'] = array(
+    '#type' => 'select',
+    '#title' => t('Theme'),
+    '#description' => t('Select the theme to create a skin for.'),
+    '#options' => $options,
+  );
+
+  $form['theme_hook']['plugin_name'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Plugin name'),
+    '#description' => t('Enter a name for this plugin. ( a-z, 0-9, _ )'),
+  );
+
+// Skin elements
+  $form['skins'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Skin Options'),
+    '#collapsible' => TRUE,
+    '#collapsed' => FALSE,
+  );
+
+  $form['skins']['skin_name'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Skin name'),
+    '#description' => t('Enter a machine_name for the skin. ( a-z, 0-9, _ )'),
+  );
+
+  $form['skins']['skin_title'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Name'),
+    '#description' => t('Enter a human readable title for the skin.'),
+  );
+  
+  $form['skins']['skin_description'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Description'),
+    '#description' => t('This information will describe what the skin does.'),
+  );
+
+  $form['skins']['skin_type'] = array(
+    '#type' => 'select',
+    '#title' => t('Type'),
+    '#description' => t('The widget type for this skin.'),
+    '#options' => array('select' => 'select', 'radio' => 'radio', 'checkbox' => 'checkbox', ),
+  );
+  
+  
+  $list = explode("\n", variable_get('skinr_creator_add_theme_hooks', SKIN_CREATOR_DEFAULT_THEME_HOOKS));
+  $list = array_map('trim', $list);
+  $list = array_filter($list, 'strlen');
+  
+  $options = array();
+  foreach ($list as $list_item) {
+    $options[$list_item] = $list_item;
+  }
+  
+  $form['skins']['skin_select_hooks'] = array(
+    '#type' => 'checkboxes',
+    '#title' => t('Theme hooks'),
+    '#description' => t('The theme_hooks this skin will apply to.  !variable.', array('!variable' => l('Add theme_hooks', 'admin/appearance/skinr/skin_creator_settings'))),
+    '#options' => $options,
+  );
+  
+  $form['skins']['skin_options_num'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Number of options:'),
+    '#description' => t('The number of options for this skin.'),
+  );
+
+  $form['skins']['skin_options_name'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Name of the options:'),
+    '#description' => t('This name will iterate according to the number of classes.'),
+  );
+
+  $form['submit'] = array('#type' => 'submit', '#value' => t('Create'));
+
+  $form['generated' . time()] = array(
+    '#type' => 'textarea',
+    '#default_value' => isset($form_state['generated']) ? $form_state['generated'] : '',
+    '#rows' => min(isset($form_state['generated']) ? substr_count($form_state['generated'], "\n") + 1 : 10, 5000),
+    '#attributes' => array('readonly' => 'readonly'),
+  );
+
+  return $form;
+}
+
+/**
+ * Currently unused but will likely be hacked to detect the t function.
+ * Export var function -- from Views.
+ */
+function skin_creator_var_export($var, $prefix = '', $init = TRUE) {
+  if (is_object($var)) {
+    $output = method_exists($var, 'export') ? $var->export() : skin_creator_var_export((array) $var);
+  }
+  elseif (is_array($var)) {
+    if (empty($var)) {
+      $output = 'array()';
+    }
+    else {
+      $output = "array(\n";
+      foreach ($var as $key => $value) {
+        $output .= "  '$key' => " . skin_creator_var_export($value, '  ', FALSE) . ",\n";
+      }
+      $output .= ')';
+    }
+  }
+  elseif (is_bool($var)) {
+    $output = $var ? 'TRUE' : 'FALSE';
+  }
+  elseif (is_string($var) && strpos($var, "\n") !== FALSE) {
+    // Replace line breaks in strings with a token for replacement
+    // at the very end. This protects whitespace in strings from
+    // unintentional indentation.
+    $var = str_replace("\n", "***BREAK***", $var);
+    $output = var_export($var, TRUE);
+  }
+  else {
+    $output = var_export($var, TRUE);
+  }
+
+  if ($prefix) {
+    $output = str_replace("\n", "\n$prefix", $output);
+  }
+
+  if ($init) {
+    $output = str_replace("***BREAK***", "\n", $output);
+  }
+
+  return $output;
+}
+
+function skin_creator_form_submit(&$form, &$form_state) {
+  $lf = "\n";
+  $lf2 = $lf . $lf;
+  
+  $comment =
+  
+  $variable =
+    '<?php' . $lf . "// \$Id$" . $lf2 .
+    '/**' . $lf . ' * @file' . $lf . ' * MODIFY THIS INFO TO DESCRIBE THIS FILE' . $lf . ' */' . $lf2 . '/**' . $lf . ' * Implements hook_skinr_skin_plugin_info()' . $lf . ' */' . $lf .
+    
+    'function ' . $form_state['values']['source_name'] . '_skinr_skin_' . $form_state['values']['plugin_name'] . '_info() {' . $lf .
+    "  \$skins['" . $form_state['values']['skin_name'] . "'] = array(" . $lf .
+    "    'status' => array('" . $form_state['values']['source_name'] . "' => 1)," . $lf . 
+    "    'title' => t('" . $form_state['values']['skin_title'] . "')," . $lf .
+    "    'description' => t('" . $form_state['values']['skin_description'] . "')," . $lf .
+    "    'type' => '" . $form_state['values']['skin_type'] . "'," . $lf;
+  
+  $theme_hooks = _skinr_array_strip_empty($form_state['values']['skin_select_hooks']);
+  if (!empty($theme_hooks)) {
+    $theme_hooks = "array('" . implode("', '", array_keys($theme_hooks)) . "')";  
+    $variable .= "    'theme hooks' => " . $theme_hooks . ',' . $lf;
+  };
+  
+  // @todo Needs: Adding of CSS/JS capability at the skin level
+  $variable .= "    'options' => array(" . $lf ;
+
+  for ($i = 1; $i <= $form_state['values']['skin_options_num']; $i++) {
+    $variable .=
+    "      '" . $form_state['values']['skin_options_name'] . '_' . $i . "' " . '=> array(' . $lf .
+    "        'class' => array('" . $form_state['values']['skin_options_name'] . '-' . $i . "')," . $lf .
+    "        'title' => t('Please modify this human readable info for " . $i . '_' . $form_state['values']['skin_options_name'] . "')," . $lf .
+    '      ),' . $lf;
+    }
+  
+  $variable .=
+    '    ),' . $lf .
+    '  );' . $lf . 
+    '  return $skins;' . $lf .
+    '}';
+
+  $form_state['generated'] = $variable;
+  $form_state['rebuild'] = TRUE;
+  $form_state['cache'] = FALSE;
+}
+
+
+/*
+ * This is the code for the settings page for Skin Creator
+ */
+function skin_creator_settings_form() {
+  $form = array();
+  
+  $form['skinr_creator_add_theme_hooks'] = array(
+    '#type' => 'textarea',
+    '#title' => 'Theme hooks',
+    '#default_value' => variable_get('skinr_creator_add_theme_hooks', SKIN_CREATOR_DEFAULT_THEME_HOOKS),
+    '#description' => 'This field contains theme hooks. Enter one value per line.',
+  );
+  
+  return system_settings_form($form);
+}
\ No newline at end of file

