@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.
- package/CHANGELOG.md +30 -0
- package/README.md +21 -22
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +212 -113
- package/docs/_meta.ts +5 -0
- package/docs/agent-closeout.md +69 -0
- package/docs/agents/_meta.ts +6 -0
- package/docs/agents/commands.md +94 -0
- package/docs/agents/index.md +113 -0
- package/docs/agents/llms.txt +35 -0
- package/docs/agents/query-recipes.md +76 -0
- package/docs/agents/workflows.md +60 -0
- package/docs/cli-reference.md +53 -34
- package/docs/configuration.md +53 -31
- package/docs/document-types.md +53 -24
- package/docs/getting-started.md +61 -49
- package/docs/index.md +37 -25
- package/docs/maintainers/architecture/decisions/0001-documentation-platform.md +21 -47
- package/docs/maintainers/development/contributing.md +2 -3
- package/docs/maintainers/development/documentation.md +32 -49
- package/docs/maintainers/index.md +1 -3
- package/docs/maintainers/product/vision.md +27 -33
- package/docs/memory-model.md +58 -0
- package/docs/security-compliance-tracking.md +107 -0
- package/docs/task-files.md +19 -13
- package/docs/taxonomy-cookbook.md +59 -0
- package/package.json +4 -4
- package/skills/taskset/SKILL.md +89 -57
- package/skills/taskset/references/document-modeling-examples.md +53 -2
- package/skills/taskset-implement/SKILL.md +26 -17
- package/skills/taskset-implement/references/architecture/documentation-and-generated.md +3 -1
- package/skills/taskset-implement/references/architecture/ownership-and-dependencies.md +2 -1
- package/skills/taskset-implement/references/architecture/product-and-source.md +22 -11
- package/skills/taskset-implement/references/architecture/storage-and-snapshots.md +5 -2
- package/skills/taskset-implement/references/conventions/naming-and-packages.md +1 -1
- package/skills/taskset-implement/references/conventions/task-files.md +9 -4
- package/skills/taskset-implement/references/workflows/environment-and-pnpm.md +4 -3
- package/src/cli.ts +174 -112
package/skills/taskset/SKILL.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: taskset
|
|
3
|
-
description: Taskset workflow guidance for agents that plan and track
|
|
3
|
+
description: Taskset workflow guidance for agents that plan, research, decide, operate, and track delivery with stories, flows, research, decisions, runbooks, lessons, concerns, audits, and tasks stored in .taskset/, including batch imports and cross-package monorepo work. While executing work, agents must create follow-up tasks or subtasks (Taskset child tasks or body checklist items) for newly discovered work, keep parent and subtask progress current mid-work, mark every finished subtask done or checked, create Taskset documents (research, decision, runbook, story, flow, lesson, concern, or audit) when work produces reusable evidence, lasting choices, procedures, recurring patterns, or residual risks, link them with --related, and update the session or repository primary skill when lasting lessons should prevent future failures (especially when a lesson declares --related-skill).
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Taskset
|
|
7
7
|
|
|
8
|
-
Use this skill when working in a repository that uses Taskset to store
|
|
8
|
+
Use this skill when working in a repository that uses Taskset to store plans, research, decisions, runbooks, and executable tasks as human-readable Markdown beside the code. Tasks move delivery. Documents preserve the memory that makes delivery coherent.
|
|
9
9
|
|
|
10
10
|
## Packaged Docs And Skills
|
|
11
11
|
|
|
@@ -18,7 +18,8 @@ treat those paths as the detailed offline reference set:
|
|
|
18
18
|
| `node_modules/@taskset/cli/skills/taskset/SKILL.md` | This skill (agent workflow for tasks and documents) |
|
|
19
19
|
| `node_modules/@taskset/cli/skills/taskset/references/` | Task modeling, document modeling, monorepo, and Changesets examples |
|
|
20
20
|
| `node_modules/@taskset/cli/skills/taskset-implement/` | Engineering standards used while developing Taskset itself |
|
|
21
|
-
| `node_modules/@taskset/cli/docs/` |
|
|
21
|
+
| `node_modules/@taskset/cli/docs/` | Human docs: getting started, configuration, CLI reference, task files, document types, memory model, closeout, taxonomy |
|
|
22
|
+
| `node_modules/@taskset/cli/docs/agents/` | Agent docs: workflows, command contracts, query recipes, discovery index |
|
|
22
23
|
| `node_modules/@taskset/cli/docs/maintainers/` | Architecture, ADRs, testing, and maintainer workflows |
|
|
23
24
|
|
|
24
25
|
In the Taskset repository itself, prefer the workspace copies at `skills/` and
|
|
@@ -27,13 +28,16 @@ In the Taskset repository itself, prefer the workspace copies at `skills/` and
|
|
|
27
28
|
under `node_modules/@taskset/cli/` before inventing workflow or command
|
|
28
29
|
behavior. Useful deep links from an installed package:
|
|
29
30
|
|
|
30
|
-
- CLI contracts: `node_modules/@taskset/cli/docs/cli-reference.md`
|
|
31
|
-
- Document kinds
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
31
|
+
- CLI contracts: [`docs/cli-reference.md`](../../docs/cli-reference.md) (installed: `node_modules/@taskset/cli/docs/cli-reference.md`)
|
|
32
|
+
- Document kinds: [`docs/document-types.md`](../../docs/document-types.md)
|
|
33
|
+
- Memory model: [`docs/memory-model.md`](../../docs/memory-model.md)
|
|
34
|
+
- Query recipes: [`docs/agents/query-recipes.md`](../../docs/agents/query-recipes.md)
|
|
35
|
+
- Agent closeout: [`docs/agent-closeout.md`](../../docs/agent-closeout.md)
|
|
36
|
+
- Task file shape: [`docs/task-files.md`](../../docs/task-files.md)
|
|
37
|
+
- Task modeling examples: [references/task-modeling-examples.md](references/task-modeling-examples.md)
|
|
38
|
+
- Document modeling examples: [references/document-modeling-examples.md](references/document-modeling-examples.md)
|
|
39
|
+
- Monorepo modeling: [references/monorepo-task-modeling.md](references/monorepo-task-modeling.md)
|
|
40
|
+
- Changesets examples: [references/changesets-examples.md](references/changesets-examples.md)
|
|
37
41
|
|
|
38
42
|
Relative links inside the packaged skill still resolve against the packaged
|
|
39
43
|
`docs/` and `skills/` trees because both directories sit at the `@taskset/cli`
|
|
@@ -43,19 +47,24 @@ package root.
|
|
|
43
47
|
|
|
44
48
|
- Treat `.taskset/tasks/` as the canonical task source of truth and the sibling
|
|
45
49
|
document-kind directories as the canonical durable project-document source.
|
|
46
|
-
- Treat
|
|
50
|
+
- Treat the nearest `.taskset/` directory as the repository marker. Optional
|
|
51
|
+
`taskset.config.ts` at that root overlays defaults; built-in defaults apply
|
|
52
|
+
when it is absent.
|
|
47
53
|
- Do not create a second task store, hidden database, or alternate sync layer.
|
|
48
54
|
- Use Taskset commands to inspect and mutate tasks instead of editing canonical task files by hand when a command exists.
|
|
49
|
-
-
|
|
55
|
+
- Invoke Taskset with whatever runner the environment provides:
|
|
56
|
+
`npx @taskset/cli`, `pnpm dlx @taskset/cli`, `yarn dlx @taskset/cli`,
|
|
57
|
+
`bunx @taskset/cli`, `pnpm exec taskset`, or a global `taskset` binary. Do not
|
|
58
|
+
require `pnpm taskset`.
|
|
50
59
|
- While executing or working a task, agents MUST create follow-up Taskset tasks or subtasks for newly discovered work. In this skill, "subtask" means either a Taskset child task (`--parent`) or a Markdown checklist item (`- [ ]`) in the parent task body—choose child tasks when independent status, ownership, dependencies, or history are needed; otherwise prefer checklist items. Do not leave that work only in chat, memory, or an informal note.
|
|
51
60
|
- Agents MUST keep the parent task status and every subtask current mid-work: set Taskset tasks and child tasks to `doing` when work starts, check off completed checklist items as `- [x]`, update statuses when progress or blockers change, and mark each finished child task `done` when its acceptance criteria are met. Do not leave finished checklist items unchecked or finished child tasks open, and do not mark a parent task `done` while any tracked subtask (child task or checklist item) remains unfinished.
|
|
52
|
-
- While executing a task, agents MUST create a Taskset document in the same change when work produces reusable evidence (`research`), a lasting choice (`decision` / `adr`), an operational procedure (`runbook`),
|
|
53
|
-
- When the repository or current session designates one or more skills as primary, and task work surfaces a lesson that future agents should reuse—tool or command selection, a bug fix pattern, a repeated failure mode, or an architecture decision—update that primary skill (and its relevant references) in the same change so the failure is not rediscovered later. Prefer skills for lasting how-to; prefer research/decision documents for what was learned or chosen. Do not leave durable guidance only in a closed task body or chat transcript.
|
|
61
|
+
- While executing a task, agents MUST create a Taskset document in the same change when work produces reusable evidence (`research`), a lasting choice (`decision` / `adr`), an operational procedure (`runbook`), durable product context (`story` / `flow`), a recurring mistake or correct pattern (`lesson`), an open residual risk (`concern`), or structured spot-check evidence (`audit`). Link the document and originating task with `--related`. Do not leave that material only in chat, memory, or a closed task body. Short scratch notes and one-off checklist steps stay in the task body.
|
|
62
|
+
- When the repository or current session designates one or more skills as primary, and task work surfaces a lesson that future agents should reuse—tool or command selection, a bug fix pattern, a repeated failure mode, or an architecture decision—create a `lesson` document and update that primary skill (and its relevant references) in the same change so the failure is not rediscovered later. If the lesson uses `--related-skill`, update those skill paths in the same change. Prefer skills for lasting how-to; prefer research/decision documents for what was learned or chosen; prefer `lesson` for recurring incorrect/correct patterns. Taskset never auto-edits skills. Do not leave durable guidance only in a closed task body or chat transcript.
|
|
54
63
|
|
|
55
64
|
## Recommended Workflow
|
|
56
65
|
|
|
57
|
-
1. Confirm the repository root
|
|
58
|
-
2. Inspect repository health with `taskset
|
|
66
|
+
1. Confirm the repository root with `taskset config --json` (look for `.taskset/`, not a required config file).
|
|
67
|
+
2. Inspect repository health with `taskset doctor --json`.
|
|
59
68
|
3. List or show tasks and check their owner and assignees before changing or executing them.
|
|
60
69
|
4. Resolve whether the current Git user is authorized to take the selected task; obtain confirmation when another person is responsible and the request does not already authorize that specific takeover.
|
|
61
70
|
5. Create, update, execute, or close tasks with Taskset commands.
|
|
@@ -75,24 +84,28 @@ For ownership-gate scenarios, read [owner and assignee examples](references/task
|
|
|
75
84
|
## Common Commands
|
|
76
85
|
|
|
77
86
|
```bash
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
87
|
+
taskset config --json
|
|
88
|
+
taskset doctor --json
|
|
89
|
+
taskset task list --json
|
|
90
|
+
taskset task show your_task_id_here --json
|
|
91
|
+
taskset task create --title "Describe the work"
|
|
92
|
+
taskset task update your_task_id_here --status doing
|
|
93
|
+
taskset task status your_task_id_here done
|
|
94
|
+
taskset task delete your_task_id_here
|
|
95
|
+
taskset task list --search "multiple terms" --json
|
|
96
|
+
taskset task list --file packages/core --impact --json
|
|
97
|
+
taskset document create story --title "Describe the user outcome"
|
|
98
|
+
taskset document create research --title "Evaluate options" --related your_task_id_here
|
|
99
|
+
taskset document create lesson --title "Capability flags are enablement only" --severity high --related your_task_id_here
|
|
100
|
+
taskset document create concern --title "Open authz residual risk" --class authz --related your_task_id_here
|
|
101
|
+
taskset document update your_document_id_here --status ready --type research
|
|
102
|
+
taskset document list research --search "queue" --impact --json
|
|
103
|
+
taskset document list concern --directory apps/foo --status active --json
|
|
104
|
+
taskset document show your_document_id_here --type research --include-derived --json
|
|
105
|
+
taskset document import docs/adr/0001-example.md --type adr --move
|
|
106
|
+
taskset document batch taskset-documents.json --concurrency 4 --json
|
|
107
|
+
taskset task program your_parent_task_id_here --json
|
|
108
|
+
taskset sync --json
|
|
96
109
|
```
|
|
97
110
|
|
|
98
111
|
## Practical Guidance
|
|
@@ -113,24 +126,33 @@ pnpm taskset sync
|
|
|
113
126
|
status, update, and delete commands as tasks. Document statuses remain
|
|
114
127
|
`draft`, `ready`, `active`, `accepted`, `superseded`, and `archived`.
|
|
115
128
|
- Use `document create` for stories, flows, decisions (`decision`, `adr`, and
|
|
116
|
-
`dr` are aliases), research,
|
|
117
|
-
|
|
118
|
-
|
|
129
|
+
`dr` are aliases), research, runbooks, lessons (`antipattern` alias),
|
|
130
|
+
concerns, and audits. Use `document import` to preserve an existing Markdown
|
|
131
|
+
body in canonical frontmatter; add `--move` only when the source should be
|
|
132
|
+
removed after a successful canonical write.
|
|
119
133
|
- Pick the kind by purpose: stories capture user value and acceptance criteria;
|
|
120
134
|
flows describe journeys and failure variants; decisions preserve rationale
|
|
121
135
|
and consequences; research records evidence and recommendations; runbooks
|
|
122
|
-
make repeatable operations and recovery safe
|
|
136
|
+
make repeatable operations and recovery safe; lessons capture recurring
|
|
137
|
+
incorrect/correct patterns; concerns track open residual risk; audits store
|
|
138
|
+
structured inventory or spot-check evidence.
|
|
123
139
|
- Use `document batch <manifest.json>` for repeatable multi-document create,
|
|
124
140
|
import, update, and export jobs. Progress belongs on stderr and `--json`
|
|
125
141
|
output on stdout. Use `sync` after upgrades to ensure canonical directories,
|
|
126
|
-
migrate legacy IDs
|
|
127
|
-
|
|
142
|
+
migrate legacy IDs to short hex IDs, normalize filenames, repair duplicate
|
|
143
|
+
sequence prefixes, rewrite repository text references, refresh data
|
|
144
|
+
`.gitignore` patterns for scoped `.generated/` directories, and rebuild views.
|
|
128
145
|
- Disposable metadata indexes live beside each entity folder
|
|
129
146
|
(`.taskset/tasks/.generated/`, `.taskset/stories/.generated/`, and the other
|
|
130
147
|
document-kind folders), not under a global `.taskset/generated/`.
|
|
131
|
-
-
|
|
132
|
-
|
|
133
|
-
|
|
148
|
+
- New task and document IDs are immutable 5-6 character lowercase hex values
|
|
149
|
+
such as `a1b2c3`. Filenames use `{sequence}-{slug}-{id}.md`. Agents MUST use
|
|
150
|
+
the short `id` in commands, frontmatter relationships, and JSON
|
|
151
|
+
handoffs—never the mutable filename sequence prefix alone. When linking to
|
|
152
|
+
the file in Markdown prose, use the full repository-relative filepath so the
|
|
153
|
+
link is clickable. Use `sync` or `task migrate-ids` for legacy repositories;
|
|
154
|
+
do not rename entity files by hand because canonical relationships must be
|
|
155
|
+
rewritten together.
|
|
134
156
|
- When a task change affects repository behavior, follow up with the relevant tests, docs, and `git diff --check`.
|
|
135
157
|
|
|
136
158
|
## Task Modeling
|
|
@@ -161,24 +183,27 @@ For multi-task prompts or uncertainty about task granularity and relationships,
|
|
|
161
183
|
|
|
162
184
|
## Document Modeling
|
|
163
185
|
|
|
164
|
-
- Prefer the
|
|
186
|
+
- Prefer the document kinds that already exist. Do not invent notes, specs,
|
|
165
187
|
epics, or RFCs as new kinds: investigation is `research`, lasting choices are
|
|
166
|
-
`decision`, product context is `story` or `flow`,
|
|
167
|
-
`runbook
|
|
188
|
+
`decision`, product context is `story` or `flow`, recovery procedures are
|
|
189
|
+
`runbook`, recurring mistakes are `lesson`, residual risks are `concern`, and
|
|
190
|
+
spot-check inventories are `audit`. Keep short scratch in the task body.
|
|
168
191
|
- Search existing documents before creating new ones. Update or `--related` a
|
|
169
192
|
matching document instead of duplicating it.
|
|
170
|
-
- Create documents mid-work as soon as the evidence, decision,
|
|
171
|
-
clear enough to reuse. Link both sides with `--related` to
|
|
172
|
-
task when practical.
|
|
173
|
-
- Status habits: start research and
|
|
174
|
-
`accepted` when
|
|
175
|
-
|
|
193
|
+
- Create documents mid-work as soon as the evidence, decision, procedure,
|
|
194
|
+
lesson, or risk is clear enough to reuse. Link both sides with `--related` to
|
|
195
|
+
the originating task when practical.
|
|
196
|
+
- Status habits: start research, stories, and audits as `draft`; move them to
|
|
197
|
+
`ready` or `accepted` when they stabilize; record decided ADRs as `accepted`
|
|
198
|
+
(the create default); keep usable runbooks, lessons, and open concerns
|
|
199
|
+
`active`; move mitigated concerns to `accepted` and obsolete lessons to
|
|
200
|
+
`superseded` or `archived`.
|
|
176
201
|
- Attach owner, assignees, labels, projects, files, and directories when they help
|
|
177
202
|
discovery the same way they do on tasks. Use `--depends-on` and `--parent`
|
|
178
203
|
only for real document-to-document prerequisites within Taskset documents.
|
|
179
204
|
- Do not dump raw research into a primary skill. Capture the evidence in a
|
|
180
|
-
research document, the choice in a decision document,
|
|
181
|
-
how-to in the skill.
|
|
205
|
+
research document, the choice in a decision document, the recurring pattern in
|
|
206
|
+
a lesson, and only the lasting how-to in the skill.
|
|
182
207
|
|
|
183
208
|
For paired good and bad examples, read [document-modeling examples](references/document-modeling-examples.md).
|
|
184
209
|
|
|
@@ -217,11 +242,18 @@ For paired examples of required, multi-package, and unnecessary changesets, read
|
|
|
217
242
|
- Read the task and the surrounding repository context first.
|
|
218
243
|
- Before mutating or executing a task, compare its owner and assignees with the current Git user and obtain confirmation when another person is responsible.
|
|
219
244
|
- While executing, create follow-up tasks, child tasks, or checklist subtasks for every distinct piece of newly discovered work before moving on or closing the current task.
|
|
220
|
-
- While executing, create research, decision, runbook, story, or
|
|
221
|
-
- Keep parent status and every subtask current mid-work: check off finished checklist items, mark finished child tasks `done`, and only then close the parent.
|
|
222
|
-
- When lasting lessons emerge
|
|
245
|
+
- While executing, create research, decision, runbook, story, flow, lesson, concern, or audit documents for reusable evidence, lasting choices, procedures, product context, recurring patterns, or residual risks; link them with `--related`.
|
|
246
|
+
- Keep parent status and every subtask current mid-work: check off finished checklist items, mark finished child tasks `done`, and only then close the parent. Use `taskset task program <parent-id> --json` for multi-task program health.
|
|
247
|
+
- When lasting lessons emerge, create a `lesson` and update any primary or `--related-skill` skill so future sessions avoid the same tool-choice, bug-fix, repeated-failure, or architecture mistake.
|
|
223
248
|
- In monorepos, verify affected packages and consumers against the workspace and task-runner graphs rather than relying only on the initially named directory.
|
|
224
249
|
- In repositories using Changesets, reconcile the task's declared Changeset requirement with the actual affected packages before completion.
|
|
225
250
|
- Prefer the smallest Taskset command that proves the intended state.
|
|
251
|
+
- Use short hex `id` values (`a1b2c3`) with `task show`, `task update`,
|
|
252
|
+
`--related`, `--depends-on`, and `--parent`. Filename sequence prefixes are
|
|
253
|
+
display metadata only—never identity and never Markdown link targets.
|
|
254
|
+
- When writing a Markdown hyperlink to a Taskset entity, doc, or skill file,
|
|
255
|
+
use the repository-relative filepath (for example
|
|
256
|
+
`.taskset/lessons/0000001-…-a1b2c3.md` or `docs/memory-model.md`). Inline
|
|
257
|
+
mentions may still show the short `id` for humans and CLI copy-paste.
|
|
226
258
|
- Avoid editing generated output, caches, or any non-canonical `.taskset/` artifacts.
|
|
227
259
|
- Report validation failures plainly and only claim success after the command has run.
|
|
@@ -12,10 +12,14 @@ Good: create a research document, keep the task focused on the delivery outcome,
|
|
|
12
12
|
and link both.
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
taskset document create research --title "Evaluate queue providers" --related <task-id>
|
|
16
|
+
taskset task update <task-id> --related <research-id>
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
+
In Markdown prose, link the created file by filepath (for example
|
|
20
|
+
`.taskset/research/0000001-evaluate-queue-providers-<research-id>.md`), not by
|
|
21
|
+
a bare hex id as the link target.
|
|
22
|
+
|
|
19
23
|
## Decision Versus Research
|
|
20
24
|
|
|
21
25
|
Bad: write an ADR before evidence exists, or leave a chosen architecture only as
|
|
@@ -61,3 +65,50 @@ implementation tasks that `--related` that document and carry the code work.
|
|
|
61
65
|
pnpm taskset document create story --title "Member signs in via SSO"
|
|
62
66
|
pnpm taskset task create --title "Add SSO callback handler" --related <story-id> --file packages/api/src/auth.ts
|
|
63
67
|
```
|
|
68
|
+
|
|
69
|
+
## Lesson Versus Closed Task Note
|
|
70
|
+
|
|
71
|
+
Bad: rediscover “channel capability ≠ authz grant” in chat after the fixing task
|
|
72
|
+
is already `done`, or paste the pattern only into a skill with no Taskset trail.
|
|
73
|
+
|
|
74
|
+
Good: create a `lesson` with trigger, incorrect pattern, correct pattern,
|
|
75
|
+
severity, prevention, and evidence; relate the originating task/concern; and if
|
|
76
|
+
`--related-skill` is set, update that skill in the same change.
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
pnpm taskset document create lesson \
|
|
80
|
+
--title "Capability flags are enablement only" \
|
|
81
|
+
--severity high \
|
|
82
|
+
--related-skill .agents/skills/security/SKILL.md \
|
|
83
|
+
--related <task-id>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Concern Versus ADR Or Runbook
|
|
87
|
+
|
|
88
|
+
Bad: leave residual authz risk as an unfinished checklist forever, or write an
|
|
89
|
+
ADR that only says “still risky” with no review cadence.
|
|
90
|
+
|
|
91
|
+
Good: create a `concern` for living open/residual risk (class, trust boundary,
|
|
92
|
+
evidence, residual risk, mitigation/acceptance, cadence). Use `decision` for the
|
|
93
|
+
chosen design and `runbook` for recovery steps.
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
pnpm taskset document create concern \
|
|
97
|
+
--title "Telegram capability must not grant CASL" \
|
|
98
|
+
--class authz \
|
|
99
|
+
--cadence on-release \
|
|
100
|
+
--related <task-id>
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Audit Versus Informal Research Dump
|
|
104
|
+
|
|
105
|
+
Bad: paste a route inventory into a research body with no findings status or
|
|
106
|
+
follow-ups.
|
|
107
|
+
|
|
108
|
+
Good: use `audit` for structured spot-checks with scope, method, findings
|
|
109
|
+
(`pass` | `fail` | `residual`), residual items, required follow-ups, and next
|
|
110
|
+
due date.
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
pnpm taskset document create audit --title "Public route inventory" --related <program-task-id>
|
|
114
|
+
```
|
|
@@ -85,9 +85,9 @@ listed in Preserve Product Invariants, the invariant takes precedence. Explain
|
|
|
85
85
|
the conflict to the user and request an explicit override with rationale before
|
|
86
86
|
proceeding.
|
|
87
87
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
88
|
+
Do not turn accidental manifest mistakes, empty packages, or placeholder
|
|
89
|
+
dependencies into conventions. Report them and follow the intended
|
|
90
|
+
`@taskset/<directory-name>` ownership model.
|
|
91
91
|
|
|
92
92
|
## Preserve Product Invariants
|
|
93
93
|
|
|
@@ -117,29 +117,38 @@ Non-negotiable rules:
|
|
|
117
117
|
- Canonical task files use one strict versionless metadata shape. Versioned
|
|
118
118
|
task frontmatter and unknown fields are rejected.
|
|
119
119
|
- Canonical supporting documents live in kind-specific `.taskset/` directories:
|
|
120
|
-
stories, flows, decisions, research,
|
|
121
|
-
metadata (aligned with task planning, people, path,
|
|
122
|
-
and kind-specific
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
120
|
+
stories, flows, decisions, research, runbooks, lessons, concerns, and audits.
|
|
121
|
+
Use their shared strict metadata (aligned with task planning, people, path,
|
|
122
|
+
and relationship fields), kind-specific optional fields (`severity` /
|
|
123
|
+
`relatedSkills` / `packs` for lessons; `class` / `cadence` for concerns), and
|
|
124
|
+
kind-specific body templates instead of modeling every durable document as a
|
|
125
|
+
task. Documents expose the same create, update, status, delete, list query,
|
|
126
|
+
search, impact, and derived-relationship operations as tasks, with
|
|
127
|
+
document-specific statuses. Optional closeout gates, taxonomy allowlists, and
|
|
128
|
+
`taskset task program` rollups extend delivery without a second tracker.
|
|
126
129
|
- Document mutations, imports, exports, and batches belong to core. The CLI
|
|
127
130
|
validates manifests and renders output only. Use TanStack Pacer for bounded
|
|
128
131
|
heavy batches and migrations, emit count and percentage progress, preserve
|
|
129
|
-
manifest result order, and serialize writes that allocate
|
|
132
|
+
manifest result order, and serialize writes that allocate short hex IDs plus
|
|
133
|
+
filename display sequences.
|
|
130
134
|
- Disposable metadata indexes live in each entity folder's `.generated/`
|
|
131
135
|
directory (for example `.taskset/tasks/.generated/` and
|
|
132
136
|
`.taskset/research/.generated/`), not a global `.taskset/generated/` tree.
|
|
133
137
|
- Repository sync is the maintenance entrypoint: ensure canonical `.taskset/`
|
|
134
|
-
directories, migrate task IDs
|
|
138
|
+
directories, migrate task and document IDs to immutable short hex IDs,
|
|
139
|
+
normalize `{sequence}-{slug}-{id}.md` filenames, repair duplicate sequence
|
|
140
|
+
prefixes by `createdAt`, rewrite repository text references atomically,
|
|
135
141
|
refresh data `.gitignore` rules for scoped generated output, remove legacy
|
|
136
142
|
global generated directories, then rebuild disposable generated views.
|
|
137
|
-
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
+
- The nearest `.taskset/` directory marks the repository root. Optional
|
|
144
|
+
`taskset.config.ts` at that root configures validated project metadata and
|
|
145
|
+
task creation defaults. Missing config uses built-in defaults. Config never
|
|
146
|
+
relocates canonical `.taskset/` data or becomes a second task store.
|
|
147
|
+
- Taskset is developed using its own `.taskset/` data, optional root config,
|
|
148
|
+
CLI, and canonical task files. Keep that dogfooding workflow operational when
|
|
149
|
+
changing core, CLI, workspace commands, or persisted contracts.
|
|
150
|
+
- Public docs split three audiences: humans (`docs/`), agents (`docs/agents/`
|
|
151
|
+
plus `skills/` and root `AGENTS.md`), and maintainers (`docs/maintainers/`).
|
|
143
152
|
|
|
144
153
|
## Organize by Ownership
|
|
145
154
|
|
|
@@ -31,7 +31,9 @@ Recommended website stack:
|
|
|
31
31
|
Register blog posts in the app-local post registry so static export can
|
|
32
32
|
enumerate `/posts/[slug]`. Keep blog posts in plain Markdown by default with
|
|
33
33
|
`title`, `description`, and `date` frontmatter. Do not merge docs and blog theme
|
|
34
|
-
wrappers in the global MDX component map.
|
|
34
|
+
wrappers in the global MDX component map. Agent operating pages live under
|
|
35
|
+
`docs/agents/` and appear in usage navigation; maintainer pages stay under
|
|
36
|
+
`/maintainers`.
|
|
35
37
|
|
|
36
38
|
Keep architectural decisions under
|
|
37
39
|
`docs/maintainers/architecture/decisions/`.
|
|
@@ -39,7 +39,8 @@ surfaces such as package names, the CLI command, `taskset.config.ts`, and
|
|
|
39
39
|
`.taskset/`.
|
|
40
40
|
|
|
41
41
|
Taskset dogfoods these boundaries. The root workspace installs core and CLI,
|
|
42
|
-
|
|
42
|
+
may load optional `taskset.config.ts`, and stores its own planned work in
|
|
43
|
+
`.taskset/tasks/`.
|
|
43
44
|
|
|
44
45
|
## Dependency Flow
|
|
45
46
|
|
|
@@ -4,13 +4,13 @@ Product direction and the canonical source-of-truth model.
|
|
|
4
4
|
|
|
5
5
|
## Product Direction
|
|
6
6
|
|
|
7
|
-
Taskset began as an offline, inline, AI-friendly, human-readable
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
Taskset began as an offline, inline, AI-friendly, human-readable delivery
|
|
8
|
+
workspace: not only tasks, but the plans, research, decisions, flows, and
|
|
9
|
+
runbooks that make delivery coherent.
|
|
10
10
|
|
|
11
|
-
It
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
It is a Git-native software delivery platform. Stories, flows, decisions,
|
|
12
|
+
research, runbooks, lessons, concerns, audits, and tasks live beside the code as
|
|
13
|
+
human-readable Markdown.
|
|
14
14
|
|
|
15
15
|
Vision: become the Git-native operating system for software delivery.
|
|
16
16
|
|
|
@@ -31,7 +31,10 @@ Design for:
|
|
|
31
31
|
repositories
|
|
32
32
|
|
|
33
33
|
Near-term work should keep the task and supporting-document workflows coherent
|
|
34
|
-
before inventing
|
|
34
|
+
before inventing freeform kinds (`note`, `rfc`, `epic`, `spec`) or investing
|
|
35
|
+
heavily in new interfaces. Operational memory kinds (`lesson`, `concern`,
|
|
36
|
+
`audit`) are first-class document kinds under the existing document command
|
|
37
|
+
surface.
|
|
35
38
|
|
|
36
39
|
## Source-of-Truth Model
|
|
37
40
|
|
|
@@ -51,6 +54,12 @@ Canonical project state lives under `.taskset/`.
|
|
|
51
54
|
│ └── .generated/
|
|
52
55
|
├── runbooks/
|
|
53
56
|
│ └── .generated/
|
|
57
|
+
├── lessons/
|
|
58
|
+
│ └── .generated/
|
|
59
|
+
├── concerns/
|
|
60
|
+
│ └── .generated/
|
|
61
|
+
├── audits/
|
|
62
|
+
│ └── .generated/
|
|
54
63
|
├── snapshots/
|
|
55
64
|
└── cache/
|
|
56
65
|
```
|
|
@@ -58,8 +67,10 @@ Canonical project state lives under `.taskset/`.
|
|
|
58
67
|
Rules:
|
|
59
68
|
|
|
60
69
|
- Entity Markdown files are authoritative persisted state.
|
|
61
|
-
-
|
|
62
|
-
|
|
70
|
+
- The nearest `.taskset/` directory is the discoverable repository marker.
|
|
71
|
+
Optional `taskset.config.ts` at that root overlays validated behavior and
|
|
72
|
+
defaults. Missing config uses built-in defaults. Config never owns entity
|
|
73
|
+
state.
|
|
63
74
|
- YAML frontmatter contains structured metadata. Markdown bodies contain
|
|
64
75
|
durable human context.
|
|
65
76
|
- Do not store the same field independently in frontmatter and body.
|
|
@@ -73,8 +84,8 @@ Rules:
|
|
|
73
84
|
state, or another hidden store as an undeclared authority.
|
|
74
85
|
- Git is the versioning and collaboration layer around the files. Do not assume
|
|
75
86
|
it provides database transactions or conflict-free identifiers.
|
|
76
|
-
- Repository discovery walks upward for
|
|
77
|
-
|
|
87
|
+
- Repository discovery walks upward for `.taskset/`; canonical storage remains
|
|
88
|
+
fixed under that directory.
|
|
78
89
|
|
|
79
90
|
Any persisted format change must define validation, compatibility, migration,
|
|
80
91
|
and failure behavior before implementation.
|
|
@@ -9,8 +9,11 @@ Storage, graph, and snapshot rules for canonical repository data.
|
|
|
9
9
|
expressions.
|
|
10
10
|
- Normalize stored code references to repository-relative POSIX paths.
|
|
11
11
|
- Reject paths that escape the repository or `.taskset/` ownership boundary.
|
|
12
|
-
- Keep IDs immutable
|
|
13
|
-
|
|
12
|
+
- Keep entity IDs immutable short hex values for commands and canonical
|
|
13
|
+
relationships. Filename display sequences are mutable maintenance metadata
|
|
14
|
+
repaired by `sync`; they are not identity. Markdown hyperlinks to entity or
|
|
15
|
+
documentation files must use repository-relative filepaths, not bare hex ids
|
|
16
|
+
or sequence prefixes.
|
|
14
17
|
- Store one canonical direction for inverse relationships unless the schema
|
|
15
18
|
explicitly defines otherwise. Derive `blocks` from `dependsOn`, for example,
|
|
16
19
|
rather than allowing silent divergence.
|
|
@@ -55,7 +55,7 @@ taskset task list --file packages/core --impact
|
|
|
55
55
|
taskset context-bundle
|
|
56
56
|
```
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
Optional root usage configuration is exactly `taskset.config.ts`. Export a
|
|
59
59
|
versionless object, preferably through `defineConfig` from `@taskset/core`.
|
|
60
60
|
Keep configuration fields behavioral; never use config to redirect canonical
|
|
61
61
|
entity storage outside `.taskset/`.
|
|
@@ -8,7 +8,7 @@ Use YAML frontmatter for machine metadata and Markdown for human context:
|
|
|
8
8
|
|
|
9
9
|
```markdown
|
|
10
10
|
---
|
|
11
|
-
id:
|
|
11
|
+
id: a1b2c3
|
|
12
12
|
title: Add task validation
|
|
13
13
|
status: doing
|
|
14
14
|
priority: high
|
|
@@ -31,6 +31,8 @@ Describe why the work exists.
|
|
|
31
31
|
- [ ] Invalid statuses produce an actionable diagnostic.
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
+
Filename: `0000001-add-task-validation-a1b2c3.md`
|
|
35
|
+
|
|
34
36
|
Rules:
|
|
35
37
|
|
|
36
38
|
- Require `id`, `title`, `status`, `createdAt`, and `updatedAt`.
|
|
@@ -53,9 +55,12 @@ Rules:
|
|
|
53
55
|
reading the documented legacy ISO 8601 UTC form until a compatibility change
|
|
54
56
|
explicitly removes it.
|
|
55
57
|
- Keep IDs immutable and compare them exactly.
|
|
56
|
-
- Format new task IDs as
|
|
57
|
-
|
|
58
|
-
and
|
|
58
|
+
- Format new task and document IDs as 5-6 character lowercase hex values.
|
|
59
|
+
Store display order in the filename as `{sequence}-{slug}-{id}.md`. Keep
|
|
60
|
+
legacy `TS-` ULIDs and sequential `0000001-title` IDs readable only so
|
|
61
|
+
`sync` / `task migrate-ids` can rewrite them, normalize filenames, repair
|
|
62
|
+
duplicate sequence prefixes by `createdAt`, and update canonical
|
|
63
|
+
relationships atomically.
|
|
59
64
|
- Preserve user-authored body text and meaningful list order.
|
|
60
65
|
- Use stable key ordering and one final newline in generated output.
|
|
61
66
|
- Generated metadata indexes cover supported non-ID metadata fields, group
|
|
@@ -96,9 +96,10 @@ must remain available. Root-only architecture tests run once after Turbo rather
|
|
|
96
96
|
than being duplicated inside every package. There is no `transit` script;
|
|
97
97
|
Turbo's dependency traversal is orchestration, not another test suite.
|
|
98
98
|
|
|
99
|
-
`taskset.config.ts` is loaded as trusted project code using Node's
|
|
100
|
-
erasable TypeScript support. Keep it free of syntax that
|
|
101
|
-
code generation.
|
|
99
|
+
Optional `taskset.config.ts` is loaded as trusted project code using Node's
|
|
100
|
+
native erasable TypeScript support when present. Keep it free of syntax that
|
|
101
|
+
requires TypeScript code generation. Repository discovery uses `.taskset/`, not
|
|
102
|
+
the config file.
|
|
102
103
|
|
|
103
104
|
If Turbo reports duplicate workspace names, fix the incorrect package manifest.
|
|
104
105
|
Do not work around the graph with directory filters or aliases.
|