@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
@@ -1,69 +1,52 @@
1
1
  ---
2
2
  title: Documentation
3
- description: How user Markdown becomes the Taskset documentation website.
3
+ description: How Markdown becomes the Taskset documentation website for humans, agents, and maintainers.
4
4
  ---
5
5
 
6
6
  # Documentation
7
7
 
8
- The root `docs/` directory is canonical for user-facing guidance and maintainer
9
- guidance. Top-level pages are for users. Repository maintenance material belongs
10
- under `docs/maintainers/`.
8
+ The root `docs/` directory is canonical. Split audiences deliberately:
11
9
 
12
- ## Recommended Website Stack
10
+ - Humans: top-level usage pages
11
+ - Agents: `docs/agents/`, root `AGENTS.md`, and packaged `skills/`
12
+ - Maintainers: `docs/maintainers/`
13
13
 
14
- Use Next.js App Router, Nextra, `nextra-theme-docs`, and
15
- `nextra-theme-blog` in `apps/www`.
14
+ Follow the [Vercel writing guidelines](https://github.com/vercel-labs/writing-guidelines) for public prose.
15
+
16
+ ## Recommended website stack
17
+
18
+ Use Next.js App Router, Nextra, `nextra-theme-docs`, and `nextra-theme-blog` in `apps/www`.
16
19
 
17
20
  Why:
18
21
 
19
22
  - `apps/www` owns the public documentation renderer
20
23
  - the repository already has a Next.js TypeScript preset
21
- - Nextra supplies Markdown routing, documentation navigation, blog layout, and
22
- search
24
+ - Nextra supplies Markdown routing, documentation navigation, blog layout, and search
23
25
  - Markdown remains the source rather than a CMS database
24
26
 
25
- ## Content Rules
26
-
27
- - Use `.md` unless the page needs an interactive component.
28
- - Add `title` and `description` frontmatter.
29
- - Keep conceptual pages separate from current command reference.
30
- - Mark future behavior as planned.
31
- - Link to source files with repository-relative paths.
32
- - Keep generated API reference separate from hand-authored concepts.
33
- - Keep architecture, ADRs, development workflows, and technology preferences
34
- under `docs/maintainers/`, not in top-level usage navigation.
35
- - Keep chronological release and project posts under `apps/www/posts/`.
36
- - Require `title`, `description`, and `date` frontmatter for blog posts.
37
- - Register each post in `apps/www/src/blog/posts.ts` so the static build can
38
- enumerate `/posts/[slug]`.
27
+ ## Content rules
28
+
29
+ - Use `.md` unless the page needs an interactive component
30
+ - Add `title`, `description`, and `contentType` frontmatter for usage and agent pages
31
+ - Keep conceptual pages separate from current command reference
32
+ - Mark future behavior as planned
33
+ - Link to source files with repository-relative paths
34
+ - Keep generated API reference separate from hand-authored concepts
35
+ - Keep architecture, ADRs, development workflows, and technology preferences under `docs/maintainers/`
36
+ - Keep agent operating contracts under `docs/agents/`
37
+ - Keep `/llms.txt` in `apps/www/public/llms.txt`, not under `docs/`, so Nextra does not import it as a page module
38
+ - Keep chronological release and project posts under `apps/www/posts/`
39
+ - Require `title`, `description`, and `date` frontmatter for blog posts
40
+ - Register each post in `apps/www/src/blog/posts.ts` so the static build can enumerate `/posts/[slug]`
39
41
 
40
42
  ## Integration
41
43
 
42
- `apps/www/content` is a repository-relative symlink to `../../docs`. Nextra's
43
- standard content-directory loader renders that source without copying it or
44
- maintaining a second source tree. The top-level usage docs route filters
45
- `docs/maintainers/` out of its primary navigation, and the dedicated
46
- `/maintainers` route renders the same canonical maintainer Markdown with its own
47
- page map.
48
-
49
- Usage docs, maintainer docs, and blog pages use separate route layouts and
50
- receive their own MDX component sets. Do not merge docs and blog themes in the
51
- global `mdx-components.tsx`; their wrapper components own different page
52
- contracts. Blog Markdown is loaded from `apps/www/posts/` through the app-local
53
- post registry.
54
-
55
- Run the Next.js development and production builds in webpack mode. Turbopack
56
- does not reliably discover newly added Markdown through the external content
57
- symlink.
58
-
59
- Keep stable public site metadata such as `docsRepositoryBase` in the owning app
60
- configuration. Do not add a root `.env` for a non-secret constant. Use an
61
- app-local environment variable and checked-in `.env.example` only when a value
62
- genuinely differs by deployment.
63
-
64
- The website may generate `.next/`, search data, and build output. These are
65
- derived and ignored. Root `docs/` Markdown remains authoritative for
66
- documentation, and `apps/www/posts/` Markdown remains authoritative for blog
67
- posts.
44
+ `apps/www/content` is a repository-relative symlink to `../../docs`. Nextra’s standard content-directory loader renders that source without copying it. The top-level usage docs route filters `docs/maintainers/` out of its primary navigation, and the dedicated `/maintainers` route renders maintainer Markdown with its own page map.
45
+
46
+ Usage docs, maintainer docs, and blog pages use separate route layouts and receive their own MDX component sets. Do not merge docs and blog themes in the global `mdx-components.tsx`.
47
+
48
+ Run the Next.js development and production builds in webpack mode. Turbopack does not reliably discover newly added Markdown through the external content symlink.
49
+
50
+ The website may generate `.next/`, search data, and build output. These are derived and ignored. Root `docs/` Markdown remains authoritative for documentation, and `apps/www/posts/` Markdown remains authoritative for blog posts.
68
51
 
69
52
  See [ADR 0001](../architecture/decisions/0001-documentation-platform.md).
@@ -5,9 +5,7 @@ description: Repository maintenance documentation for Taskset contributors.
5
5
 
6
6
  # Taskset Maintainer Documentation
7
7
 
8
- This section contains repository maintenance material. It is intentionally
9
- separate from the primary user guides while remaining available in the same
10
- Nextra documentation site.
8
+ This section contains repository maintenance material for the Taskset delivery workspace. It stays separate from the primary human and agent guides while remaining available in the same Nextra documentation site.
11
9
 
12
10
  ## Contents
13
11
 
@@ -7,9 +7,7 @@ description: Maintainer-facing product direction for Taskset.
7
7
 
8
8
  ## Origin
9
9
 
10
- Taskset began from a simple need: keep task context offline and inline with the
11
- code so developers and AI assistants can understand work immediately without
12
- switching to a disconnected project-management database.
10
+ Taskset began from a need to keep delivery context offline and inline with the code. Tasks alone were not enough. Teams and agents also needed stories, research, decisions, flows, and runbooks that travel with the repository instead of living in a disconnected project-management database.
13
11
 
14
12
  ## Vision
15
13
 
@@ -17,18 +15,15 @@ Taskset aims to become the Git-native operating system for software delivery.
17
15
 
18
16
  ## Mission
19
17
 
20
- Store planning, execution, and project knowledge as human-readable repository
21
- files, then provide focused interfaces over that shared task graph.
18
+ Store planning, learning, decisions, operations, and execution as human-readable repository files, then provide focused interfaces over that shared work graph.
22
19
 
23
20
  ## Product Goals
24
21
 
25
- - Accelerate delivery by reducing context switching.
26
- - Give developers immediate awareness of related tasks, dependencies, specs,
27
- decisions, and releases.
28
- - Give AI systems direct, structured, reviewable project context.
29
- - Make monorepos, packages, applications, and code paths first-class.
30
- - Let managers and stakeholders view repository-backed information without
31
- creating another source of truth.
22
+ - Accelerate delivery by reducing context switching
23
+ - Give developers immediate awareness of related tasks, dependencies, specs, decisions, and releases
24
+ - Give AI systems direct, structured, reviewable project context across plans and execution
25
+ - Make monorepos, packages, applications, and code paths first-class
26
+ - Let managers and stakeholders view repository-backed information without creating another source of truth
32
27
 
33
28
  ## Principles
34
29
 
@@ -38,39 +33,38 @@ Core workflows must work from a local repository without a network service.
38
33
 
39
34
  ### Inline with code
40
35
 
41
- Project context belongs beside the code it affects and travels with the
42
- repository.
36
+ Project context belongs beside the code it affects and travels with the repository.
43
37
 
44
38
  ### Human and AI readable
45
39
 
46
- Markdown carries durable prose. Structured frontmatter carries data that tools
47
- can validate and query.
40
+ Markdown carries durable prose. Structured frontmatter carries data that tools can validate and query.
48
41
 
49
42
  ### Git native
50
43
 
51
- Commits, branches, pull requests, diffs, and reviews are normal collaboration
52
- mechanisms.
44
+ Commits, branches, pull requests, diffs, and reviews are normal collaboration mechanisms.
53
45
 
54
46
  ### One source of truth
55
47
 
56
- Every interface reads and changes the same canonical `.taskset/` files through
57
- the same domain rules.
48
+ Every interface reads and changes the same canonical `.taskset/` files through the same domain rules.
58
49
 
59
- ### Developer first
50
+ ### Agent first, human readable
60
51
 
61
- Taskset proves developer workflows before broad enterprise planning features.
52
+ Taskset optimizes distribution, discovery, and docs for agent operators while keeping Markdown reviewable by humans.
62
53
 
63
- ## Near-Term Scope
54
+ ### Memory and execution together
64
55
 
65
- The MVP should implement:
56
+ Documents preserve product and engineering memory. Tasks carry ownership, status, and delivery. Relationships bind them into one graph.
66
57
 
67
- - repository initialization
68
- - task creation, listing, display, editing, and removal
69
- - lifecycle transitions
70
- - deterministic Markdown parsing and serialization
71
- - validation and repository diagnostics
72
- - basic search and filtering
73
- - dependency integrity
58
+ ## Current product surface
74
59
 
75
- TUI, MCP, extension, Kanban, Office, and integrations follow after the file and
76
- core contracts are reliable.
60
+ The current surface includes:
61
+
62
+ - repository initialization and optional configuration
63
+ - tasks with lifecycle, dependencies, search, and impact queries
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
67
+ - validation, diagnostics, generated views, snapshots, and sync
68
+ - packaged agent skills and dual-audience documentation
69
+
70
+ TUI, MCP, extension, Kanban, Office, and integrations build on the same file and core contracts.
@@ -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)
@@ -0,0 +1,107 @@
1
+ ---
2
+ title: Track security and compliance in Taskset
3
+ description: Model ADR programs, audits, residual risk, and continuous inventories with concerns, lessons, and program rollups.
4
+ contentType: How-to
5
+ navLabel: Security Tracking
6
+ ---
7
+
8
+ # Track security and compliance in Taskset
9
+
10
+ Use Taskset’s operational memory kinds for security programs without a second tracker.
11
+
12
+ ## Model
13
+
14
+ | Artifact | Kind | Role |
15
+ | --- | --- | --- |
16
+ | Program root | Parent task (optional `program` label/project) | Rollup + closeout owner |
17
+ | Workstreams | Child tasks | Independently trackable delivery |
18
+ | Design choices | `decision` / `adr` | Lasting accepted choices |
19
+ | Spot checks | `audit` | Inventory / matrix pass-fail evidence |
20
+ | Residual risk | `concern` | Living open-risk register |
21
+ | Recurring failure modes | `lesson` | Prevent rediscovery |
22
+
23
+ ## Create a concern
24
+
25
+ ```bash
26
+ taskset document create concern \
27
+ --title "Telegram capability must not grant CASL" \
28
+ --class authz \
29
+ --cadence on-release \
30
+ --label security \
31
+ --directory apps/bot \
32
+ --related <task-id> \
33
+ --json
34
+ ```
35
+
36
+ Concern statuses:
37
+
38
+ - open work → `draft` / `ready` / `active`
39
+ - mitigated or formally accepted → `accepted`
40
+ - replaced → `superseded`
41
+ - retired → `archived`
42
+
43
+ ## Create a lesson
44
+
45
+ ```bash
46
+ taskset document create lesson \
47
+ --title "Capability flags are enablement only" \
48
+ --severity high \
49
+ --related-skill .agents/skills/security/SKILL.md \
50
+ --pack security \
51
+ --related <concern-or-task-id> \
52
+ --json
53
+ ```
54
+
55
+ When `--related-skill` is present, agents should update that skill in the same change. Taskset stores the evidence and pattern; it does not auto-edit the skill.
56
+
57
+ ## Audits
58
+
59
+ Prefer the `audit` kind for structured inventories:
60
+
61
+ ```bash
62
+ taskset document create audit --title "Public route inventory" --related <program-task-id> --json
63
+ ```
64
+
65
+ Template covers scope, method, findings (`pass` | `fail` | `residual`), residual items, required follow-ups, and next due date.
66
+
67
+ ## Program health and closeout
68
+
69
+ ```bash
70
+ taskset task program <parent-id> --json
71
+ taskset doctor --json
72
+ ```
73
+
74
+ Optional closeout gates in `taskset.config.ts` (default off):
75
+
76
+ ```typescript
77
+ import { defineConfig } from '@taskset/cli'
78
+
79
+ export default defineConfig({
80
+ closeout: {
81
+ enforceChildCompletion: true,
82
+ blockDoneWithOpenConcerns: true,
83
+ requireLessonWhenLabeled: ['requires-lesson'],
84
+ },
85
+ taxonomy: {
86
+ labels: ['security', 'trust-boundary', 'public-ingress', 'authz', 'concurrency'],
87
+ projects: ['platform', 'bot'],
88
+ concernClasses: ['security', 'privacy', 'authz', 'concurrency', 'ops', 'compliance'],
89
+ mode: 'error',
90
+ },
91
+ doctor: {
92
+ activeConcernRequiresOwner: true,
93
+ staleResearchDays: 14,
94
+ },
95
+ })
96
+ ```
97
+
98
+ ## Example label set
99
+
100
+ Reuse stable taxonomy instead of inventing labels each task:
101
+
102
+ - `trust-boundary`
103
+ - `public-ingress`
104
+ - `authz`
105
+ - `concurrency`
106
+ - `adr-NNNN` (link-style labels for named ADRs)
107
+ - `requires-lesson` (closeout gate trigger when configured)
@@ -1,16 +1,19 @@
1
1
  ---
2
- title: Task Files
2
+ title: Understand Taskset task files
3
3
  description: The canonical Markdown representation for Taskset work items.
4
+ contentType: Conceptual
5
+ navLabel: Task Files
4
6
  ---
5
7
 
6
- # Task Files
8
+ # Understand Taskset task files
7
9
 
8
- Task files live under `.taskset/tasks/`. YAML frontmatter owns structured
9
- metadata and the Markdown body owns durable human context.
10
+ Tasks are the executable layer of Taskset. Use them to carry ownership, status, dependencies, and code impact for delivery work. Pair them with [stories, research, decisions, flows, runbooks, lessons, concerns, and audits](document-types.md) when the surrounding memory should stay durable. For multi-task programs, use `taskset task program <parent-id> --json`.
11
+
12
+ Task files live under `.taskset/tasks/`. YAML frontmatter owns structured metadata. The Markdown body owns durable human context for that piece of execution.
10
13
 
11
14
  ```markdown
12
15
  ---
13
- id: 0000001-add-task-validation
16
+ id: a1b2c3
14
17
  title: Add task validation
15
18
  status: doing
16
19
  priority: high
@@ -48,9 +51,10 @@ Explain why the task exists.
48
51
  ## Canonical Data
49
52
 
50
53
  Required fields are `id`, `title`, `status`, `createdAt`, and `updatedAt`.
51
- Task IDs are immutable seven-digit sequences plus a lowercase title slug, such
52
- as `0000001-add-task-validation`. The sequence prevents title collisions while
53
- the slug keeps filenames recognizable.
54
+ Task IDs are immutable 5-6 character lowercase hex values, such as `a1b2c3`.
55
+ Filenames keep a separate display sequence and title slug:
56
+ `0000001-add-task-validation-a1b2c3.md`. Agents and commands reference the short
57
+ `id`, never the mutable sequence prefix.
54
58
 
55
59
  Task files use one strict versionless metadata shape. Optional fields:
56
60
 
@@ -74,10 +78,12 @@ back to deterministic task ID ordering.
74
78
 
75
79
  ## Compatibility Cutover
76
80
 
77
- Legacy `TS-` ULIDs remain readable so a repository can migrate safely. Run
78
- `taskset task migrate-ids` once to atomically rename task files and rewrite all
79
- `dependsOn`, `related`, `duplicates`, and `parent` references. The command
80
- prints the old-to-new mapping for updating references outside `.taskset/`.
81
+ Legacy `TS-` ULIDs and sequential `0000001-title` IDs remain readable so a
82
+ repository can migrate safely. Run `taskset sync` or `taskset task migrate-ids`
83
+ to atomically assign short hex IDs, normalize filenames to
84
+ `{sequence}-{slug}-{id}.md`, repair duplicate sequence prefixes by `createdAt`,
85
+ and rewrite relationships plus repository text references. The command prints
86
+ the old-to-new mapping for any ID rewrites.
81
87
 
82
88
  Task metadata is versionless. Versioned task frontmatter is invalid input and
83
89
  fails with a schema diagnostic rather than being silently rewritten.
@@ -126,7 +132,7 @@ text, file, and directory filters. Numeric and timestamp ranges are inclusive:
126
132
  taskset task list --file packages/core --impact --json
127
133
  taskset task list --sort order
128
134
  taskset task list --estimate-min 30 --estimate-max 120 --risk high
129
- taskset task list --duplicate 0000001-add-task-validation
135
+ taskset task list --duplicate a1b2c3
130
136
  ```
131
137
 
132
138
  Repeated enum, person, project, file, and directory values use OR within the
@@ -0,0 +1,59 @@
1
+ ---
2
+ title: Control Taskset taxonomy
3
+ description: Allowlists for labels, projects, and concern classes with doctor enforcement.
4
+ contentType: How-to
5
+ navLabel: Taxonomy Cookbook
6
+ ---
7
+
8
+ # Control Taskset taxonomy
9
+
10
+ Without allowlists, Taskset accepts any trimmed label, project, or concern class from the built-in concern vocabulary. Configure allowlists when discovery drift becomes expensive.
11
+
12
+ ## Config
13
+
14
+ ```typescript
15
+ import { defineConfig } from '@taskset/cli'
16
+
17
+ export default defineConfig({
18
+ taxonomy: {
19
+ labels: [
20
+ 'security',
21
+ 'trust-boundary',
22
+ 'public-ingress',
23
+ 'authz',
24
+ 'concurrency',
25
+ 'requires-lesson',
26
+ 'program',
27
+ ],
28
+ projects: ['platform', 'bot', 'wallet'],
29
+ concernClasses: ['security', 'privacy', 'authz', 'concurrency', 'ops', 'compliance', 'money'],
30
+ mode: 'error', // or 'warn'
31
+ },
32
+ })
33
+ ```
34
+
35
+ Rules:
36
+
37
+ - Empty / omitted allowlists keep permissive behavior.
38
+ - `concernClasses` values must be from the canonical set: `security`, `privacy`, `money`, `authz`, `concurrency`, `ops`, `compliance`, `other`.
39
+ - `mode: 'error'` rejects create/update mutations with unknown values and fails doctor.
40
+ - `mode: 'warn'` allows mutations; doctor reports `unknown-taxonomy` warnings and still exits `0` when no errors exist.
41
+
42
+ ## Example security taxonomy
43
+
44
+ | Label / class | Use for |
45
+ | --- | --- |
46
+ | `trust-boundary` | Cross-plane trust assumptions |
47
+ | `public-ingress` | Unauthenticated or internet-facing entry |
48
+ | `authz` | Authorization grants and checks |
49
+ | `concurrency` | Race / idempotency hazards |
50
+ | `adr-NNNN` | Work tied to a named ADR |
51
+ | `requires-lesson` | Closeout must produce a related `lesson` when closeout config enables it |
52
+
53
+ ## Doctor
54
+
55
+ ```bash
56
+ taskset doctor --json
57
+ ```
58
+
59
+ Look for `unknown-taxonomy`, `missing-template-heading`, `missing-reference`, `closeout-gap`, `missing-owner`, and `stale-research` diagnostics.
package/package.json CHANGED
@@ -2,8 +2,8 @@
2
2
  "name": "@taskset/cli",
3
3
  "type": "module",
4
4
  "private": false,
5
- "version": "5.1.0",
6
- "description": "The scriptable command-line interface for Taskset.",
5
+ "version": "6.1.0",
6
+ "description": "CLI for Taskset: plan, research, decide, operate, and track repository work as Markdown.",
7
7
  "license": "MIT",
8
8
  "author": {
9
9
  "name": "junkieshuffle",
@@ -46,8 +46,8 @@
46
46
  },
47
47
  "dependencies": {
48
48
  "zod": "4.6.5",
49
- "@taskset/contracts": "5.0.0",
50
- "@taskset/core": "5.0.0"
49
+ "@taskset/core": "6.1.0",
50
+ "@taskset/contracts": "6.1.0"
51
51
  },
52
52
  "devDependencies": {
53
53
  "@types/node": "^26.6.3",