Couple of small tweaks that I would make...

In repeater.xml.... this shuts down repeater when you close the UI.

Code:
?xml version="1.0" encoding="UTF-8"?>
<ISUI>
  <template name='Repeater.TitleBar' template='WoWSkin.window.TitleBar'>
  		<Children>
  			<text Name='Title' template='WoWSkin.window.TitleBar.title' />
  			<commandbutton Name='Close' template='WoWSkin.window.TitleBar.Close'>
  				<Command>EndScript Repeater</Command>
  			</commandbutton>
  			<button Name='Minimize' template='WoWSkin.window.TitleBar.Minimize' />
  			<button Name='Maximize' template='WoWSkin.window.TitleBar.Maximize' />
  		</Children>
	</template>
  <Window name='repeater'>
	
	<Title>Repeater</Title>
	<TitleBar template='Repeater.TitleBar' />
	<X>400</X>
	<Y>0</Y>
	<Width>200</Width>
	<Height>38</Height>
	<Border />
	<Children>
  	<frame name='main'>
    	<Texture/>
    	<BackgroundColor/>
    	<Width>100%</Width>
    	<Height>20</Height>
    	<Children>
      	<button name='keytoggle'>
        	<X>2</X>
        	<Y>2</Y>
        	<Width>48</Width>
        	<Height>16</Height>
        	<Text>Keys</Text>
        	<OnLeftClick>
          	<![CDATA[
        	repeater keytoggle
      	]]>
        	</OnLeftClick>
      	</button>
      	<button name='mousetoggle'>
        	<X>50</X>
        	<Y>2</Y>
        	<Width>48</Width>
        	<Height>16</Height>
        	<Text>Mouse</Text>
        	<OnLeftClick>
          	<![CDATA[
        	repeater mousetoggle
      	]]>
        	</OnLeftClick>
      	</button>
      	<button name='toggle'>
        	<X>100</X>
        	<Y>2</Y>
        	<Width>48</Width>
        	<Height>16</Height>
        	<Text>Both</Text>
        	<OnLeftClick>
          	<![CDATA[
        	repeater toggle
      	]]>
        	</OnLeftClick>
      	</button>
		  <button name='whitelist'>
        	<X>150</X>
        	<Y>2</Y>
        	<Width>48</Width>
        	<Height>16</Height>
        	<Text>White</Text>
        	<OnLeftClick>
          	<![CDATA[
        	if ${UIElement[whitelist@main@repeater].Text.Equal["White"]}
			{
				repeater whitelist box
				UIElement[whitelist@main@repeater]:SetText["*White*"]
			}
			else
			{
				repeater nolist
				UIElement[whitelist@main@repeater]:SetText["White"]
			}

      	]]>
        	</OnLeftClick>
      	</button>
    	</Children>
  	</frame>
	</Children>
  </Window>
</ISUI>
In repeater.iss, I would modify function main () and function atexit() as follows to load and unload the UI and skins.

Code:
function main(... Params)
{
	if ${Params.Size}
	{
		/* Parameters were passed, so let's assume that the first one is the key we wanted to bind to. */
		bind repeater "${Params[1]}" repeater toggle
	}
	else
	{
		/* Bind to MR by default (One of the G15/G11 keys) */
		bind repeater MR repeater toggle
	}
 
	repeater import "repeater lists.xml"
    	ui -load skins/wowskin/wowskin
    	ui -load -skin WoWSkin repeater
	/* Now just keep our script running. */
	while 1
		waitframe
}
 
atom atexit()
{
	bind -delete repeater
	
	ui -unload skins/wowskin/wowskin
	ui -unload repeater
}
-j