@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,13 +1,32 @@
1
1
  ---
2
- title: Configuration
3
- description: How taskset.config.ts identifies and configures a Taskset repository.
2
+ title: Configure Taskset defaults
3
+ description: Optionally add taskset.config.ts to overlay defaults and vocabulary on a `.taskset/` repository.
4
+ contentType: How-to
5
+ navLabel: Configuration
4
6
  ---
5
7
 
6
- # Configuration
8
+ # Configure Taskset defaults
7
9
 
8
- Taskset usage begins with `taskset.config.ts` at the repository root. Commands
9
- started in nested packages or directories walk upward until they find this
10
- file.
10
+ Taskset repositories are identified by a `.taskset/` directory. `taskset.config.ts` is optional. When the file is absent, built-in statuses, priorities, and creation defaults apply.
11
+
12
+ ## When to add a config file
13
+
14
+ Add `taskset.config.ts` when you need at least one of these:
15
+
16
+ - A repository `project.name`
17
+ - Different task creation defaults
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
22
+
23
+ Create one during init:
24
+
25
+ ```bash
26
+ taskset init --config
27
+ ```
28
+
29
+ Or author the file beside `.taskset/`:
11
30
 
12
31
  ```typescript
13
32
  import { defineConfig } from '@taskset/cli'
@@ -25,37 +44,40 @@ export default defineConfig({
25
44
  statuses: ['todo', 'doing', 'blocked', 'done', 'canceled'],
26
45
  priorities: ['low', 'medium', 'high', 'urgent'],
27
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
+ },
28
60
  })
29
61
  ```
30
62
 
31
63
  ## Contract
32
64
 
33
- - `project.name` is optional repository metadata.
34
- - `tasks.defaults.status`, `priority`, and `labels` are optional defaults used
35
- by task creation.
36
- - `tasks.statuses` selects and orders the repository's active status vocabulary
37
- from Taskset's canonical values. Task creation, updates, lifecycle changes,
38
- listing, generated views, and diagnostics reject or report task statuses
39
- outside that list. The default status must be included.
40
- - `tasks.priorities` selects and orders the repository's active priority
41
- vocabulary from Taskset's canonical values. Task creation rejects a priority
42
- outside that list, and the default priority must be included.
43
- - `urgent` is the highest supported priority. Taskset does not maintain a
44
- separate urgency field because two overlapping importance scales make task
45
- ordering harder to understand and keep consistent.
46
- - Unknown fields, invalid enum values, empty names, and duplicate default
47
- labels or vocabulary values are rejected.
48
- - The config file is executable trusted project code and may use erasable
49
- TypeScript syntax supported by the repository's Node version.
50
-
51
- The config identifies behavior; it is not task storage. Canonical task state
52
- remains under `.taskset/tasks/`, regardless of configuration.
65
+ - `project.name` is optional repository metadata
66
+ - `tasks.defaults.status`, `priority`, and `labels` are optional creation defaults
67
+ - `tasks.statuses` selects and orders the active status vocabulary from Taskset’s canonical values
68
+ - `tasks.priorities` selects and orders the active priority vocabulary from Taskset’s canonical values
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
74
+ - Unknown fields, invalid enum values, empty names, and duplicate default labels or vocabulary values are rejected
75
+ - The config file is trusted project TypeScript and may use erasable syntax supported by your Node version
76
+
77
+ The config identifies behavior. It is not task storage. Canonical task and document state remains under `.taskset/`.
53
78
 
54
79
  ## Discovery
55
80
 
56
- `taskset init` creates a minimal config when one does not exist and initializes
57
- `.taskset/tasks/`. Other commands require a discoverable config and report an
58
- error when run outside a Taskset repository.
81
+ Commands started in nested directories walk upward until they find `.taskset/`. If `taskset.config.ts` exists at that root, Taskset loads and validates it. Otherwise it uses built-in defaults.
59
82
 
60
- Use `taskset config --json` to inspect the discovered root and resolved
61
- defaults.
83
+ Use `taskset config --json` to inspect the discovered root, whether a config file is present, and the resolved defaults.
@@ -1,14 +1,13 @@
1
1
  ---
2
- title: Document Types
3
- description: Canonical stories, flows, decisions, research, and runbooks.
2
+ title: Choose a Taskset document type
3
+ description: Canonical stories, flows, decisions, research, runbooks, lessons, concerns, and audits.
4
+ contentType: Conceptual
5
+ navLabel: Document Types
4
6
  ---
5
7
 
6
- # Document Types
8
+ # Choose a Taskset document type
7
9
 
8
- Taskset stores durable project context beside tasks without forcing every note
9
- into a task lifecycle. Each type has strict common frontmatter and a body
10
- template suited to its purpose. Documents use the same planning, people, path,
11
- and relationship metadata fields as tasks, with 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.
12
11
 
13
12
  | Type | Directory | Template focus |
14
13
  | --- | --- | --- |
@@ -17,6 +16,9 @@ and relationship metadata fields as tasks, with document-specific statuses.
17
16
  | `decision` (`adr`, `dr`) | `.taskset/decisions/` | context, decision, alternatives, consequences |
18
17
  | `research` | `.taskset/research/` | question, sources, findings, recommendation |
19
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 |
20
22
 
21
23
  Create a document from its template:
22
24
 
@@ -24,13 +26,33 @@ Create a document from its template:
24
26
  taskset document create story --title "Member signs in via SSO"
25
27
  taskset document create flow --title "Recover a delayed deposit"
26
28
  taskset document create adr --title "Use transactional outbox"
27
- taskset document create research --title "Evaluate queue providers" --related <task-id>
29
+ taskset document create research --title "Evaluate cloud providers" --related your_task_id_here
28
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"
29
34
  ```
30
35
 
31
- IDs and filenames use a per-type seven-digit sequence and title slug, for
32
- example `.taskset/flows/0000001-member-signs-in-via-sso.md`. Disposable metadata
33
- indexes for that kind live beside the files in `.taskset/flows/.generated/`.
36
+ Document IDs are immutable 5-6 character lowercase hex values. Filenames keep a
37
+ per-type display sequence and title slug, for example
38
+ `.taskset/flows/0000001-member-signs-in-via-sso-a1b2c3.md`. Agents and commands
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`.
34
56
 
35
57
  ## Query And Mutation
36
58
 
@@ -38,6 +60,8 @@ Documents support the same command surface as tasks:
38
60
 
39
61
  ```bash
40
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
41
65
  taskset document show <document-id> --type research --include-derived --json
42
66
  taskset document update <document-id> --status ready --label infra --file packages/core
43
67
  taskset document status <document-id> accepted --type decision
@@ -51,21 +75,23 @@ Statuses are `draft`, `ready`, `active`, `accepted`, `superseded`, and
51
75
  ## Import Existing Markdown
52
76
 
53
77
  Use `document import` when a repository already has material under paths such
54
- as `docs/stories`, `docs/flows`, `docs/adr`, `docs/research`, or
55
- `docs/runbooks`:
78
+ as `docs/stories`, `docs/flows`, `docs/adr`, `docs/research`, `docs/runbooks`,
79
+ `docs/lessons`, `docs/concerns`, or `docs/audits`:
56
80
 
57
81
  ```bash
58
82
  taskset document import docs/flows/0001-sign-in.md
59
83
  taskset document import docs/architecture/use-postgres.md --type decision
84
+ taskset document import docs/lessons/capability.md --move
60
85
  taskset document import docs/runbooks/consumer-lag.md --move
61
86
  ```
62
87
 
63
88
  The type is inferred from recognized parent directory names when `--type` is
64
89
  omitted. `adr`, `dr`, `decision`, and `decisions` all normalize to `decision`.
65
- The first H1 supplies the title unless `--title` is passed. Existing
66
- frontmatter is replaced with Taskset's canonical metadata while the Markdown
67
- body is preserved. Import copies by default; `--move` removes the source only
68
- 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.
69
95
 
70
96
  Use `document list [type]`, `document show <id>`, and `--json` for inspection
71
97
  and automation. Sequences are per type, so pass `--type` to `document show`
@@ -82,8 +108,8 @@ safe for automation.
82
108
  [
83
109
  { "action": "create", "input": { "type": "story", "title": "Member upgrades" } },
84
110
  { "action": "import", "sourcePath": "docs/flows/checkout.md", "options": { "type": "flow" } },
85
- { "action": "update", "id": "0000001-member-upgrades", "type": "story", "input": { "status": "ready" } },
86
- { "action": "export", "id": "0000001-member-upgrades", "type": "story", "targetPath": "exports/member-upgrades.md" }
111
+ { "action": "update", "id": "a1b2c3", "type": "story", "input": { "status": "ready" } },
112
+ { "action": "export", "id": "a1b2c3", "type": "story", "targetPath": "exports/member-upgrades.md" }
87
113
  ]
88
114
  ```
89
115
 
@@ -93,8 +119,11 @@ taskset sync --concurrency 8
93
119
  ```
94
120
 
95
121
  `taskset sync` creates missing document-kind directories inside `.taskset`,
96
- migrates legacy task filenames and references throughout repository text files,
97
- refreshes data `.gitignore` rules for scoped `.generated/` directories, removes
98
- legacy global `.taskset/generated/`, and rebuilds generated views. Build
99
- outputs, dependencies, caches, snapshots, and Git internals are excluded from
100
- reference rewriting.
122
+ migrates legacy task and document IDs to short hex IDs, normalizes
123
+ `{sequence}-{slug}-{id}.md` filenames, repairs duplicate sequence prefixes by
124
+ `createdAt`, rewrites repository text references, refreshes data `.gitignore`
125
+ rules for scoped `.generated/` directories, removes legacy global
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).
@@ -1,99 +1,111 @@
1
1
  ---
2
- title: Getting Started
3
- description: Initialize Taskset in a project and create the first repository task.
2
+ title: Start a Taskset repository
3
+ description: Install the CLI, initialize `.taskset/`, and capture your first plan, decision, and task in any language repository.
4
+ contentType: Tutorial
5
+ navLabel: Getting Started
4
6
  ---
5
7
 
6
- # Getting Started
8
+ # Start a Taskset repository
7
9
 
8
- Taskset keeps project work in human-readable Markdown beside the code. The
9
- current pre-alpha release is intended for local repository use.
10
+ This guide initializes Taskset in a repository and walks one delivery loop: capture intent, record research or a decision, then track the work. You do not need a JavaScript app, and you do not need `taskset.config.ts`.
10
11
 
11
12
  ## Requirements
12
13
 
13
- - Node.js 24 or newer
14
- - pnpm 11 or newer
14
+ - Node.js 24 or newer to run the published CLI
15
+ - Any Git repository or project root you can write to
15
16
 
16
- ## Install
17
+ ## Install the CLI
17
18
 
18
- Install the published package as a development dependency in the project that
19
- will own the tasks:
19
+ Pick one install style:
20
+
21
+ ```bash
22
+ npx @taskset/cli@latest --help
23
+ ```
20
24
 
21
25
  ```bash
22
26
  pnpm add --save-dev @taskset/cli
23
27
  ```
24
28
 
25
- The package exposes the `taskset` executable.
29
+ ```bash
30
+ npm install --global @taskset/cli
31
+ ```
32
+
33
+ The package exposes the `taskset` executable. Package runners work in repositories that never declare a Node dependency.
26
34
 
27
- ## Initialize
35
+ ## Initialize the repository
28
36
 
29
- Run Taskset from the repository root:
37
+ Run init from the repository root, or from a nested directory when Git or workspace markers identify the root:
30
38
 
31
39
  ```bash
32
- pnpm taskset init
40
+ taskset init
33
41
  ```
34
42
 
35
43
  This creates:
36
44
 
37
45
  ```text
38
- taskset.config.ts
39
46
  .taskset/
40
47
  ├── .gitignore
41
- └── tasks/
48
+ ├── tasks/
49
+ ├── stories/
50
+ ├── flows/
51
+ ├── decisions/
52
+ ├── research/
53
+ └── runbooks/
42
54
  ```
43
55
 
44
- The config controls validated defaults. Task Markdown under `.taskset/tasks/`
45
- remains the canonical project state. The nested ignore file excludes
46
- `.taskset/cache/`, per-entity `.generated/` directories, and `.taskset/snapshots/`.
47
- Snapshots are non-authoritative safety checkpoints; tasks remain canonical.
48
-
49
- ## Create And Inspect Work
56
+ Add an optional config file only when you need custom task defaults:
50
57
 
51
58
  ```bash
52
- pnpm taskset task create --title "Add repository validation"
53
- pnpm taskset task list
54
- pnpm taskset task show <task-id>
55
- pnpm taskset task update <task-id> --status doing
59
+ taskset init --config
56
60
  ```
57
61
 
58
- Task files can also be read and reviewed directly without Taskset installed.
62
+ The nested ignore file excludes `.taskset/cache/`, per-entity `.generated/` directories, and `.taskset/snapshots/`. Snapshots are non-authoritative safety checkpoints. Markdown under `.taskset/` remains canonical.
63
+
64
+ ## Capture intent, then track delivery
59
65
 
60
- ## Query And Validate Work
66
+ Start with the durable context, then create the task that implements it:
61
67
 
62
68
  ```bash
63
- pnpm taskset task list --status doing --label core --json
64
- pnpm taskset task list --file packages/core --impact --json
65
- pnpm taskset doctor
69
+ taskset document create story --title "Member signs in via SSO"
70
+ taskset document create research --title "Compare SSO providers" --related your_story_id_here
71
+ taskset document create adr --title "Use OIDC for member SSO" --related your_research_id_here
72
+ taskset task create --title "Add SSO callback handler" --related your_decision_id_here --file packages/api/src/auth.ts
73
+ taskset task list
74
+ taskset document list --json
66
75
  ```
67
76
 
68
- File and directory filters use normalized repository-relative containment
69
- matching. With `--impact`, list output groups direct matches and tasks that
70
- transitively depend on them. Other filters select the direct set before graph
71
- expansion. `doctor` reports all readable format and graph failures in one
72
- non-mutating pass.
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)).
73
81
 
74
- ## Generated Views And Migration
82
+ ## Query and validate the graph
75
83
 
76
84
  ```bash
77
- pnpm taskset generate
78
- pnpm taskset snapshot create
79
- pnpm taskset snapshot list
85
+ taskset task list --status doing --label core --json
86
+ taskset document list research --search "SSO" --json
87
+ taskset task list --file packages/api --impact --json
88
+ taskset doctor
80
89
  ```
81
90
 
82
- Snapshot restore previews by default unless `--apply` is present.
91
+ File and directory filters use repository-relative containment. With `--impact`, list output groups direct matches and work that transitively depends on them. `doctor` reports readable format and graph failures in one non-mutating pass.
83
92
 
84
- ## Complete Or Remove Work
93
+ ## Finish or remove work
85
94
 
86
95
  ```bash
87
- pnpm taskset task status <task-id> done
88
- pnpm taskset task delete <task-id>
96
+ taskset task status your_task_id_here done
97
+ taskset document status your_research_id_here accepted --type research
98
+ taskset task delete your_task_id_here
89
99
  ```
90
100
 
91
- Completed and canceled tasks are terminal. Deletion fails while another task
92
- depends on the target. Use `--remove-dependencies` only when Taskset should
93
- remove those inbound references and the task together.
101
+ Completed and canceled tasks are terminal. Deletion fails while another task depends on the target. Use `--remove-dependencies` only when Taskset should remove those inbound references and the task together.
94
102
 
95
103
  ## Next
96
104
 
97
- - [Configure task defaults](configuration.md)
98
- - [Use the complete CLI reference](cli-reference.md)
105
+ - [Choose a document type](document-types.md)
106
+ - [Choose memory layers](memory-model.md)
99
107
  - [Understand task files](task-files.md)
108
+ - [Configure defaults](configuration.md)
109
+ - [Use the complete CLI reference](cli-reference.md)
110
+ - [Follow the agent guide](agents/index.md)
111
+ - [Query recipes for agents](agents/query-recipes.md)
package/docs/index.md CHANGED
@@ -1,37 +1,49 @@
1
1
  ---
2
- title: Taskset
3
- description: Offline, inline, AI-friendly project awareness stored beside the code.
2
+ title: Keep the whole delivery story beside the code
3
+ description: Taskset stores plans, research, decisions, runbooks, lessons, concerns, audits, and tasks as Markdown in your repository for agents and humans.
4
+ contentType: Landing
5
+ navLabel: Overview
4
6
  ---
5
7
 
6
- # Taskset
8
+ # Keep the whole delivery story beside the code
7
9
 
8
- Taskset is an offline, inline, AI-friendly, human-readable task manager designed
9
- to accelerate software delivery and give development teams immediate awareness
10
- of the work surrounding their code.
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
- Tasks and project knowledge live inside the repository as Markdown. Git supplies
13
- history, branches, review, and collaboration. Taskset supplies a consistent
14
- domain model and interfaces over those files.
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.
15
13
 
16
- Install the command-line package from npm as `@taskset/cli`.
14
+ ## What belongs in Taskset
17
15
 
18
- ## Core Promise
16
+ - **Plan**: stories and flows that define outcomes and journeys
17
+ - **Learn**: research that captures evidence and recommendations
18
+ - **Decide**: decisions and ADRs that lock lasting choices
19
+ - **Operate**: runbooks that make recovery safe to repeat
20
+ - **Remember**: lessons, concerns, and audits for recurring patterns and residual risk
21
+ - **Deliver**: tasks that carry ownership, status, dependencies, and code impact
19
22
 
20
- - Work remains readable without Taskset installed.
21
- - Developers can operate locally without a mandatory service.
22
- - Humans and AI agents inspect the same project context.
23
- - CLI, TUI, MCP, editor, Kanban, and reporting views share one source of truth.
24
- - Monorepo projects and code relationships are first-class.
23
+ Documents preserve memory. Tasks move work. Relationships keep the graph honest.
25
24
 
26
- ## Current Status
25
+ ## What you get
27
26
 
28
- Taskset is pre-alpha. The CLI supports repository initialization, configuration
29
- inspection, validated task CRUD and lifecycle changes, repository diagnostics,
30
- generated views, snapshots, metadata queries, and file-impact analysis.
27
+ - Project knowledge stays in the repository it describes
28
+ - Markdown remains readable without Taskset installed
29
+ - Agents and humans inspect the same plans, decisions, and work
30
+ - CLI, skills, and future interfaces share one domain model
31
+ - Monorepo paths and code relationships are first-class
31
32
 
32
- ## Read Next
33
+ ## What the CLI covers
33
34
 
34
- - [Getting started](getting-started.md)
35
- - [Configuration](configuration.md)
36
- - [CLI reference](cli-reference.md)
37
- - [Task files](task-files.md)
35
+ The CLI initializes repositories, manages optional configuration, creates and queries tasks and documents, runs diagnostics, builds generated views, snapshots state, and syncs the tree after upgrades or repairs.
36
+
37
+ ## Choose your path
38
+
39
+ - [Start a Taskset repository](getting-started.md)
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)
45
+ - [Understand task files](task-files.md)
46
+ - [Configure defaults when you need them](configuration.md)
47
+ - [Look up every CLI command](cli-reference.md)
48
+ - [Read agent workflows and contracts](agents/index.md)
49
+ - [Copy-paste agent query recipes](agents/query-recipes.md)
@@ -1,70 +1,44 @@
1
1
  ---
2
2
  title: "ADR 0001: Documentation Platform"
3
- description: Render canonical user documentation through the Taskset website.
3
+ description: Render canonical documentation through the Taskset website for humans, agents, and maintainers.
4
4
  ---
5
5
 
6
6
  # ADR 0001: Documentation Platform
7
7
 
8
8
  - Status: Accepted
9
9
  - Date: 2026-06-12
10
+ - Updated: 2026-10-03
10
11
 
11
12
  ## Context
12
13
 
13
- Taskset needs one documentation source that is readable on Git hosts and can
14
- also power a documentation website. User guidance and repository maintenance
15
- material have different audiences and should remain visibly separated.
14
+ Taskset needs one documentation source that is readable on Git hosts and can also power a documentation website. Human usage guidance, agent operating contracts, and repository maintenance material have different audiences and should remain visibly separated.
16
15
 
17
16
  ## Decision
18
17
 
19
- - Keep canonical user documentation in the root `docs/` directory.
20
- - Keep contributor, product, architecture, ADR, testing, and technology
21
- material under `docs/maintainers/`.
22
- - Use plain Markdown by default and MDX only for interactive pages.
23
- - Build `apps/www` with Next.js App Router, Nextra, and the stock Nextra docs
24
- and blog themes.
25
- - Expose root `docs/` as the app's Nextra `content` directory through a
26
- repository-relative symlink.
27
- - Render top-level usage docs and `docs/maintainers/` through separate route
28
- layouts and page maps so their navigation stays audience-specific.
29
- - Keep chronological release and project posts under `apps/www/posts/`.
30
- - Isolate usage docs, maintainer docs, and blog layouts and MDX component sets
31
- by route.
32
- - Keep the Nextra configuration and layout close to the upstream defaults.
33
-
34
- Nextra supports App Router content-directory routing and typed `_meta.ts`
35
- navigation:
36
-
37
- - <https://nextra.site/docs/file-conventions/content-directory>
38
- - <https://nextra.site/docs/docs-theme/start>
18
+ - Keep canonical documentation in the root `docs/` directory
19
+ - Keep human usage pages at the top level of `docs/`
20
+ - Keep agent operating guidance under `docs/agents/`, with root `AGENTS.md` and packaged `skills/` as offline entrypoints
21
+ - Keep contributor, product, architecture, ADR, testing, and technology material under `docs/maintainers/`
22
+ - Publish an agent discovery index at `apps/www/public/llms.txt` (served as `/llms.txt`); copy it into the packaged CLI docs for offline use
23
+ - Use plain Markdown by default and MDX only for interactive pages
24
+ - Build `apps/www` with Next.js App Router, Nextra, and the stock Nextra docs and blog themes
25
+ - Expose root `docs/` as the app’s Nextra `content` directory through a repository-relative symlink
26
+ - Render top-level usage docs (including `docs/agents/`) and `docs/maintainers/` through separate route layouts and page maps
27
+ - Keep chronological release and project posts under `apps/www/posts/`
28
+ - Follow the [Vercel writing guidelines](https://github.com/vercel-labs/writing-guidelines) for public prose voice and structure
39
29
 
40
30
  ## Why
41
31
 
42
- This matches the existing Next.js direction, provides navigation and search
43
- without a custom content loader, and keeps user documentation readable in its
44
- canonical location. Moving maintainer material into a dedicated
45
- `docs/maintainers/` section prevents the root README and user pages from
46
- becoming contributor handbooks.
32
+ This keeps one Markdown source of truth while matching how agent-first tools expose denser contracts beside human onboarding. Maintainer material stays out of the primary product navigation. Agent pages and `llms.txt` give coding agents a short index without inventing a second product truth.
47
33
 
48
34
  ## Implementation Contract
49
35
 
50
- `apps/www/content` points to `../../docs`. The usage docs catch-all route loads
51
- top-level content and excludes `docs/maintainers/` from its page map. The
52
- `/maintainers` route loads the same content directory with a maintainer-rooted
53
- page map. The app may generate `.next/`, search data, and static output, but
54
- none of those become documentation source.
55
-
56
- `apps/www/posts/` is the source for blog Markdown. An app-local registry maps
57
- each post to `/posts/[slug]` so static export can enumerate routes without
58
- copying posts into `docs/`. The global MDX component file contains only base
59
- Nextra components; docs and blog routes apply their own theme components.
36
+ `apps/www/content` points to `../../docs`. The usage docs catch-all route loads top-level content, including `docs/agents/`, and excludes `docs/maintainers/` from its page map. The `/maintainers` route loads the same content directory with a maintainer-rooted page map. Root `AGENTS.md` is repository-local agent guidance and may be linked from docs, but docs remain canonical for published pages. Do not place non-Markdown discovery files such as `llms.txt` under `docs/`; Nextra imports the content tree as modules and only Markdown/MDX pages belong there.
60
37
 
61
38
  ## Consequences
62
39
 
63
- - Documentation changes are reviewable without building the site.
64
- - Blog posts are reviewable as app-local Markdown without a CMS.
65
- - The site build must include root `docs/` files in its input.
66
- - New posts must be added to the app-local static post registry.
67
- - MDX components remain owned by `apps/www`.
68
- - Maintainer documentation is reviewed from `docs/maintainers/` and remains in
69
- its own `/maintainers` navigation section.
70
- - Broken links and invalid frontmatter should fail CI.
40
+ - Documentation changes are reviewable without building the site
41
+ - Blog posts are reviewable as app-local Markdown without a CMS
42
+ - New agent pages belong under `docs/agents/` and appear in usage navigation
43
+ - Maintainer documentation remains in its own `/maintainers` navigation section
44
+ - Broken links and invalid frontmatter should fail CI
@@ -5,8 +5,7 @@ description: Repository setup, Taskset dogfooding, pull requests, and completion
5
5
 
6
6
  # Contributing
7
7
 
8
- Taskset is pre-alpha. Strengthen the core file format and workflow before
9
- expanding the number of interfaces.
8
+ Keep the core file format and workflow coherent when you change interfaces, packages, or docs.
10
9
 
11
10
  ## Start Here
12
11
 
@@ -27,7 +26,7 @@ Use the Node and pnpm versions declared by `.nvmrc` and `packageManager`.
27
26
 
28
27
  ## Develop Taskset With Taskset
29
28
 
30
- The repository dogfoods Taskset. Use the root `taskset.config.ts`, the CLI, and
29
+ The repository dogfoods Taskset. Use the root `.taskset/` data, optional `taskset.config.ts`, the CLI, and
31
30
  canonical `.taskset/tasks/` files to plan and inspect work. When the CLI
32
31
  supports the required operation, update the task through the CLI instead of
33
32
  editing generated or derived state.