App needs a task manifest so that it can sanely serve documentation to commands like run and server. Additionally good for flagging tasks that should or should not be used in a given context, aliasing task names, and directing where files should be loaded from.
manifest:
# shorthand
name: klass
# full specification
task/class:
# default: name.camelize
class: Task::Class
# can be absolute, join to resolved load_path unless nil
# default: name.rb
file: task/class.rb
# path alias
# default: lib
load_path: lib
# a 'dumb' array -- the specified contexts do not necessarily
# correspond to a command. They simply provide a flag for
# permissions that can be checked anywhere.
# default: [run, server]
flag: [run, server]
# substitutes task/name with the argv... a command alias
# default: [task/name]
alias: [--quiet, one, two]
# manifest specifies permissions and such, determining what will be
# listed and what is executable under different conditions.
#
# Name args are mapped to classes using the manifest, and files are
# loaded for missing classes accordingly. When documentation is
# needed, TDoc will look to the file listed in the manifest for
# documentation. The config name maps to name (ie name is the
# default name used for the Task instance... specific names can
# be provided though the --name option, including nil).