tasker takes an issue from an issue tracker and drives an AI coding assistant through plan, build, verify, review, and merge.
- Node.js 26 or later
- npm
- git
- An AI coding assistant: tasker runs Claude Code with the
claudecommand. The assistant configuration selects it. - An issue tracker: for a GitHub tracker, tasker runs the
ghcommand, as the tracker configuration says. Theghlogin of the account ofissueTracker.accountneeds the token scoperepo, as the token scopes say. For a Jira tracker, tasker runsacli, as the acli login says.
- Clone the repository:
git clone https://github.com/codeguru42/tasker.git. In an existing clone, run the commands for the kind of install instead:- For a stable release, run
git fetch --tags. Step 3 then checks out the tag. - For a development version, run
git checkout main, thengit pull --ff-only origin main.git fetch --tagschanges only the remote branches and the tags, not the localmain.
- For a stable release, run
- Go to the folder of the clone:
cd tasker - Optional: to install a stable release, check out its tag, for example
git checkout 2026.10.24. To give the install a version of your own, add a local tag on HEAD:git tag <version>. - Run
npm run install:global. On the newest commit ofmain, it installs a development version.
The script stops before the install when HEAD has two or more tags. It also stops when the working tree has changes,
also untracked files. The script runs tasker install-skills, so that an assistant finds the tasker skill.
For an update of a stable release, run git fetch --tags, then check out the tag of the new version, then do step 4.
For an update of a development version, run git checkout main, then git pull --ff-only origin main, then do step 4.
docs/dev/release.md gives the steps of a stable release and of a pre-release. For the pre-release steps, see Install a pre-release.
tasker --help lists the options and the commands. tasker --version prints the version. tasker with no command
prints the same usage to stderr and exits with code 1. An unknown command or option prints an error and exits with a
non-zero code.
tasker reads one configuration file. It reads $TASKER_CONFIG. If that is not set, it reads
$XDG_CONFIG_HOME/tasker/config.json. If that is not set, it reads $HOME/.config/tasker/config.json.
See the configuration reference for the keys. Run tasker show-config to see the configuration with
the defaults filled in. Run tasker doctor to make sure that the machine is set up.
In each command, <issue> is the issue key of the issue, for example
owner/repo#N.
- Run
tasker start <issue>to make the task and its worktree. - Run
tasker plan <issue>to let the assistant write a plan. - Run
tasker show-plan <issue>to read the plan. - Run
tasker approve <issue>to approve the plan. - Run
tasker execute <issue>to let the assistant do the work. - Run
tasker verify <issue>to run the verify commands of the repo. - Run
tasker review <issue>to let the assistant review the work. - Run
tasker accept <issue>to accept the work. - Run
tasker merge <issue>to land the work on the base branch. - Run
tasker finish <issue>to remove the worktree and the task branch.
Run tasker status to list the tasks and their states. Run tasker show <issue> to see the details of one task.
The skill index lists all the commands. tasker <command> --help gives the options of a
command.
Each task moves through states. A command works only in some states. The state machine doc gives the states and the edges.
See CONTRIBUTING.md to start work as a contributor.