Standard file tasks provided by default with PEAR are documented in this location.
If your package chooses to use a task provided by a third party, all you need to do is specify the task as part of the xml for the <file> tag that contains it like so:
<file role="php"> <tasks:foo/> </file>
However, if a user does not have the package installed that provides the custom task "foo", then the error message on installation will simply say "unknown task 'foo'", which is not very helpful.
The <usestask> tag instead prompts the installer to tell the user "this package uses the custom task 'foo', install package pear.example.com/Foo to use"
<usestask> <task>foo</task> <package>Foo</package> <channel>pear.example.com</channel> </usestask>
Note that static URI packages (channel-less packages) are also supported:
<usestask> <task>foo</task> <uri>http://pear.example.com/Foo-1.2.0</uri> </usesrole>