@taskset/cli 5.1.0 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +21 -22
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +212 -113
  5. package/docs/_meta.ts +5 -0
  6. package/docs/agent-closeout.md +69 -0
  7. package/docs/agents/_meta.ts +6 -0
  8. package/docs/agents/commands.md +94 -0
  9. package/docs/agents/index.md +113 -0
  10. package/docs/agents/llms.txt +35 -0
  11. package/docs/agents/query-recipes.md +76 -0
  12. package/docs/agents/workflows.md +60 -0
  13. package/docs/cli-reference.md +53 -34
  14. package/docs/configuration.md +53 -31
  15. package/docs/document-types.md +53 -24
  16. package/docs/getting-started.md +61 -49
  17. package/docs/index.md +37 -25
  18. package/docs/maintainers/architecture/decisions/0001-documentation-platform.md +21 -47
  19. package/docs/maintainers/development/contributing.md +2 -3
  20. package/docs/maintainers/development/documentation.md +32 -49
  21. package/docs/maintainers/index.md +1 -3
  22. package/docs/maintainers/product/vision.md +27 -33
  23. package/docs/memory-model.md +58 -0
  24. package/docs/security-compliance-tracking.md +107 -0
  25. package/docs/task-files.md +19 -13
  26. package/docs/taxonomy-cookbook.md +59 -0
  27. package/package.json +4 -4
  28. package/skills/taskset/SKILL.md +89 -57
  29. package/skills/taskset/references/document-modeling-examples.md +53 -2
  30. package/skills/taskset-implement/SKILL.md +26 -17
  31. package/skills/taskset-implement/references/architecture/documentation-and-generated.md +3 -1
  32. package/skills/taskset-implement/references/architecture/ownership-and-dependencies.md +2 -1
  33. package/skills/taskset-implement/references/architecture/product-and-source.md +22 -11
  34. package/skills/taskset-implement/references/architecture/storage-and-snapshots.md +5 -2
  35. package/skills/taskset-implement/references/conventions/naming-and-packages.md +1 -1
  36. package/skills/taskset-implement/references/conventions/task-files.md +9 -4
  37. package/skills/taskset-implement/references/workflows/environment-and-pnpm.md +4 -3
  38. package/src/cli.ts +174 -112
@@ -0,0 +1,69 @@
1
+ ---
2
+ title: Follow the agent closeout contract
3
+ description: Subtasks done, related docs created, taxonomy valid, optional lesson and skill promotion.
4
+ contentType: How-to
5
+ navLabel: Agent Closeout
6
+ ---
7
+
8
+ # Follow the agent closeout contract
9
+
10
+ Before marking a Taskset task `done`, agents must leave the repository in a state another agent can trust.
11
+
12
+ ## Required
13
+
14
+ 1. Every checklist item for the outcome is checked (`- [x]`), or intentionally removed with rationale.
15
+ 2. Every child task is `done` or `canceled` (not left `todo` / `doing` / `blocked`).
16
+ 3. Durable outputs exist as documents when the work produced them:
17
+ - evidence → `research`
18
+ - lasting choice → `decision` / `adr`
19
+ - procedure → `runbook`
20
+ - product context → `story` / `flow`
21
+ - recurring mistake → `lesson`
22
+ - residual risk → `concern`
23
+ - inventory / spot-check → `audit`
24
+ 4. Documents and tasks are linked with `--related` (short hex IDs in CLI flags).
25
+ 5. Markdown prose that points at those files uses repository-relative filepaths, not bare hex ids.
26
+ 6. Labels and projects reuse repository taxonomy; do not invent one-off tags when an allowlist exists.
27
+ 7. `taskset doctor --json` reports no errors for the paths you touched.
28
+
29
+ ## Optional config gates
30
+
31
+ When enabled in `taskset.config.ts`, core blocks `done` transitions that violate:
32
+
33
+ ```typescript
34
+ closeout: {
35
+ enforceChildCompletion: true,
36
+ blockDoneWithOpenConcerns: true,
37
+ requireLessonWhenLabeled: ['requires-lesson'],
38
+ }
39
+ ```
40
+
41
+ Defaults are off so existing repositories keep current behavior.
42
+
43
+ ## Skill promotion bridge
44
+
45
+ Lessons may declare skill targets:
46
+
47
+ ```bash
48
+ taskset document create lesson \
49
+ --title "…" \
50
+ --related-skill .agents/skills/foo/SKILL.md \
51
+ --related <task-id>
52
+ ```
53
+
54
+ Contract:
55
+
56
+ - Taskset stores the lesson evidence and correct pattern.
57
+ - The consumer primary skill stores lasting how-to.
58
+ - Agents update the skill in the same change when `--related-skill` is present.
59
+ - Taskset does not auto-edit skills unless a future promote helper is explicitly applied with config opt-in.
60
+
61
+ ## Program closeout
62
+
63
+ For multi-task programs:
64
+
65
+ ```bash
66
+ taskset task program <parent-id> --json
67
+ ```
68
+
69
+ Treat `closeoutReady: false` as a signal to finish children, accept or archive open concerns, accept research, and complete checklist items before marking the parent done.
@@ -0,0 +1,6 @@
1
+ export default {
2
+ index: 'For Agents',
3
+ workflows: 'Agent Workflows',
4
+ commands: 'Agent Commands',
5
+ 'query-recipes': 'Query Recipes',
6
+ }
@@ -0,0 +1,94 @@
1
+ ---
2
+ title: Use Taskset command contracts
3
+ description: Machine-oriented contracts for discovery, JSON output, clear flags, search, and identifiers.
4
+ contentType: Reference
5
+ navLabel: Agent Commands
6
+ ---
7
+
8
+ # Use Taskset command contracts
9
+
10
+ This page quotes the contracts agents should rely on. For the full human reference, see [CLI reference](../cli-reference.md).
11
+
12
+ ## Discovery and defaults
13
+
14
+ | Fact | Contract |
15
+ | --- | --- |
16
+ | Repository marker | Nearest ancestor `.taskset/` directory |
17
+ | Optional config | `taskset.config.ts` beside that root |
18
+ | Missing config | Built-in statuses, priorities, and defaults |
19
+ | `taskset config --json` | Includes `rootDirectory`, `configPath`, `hasConfig`, `dataDirectory`, `config` |
20
+ | `taskset init` | Creates `.taskset/`; `--config` writes optional config |
21
+
22
+ ## Output and exit codes
23
+
24
+ - Stdout carries requested output
25
+ - Stderr carries diagnostics and generation warnings
26
+ - Exit `0` means success
27
+ - Exit `1` means repository or domain failure
28
+ - Exit `2` means usage or validation failure
29
+
30
+ ## Identifiers and file links
31
+
32
+ - Entity `id` values are immutable 5–6 character lowercase hex strings
33
+ - Filenames are `{sequence}-{slug}-{id}.md`
34
+ - Commands, frontmatter relationships, and JSON handoffs use the short `id`
35
+ - Filename sequence prefixes are display metadata only—never identity
36
+ - Markdown hyperlinks to docs, skills, or `.taskset/` entities must use the
37
+ repository-relative filepath (include the `.md` file). Do not use a bare hex
38
+ id as a link target.
39
+
40
+ ## Array updates and clear flags
41
+
42
+ Array options replace the whole stored array. Repeat the singular option once per desired value. Clear with the exact plural flag:
43
+
44
+ - `--clear-dependencies`
45
+ - `--clear-labels`
46
+ - `--clear-assignees`
47
+ - `--clear-reviewers`
48
+ - `--clear-related`
49
+ - `--clear-files`
50
+ - `--clear-directories`
51
+ - `--clear-projects`
52
+ - `--clear-parent`
53
+ - `--clear-owner`
54
+ - `--clear-severity`
55
+ - `--clear-related-skills`
56
+ - `--clear-packs`
57
+ - `--clear-class`
58
+ - `--clear-cadence`
59
+
60
+ Do not guess a clear flag from the singular setter name.
61
+
62
+ ## Search and impact
63
+
64
+ - `--search` is token-aware: every normalized term must match title or body
65
+ - Terms may appear in any order
66
+ - `--impact` expands file, directory, or dependency matches to dependent work
67
+
68
+ ## Document kinds
69
+
70
+ Use only these kinds:
71
+
72
+ - `story`
73
+ - `flow`
74
+ - `decision` (`adr`, `dr` aliases)
75
+ - `research`
76
+ - `runbook`
77
+ - `lesson` (`antipattern` alias)
78
+ - `concern`
79
+ - `audit`
80
+
81
+ Document statuses are `draft`, `ready`, `active`, `accepted`, `superseded`, and `archived`.
82
+
83
+ Lesson options: `--severity`, repeatable `--related-skill`, repeatable `--pack`.
84
+ Concern options: `--class`, `--cadence`. List filters include `--class` and `--severity`.
85
+
86
+ ## Program rollup
87
+
88
+ ```bash
89
+ taskset task program <parent-id> --json
90
+ ```
91
+
92
+ Returns child status counts, blocked deps, related open concerns, research not yet accepted, checklist completion, and `closeoutReady`.
93
+
94
+ Copy-paste recipes: [Query recipes](query-recipes.md).
@@ -0,0 +1,113 @@
1
+ ---
2
+ title: Operate Taskset as an agent
3
+ description: Plan, research, decide, operate, and track repository work with the Taskset CLI, skill, and JSON contracts.
4
+ contentType: How-to
5
+ navLabel: For Agents
6
+ ---
7
+
8
+ # Operate Taskset as an agent
9
+
10
+ Use this page when you are an agent operating Taskset in a repository. Humans should start with [Getting started](../getting-started.md). Maintainer architecture lives under [Maintainer docs](../maintainers/index.md).
11
+
12
+ Taskset is not only a task tracker. You use it to capture plans, research, decisions, flows, runbooks, lessons, concerns, audits, and the tasks that execute them in one Git-native graph.
13
+
14
+ ## Load the skill first
15
+
16
+ Prefer the packaged skill before inventing workflow:
17
+
18
+ ```bash
19
+ npx skills add FalseFoundation/taskset --skill taskset
20
+ ```
21
+
22
+ Project and global skill installs both work. After a project npm install, offline copies also live at `node_modules/@taskset/cli/skills/taskset/SKILL.md`.
23
+
24
+ ## Invoke the CLI
25
+
26
+ Do not assume `pnpm taskset`. Use whichever runner the environment provides:
27
+
28
+ ```bash
29
+ npx @taskset/cli document list --json
30
+ npx @taskset/cli task list --json
31
+ pnpm dlx @taskset/cli doctor --json
32
+ yarn dlx @taskset/cli document show your_document_id_here --json
33
+ bunx @taskset/cli sync --json
34
+ taskset task list --json
35
+ ```
36
+
37
+ ## Discover the repository
38
+
39
+ 1. Walk upward for `.taskset/`
40
+ 2. Load optional `taskset.config.ts` at that root when present
41
+ 3. Otherwise use built-in defaults
42
+
43
+ No config file is required. `taskset init` creates `.taskset/` only. Pass `--config` when the repository wants an optional TypeScript overlay.
44
+
45
+ ## Choose the right artifact
46
+
47
+ | If the work produces… | Create… |
48
+ | --- | --- |
49
+ | A user outcome or acceptance criteria | `story` |
50
+ | A journey with variants and checks | `flow` |
51
+ | Evidence, options, or a recommendation | `research` |
52
+ | A lasting architectural or product choice | `decision` / `adr` |
53
+ | A repeatable recovery or ops procedure | `runbook` |
54
+ | A recurring mistake or correct pattern | `lesson` |
55
+ | An open residual risk | `concern` |
56
+ | A structured inventory or spot-check | `audit` |
57
+ | Scoped execution with status and owners | `task` |
58
+ | Multi-task program health | parent task + `taskset task program` |
59
+
60
+ Link documents and tasks with `--related`. Keep one-off scratch in the task body. See [Memory model](../memory-model.md) for anti-examples.
61
+
62
+ ## Core operating rules
63
+
64
+ - Treat `.taskset/tasks/` and kind-specific document directories as the source of truth
65
+ - Mutate through CLI commands when a command exists
66
+ - Use short hex ids such as `a1b2c3` in commands and `--related`. Filename sequence prefixes are display-only.
67
+ - Markdown hyperlinks to files must use repository-relative paths (for example [document types](../document-types.md)), not bare hex ids
68
+ - Prefer `--json` for handoffs
69
+ - Create follow-up tasks or checklist subtasks for newly discovered work
70
+ - Create research, decision, runbook, story, flow, lesson, concern, or audit documents when work produces reusable evidence, lasting choices, recurring patterns, or residual risks
71
+ - Keep statuses current mid-work
72
+
73
+ ## Command map
74
+
75
+ | Goal | Command |
76
+ | --- | --- |
77
+ | Inspect root and defaults | `taskset config --json` |
78
+ | Validate repository | `taskset doctor --json` |
79
+ | List or search tasks | `taskset task list --search "terms" --json` |
80
+ | List or search documents | `taskset document list research --search "terms" --json` |
81
+ | Open concerns on a path | `taskset document list concern --directory apps/foo --status active --json` |
82
+ | Lessons by search | `taskset document list lesson --search "casl" --json` |
83
+ | Show one entity | `taskset task show your_task_id_here --json` |
84
+ | Create executable work | `taskset task create --title "Describe the work"` |
85
+ | Create durable memory | `taskset document create research --title "Evaluate options" --related your_task_id_here` |
86
+ | Create a lesson | `taskset document create lesson --title "…" --severity high --related your_task_id_here` |
87
+ | Create a concern | `taskset document create concern --title "…" --class authz --related your_task_id_here` |
88
+ | Program health | `taskset task program your_parent_task_id_here --json` |
89
+ | Change status | `taskset task status your_task_id_here doing` |
90
+ | Impact query | `taskset task list --file path/or/dir --impact --json` |
91
+ | Repair and rebuild | `taskset sync --json` |
92
+
93
+ Full contracts: [CLI reference](../cli-reference.md), [Agent command contracts](commands.md), and [Query recipes](query-recipes.md).
94
+
95
+ ## Workflow checklist
96
+
97
+ 1. Confirm the repository root with `taskset config --json`
98
+ 2. Search existing tasks and documents before creating duplicates
99
+ 3. Capture durable evidence, decisions, lessons, or concerns as documents mid-work
100
+ 4. Create or update tasks for executable delivery
101
+ 5. Resolve ownership before mutating assigned work
102
+ 6. Keep statuses current, then re-validate with `taskset doctor --json`
103
+
104
+ ## Related pages
105
+
106
+ - [Agent workflows](workflows.md)
107
+ - [Agent command contracts](commands.md)
108
+ - [Query recipes](query-recipes.md)
109
+ - [Memory model](../memory-model.md)
110
+ - [Agent closeout](../agent-closeout.md)
111
+ - [Security tracking](../security-compliance-tracking.md)
112
+ - [Document types](../document-types.md)
113
+ - [Task files](../task-files.md)
@@ -0,0 +1,35 @@
1
+ # Taskset
2
+
3
+ > Git-native Markdown workspace for planning, research, decisions, operations, residual risk, and delivery.
4
+
5
+ Taskset stores stories, flows, research, decisions, runbooks, lessons, concerns, audits, and tasks under `.taskset/`. The CLI is published as `@taskset/cli` and runs through package runners or a global install. Config files are optional.
6
+
7
+ ## For agents
8
+
9
+ - [Operate Taskset as an agent](https://taskset.false.foundation/docs/agents)
10
+ - [Follow agent workflows](https://taskset.false.foundation/docs/agents/workflows)
11
+ - [Use Taskset command contracts](https://taskset.false.foundation/docs/agents/commands)
12
+ - [Query operational memory](https://taskset.false.foundation/docs/agents/query-recipes)
13
+ - [Choose a document type](https://taskset.false.foundation/docs/document-types)
14
+ - [Choose memory layers](https://taskset.false.foundation/docs/memory-model)
15
+ - [Agent closeout contract](https://taskset.false.foundation/docs/agent-closeout)
16
+ - [Security and compliance tracking](https://taskset.false.foundation/docs/security-compliance-tracking)
17
+ - [Understand task files](https://taskset.false.foundation/docs/task-files)
18
+ - [CLI reference](https://taskset.false.foundation/docs/cli-reference)
19
+
20
+ ## For humans
21
+
22
+ - [Keep the whole delivery story beside the code](https://taskset.false.foundation/docs)
23
+ - [Start a Taskset repository](https://taskset.false.foundation/docs/getting-started)
24
+ - [Configure Taskset defaults](https://taskset.false.foundation/docs/configuration)
25
+ - [Taxonomy cookbook](https://taskset.false.foundation/docs/taxonomy-cookbook)
26
+
27
+ ## Optional offline skill
28
+
29
+ After install, load `node_modules/@taskset/cli/skills/taskset/SKILL.md`, or install with:
30
+
31
+ ```text
32
+ npx skills add FalseFoundation/taskset --skill taskset
33
+ ```
34
+
35
+ Offline docs also ship at `node_modules/@taskset/cli/docs/`. Prefer repository-relative `.md` filepaths for Markdown hyperlinks; use short hex entity ids only in CLI commands and `--related`.
@@ -0,0 +1,76 @@
1
+ ---
2
+ title: Query operational memory
3
+ description: Copy-paste --json recipes for program blockers and open security concerns.
4
+ contentType: Reference
5
+ navLabel: Query Recipes
6
+ ---
7
+
8
+ # Query operational memory
9
+
10
+ Prefer `--json` for agent handoffs. Use short hex IDs in commands and
11
+ `--related`. Filename sequence prefixes are display-only. Markdown hyperlinks
12
+ to files must use repository-relative paths (see [commands](commands.md)).
13
+
14
+ ## Open concerns on a path
15
+
16
+ ```bash
17
+ taskset document list concern --directory apps/foo --status active --json
18
+ taskset document list concern --label security --status active --json
19
+ taskset document list concern --class authz --status active --json
20
+ ```
21
+
22
+ ## Lessons by search or severity
23
+
24
+ ```bash
25
+ taskset document list lesson --search "casl capability" --json
26
+ taskset document list lesson --severity high --json
27
+ taskset document show <lesson-id> --type lesson --json
28
+ ```
29
+
30
+ ## Audits and research
31
+
32
+ ```bash
33
+ taskset document list audit --status ready --json
34
+ taskset document list research --status ready --json
35
+ ```
36
+
37
+ ## Program health
38
+
39
+ ```bash
40
+ taskset task program <parent-id> --json
41
+ ```
42
+
43
+ Useful fields:
44
+
45
+ - `children.byStatus` / `children.openIds`
46
+ - `blockedDependencies`
47
+ - `relatedOpenConcerns`
48
+ - `relatedResearchNotAccepted`
49
+ - `checklist`
50
+ - `closeoutReady`
51
+
52
+ ## Closeout gaps
53
+
54
+ ```bash
55
+ taskset doctor --json
56
+ ```
57
+
58
+ Interpret:
59
+
60
+ | Code | Meaning |
61
+ | --- | --- |
62
+ | `missing-template-heading` | lesson/concern/audit body missing required `##` section |
63
+ | `missing-reference` | related/dependsOn target ID does not exist |
64
+ | `unknown-taxonomy` | label/project/class outside allowlist |
65
+ | `closeout-gap` | done task labeled for lesson without a related lesson |
66
+ | `missing-owner` | active concern without owner (when configured) |
67
+ | `stale-research` | ready research older than N days without follow-up task |
68
+
69
+ ## Create trail in one change
70
+
71
+ ```bash
72
+ taskset document create concern --title "Telegram capability must not grant CASL" --class authz --related <task-id> --json
73
+ taskset document create lesson --title "Capability flags are enablement only" --severity high --related <concern-or-task-id> --json
74
+ taskset task program <parent-id> --json
75
+ taskset doctor --json
76
+ ```
@@ -0,0 +1,60 @@
1
+ ---
2
+ title: Follow agent workflows in Taskset
3
+ description: Ownership checks, mid-work updates, operational memory, and monorepo habits for agent operators.
4
+ contentType: How-to
5
+ navLabel: Agent Workflows
6
+ ---
7
+
8
+ # Follow agent workflows in Taskset
9
+
10
+ These workflows assume the CLI is available and `.taskset/` already exists. Initialize with `taskset init` when it does not. Use documents for durable memory and tasks for execution; link them so later agents inherit the full story.
11
+
12
+ ## Before you execute a task
13
+
14
+ 1. Run `taskset task show your_task_id_here --json`
15
+ 2. Resolve `git config --get user.name`
16
+ 3. Compare owner and assignees with that identity
17
+ 4. Pause for confirmation when another person owns or is exclusively assigned the task
18
+ 5. Check unresolved dependencies and blockers before status changes
19
+
20
+ Matching ownership does not override blockers. A generic instruction such as “work on the next task” does not override another person’s assignment.
21
+
22
+ ## While you execute
23
+
24
+ - Set the active task to `doing` when work starts
25
+ - Create child tasks (`--parent`) or checklist items (`- [ ]`) for newly discovered work
26
+ - Check off finished checklist items as `- [x]`
27
+ - Mark finished child tasks `done`
28
+ - Create research, decision, runbook, story, flow, lesson, concern, or audit documents when evidence, lasting choices, recurring patterns, or residual risks appear
29
+ - Link documents and tasks with `--related` (short hex ids in CLI flags)
30
+ - When linking to those files in Markdown prose, use the repository-relative filepath
31
+ - Update a primary skill when the session designates one and a lasting lesson emerges; if a lesson uses `--related-skill`, update those skill paths in the same change
32
+ - For multi-task programs, inspect health with `taskset task program <parent-id> --json`
33
+
34
+ Do not leave discovered work only in chat.
35
+
36
+ ## Close-out
37
+
38
+ 1. Confirm acceptance criteria are met
39
+ 2. Confirm every tracked subtask is finished or intentionally resolved
40
+ 3. Confirm related lessons/concerns/audits exist when the work produced them
41
+ 4. Set the parent task to `done` only after children and checklists are complete
42
+ 5. Run `taskset doctor --json` when the change touched contracts, taxonomy, or many files
43
+
44
+ See [Agent closeout](../agent-closeout.md) for the full contract and optional config gates.
45
+
46
+ ## Monorepo habits
47
+
48
+ - Prefer declared package names and existing Taskset projects over directory-name guesses
49
+ - Record `--depends-on` only for real execution prerequisites
50
+ - Attach the narrowest accurate `--file` or `--directory` scopes
51
+ - Validate the changed package and affected dependents
52
+ - Reuse taxonomy labels and projects; do not invent one-off tags when allowlists exist
53
+
54
+ ## Batch and sync
55
+
56
+ Use `taskset document batch manifest.json --json` for multi-document jobs. Use `taskset sync --json` after upgrades or when filenames, ids, or generated views need repair.
57
+
58
+ ## Discovery recipes
59
+
60
+ Copy-paste JSON recipes for open concerns, lessons, and program blockers live in [Query recipes](query-recipes.md).
@@ -1,16 +1,15 @@
1
1
  ---
2
- title: CLI Reference
2
+ title: Look up Taskset CLI commands
3
3
  description: Complete reference for the taskset command-line interface.
4
+ contentType: Reference
5
+ navLabel: CLI Reference
4
6
  ---
5
7
 
6
- # CLI Reference
8
+ # Look up Taskset CLI commands
7
9
 
8
- The `taskset` command is a thin adapter over `@taskset/core`. It parses
9
- arguments, validates command options, calls core operations, and renders human
10
- or JSON output.
10
+ The `taskset` command is a thin adapter over `@taskset/core` for the full Taskset surface: stories, flows, research, decisions, runbooks, lessons, concerns, audits, and tasks. It parses arguments, validates options, calls core operations, and renders human or JSON output.
11
11
 
12
- Use `pnpm taskset <command>` when Taskset is installed as a project
13
- dependency. The examples below use `taskset` directly for brevity.
12
+ Invoke it with `npx @taskset/cli`, `pnpm dlx @taskset/cli`, `yarn dlx @taskset/cli`, `bunx @taskset/cli`, a project binary, or a global install. Examples below use `taskset` directly.
14
13
 
15
14
  ## Common Behavior
16
15
 
@@ -46,12 +45,10 @@ Exit codes:
46
45
  ### `init`
47
46
 
48
47
  ```bash
49
- taskset init [--cwd <path>]
48
+ taskset init [--config] [--cwd <path>]
50
49
  ```
51
50
 
52
- Initializes a Taskset repository in the target directory. The command creates
53
- `taskset.config.ts`, `.taskset/tasks/`, and `.taskset/.gitignore` when they do
54
- not already exist.
51
+ Initializes a Taskset repository. The command resolves a root from an existing `.taskset/`, Git or workspace markers, or the working directory, then creates `.taskset/` task and document directories plus `.taskset/.gitignore` when they do not already exist. Pass `--config` to also write optional `taskset.config.ts`.
55
52
 
56
53
  Human output:
57
54
 
@@ -65,15 +62,15 @@ Initialized Taskset in <root-directory>
65
62
  taskset config [--json] [--cwd <path>]
66
63
  ```
67
64
 
68
- Discovers the nearest `taskset.config.ts` by walking upward from the working
69
- directory.
65
+ Discovers the nearest `.taskset/` directory by walking upward from the working directory. Optional `taskset.config.ts` at that root overlays defaults when present.
70
66
 
71
- Human output is the config file path. JSON output contains:
67
+ Human output is the config file path when a config exists, or `defaults (<root-directory>)` when it does not. JSON output contains:
72
68
 
73
69
  ```json
74
70
  {
75
71
  "rootDirectory": "...",
76
72
  "configPath": "...",
73
+ "hasConfig": false,
77
74
  "dataDirectory": "...",
78
75
  "config": {}
79
76
  }
@@ -85,13 +82,14 @@ Human output is the config file path. JSON output contains:
85
82
  taskset doctor [--json] [--cwd <path>]
86
83
  ```
87
84
 
88
- Validates the repository without modifying files. It scans canonical task
89
- metadata, paths, and graph relationships.
85
+ Validates the repository without modifying files. It scans canonical task and
86
+ document metadata, paths, graph relationships, required template headings for
87
+ operational kinds, taxonomy allowlists, and optional closeout gaps.
90
88
 
91
89
  Human success output:
92
90
 
93
91
  ```text
94
- Taskset repository is valid (<count> tasks)
92
+ Taskset repository is valid (<count> tasks, <count> documents)
95
93
  ```
96
94
 
97
95
  Human failure output is tab-separated:
@@ -100,8 +98,8 @@ Human failure output is tab-separated:
100
98
  <code> <path-or-> <message> <remediation>
101
99
  ```
102
100
 
103
- JSON output is the full doctor result, including `valid`, `taskCount`, and
104
- diagnostics.
101
+ JSON output is the full doctor result, including `valid`, `taskCount`,
102
+ `documentCount`, and diagnostics. Warnings do not fail the command; errors do.
105
103
 
106
104
  ### `generate`
107
105
 
@@ -311,7 +309,7 @@ Human output is the serialized task Markdown. JSON output contains:
311
309
 
312
310
  ```json
313
311
  {
314
- "relativePath": ".taskset/tasks/0000001-short-title.md",
312
+ "relativePath": ".taskset/tasks/0000001-short-title-a1b2c3.md",
315
313
  "metadata": {},
316
314
  "body": "...",
317
315
  "derived": {}
@@ -378,17 +376,31 @@ remove those inbound references and delete the target in one mutation.
378
376
  Human output is the deleted task ID. JSON output contains `deleted: true`
379
377
  alongside the deleted task record.
380
378
 
379
+ ### `task program`
380
+
381
+ ```bash
382
+ taskset task program <parent-id> [--json] [--cwd <path>]
383
+ ```
384
+
385
+ Summarizes a parent task as a program rollup: child counts by status, open child
386
+ IDs, blocked dependency edges, related open concerns, related research not yet
387
+ accepted, parent checklist completion, and `closeoutReady`.
388
+
389
+ Human output is one tab-separated summary line. JSON output is the full rollup
390
+ object.
391
+
381
392
  ### `task migrate-ids`
382
393
 
383
394
  ```bash
384
395
  taskset task migrate-ids [--json] [--cwd <path>]
385
396
  ```
386
397
 
387
- Atomically converts legacy `TS-` task IDs to seven-digit, title-derived IDs and
388
- rewrites canonical relationships plus references in repository text files.
389
- Dependencies, Git internals, build output, caches, generated views, indexes,
390
- and snapshots are excluded. Human output is a tab-separated
391
- old-to-new mapping; JSON emits the same mapping as objects.
398
+ Atomically converts legacy `TS-` and sequential task IDs to immutable short hex
399
+ IDs, normalizes filenames to `{sequence}-{slug}-{id}.md`, repairs duplicate
400
+ sequence prefixes by `createdAt`, and rewrites canonical relationships plus
401
+ references in repository text files. Dependencies, Git internals, build output,
402
+ caches, generated views, indexes, and snapshots are excluded. Human output is a
403
+ tab-separated old-to-new mapping; JSON emits the same mapping as objects.
392
404
 
393
405
  ### `sync`
394
406
 
@@ -396,14 +408,17 @@ old-to-new mapping; JSON emits the same mapping as objects.
396
408
  taskset sync [--concurrency <count>] [--json] [--cwd <path>]
397
409
  ```
398
410
 
399
- Ensures every canonical document directory exists under `.taskset`, applies
400
- legacy task-ID and repository-reference migrations, and rebuilds generated
401
- views. Progress counts and percentages are sent to stderr.
411
+ Ensures every canonical document directory exists under `.taskset`, migrates
412
+ legacy task and document IDs to short hex IDs, normalizes filenames, repairs
413
+ duplicate sequence prefixes by `createdAt`, rewrites repository text
414
+ references, and rebuilds generated views. Progress counts and percentages are
415
+ sent to stderr.
402
416
 
403
417
  ## Document Commands
404
418
 
405
419
  `document` may be shortened to `doc`. Supported types are `story`, `flow`,
406
- `decision`, `research`, and `runbook`; `adr` and `dr` alias `decision`.
420
+ `decision`, `research`, `runbook`, `lesson`, `concern`, and `audit`. Aliases:
421
+ `adr` / `dr` → `decision`; `antipattern` → `lesson`.
407
422
 
408
423
  ```bash
409
424
  taskset document create <type> --title <title> [metadata options]
@@ -417,15 +432,19 @@ taskset document delete <document-id> [--type <type>] [--remove-dependencies] [-
417
432
  ```
418
433
 
419
434
  Create uses the type-specific template unless `--body` is supplied and accepts
420
- the same metadata options as `task create`. Import preserves the Markdown body
421
- and infers type from a recognized parent directory when possible. It copies by
422
- default; `--move` deletes the source only after the canonical document is
435
+ the same metadata options as `task create`, plus lesson/concern options:
436
+ `--severity`, repeatable `--related-skill`, repeatable `--pack`, `--class`, and
437
+ `--cadence`. Lesson/concern/audit templates are validated for required headings.
438
+ Import preserves the Markdown body and infers type from a recognized parent
439
+ directory when possible (`lessons/`, `concerns/`, `audits/` included). It copies
440
+ by default; `--move` deletes the source only after the canonical document is
423
441
  written successfully.
424
442
 
425
443
  List, show, update, status, and delete mirror the task commands, including
426
444
  search, filters, sort, impact, derived relationships, clear flags, and
427
- guarded deletion. Document statuses are `draft`, `ready`, `active`, `accepted`,
428
- `superseded`, and `archived`.
445
+ guarded deletion. Document list also accepts `--class` and `--severity`. Document
446
+ statuses are `draft`, `ready`, `active`, `accepted`, `superseded`, and
447
+ `archived`.
429
448
 
430
449
  Batch manifests contain an array of `create`, `import`, `update`, and `export`
431
450
  operations. Work is paced with bounded concurrency, results preserve manifest