I struggled for a couple of hours on just the basics of creating a package and getting it found. No matter what I tried, I kept getting the annoying and uninformative error: Error in startup script: can't find package FooBar 1.0 Here is the bare minimum for a pure-Tcl package called FooBar: * Create a package source file called FooBar.tcl * Populate that file with the package code, following the conventions in [William Duquette]'s tutorial on 'Namespaces and Packages' [http://www.wjduquette.com/tcl/namespaces.html]. * Make sure that the FooBar.tcl includes this command: package provide foobar 1.0 * Create a pkgIndex.tcl file You can use the pkg_mkIndex utility, but it is often easier to just write this by hand. Basically, you need to call '''[[package''' ifneeded] to tell the package system about how to load your package. The load script is going to be a '''[[source]''' command, using the variable '''$dir''' package ifneeded foobar "source [file join $dir FooBar.tcl]" * Put both FooBar.tcl and pkgIndex.tcl into a directory (probably named ''foobar''). If you put the foobar directory into your Tcl library, then it will just work. * If you can't put foobar into the Tcl library path, then you can adjust the library path to point to its location. If your foobar direction is in ''/some/where'', then set TCLLIBPATH to ''/some/where''. You can also extend the search path in your scripts. lappend auto_path /some/where