@bumpyclock/tasque-linux-x64-gnu 0.3.0 → 0.4.1

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.
@@ -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,61 @@
1
+ # Command Reference
2
+
3
+ Read when: you need exact command syntax or available options.
4
+
5
+ ## Core workflow
6
+
7
+ - `tsq` (no args, TTY): open read-only TUI
8
+ - `tsq init [--wizard|--no-wizard] [--yes] [--preset <name>] [--sync-branch <branch>]`
9
+ - `tsq init --install-skill|--uninstall-skill [--skill-targets ...] [--skill-name <name>] [--force-skill-overwrite]`
10
+ - `tsq create [<title>] [--child <title> ...] [--kind ...] [-p ...] [--parent <id>] [--description <text>] [--external-ref <ref>] [--discovered-from <id>] [--planning <needs_planning|planned>] [--needs-planning] [--ensure] [--id <tsq-xxxxxxxx>] [--body-file <path|->]`
11
+ - `tsq show <id>`
12
+ - `tsq list [--status ...] [--assignee ...] [--unassigned] [--external-ref <ref>] [--discovered-from <id>] [--kind ...] [--label ...] [--label-any ...] [--created-after <iso>] [--updated-after <iso>] [--closed-after <iso>] [--id <id,...>] [--planning <needs_planning|planned>] [--dep-type <blocks|starts_after>] [--dep-direction <in|out|any>] [--tree] [--full]`
13
+ - `tsq search <query>`
14
+ - `tsq update <id> [--title ...] [--description ...] [--clear-description] [--status ...] [--priority ...] [--external-ref <ref>] [--clear-external-ref] [--discovered-from <id>] [--clear-discovered-from] [--planning <needs_planning|planned>]`
15
+ - `tsq update <id> --claim [--assignee <a>] [--require-spec]`
16
+ - `tsq close <id...> [--reason <text>]`
17
+ - `tsq reopen <id...>`
18
+ - `tsq ready [--lane <planning|coding>]`
19
+
20
+ ## Dependencies and relations
21
+
22
+ - `tsq dep add <child> <blocker> [--type <blocks|starts_after>]`
23
+ - `tsq dep remove <child> <blocker> [--type <blocks|starts_after>]`
24
+ - `tsq dep tree <id> [--direction <up|down|both>] [--depth <n>]`
25
+ - `tsq link add <src> <dst> --type <relates_to|replies_to|duplicates|supersedes>`
26
+ - `tsq link remove <src> <dst> --type <relates_to|replies_to|duplicates|supersedes>`
27
+ - `tsq duplicate <id> --of <canonical-id> [--reason <text>]`
28
+ - `tsq duplicates [--limit <n>]`
29
+ - `tsq merge <source-id...> --into <target-id> [--reason <text>] [--force] [--dry-run]`
30
+ - `tsq supersede <old-id> --with <new-id> [--reason <text>]`
31
+
32
+ ## Specs, notes, labels, history
33
+
34
+ - `tsq spec attach <id> [source] [--file <path> | --stdin | --text <markdown>]`
35
+ - `tsq spec check <id>`
36
+ - `tsq note add <id> <text>`
37
+ - `tsq note list <id>`
38
+ - `tsq label add <id> <label>`
39
+ - `tsq label remove <id> <label>`
40
+ - `tsq label list`
41
+ - `tsq history <id> [--limit <n>] [--type <event-type>] [--actor <name>] [--since <iso>]`
42
+
43
+ ## Reporting and maintenance
44
+
45
+ - `tsq watch [--once] [--interval <seconds>] [--status <csv>] [--assignee <name>] [--tree]`
46
+ - `tsq tui [--once] [--interval <seconds>] [--status <csv>] [--assignee <name>] [--board|--epics]`
47
+ - `tsq stale [--days <n>] [--status <status>] [--assignee <name>] [--limit <n>]`
48
+ - `tsq orphans`
49
+ - `tsq doctor`
50
+ - `tsq repair [--fix] [--force-unlock]`
51
+ - `tsq sync [--no-push]`
52
+ - `tsq hooks install [--force]`
53
+ - `tsq hooks uninstall`
54
+ - `tsq migrate --sync-branch <branch>`
55
+ - `tsq merge-driver <ancestor> <ours> <theirs>`
56
+
57
+ ## Global options and status alias
58
+
59
+ - Add `--json` to any command for stable machine output.
60
+ - Add `--exact-id` to disable fuzzy id matching.
61
+ - Status alias: `done` maps to `closed`.
@@ -0,0 +1,48 @@
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
+ - Legacy cache fallback: `.tasque/tasks.jsonl` (read-only fallback when `state.json` is absent; removal target)
39
+ - Optional replay checkpoints: `.tasque/snapshots/`
40
+ - Config: `.tasque/config.json`
41
+ - Ephemeral lock: `.tasque/.lock`
42
+
43
+ ## Recovery model
44
+
45
+ - Read path: load latest snapshot, replay event tail, refresh state cache.
46
+ - Write path: append event(s), update projection, periodically write snapshot.
47
+ - Startup recovery tolerates one malformed trailing JSONL line.
48
+ - Do not create or edit `.tasque/tasks.jsonl`; new writes use `.tasque/state.json`.
@@ -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.0",
3
+ "version": "0.4.1",
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