perttool
perttool is a local CLI for keeping PERT/CPM plans in reviewable text files. It validates an Activity-on-Arrow plan, calculates precedence and resource-constrained schedules, recommends the next task, and applies source-preserving changes through preview-first commands.
The published 0.5.0 beta implements Grammar 5 and CLI Contract 6, including explicit task work events, lifecycle commands, read-only Git history, observed velocity, AnalysisResult v4, and NextResult v5. npm beta resolves to 0.5.0, while latest remains on Contract 5 0.4.0. Beta releases may contain breaking CLI or schema changes. Version 0.5.0 requires Node.js 22 or later. Contract 5, Contract 4, and Contract 3 remain available by pinning 0.4.0, 0.3.0, and 0.2.0, respectively.
Run without installing
Use npx for an occasional invocation and select Contract 6 explicitly:
npx --yes --package=perttool@0.5.0 -- perttool --version
npx --yes --package=perttool@0.5.0 -- perttool document check PLAN.pert
npx --yes --package=perttool@0.5.0 -- perttool dag next PLAN.pert --format json
npx --yes --package=perttool@0.5.0 -- perttool project history PLAN.pert --format jsonThe equivalent explicit npm exec form is:
npm exec --yes --package=perttool@0.5.0 -- perttool --version
npm exec --yes --package=perttool@0.5.0 -- perttool document check PLAN.pert
npm exec --yes --package=perttool@0.5.0 -- perttool dag analyze PLAN.pert
npm exec --yes --package=perttool@0.5.0 -- perttool project history PLAN.pert --format jsonnpx and npm exec may download the selected package version into the npm cache. Pinning 0.4.0 selects Contract 5 and therefore omits Grammar 5 lifecycle and history; 0.3.0 selects Contract 4, and 0.2.0 selects Contract 3.
Install
Install the CLI globally when it is used regularly:
npm install --global perttool@0.5.0
perttool --versionnpm beta now resolves to Contract 6 0.5.0, while latest remains on Contract 5 0.4.0. Contract 5, Contract 4, and Contract 3 remain available as exact pins perttool@0.4.0, perttool@0.3.0, and perttool@0.2.0.
Plan files
A .pert file is the source of truth and is intended to remain directly readable. This temporal plan has one one-day task:
project EXAMPLE:
version 2
title "Example plan"
as_of 2026-07-26
duration_unit day
finish DONE
milestone NOW:
title "Current frontier"
state reached
milestone DONE:deadline 2026-07-28
task WORK NOW - DONE: title "Do the work" duration 1d notbefore 2026-07-26 deadline 2026-07-27