Package and Template Model
March 14, 2026 · View on GitHub
Taskplane uses a two-layer distribution model:
- npm/pi package for executable logic (extensions, skills, CLI, dashboard)
- project templates/config scaffolded into each repository
This separates upgradeable runtime code from user-owned project settings.
Layer 1: Package (installed)
Installed via:
pi install npm:taskplane
# or project-local
pi install -l npm:taskplane
Package includes:
bin/taskplane.mjsextensions/(task-runner + orchestrator)skills/dashboard/templates/(used by CLI scaffolding)
pi discovers extensions/skills using the pi manifest in package.json.
Layer 2: Project files (scaffolded)
Created by:
taskplane init
Scaffolded files include:
.pi/task-runner.yaml.pi/task-orchestrator.yaml.pi/agents/*.mdtaskplane-tasks/CONTEXT.mdtaskplane-tasks/EXAMPLE-*/...example task folders (unless disabled)
These files are edited per project and are part of local workflow semantics.
Ownership model
Package-owned
- extension code
- skill definitions
- CLI code
- dashboard server/frontend
Upgraded via pi update (package lifecycle).
Project-owned
- YAML config in
.pi/ - project task files (
PROMPT.md,STATUS.md,CONTEXT.md)
Managed by users/maintainers inside their repositories.
Why this split
- upgradeability: ship new runtime behavior without overwriting project intent
- portability: per-project configs and tasks live with repo
- clarity: executable logic and project policy are clearly separated
- safety: package updates avoid blindly rewriting user task data
Template purpose
templates/ provides starting points, not authoritative runtime state.
templates/config/→ YAML templatestemplates/agents/→ worker/reviewer/merger promptstemplates/tasks/→ CONTEXT + example task packets
taskplane init copies/generates these into project-local paths.
Upgrade path
Typical flow:
pi update→ update package runtime bits- (future/optional) project-level upgrade tooling updates scaffolded project files
Always review config/task changes before applying in active projects.