Taskset is a local-first task manager that stores project work as human-readable Markdown beside the code.
Tasks remain useful in editors, Git history, pull requests, scripts, and AI workflows without requiring a hosted project-management database.
Taskset is pre-alpha. The CLI supports repository initialization, validated task CRUD and lifecycle changes, repository diagnostics, queries, and file-impact analysis.
Documentation: taskset.false.foundation
- Work stays in the repository that it describes.
- Markdown remains readable without Taskset installed.
- Git supplies history, branches, review, and collaboration.
- Humans and AI agents inspect the same source of truth.
- CLI, editor, terminal, web, and automation interfaces can share one domain model.
Canonical project state lives under .taskset/. Generated views and caches are
disposable and rebuildable.
Install Taskset in the project that will own the work:
pnpm add --save-dev @taskset/cli
pnpm exec taskset initCreate and inspect work:
pnpm exec taskset task create --title "Add repository validation"
pnpm exec taskset task list
pnpm exec taskset task show <task-id>
pnpm exec taskset task status <task-id> doing
pnpm exec taskset doctorInitialization creates a root taskset.config.ts, the canonical
.taskset/tasks/ directory, and .taskset/.gitignore rules for disposable
cache, generated data, and non-authoritative safety snapshots.
import{defineConfig}from'@taskset/cli'exportdefaultdefineConfig({project: {name: 'example',},tasks: {defaults: {status: 'todo',priority: 'medium',labels: ['example'],},priorities: ['low','medium','high','urgent'],},})Commands started in nested directories discover taskset.config.ts by walking
upward. Configuration controls validated behavior and defaults; it does not
relocate canonical .taskset/ data.
Each task combines YAML metadata with a Markdown body:
---id: TS-01J00000000000000000000000title: Add repository validationstatus: todopriority: highowner: platformassignees:
- maintainerrisk: mediumdueDate: 2026-06-30createdAt: 2026-06-12updatedAt: 2026-06-12 09:30 UTCfiles:
- packages/core/src/index.tsdirectories:
- packages/coreprojects:
- taskset---## Context
Explain why the work exists.Task IDs are immutable TS- prefixed ULIDs. Taskset validates metadata,
normalizes serialization, and preserves the human-authored Markdown body.
Core owns deterministic graph, filtering, search, indexing, and file-impact semantics. The CLI exposes scriptable forms:
pnpm exec taskset task list --status doing --label core --json
pnpm exec taskset task list --file packages/core --impact --json
pnpm exec taskset task list --estimate-min 30 --estimate-max 120 --risk high
pnpm exec taskset doctor --json
pnpm exec taskset task update <task-id> --priority urgent
pnpm exec taskset task delete <task-id> --remove-dependencies --json
pnpm exec taskset generate
pnpm exec taskset snapshot create
pnpm exec taskset migrate --to 2doctor scans all task files without modifying them. Deletion is blocked when
other tasks depend on the target unless --remove-dependencies is selected to
repair those inbound relationships in the same failure-safe mutation.
Migration and snapshot restore are dry runs unless --apply is supplied.
Applying a schema migration first creates an immutable snapshot under
.taskset/snapshots/. Generated metadata indexes under .taskset/generated/
cover every supported task metadata field, are disposable, and refresh
automatically after canonical mutations.
User documentation:
The website in apps/www renders the same docs/ files with Nextra.
Taskset is available under the MIT License.
Taskset is a FalseFoundation project, created by junkieshuffle.