@taskset/cli 6.0.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.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  title: Operate Taskset as an agent
3
- description: Plan, research, decide, and track repository work with the Taskset CLI, skill, and JSON contracts.
3
+ description: Plan, research, decide, operate, and track repository work with the Taskset CLI, skill, and JSON contracts.
4
4
  contentType: How-to
5
5
  navLabel: For Agents
6
6
  ---
@@ -9,7 +9,7 @@ navLabel: For Agents
9
9
 
10
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
11
 
12
- Taskset is not only a task tracker. You use it to capture plans, research, decisions, flows, runbooks, and the tasks that execute them in one Git-native graph.
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
13
 
14
14
  ## Load the skill first
15
15
 
@@ -51,18 +51,23 @@ No config file is required. `taskset init` creates `.taskset/` only. Pass `--con
51
51
  | Evidence, options, or a recommendation | `research` |
52
52
  | A lasting architectural or product choice | `decision` / `adr` |
53
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` |
54
57
  | Scoped execution with status and owners | `task` |
58
+ | Multi-task program health | parent task + `taskset task program` |
55
59
 
56
- Link documents and tasks with `--related`. Keep one-off scratch in the task body.
60
+ Link documents and tasks with `--related`. Keep one-off scratch in the task body. See [Memory model](../memory-model.md) for anti-examples.
57
61
 
58
62
  ## Core operating rules
59
63
 
60
64
  - Treat `.taskset/tasks/` and kind-specific document directories as the source of truth
61
65
  - Mutate through CLI commands when a command exists
62
- - Cite short hex ids such as `a1b2c3`, never filename sequence prefixes
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
63
68
  - Prefer `--json` for handoffs
64
69
  - Create follow-up tasks or checklist subtasks for newly discovered work
65
- - Create research, decision, runbook, story, or flow documents when work produces reusable evidence or lasting choices
70
+ - Create research, decision, runbook, story, flow, lesson, concern, or audit documents when work produces reusable evidence, lasting choices, recurring patterns, or residual risks
66
71
  - Keep statuses current mid-work
67
72
 
68
73
  ## Command map
@@ -73,27 +78,36 @@ Link documents and tasks with `--related`. Keep one-off scratch in the task body
73
78
  | Validate repository | `taskset doctor --json` |
74
79
  | List or search tasks | `taskset task list --search "terms" --json` |
75
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` |
76
83
  | Show one entity | `taskset task show your_task_id_here --json` |
77
84
  | Create executable work | `taskset task create --title "Describe the work"` |
78
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` |
79
89
  | Change status | `taskset task status your_task_id_here doing` |
80
90
  | Impact query | `taskset task list --file path/or/dir --impact --json` |
81
91
  | Repair and rebuild | `taskset sync --json` |
82
92
 
83
- Full contracts: [CLI reference](../cli-reference.md) and [Agent command contracts](commands.md).
93
+ Full contracts: [CLI reference](../cli-reference.md), [Agent command contracts](commands.md), and [Query recipes](query-recipes.md).
84
94
 
85
95
  ## Workflow checklist
86
96
 
87
97
  1. Confirm the repository root with `taskset config --json`
88
98
  2. Search existing tasks and documents before creating duplicates
89
- 3. Capture durable evidence or decisions as documents mid-work
99
+ 3. Capture durable evidence, decisions, lessons, or concerns as documents mid-work
90
100
  4. Create or update tasks for executable delivery
91
101
  5. Resolve ownership before mutating assigned work
92
- 6. Keep statuses current, then re-validate after edits
102
+ 6. Keep statuses current, then re-validate with `taskset doctor --json`
93
103
 
94
104
  ## Related pages
95
105
 
96
106
  - [Agent workflows](workflows.md)
97
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)
98
112
  - [Document types](../document-types.md)
99
113
  - [Task files](../task-files.md)
@@ -1,15 +1,19 @@
1
1
  # Taskset
2
2
 
3
- > Git-native Markdown workspace for planning, research, decisions, operations, and delivery.
3
+ > Git-native Markdown workspace for planning, research, decisions, operations, residual risk, and delivery.
4
4
 
5
- Taskset stores stories, flows, research, decisions, runbooks, and tasks under `.taskset/`. The CLI is published as `@taskset/cli` and runs through package runners or a global install. Config files are optional.
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
6
 
7
7
  ## For agents
8
8
 
9
9
  - [Operate Taskset as an agent](https://taskset.false.foundation/docs/agents)
10
10
  - [Follow agent workflows](https://taskset.false.foundation/docs/agents/workflows)
11
11
  - [Use Taskset command contracts](https://taskset.false.foundation/docs/agents/commands)
12
+ - [Query operational memory](https://taskset.false.foundation/docs/agents/query-recipes)
12
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)
13
17
  - [Understand task files](https://taskset.false.foundation/docs/task-files)
14
18
  - [CLI reference](https://taskset.false.foundation/docs/cli-reference)
15
19
 
@@ -18,6 +22,7 @@ Taskset stores stories, flows, research, decisions, runbooks, and tasks under `.
18
22
  - [Keep the whole delivery story beside the code](https://taskset.false.foundation/docs)
19
23
  - [Start a Taskset repository](https://taskset.false.foundation/docs/getting-started)
20
24
  - [Configure Taskset defaults](https://taskset.false.foundation/docs/configuration)
25
+ - [Taxonomy cookbook](https://taskset.false.foundation/docs/taxonomy-cookbook)
21
26
 
22
27
  ## Optional offline skill
23
28
 
@@ -26,3 +31,5 @@ After install, load `node_modules/@taskset/cli/skills/taskset/SKILL.md`, or inst
26
31
  ```text
27
32
  npx skills add FalseFoundation/taskset --skill taskset
28
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
+ ```
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  title: Follow agent workflows in Taskset
3
- description: Ownership checks, mid-work updates, documents, and monorepo habits for agent operators.
3
+ description: Ownership checks, mid-work updates, operational memory, and monorepo habits for agent operators.
4
4
  contentType: How-to
5
5
  navLabel: Agent Workflows
6
6
  ---
@@ -25,9 +25,11 @@ Matching ownership does not override blockers. A generic instruction such as “
25
25
  - Create child tasks (`--parent`) or checklist items (`- [ ]`) for newly discovered work
26
26
  - Check off finished checklist items as `- [x]`
27
27
  - Mark finished child tasks `done`
28
- - Create research, decision, runbook, story, or flow documents when evidence or lasting choices appear
29
- - Link documents and tasks with `--related`
30
- - Update a primary skill when the session designates one and a lasting lesson emerges
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`
31
33
 
32
34
  Do not leave discovered work only in chat.
33
35
 
@@ -35,8 +37,11 @@ Do not leave discovered work only in chat.
35
37
 
36
38
  1. Confirm acceptance criteria are met
37
39
  2. Confirm every tracked subtask is finished or intentionally resolved
38
- 3. Set the parent task to `done`
39
- 4. Run the repository’s relevant tests or `taskset doctor --json` when the change touched contracts or many files
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.
40
45
 
41
46
  ## Monorepo habits
42
47
 
@@ -44,7 +49,12 @@ Do not leave discovered work only in chat.
44
49
  - Record `--depends-on` only for real execution prerequisites
45
50
  - Attach the narrowest accurate `--file` or `--directory` scopes
46
51
  - Validate the changed package and affected dependents
52
+ - Reuse taxonomy labels and projects; do not invent one-off tags when allowlists exist
47
53
 
48
54
  ## Batch and sync
49
55
 
50
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).
@@ -7,7 +7,7 @@ navLabel: CLI Reference
7
7
 
8
8
  # Look up Taskset CLI commands
9
9
 
10
- The `taskset` command is a thin adapter over `@taskset/core` for the full Taskset surface: stories, flows, research, decisions, runbooks, and tasks. It parses arguments, validates options, calls core operations, and renders human 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
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.
13
13
 
@@ -82,13 +82,14 @@ Human output is the config file path when a config exists, or `defaults (<root-d
82
82
  taskset doctor [--json] [--cwd <path>]
83
83
  ```
84
84
 
85
- Validates the repository without modifying files. It scans canonical task
86
- 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.
87
88
 
88
89
  Human success output:
89
90
 
90
91
  ```text
91
- Taskset repository is valid (<count> tasks)
92
+ Taskset repository is valid (<count> tasks, <count> documents)
92
93
  ```
93
94
 
94
95
  Human failure output is tab-separated:
@@ -97,8 +98,8 @@ Human failure output is tab-separated:
97
98
  <code> <path-or-> <message> <remediation>
98
99
  ```
99
100
 
100
- JSON output is the full doctor result, including `valid`, `taskCount`, and
101
- diagnostics.
101
+ JSON output is the full doctor result, including `valid`, `taskCount`,
102
+ `documentCount`, and diagnostics. Warnings do not fail the command; errors do.
102
103
 
103
104
  ### `generate`
104
105
 
@@ -375,6 +376,19 @@ remove those inbound references and delete the target in one mutation.
375
376
  Human output is the deleted task ID. JSON output contains `deleted: true`
376
377
  alongside the deleted task record.
377
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
+
378
392
  ### `task migrate-ids`
379
393
 
380
394
  ```bash
@@ -403,7 +417,8 @@ sent to stderr.
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
@@ -16,6 +16,9 @@ Add `taskset.config.ts` when you need at least one of these:
16
16
  - A repository `project.name`
17
17
  - Different task creation defaults
18
18
  - A reduced or reordered status or priority vocabulary
19
+ - Closeout gates for parent/child completion, open concerns, or required lessons
20
+ - Taxonomy allowlists for labels, projects, or concern classes
21
+ - Extra doctor checks for ownerless concerns or stale research
19
22
 
20
23
  Create one during init:
21
24
 
@@ -41,6 +44,19 @@ export default defineConfig({
41
44
  statuses: ['todo', 'doing', 'blocked', 'done', 'canceled'],
42
45
  priorities: ['low', 'medium', 'high', 'urgent'],
43
46
  },
47
+ closeout: {
48
+ enforceChildCompletion: false,
49
+ blockDoneWithOpenConcerns: false,
50
+ requireLessonWhenLabeled: [],
51
+ },
52
+ taxonomy: {
53
+ // omit allowlists for permissive behavior
54
+ mode: 'error',
55
+ },
56
+ doctor: {
57
+ activeConcernRequiresOwner: false,
58
+ // staleResearchDays: 14,
59
+ },
44
60
  })
45
61
  ```
46
62
 
@@ -51,10 +67,14 @@ export default defineConfig({
51
67
  - `tasks.statuses` selects and orders the active status vocabulary from Taskset’s canonical values
52
68
  - `tasks.priorities` selects and orders the active priority vocabulary from Taskset’s canonical values
53
69
  - `urgent` is the highest supported priority
70
+ - `closeout.*` defaults to off / empty so existing repositories keep current done transitions
71
+ - `taxonomy.labels`, `projects`, and `concernClasses` are optional allowlists; omit them to stay permissive
72
+ - `taxonomy.mode` is `error` or `warn` when an allowlist is configured
73
+ - `doctor.activeConcernRequiresOwner` and `doctor.staleResearchDays` add optional diagnostics
54
74
  - Unknown fields, invalid enum values, empty names, and duplicate default labels or vocabulary values are rejected
55
75
  - The config file is trusted project TypeScript and may use erasable syntax supported by your Node version
56
76
 
57
- The config identifies behavior. It is not task storage. Canonical task state remains under `.taskset/tasks/`.
77
+ The config identifies behavior. It is not task storage. Canonical task and document state remains under `.taskset/`.
58
78
 
59
79
  ## Discovery
60
80
 
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  title: Choose a Taskset document type
3
- description: Canonical stories, flows, decisions, research, and runbooks.
3
+ description: Canonical stories, flows, decisions, research, runbooks, lessons, concerns, and audits.
4
4
  contentType: Conceptual
5
5
  navLabel: Document Types
6
6
  ---
7
7
 
8
8
  # Choose a Taskset document type
9
9
 
10
- Documents are how Taskset keeps product and engineering memory: what to build, what you learned, what you decided, and how to recover. Use them when the material should outlive a single task. Each type has strict common frontmatter and a body template suited to its purpose. Documents share planning, people, path, and relationship fields with tasks, and use document-specific statuses.
10
+ Documents are how Taskset keeps product, engineering, and operational memory: what to build, what you learned, what you decided, how to recover, which mistakes not to repeat, and which residual risks remain open. Use them when the material should outlive a single task. Each type has strict common frontmatter and a body template suited to its purpose. Documents share planning, people, path, and relationship fields with tasks, and use document-specific statuses.
11
11
 
12
12
  | Type | Directory | Template focus |
13
13
  | --- | --- | --- |
@@ -16,6 +16,9 @@ Documents are how Taskset keeps product and engineering memory: what to build, w
16
16
  | `decision` (`adr`, `dr`) | `.taskset/decisions/` | context, decision, alternatives, consequences |
17
17
  | `research` | `.taskset/research/` | question, sources, findings, recommendation |
18
18
  | `runbook` | `.taskset/runbooks/` | symptoms, checks, actions, rollback, escalation |
19
+ | `lesson` (`antipattern`) | `.taskset/lessons/` | trigger, incorrect/correct pattern, severity, prevention |
20
+ | `concern` | `.taskset/concerns/` | summary, class, trust boundary, residual risk, cadence |
21
+ | `audit` | `.taskset/audits/` | scope, method, findings, residual items, follow-ups |
19
22
 
20
23
  Create a document from its template:
21
24
 
@@ -23,15 +26,33 @@ Create a document from its template:
23
26
  taskset document create story --title "Member signs in via SSO"
24
27
  taskset document create flow --title "Recover a delayed deposit"
25
28
  taskset document create adr --title "Use transactional outbox"
26
- taskset document create research --title "Evaluate queue providers" --related your_task_id_here
29
+ taskset document create research --title "Evaluate cloud providers" --related your_task_id_here
27
30
  taskset document create runbook --title "Recover consumer lag"
31
+ taskset document create lesson --title "Capability flags are enablement only" --severity high --related your_task_id_here
32
+ taskset document create concern --title "Telegram capability must not grant CASL" --class authz --cadence on-release
33
+ taskset document create audit --title "Public route inventory"
28
34
  ```
29
35
 
30
36
  Document IDs are immutable 5-6 character lowercase hex values. Filenames keep a
31
37
  per-type display sequence and title slug, for example
32
38
  `.taskset/flows/0000001-member-signs-in-via-sso-a1b2c3.md`. Agents and commands
33
- reference the short `id`. Disposable metadata indexes for that kind live beside
34
- the files in `.taskset/flows/.generated/`.
39
+ use the short `id` in CLI flags and frontmatter relationships. The sequence
40
+ prefix is display metadata only. Markdown hyperlinks to the file must use the
41
+ repository-relative filepath. Disposable metadata indexes for that kind live
42
+ beside the files in `.taskset/flows/.generated/`.
43
+
44
+ Default statuses: `decision` → `accepted`; `runbook`, `lesson`, and `concern` →
45
+ `active`; other kinds → `draft`.
46
+
47
+ ## Kind-specific metadata
48
+
49
+ | Kind | Options |
50
+ | --- | --- |
51
+ | `lesson` | `--severity low\|medium\|high\|critical`, repeatable `--related-skill`, repeatable `--pack` |
52
+ | `concern` | `--class security\|privacy\|money\|authz\|concurrency\|ops\|compliance\|other`, `--cadence <value>` |
53
+
54
+ Clear lesson/concern scalars and arrays on update with `--clear-severity`,
55
+ `--clear-related-skills`, `--clear-packs`, `--clear-class`, and `--clear-cadence`.
35
56
 
36
57
  ## Query And Mutation
37
58
 
@@ -39,6 +60,8 @@ Documents support the same command surface as tasks:
39
60
 
40
61
  ```bash
41
62
  taskset document list research --search "queue" --owner platform --impact
63
+ taskset document list concern --directory apps/foo --status active --class authz --json
64
+ taskset document list lesson --search "casl" --severity high --json
42
65
  taskset document show <document-id> --type research --include-derived --json
43
66
  taskset document update <document-id> --status ready --label infra --file packages/core
44
67
  taskset document status <document-id> accepted --type decision
@@ -52,21 +75,23 @@ Statuses are `draft`, `ready`, `active`, `accepted`, `superseded`, and
52
75
  ## Import Existing Markdown
53
76
 
54
77
  Use `document import` when a repository already has material under paths such
55
- as `docs/stories`, `docs/flows`, `docs/adr`, `docs/research`, or
56
- `docs/runbooks`:
78
+ as `docs/stories`, `docs/flows`, `docs/adr`, `docs/research`, `docs/runbooks`,
79
+ `docs/lessons`, `docs/concerns`, or `docs/audits`:
57
80
 
58
81
  ```bash
59
82
  taskset document import docs/flows/0001-sign-in.md
60
83
  taskset document import docs/architecture/use-postgres.md --type decision
84
+ taskset document import docs/lessons/capability.md --move
61
85
  taskset document import docs/runbooks/consumer-lag.md --move
62
86
  ```
63
87
 
64
88
  The type is inferred from recognized parent directory names when `--type` is
65
89
  omitted. `adr`, `dr`, `decision`, and `decisions` all normalize to `decision`.
66
- The first H1 supplies the title unless `--title` is passed. Existing
67
- frontmatter is replaced with Taskset's canonical metadata while the Markdown
68
- body is preserved. Import copies by default; `--move` removes the source only
69
- after the canonical file has been written successfully.
90
+ `antipattern` / `lessons` normalize to `lesson`. The first H1 supplies the title
91
+ unless `--title` is passed. Existing frontmatter is replaced with Taskset's
92
+ canonical metadata while the Markdown body is preserved. Import copies by
93
+ default; `--move` removes the source only after the canonical file has been
94
+ written successfully.
70
95
 
71
96
  Use `document list [type]`, `document show <id>`, and `--json` for inspection
72
97
  and automation. Sequences are per type, so pass `--type` to `document show`
@@ -98,6 +123,7 @@ migrates legacy task and document IDs to short hex IDs, normalizes
98
123
  `{sequence}-{slug}-{id}.md` filenames, repairs duplicate sequence prefixes by
99
124
  `createdAt`, rewrites repository text references, refreshes data `.gitignore`
100
125
  rules for scoped `.generated/` directories, removes legacy global
101
- `.taskset/generated/`, and rebuilds generated views. Build outputs,
102
- dependencies, caches, snapshots, and Git internals are excluded from reference
103
- rewriting.
126
+ generated directories, and rebuilds disposable views.
127
+
128
+ For the chooser between task bodies and document kinds, see
129
+ [Memory model](memory-model.md).
@@ -74,7 +74,10 @@ taskset task list
74
74
  taskset document list --json
75
75
  ```
76
76
 
77
- You can read every file directly in the editor without the CLI. Cite entities by short hex `id`, never by filename sequence prefixes.
77
+ You can read every file directly in the editor without the CLI. Use short hex
78
+ `id` values in commands and `--related`. Filename sequence prefixes are display
79
+ metadata only. Markdown hyperlinks to entity or docs files must use the
80
+ repository-relative filepath (for example [document types](document-types.md)).
78
81
 
79
82
  ## Query and validate the graph
80
83
 
@@ -100,7 +103,9 @@ Completed and canceled tasks are terminal. Deletion fails while another task dep
100
103
  ## Next
101
104
 
102
105
  - [Choose a document type](document-types.md)
106
+ - [Choose memory layers](memory-model.md)
103
107
  - [Understand task files](task-files.md)
104
108
  - [Configure defaults](configuration.md)
105
109
  - [Use the complete CLI reference](cli-reference.md)
106
110
  - [Follow the agent guide](agents/index.md)
111
+ - [Query recipes for agents](agents/query-recipes.md)
package/docs/index.md CHANGED
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  title: Keep the whole delivery story beside the code
3
- description: Taskset stores plans, research, decisions, runbooks, and tasks as Markdown in your repository for agents and humans.
3
+ description: Taskset stores plans, research, decisions, runbooks, lessons, concerns, audits, and tasks as Markdown in your repository for agents and humans.
4
4
  contentType: Landing
5
5
  navLabel: Overview
6
6
  ---
7
7
 
8
8
  # Keep the whole delivery story beside the code
9
9
 
10
- Taskset is a local-first delivery workspace. You keep stories, research, decisions, flows, runbooks, and executable tasks as Markdown under `.taskset/`, so agents and humans share one reviewable source of truth.
10
+ Taskset is a local-first delivery workspace. You keep stories, research, decisions, flows, runbooks, lessons, concerns, audits, and executable tasks as Markdown under `.taskset/`, so agents and humans share one reviewable source of truth.
11
11
 
12
12
  Install the CLI as `@taskset/cli` from npm. Run it with `npx`, `pnpm dlx`, `yarn dlx`, `bunx`, a project dependency, or a global install.
13
13
 
@@ -17,6 +17,7 @@ Install the CLI as `@taskset/cli` from npm. Run it with `npx`, `pnpm dlx`, `yarn
17
17
  - **Learn**: research that captures evidence and recommendations
18
18
  - **Decide**: decisions and ADRs that lock lasting choices
19
19
  - **Operate**: runbooks that make recovery safe to repeat
20
+ - **Remember**: lessons, concerns, and audits for recurring patterns and residual risk
20
21
  - **Deliver**: tasks that carry ownership, status, dependencies, and code impact
21
22
 
22
23
  Documents preserve memory. Tasks move work. Relationships keep the graph honest.
@@ -37,7 +38,12 @@ The CLI initializes repositories, manages optional configuration, creates and qu
37
38
 
38
39
  - [Start a Taskset repository](getting-started.md)
39
40
  - [Choose a document type](document-types.md)
41
+ - [Choose memory layers](memory-model.md)
42
+ - [Track security and compliance](security-compliance-tracking.md)
43
+ - [Follow the agent closeout contract](agent-closeout.md)
44
+ - [Control taxonomy](taxonomy-cookbook.md)
40
45
  - [Understand task files](task-files.md)
41
46
  - [Configure defaults when you need them](configuration.md)
42
47
  - [Look up every CLI command](cli-reference.md)
43
48
  - [Read agent workflows and contracts](agents/index.md)
49
+ - [Copy-paste agent query recipes](agents/query-recipes.md)
@@ -61,7 +61,9 @@ The current surface includes:
61
61
 
62
62
  - repository initialization and optional configuration
63
63
  - tasks with lifecycle, dependencies, search, and impact queries
64
- - stories, flows, decisions, research, and runbooks with the same query and mutation family
64
+ - stories, flows, decisions, research, runbooks, lessons, concerns, and audits
65
+ with the same query and mutation family, plus program rollups and optional
66
+ closeout gates
65
67
  - validation, diagnostics, generated views, snapshots, and sync
66
68
  - packaged agent skills and dual-audience documentation
67
69
 
@@ -0,0 +1,58 @@
1
+ ---
2
+ title: Choose Taskset memory layers
3
+ description: When to use task bodies versus research, decisions, runbooks, lessons, and concerns.
4
+ contentType: Conceptual
5
+ navLabel: Memory Model
6
+ ---
7
+
8
+ # Choose Taskset memory layers
9
+
10
+ Taskset keeps three memory layers in one `.taskset/` store:
11
+
12
+ | Layer | Kinds | Question it answers |
13
+ | --- | --- | --- |
14
+ | Delivery | tasks (+ checklist subtasks) | What work is open, blocked, or done? |
15
+ | Decision | research, decision/adr, runbook, story, flow | What did we learn, choose, or need to operate? |
16
+ | Operational | lesson, concern, audit | What recurring mistakes, open risks, and spot-checks must future agents respect? |
17
+
18
+ Do not invent freeform kinds such as `note`, `rfc`, `epic`, or `spec`. Map those intents onto the kinds above.
19
+
20
+ ## Quick chooser
21
+
22
+ | Situation | Put it here |
23
+ | --- | --- |
24
+ | One-off execution steps for the current outcome | Task body checklist |
25
+ | Independently owned or sequenced deliverable | Child task (`--parent`) |
26
+ | Options, evidence, recommendation still forming | `research` |
27
+ | Lasting architectural or product choice | `decision` / `adr` |
28
+ | Repeatable recovery or ops procedure | `runbook` |
29
+ | User outcome / journey context | `story` / `flow` |
30
+ | Recurring mistake or correct pattern future agents must not rediscover | `lesson` (`antipattern` alias) |
31
+ | Open residual risk (security, authz, money, ops, …) | `concern` |
32
+ | Structured inventory or spot-check pass/fail evidence | `audit` |
33
+
34
+ ## Anti-examples
35
+
36
+ Bad: close a security task with the lesson only in chat or the finished task body.
37
+
38
+ Good: create a `lesson`, `--related` the task (and concern if any), and if `--related-skill` is set, update that skill in the same change.
39
+
40
+ Bad: track “remaining authz risk” as an unfinished checklist item forever.
41
+
42
+ Good: create a `concern` with class, trust boundary, residual risk, and review cadence; keep it `active` until mitigated or formally `accepted`.
43
+
44
+ Bad: dump an ADR program into one epic-shaped Markdown note.
45
+
46
+ Good: use a parent task as the program root, child tasks for workstreams, related `concern` / `research` / `audit` documents for residual risk and evidence, and `taskset task program <parent-id> --json` for rollup.
47
+
48
+ Bad: edit a consumer primary skill automatically from Taskset.
49
+
50
+ Good: store the lesson in Taskset; update the skill only when the consumer opts in via `--related-skill` (or an explicit later promote helper). Taskset never auto-edits skills by default.
51
+
52
+ ## Related docs
53
+
54
+ - [Document types](document-types.md)
55
+ - [Security and compliance tracking](security-compliance-tracking.md)
56
+ - [Agent closeout contract](agent-closeout.md)
57
+ - [Taxonomy cookbook](taxonomy-cookbook.md)
58
+ - [Query recipes for agents](agents/query-recipes.md)