I will try not to be harsh, as I am generally just very discouraged. The main problem I have is that people providing new functionality and content are severely holding back the potential of MODx by not being (to the minimum) granular with their installation instructions. I have spent more time looking for alternative installation instructions for a number of great functionality such as yours, than actually working with the functionality and modifying it to our needs.
So this is what I would suggest to you and any others who would read this. Please, provide step-by-step instructions to install your functionality so that there is little chance someone could do it wrong.


/* automaticTpl - Documents are automatically created with the
* template specified in the parent document. You can specify
* the default template for children, grand children, grand grand
* children documents and more.
*
* Childrens will inherit the template specified in the automaticTpl
* TV of the parent. If no valid Template ID is found Inherit
* Template Plugin will kick in(if installed)
*
* Installation:
*
* 1) Create a new Template Variable with the following information:
* a) Variable Name: automaticTpl
* b) Caption: Eg: Comma separated list of template ids
* c) Description: Eg: Children will be created using the
* specified template IDs. Each template Id represents a level
* d) Input Type: Text
* e) Input Option Values: Empty
* f) Default Value: Empty
* g) Widget: Don't change, leave blank.
* h) Sort Order: Don't change unless desired.
* i) Template Access: Select which templates should use
* this TV. The children of the documents using this template
* will be created with the template specified in step 1.b.
* j) Access Permissions: It's up to you what users will have
* access to change this TV
*
* 3) Take note of the id of the automaticTpl Template Variable
* from either the Template Variable Resource List or from
* your database table modx_site_tmplvars.
*
* 4) Create a new plugin with the following information:
* a) Plugin Name: automaticTpl
* b) Description: Sets the default template when a children is created.
* c) Plugin Disabled: Leave Unchecked
* d) Plugin code (php): Copy & paste the code from the
* automaticTpl.php file that you downloaded.
*
* 5) Go into the System Events tab and find OnDocFormPrerender
* and check it on.
* 6) Go into the Configuration tab and paste the following
* code: &automaticTplTvID=automaticTpl TV ID;text;
* 7) Click anywhere outside the textbox, this will dynamically
* generate a new parameter field.
* 8) Input the ID of the Template Variable you took note of before.
* 9) Save the plugin
* 10) Go back to the main Plugins Resource List page and click
* on 'Edit Plugin Execution Order by Event'. Ensure that
* 'automaticTpl' is sorted BELOW 'Inherit Parent Template'.
* If not, change it to be so.
*
* Testing:
* 1) Edit a document that has a template with
* the TV 'automaticTpl' asociated to it
* 2) Inside automaticTpl TV insert the id of the template you
* want you children to be created by default Eg: 4
* 3) If you need to assign the default template for children
* on more levels put a comma separated list Eg: 4,6,29
* 4) Save the document
* 5) Create a children for the above document. The "Uses template"
* field should be populated by default with the name of the
* template Id you entered. In our example: 4
* 6) Save your document. If you entered a comma separated list
* GO TO 7. Otherwise you're done
* 7) Create a children in for the children document created at step 5.
* 8) Create a children for the children document created at 5.
* The "Uses template" field should be populated by default
* with the name of the second template Id you entered.
* In our example: 6
* 9) And so on if you entered a longer list of IDs
*
*
* Advanced Usage:
* Refer to the example above.
* If the template id 6 has an automaticTpl TV with the value of
* 30 the children of the document using this template will be
* created using the template id 30 not 29.
* The plugin goes up the tree until it finds the first not
* empty automaticTpl. This way you can have more flexibility for
* multiple levels of documents
*
*
* Version 0.5
* 0.5 - updated install instruction(thx to brettdusek)
* 0.4 - removed php tags and spell check
* 0.3 - completely changed the logic. You can use the automaticTpl
* TV for any container
* Previous version was limited to a certain container
* structure. Now other containers with different structures
* can be placed anywhere in the parent container
* The used template will be taken from the first parent that
* has a value for the automaticTpl TV. If no automaticTpl TV
* is found then the parent template is used
* 0.1 - first version
*
*/
global $content;
$e = &$modx->Event;
switch($e->name) {
case 'OnDocFormPrerender':
if(($_REQUEST['pid'] > 0) && ($id == 0)) {
//init parent
$parent = $_REQUEST['pid'];
//init level
$level = 0;
//init the TV value
$tplVal = "";
//find the first parent that has an automaticTpl TV and on which level
while($parent){
//increase level
$level++;
//check if the parent has the automaticTpl TV
$sql = "SELECT * FROM ".$modx->db->config['table_prefix']."site_tmplvar_contentvalues WHERE tmplvarid = " . $automaticTplTvID . " AND contentid = " . $parent;
$rs= $modx->dbQuery($sql);
$row = $modx->fetchRow($rs);
if($row && $row['value'] != ''){
//stop while loop
$parent = 0;
//save TV value
$tplVal = $row['value'];
}else{
//get next parent
$sql = "SELECT parent FROM ".$modx->db->config['table_prefix']."site_content WHERE id = " . $parent;
$rs= $modx->dbQuery($sql);
$row = $modx->fetchRow($rs);
$parent = $row['parent'];
}
}//end While
if($tplVal){
//set template to the automaticTpl value
$aTplVals = explode(",",$tplVal);
if(isset($aTplVals[$level-1])){
$content['template'] = intval($aTplVals[$level-1]);
}else{
//do nothing - Inherit Template Plugin will kick in
}
}else{
//do nothing - Inherit Template Plugin will kick in
}
}
break;
default:
return;
break;
}