@bumpyclock/tasque-linux-x64-gnu 0.3.0 → 0.4.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/SKILLS/tasque/SKILL.md +186 -0
- package/SKILLS/tasque/references/command-reference.md +49 -0
- package/SKILLS/tasque/references/machine-output-and-durability.md +46 -0
- package/SKILLS/tasque/references/planning-workflow.md +99 -0
- package/SKILLS/tasque/references/task-authoring-checklist.md +29 -0
- package/package.json +3 -2
- package/tsq +0 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tasque
|
|
3
|
+
description: Operational guide for Tasque (tsq) local task tracking and management.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- tsq-managed-skill:v1 -->
|
|
7
|
+
|
|
8
|
+
Tasque = durable, local-first task memory for agent work.
|
|
9
|
+
Default day-to-day playbook.
|
|
10
|
+
|
|
11
|
+
## When to use tsq
|
|
12
|
+
|
|
13
|
+
- Use `tsq` for multi-step, multi-session, dependency-blocked, shared-agent work.
|
|
14
|
+
- Use transient checklist for short linear single-session work.
|
|
15
|
+
|
|
16
|
+
## Session routine (default)
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
tsq ready --lane planning
|
|
20
|
+
tsq ready --lane coding
|
|
21
|
+
tsq list --status blocked
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Pick one task; inspect context:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
tsq show <id>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
### 1) Capture new work
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
tsq create "Implement <feature>" --kind feature -p 1 --needs-planning
|
|
35
|
+
tsq create "Fix <bug>" --kind task -p 1 --needs-planning
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Planning already done:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
tsq create "Implement <feature>" --planning planned
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 2) Split parent into many children (single command)
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
tsq create --parent <parent-id> \
|
|
48
|
+
--child "Design API contract" \
|
|
49
|
+
--child "Implement service logic" \
|
|
50
|
+
--child "Add regression tests"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Shared defaults for all children:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
tsq create --parent <parent-id> --kind task -p 2 --planning planned \
|
|
57
|
+
--child "Wire CLI args" \
|
|
58
|
+
--child "Update docs" \
|
|
59
|
+
--child "Add integration tests"
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Safe reruns without duplicate children:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
tsq create --parent <parent-id> --ensure \
|
|
66
|
+
--child "Wire CLI args" \
|
|
67
|
+
--child "Update docs" \
|
|
68
|
+
--child "Add integration tests"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### 3) Planning handoff -> coding
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
tsq spec attach <id> --text "## Plan\n...\n## Acceptance\n..."
|
|
75
|
+
tsq update <id> --planning planned
|
|
76
|
+
tsq update <id> --claim --assignee <name>
|
|
77
|
+
tsq update <id> --status in_progress
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 4) Model deps for parallel agents
|
|
81
|
+
|
|
82
|
+
Hard blocker (changes readiness):
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
tsq dep add <child-id> <blocker-id> --type blocks
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Soft ordering only:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
tsq dep add <later-id> <earlier-id> --type starts_after
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Check actionable tasks:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
tsq ready --lane coding
|
|
98
|
+
tsq ready --lane planning
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 5) Capture discovered follow-up work
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
tsq create "Handle edge case <x>" --discovered-from <current-id> --needs-planning
|
|
105
|
+
tsq link add <new-id> <current-id> --type relates_to
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### 5b) Idempotent root/parent create for automation
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
tsq create "Implement auth module" --ensure
|
|
112
|
+
tsq create --parent <parent-id> --child "Add tests" --ensure
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
`--ensure` returns existing task when same normalized title already exists under the same parent.
|
|
116
|
+
|
|
117
|
+
### 6) Park / unpark work
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
tsq update <id> --status deferred
|
|
121
|
+
tsq list --status deferred
|
|
122
|
+
tsq update <id> --status open
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### 7) Resolve duplicate/superseded work
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
tsq duplicate <id> --of <canonical-id> --reason "same root issue"
|
|
129
|
+
tsq duplicates
|
|
130
|
+
tsq merge <source-id...> --into <target-id> --dry-run
|
|
131
|
+
tsq merge <source-id...> --into <target-id> --force
|
|
132
|
+
tsq supersede <old-id> --with <new-id> --reason "replaced approach"
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### 8) Close / report
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
tsq update <id> --status closed
|
|
139
|
+
tsq history <id> --limit 20
|
|
140
|
+
tsq list --tree
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Agent/tool handoff: add `--json`.
|
|
144
|
+
|
|
145
|
+
## Built-in task authoring checklist
|
|
146
|
+
|
|
147
|
+
### Minimum quality bar
|
|
148
|
+
|
|
149
|
+
- Titles: clear, action-oriented (verb + object + scope).
|
|
150
|
+
- Set `kind`: `task|feature|epic`.
|
|
151
|
+
- Set priority intentionally: `0..3`.
|
|
152
|
+
- Add labels with consistent naming.
|
|
153
|
+
- Attach spec when scope/acceptance non-trivial.
|
|
154
|
+
- Add explicit deps/relations when relevant.
|
|
155
|
+
|
|
156
|
+
### Parallelization guidance
|
|
157
|
+
|
|
158
|
+
- Prefer multiple independent tasks over one large task.
|
|
159
|
+
- Use `blocks` only when work truly gates another task.
|
|
160
|
+
- Use `starts_after` for sequencing without blocking readiness.
|
|
161
|
+
- Add discovered work as new tasks via `--discovered-from`.
|
|
162
|
+
- Keep each task small enough for one focused agent pass.
|
|
163
|
+
|
|
164
|
+
### Practical authoring starter
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
tsq create "<title>" --kind task -p 2 --needs-planning
|
|
168
|
+
tsq spec attach <id> --text "<markdown spec>"
|
|
169
|
+
tsq dep add <child> <blocker> --type blocks
|
|
170
|
+
tsq link add <src> <dst> --type relates_to
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## Required habits
|
|
174
|
+
|
|
175
|
+
- Keep lifecycle `status` and `planning_state` separate.
|
|
176
|
+
- Use deps to make parallel execution explicit.
|
|
177
|
+
- Create follow-up tasks; avoid chat TODOs.
|
|
178
|
+
- Prefer `--json` for automation.
|
|
179
|
+
- Use `--ensure` in scripts to prevent duplicate creates on rerun.
|
|
180
|
+
|
|
181
|
+
## Read when needed
|
|
182
|
+
|
|
183
|
+
- Planning/deferred semantics: `references/planning-workflow.md`
|
|
184
|
+
- JSON schema + durability details: `references/machine-output-and-durability.md`
|
|
185
|
+
- Full option matrix (edge cases): `references/command-reference.md`
|
|
186
|
+
- Install if missing: `npm install -g @bumpyclock/tasque`
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Command Reference
|
|
2
|
+
|
|
3
|
+
Read when: you need exact command syntax or available options.
|
|
4
|
+
|
|
5
|
+
## Core workflow
|
|
6
|
+
|
|
7
|
+
- `tsq init`
|
|
8
|
+
- `tsq create [<title>] [--child <title> ...] [--kind ...] [-p ...] [--parent <id>] [--external-ref <ref>] [--discovered-from <id>] [--planning <needs_planning|planned>] [--needs-planning] [--ensure] [--id <tsq-xxxxxxxx>] [--body-file <path|->]`
|
|
9
|
+
- `tsq show <id>`
|
|
10
|
+
- `tsq list [--status ...] [--assignee ...] [--external-ref <ref>] [--discovered-from <id>] [--kind ...] [--planning <needs_planning|planned>] [--dep-type <blocks|starts_after>] [--dep-direction <in|out|any>] [--tree]`
|
|
11
|
+
- `tsq update <id> [--title ...] [--status ...] [--priority ...] [--external-ref <ref>] [--clear-external-ref] [--discovered-from <id>] [--clear-discovered-from] [--planning <needs_planning|planned>]`
|
|
12
|
+
- `tsq update <id> --claim [--assignee <a>] [--require-spec]`
|
|
13
|
+
- `tsq ready [--lane <planning|coding>]`
|
|
14
|
+
|
|
15
|
+
## Dependencies and relations
|
|
16
|
+
|
|
17
|
+
- `tsq dep add <child> <blocker> [--type <blocks|starts_after>]`
|
|
18
|
+
- `tsq dep remove <child> <blocker> [--type <blocks|starts_after>]`
|
|
19
|
+
- `tsq dep tree <id> [--direction <up|down|both>] [--depth <n>]`
|
|
20
|
+
- `tsq link add <src> <dst> --type <relates_to|replies_to|duplicates|supersedes>`
|
|
21
|
+
- `tsq link remove <src> <dst> --type <relates_to|replies_to|duplicates|supersedes>`
|
|
22
|
+
- `tsq duplicate <id> --of <canonical-id> [--reason <text>]`
|
|
23
|
+
- `tsq duplicates [--limit <n>]`
|
|
24
|
+
- `tsq merge <source-id...> --into <target-id> [--reason <text>] [--force] [--dry-run]`
|
|
25
|
+
- `tsq supersede <old-id> --with <new-id> [--reason <text>]`
|
|
26
|
+
|
|
27
|
+
## Specs, notes, labels, history
|
|
28
|
+
|
|
29
|
+
- `tsq spec attach <id> [source] [--file <path> | --stdin | --text <markdown>]`
|
|
30
|
+
- `tsq spec check <id>`
|
|
31
|
+
- `tsq note add <id> <text>`
|
|
32
|
+
- `tsq note list <id>`
|
|
33
|
+
- `tsq label add <id> <label>`
|
|
34
|
+
- `tsq label remove <id> <label>`
|
|
35
|
+
- `tsq label list`
|
|
36
|
+
- `tsq history <id> [--limit <n>] [--type <event-type>] [--actor <name>] [--since <iso>]`
|
|
37
|
+
|
|
38
|
+
## Reporting and maintenance
|
|
39
|
+
|
|
40
|
+
- `tsq watch [--once] [--interval <seconds>] [--status <csv>] [--assignee <name>] [--tree]`
|
|
41
|
+
- `tsq stale [--days <n>] [--status <status>] [--assignee <name>] [--limit <n>]`
|
|
42
|
+
- `tsq orphans`
|
|
43
|
+
- `tsq doctor`
|
|
44
|
+
|
|
45
|
+
## Global options and status alias
|
|
46
|
+
|
|
47
|
+
- Add `--json` to any command for stable machine output.
|
|
48
|
+
- Add `--exact-id` to disable fuzzy id matching.
|
|
49
|
+
- Status alias: `done` maps to `closed`.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Machine Output and Durability
|
|
2
|
+
|
|
3
|
+
Read when: automating `tsq` or reasoning about storage/recovery behavior.
|
|
4
|
+
|
|
5
|
+
## Stable machine output
|
|
6
|
+
|
|
7
|
+
Use `--json` on any command.
|
|
8
|
+
|
|
9
|
+
Success envelope:
|
|
10
|
+
|
|
11
|
+
```json
|
|
12
|
+
{
|
|
13
|
+
"schema_version": 1,
|
|
14
|
+
"command": "tsq ...",
|
|
15
|
+
"ok": true,
|
|
16
|
+
"data": {}
|
|
17
|
+
}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Error envelope:
|
|
21
|
+
|
|
22
|
+
```json
|
|
23
|
+
{
|
|
24
|
+
"schema_version": 1,
|
|
25
|
+
"command": "tsq ...",
|
|
26
|
+
"ok": false,
|
|
27
|
+
"error": {
|
|
28
|
+
"code": "VALIDATION_ERROR",
|
|
29
|
+
"message": "..."
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Storage model
|
|
35
|
+
|
|
36
|
+
- Canonical source of truth: `.tasque/events.jsonl` (append-only)
|
|
37
|
+
- Derived cache: `.tasque/state.json` (rebuildable, gitignored)
|
|
38
|
+
- Optional replay checkpoints: `.tasque/snapshots/`
|
|
39
|
+
- Config: `.tasque/config.json`
|
|
40
|
+
- Ephemeral lock: `.tasque/.lock`
|
|
41
|
+
|
|
42
|
+
## Recovery model
|
|
43
|
+
|
|
44
|
+
- Read path: load latest snapshot, replay event tail, refresh state cache.
|
|
45
|
+
- Write path: append event(s), update projection, periodically write snapshot.
|
|
46
|
+
- Startup recovery tolerates one malformed trailing JSONL line.
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Planning Workflow
|
|
2
|
+
|
|
3
|
+
Read when: deciding whether work belongs in planning lane vs coding lane, or when parking work as deferred.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Tasque supports a planning-aware workflow via the `planning_state` field, orthogonal to lifecycle `status`.
|
|
8
|
+
|
|
9
|
+
This separation allows teams to track **what needs design/planning** independently from **what is actively being worked on**. A task can be `open` but still need planning, or `in_progress` with planning already complete.
|
|
10
|
+
|
|
11
|
+
## Planning State
|
|
12
|
+
|
|
13
|
+
Every task carries a `planning_state` field with two values:
|
|
14
|
+
|
|
15
|
+
- `needs_planning` — task needs planning before coding work can begin (default for new tasks)
|
|
16
|
+
- `planned` — planning is complete, task is ready for coding
|
|
17
|
+
|
|
18
|
+
New tasks default to `planning_state: "needs_planning"`. Legacy tasks (created before this feature) are treated as `needs_planning`.
|
|
19
|
+
|
|
20
|
+
## Deferred Status
|
|
21
|
+
|
|
22
|
+
The `deferred` status is an active-but-parked lifecycle state. Tasks with `status: deferred`:
|
|
23
|
+
|
|
24
|
+
- Are **not ready** (excluded from the `ready` command output)
|
|
25
|
+
- **Are** included in `stale` scans (they can become stale like any non-terminal task)
|
|
26
|
+
- Can transition to any non-terminal status (`open`, `in_progress`, `blocked`)
|
|
27
|
+
- Are **not terminal** — unlike `closed` or `canceled`, deferral is reversible
|
|
28
|
+
|
|
29
|
+
Use `deferred` when a task is valid but not actionable right now (e.g., waiting on external input, deprioritized, or parked for a future iteration).
|
|
30
|
+
|
|
31
|
+
## Lane-Aware Ready
|
|
32
|
+
|
|
33
|
+
The `ready` command supports lane filtering to separate planning work from coding work:
|
|
34
|
+
|
|
35
|
+
| Command | Returns |
|
|
36
|
+
|---|---|
|
|
37
|
+
| `tsq ready` | All ready tasks (both planning and coding) |
|
|
38
|
+
| `tsq ready --lane planning` | Ready tasks with `planning_state` = `needs_planning` (or unset) |
|
|
39
|
+
| `tsq ready --lane coding` | Ready tasks with `planning_state` = `planned` |
|
|
40
|
+
|
|
41
|
+
A task is "ready" when:
|
|
42
|
+
- Its status is `open` or `in_progress`
|
|
43
|
+
- It has zero open blockers (all dependency targets are `closed` or `canceled`)
|
|
44
|
+
- It is not `canceled`, `closed`, or `deferred`
|
|
45
|
+
|
|
46
|
+
Lane filtering is applied on top of the standard ready check.
|
|
47
|
+
|
|
48
|
+
## CLI Usage
|
|
49
|
+
|
|
50
|
+
### Create with planning state
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Explicit planning state
|
|
54
|
+
tsq create "Design auth module" --planning needs_planning
|
|
55
|
+
tsq create "Design auth module" --needs-planning # shorthand for --planning needs_planning
|
|
56
|
+
|
|
57
|
+
# Mark as already planned
|
|
58
|
+
tsq create "Implement auth module" --planning planned
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Filter by planning state
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
tsq list --planning needs_planning # tasks that still need planning
|
|
65
|
+
tsq list --planning planned # tasks with planning complete
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Update planning state
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
tsq update <id> --planning planned # mark planning as done
|
|
72
|
+
tsq update <id> --planning needs_planning # revert to needs-planning
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Lane-aware ready
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
tsq ready # all ready tasks
|
|
79
|
+
tsq ready --lane planning # what needs planning?
|
|
80
|
+
tsq ready --lane coding # what's ready to code?
|
|
81
|
+
tsq ready --lane coding --json # machine-readable output
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Deferred status
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
tsq update <id> --status deferred # park a task
|
|
88
|
+
tsq list --status deferred # see parked tasks
|
|
89
|
+
tsq update <id> --status open # un-park a task
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Typical Workflow
|
|
93
|
+
|
|
94
|
+
1. Create tasks — they start as `open` + `needs_planning`
|
|
95
|
+
2. Run `tsq ready --lane planning` to find tasks needing planning work
|
|
96
|
+
3. Do planning; mark complete with `tsq update <id> --planning planned`
|
|
97
|
+
4. Run `tsq ready --lane coding` to find tasks ready for implementation
|
|
98
|
+
5. Claim and work on tasks normally
|
|
99
|
+
6. Use `tsq update <id> --status deferred` to park tasks that are valid but not actionable yet
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Task Authoring Checklist
|
|
2
|
+
|
|
3
|
+
Read when: creating/refining tasks or splitting work for parallel execution.
|
|
4
|
+
|
|
5
|
+
## Minimum quality bar
|
|
6
|
+
|
|
7
|
+
- Use clear, action-oriented titles.
|
|
8
|
+
- Set `kind` correctly (`task`, `feature`, `epic`).
|
|
9
|
+
- Assign priority (`0..3`) intentionally.
|
|
10
|
+
- Add labels using a consistent format.
|
|
11
|
+
- Attach spec content when scope/acceptance is non-trivial.
|
|
12
|
+
- Link task dependencies and relations explicitly.
|
|
13
|
+
|
|
14
|
+
## Parallelization guidance
|
|
15
|
+
|
|
16
|
+
- Prefer multiple independent tasks over one large task.
|
|
17
|
+
- Use `blocks` only when completion truly gates another task.
|
|
18
|
+
- Use `starts_after` for ordering without readiness blocking.
|
|
19
|
+
- Add discovered follow-up work as new tasks with `--discovered-from <id>`.
|
|
20
|
+
- Keep each task sized so one agent can complete it in one focused pass.
|
|
21
|
+
|
|
22
|
+
## Practical starter flow
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
tsq create "<title>" --kind task -p 2 --needs-planning
|
|
26
|
+
tsq spec attach <id> --text "<markdown spec>"
|
|
27
|
+
tsq dep add <child> <blocker> --type blocks
|
|
28
|
+
tsq link add <src> <dst> --type relates_to
|
|
29
|
+
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bumpyclock/tasque-linux-x64-gnu",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Tasque binary for Linux x64 (glibc)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
"glibc"
|
|
18
18
|
],
|
|
19
19
|
"files": [
|
|
20
|
-
"tsq"
|
|
20
|
+
"tsq",
|
|
21
|
+
"SKILLS/**"
|
|
21
22
|
],
|
|
22
23
|
"publishConfig": {
|
|
23
24
|
"access": "public",
|
package/tsq
CHANGED
|
Binary file
|