These aren’t just templates, though. See the README.txt.
As it implies, the project-tool.py script is used to effectively convert between Xcode templates and buildable projects. That is, you can create a project that builds/runs like a regular Xcode project, and then easily turn it into a template with the invocation of a simple command line like this:
./project-tool --help
Usage: project-tool.py [options]
Copies tree of templates or projects from to .
Before copying, it cleans up by removing various bits of garbage.
After copying, it transforms by replacing strings with their Xcode
template counterparts.
The reverse flag can be used to reverse this process; turning an Xcode
template into a working project.
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-v, --verbose verbose
-k, --kill-dest erase (no warning)
-r, --reverse reverse transformation (template -> editable project)
-w, --working try to make destination into a working project
-n, --nib rewrite NIB files to 10.5 text-only format
-t TEMPLATEFILE, --template=TEMPLATEFILE
path to TemplateInfo.plist that should be used during
conversion
Nothing remotely Python specific about it. And, as some have noticed, the PyObjC Cocoa templates leverage the new Interface Builder file format (xib) such that all kinds of substitutions happen in the templated interfaces, too. As in: No more MyDocument ever again.