1. Create the package: in the case of a script-based package, it must contain an invocation of the "package provide" command, e.g.
package provide junk 1.0
In the case of a loadable binary it must have a call to "Tcl_PkgProvide", in the Tcl C library.
2. Create the index: by invoking the pkg_mkIndex command, e.g.
pkg_mkIndex /usr/users/pjx/junk *.tcl
This will scan the files matching the expression (in this case all files with extension "tcl") in the named directory, and create a file called pkgIndex.tcl which should contain the commands to load all the packages that it finds there.
3. Install the package: the package will consist of a directory with the file(s) making up that package, plus the pkgIndex.tcl file. There are a couple of options which will enable autoloading to work:
Make it a subdirectory of one of the directories given in the tcl_pkgPath variable, or
If you install it elsewhere on your system, then make sure you add the directory name to the auto_path global variable. (This can be either explicitly e.g. lappend auto_path $dir within the application itself, or via the TCLLIBPATH environment variable.)
4. Use the package: by adding a line like e.g.
package require junk
in your application. Providing everything has been set up as described, the Tcl interpreter will be able to locate and load the package automatically.