trekoon 0.1.9 → 0.2.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.
@@ -7,309 +7,255 @@ description: Use Trekoon to create issues/tasks, plan backlog and sprints, creat
7
7
 
8
8
  Trekoon is a local-first issue tracker for epics, tasks, and subtasks.
9
9
 
10
- ## CRITICAL: Always Use --toon Flag
11
-
12
- **Every trekoon command MUST include `--toon` for machine-readable output.**
13
-
14
- The `--toon` flag outputs structured YAML-like data that is easy to parse. Never run trekoon commands without it.
15
-
16
- ### TOON Output Format
17
-
18
- All `--toon` output follows this structure:
19
-
20
- ```yaml
21
- ok: true
22
- command: task.list
23
- data:
24
- tasks[0]:
25
- id: abc-123
26
- epicId: epic-456
27
- title: Implement feature X
28
- status: todo
29
- createdAt: 1700000000000
30
- updatedAt: 1700000000000
31
- tasks[1]:
32
- id: def-789
33
- epicId: epic-456
34
- title: Write tests
35
- status: in_progress
36
- createdAt: 1700000001000
37
- updatedAt: 1700000001000
38
- metadata:
39
- contractVersion: 1.0.0
40
- requestId: req-abc12345
41
- ```
10
+ This skill is the agent operating guide, not the full CLI reference. Use it to
11
+ pick the right command with the fewest reads and mutations.
42
12
 
43
- On error:
44
-
45
- ```yaml
46
- ok: false
47
- command: task.show
48
- data: {}
49
- metadata:
50
- contractVersion: 1.0.0
51
- requestId: req-def67890
52
- error:
53
- code: not_found
54
- message: task not found: invalid-id
55
- ```
13
+ ## Non-negotiable defaults
56
14
 
57
- ### Key Fields
15
+ - Always include `--toon` on every Trekoon command.
16
+ - Prefer the smallest sufficient scope.
17
+ - Prefer transactional bulk commands over many single-item commands.
18
+ - Prefer `--append` for progress notes, completion notes, and blocker notes.
19
+ - Preview replace before `--apply`.
20
+ - Prefer `--ids` over `--all` for bulk updates.
21
+ - Never edit `.trekoon/trekoon.db` directly.
22
+ - Never run `trekoon wipe --yes --toon` unless the user explicitly asks for it.
58
23
 
59
- | Field | Meaning |
60
- |-------|---------|
61
- | `ok` | `true` if command succeeded, `false` on error |
62
- | `command` | The command that was executed (e.g., `task.list`, `epic.create`) |
63
- | `data` | The response payload (tasks, epics, dependencies, etc.) |
64
- | `metadata` | Contract metadata (`contractVersion`, `requestId`) |
65
- | `meta` | Optional command-specific metadata (pagination/defaults/filters/diagnostics) |
66
- | `error` | Present only on failure, contains `code` and `message` |
24
+ ## Default agent loop
67
25
 
68
- Use long flags (`--status`, `--description`, etc.) and ALWAYS append `--toon` to every command.
26
+ Run this loop each session:
69
27
 
70
- ### Contract details to rely on
28
+ 1. Check sync baseline:
71
29
 
72
- - Machine responses include `metadata.contractVersion` and `metadata.requestId`.
73
- - Command IDs are stable and typically dot namespaced (`task.list`, `sync.status`).
74
- - Some root commands use single-token IDs (`help`, `init`, `quickstart`, `wipe`, `version`).
75
- - Unknown options fail fast with deterministic `unknown_option` errors and may include:
76
- - `data.option`
77
- - `data.allowedOptions`
78
- - `data.suggestions`
30
+ ```bash
31
+ trekoon --toon sync status
32
+ ```
79
33
 
80
- ### Compatibility mode (legacy sync consumers)
34
+ If this returns `missing_branch_db` on a fresh branch or worktree, continue
35
+ with local task selection and treat sync as unavailable for now.
81
36
 
82
- Default behavior is strict canonical IDs (for example `sync.status`).
37
+ 2. Pick the next item deterministically:
83
38
 
84
- If a legacy consumer still expects underscore sync IDs, compatibility mode can be used:
39
+ ```bash
40
+ trekoon --toon task next
41
+ trekoon --toon task ready --limit 5
42
+ ```
85
43
 
86
- ```bash
87
- trekoon --toon --compat legacy-sync-command-ids sync status
88
- ```
44
+ 3. Inspect dependencies or downstream impact when needed:
89
45
 
90
- When enabled, output includes `metadata.compatibility` with migration/deprecation details.
46
+ ```bash
47
+ trekoon --toon dep list <task-id>
48
+ trekoon --toon dep reverse <task-or-subtask-id>
49
+ ```
91
50
 
92
- ## 1) Status Management
51
+ 4. Claim work explicitly:
93
52
 
94
- ### Status values
53
+ ```bash
54
+ trekoon --toon task update <task-id> --status in_progress
55
+ ```
95
56
 
96
- Trekoon accepts any non-empty status string.
57
+ 5. Finish or report a block with appended context:
97
58
 
98
- Recommended statuses for consistent workflows:
59
+ ```bash
60
+ trekoon --toon task update <task-id> --append "Completed implementation and checks" --status done
61
+ trekoon --toon task update <task-id> --append "Blocked by <reason>" --status blocked
62
+ ```
99
63
 
100
- | Status | Meaning |
101
- |--------|---------|
102
- | `todo` | Work not started (default for new items) |
103
- | `in_progress` | Actively being worked on |
104
- | `done` | Completed successfully |
64
+ Recommended statuses for consistent workflows: `todo`, `in_progress`, `done`.
105
65
 
106
- Note: `in-progress` (hyphenated) is treated the same as `in_progress` for default list ordering/filtering.
66
+ ## Read policy: use the smallest sufficient read
107
67
 
108
- ### When to Change Status
68
+ Use the narrowest command that answers the question.
109
69
 
110
- | Transition | When to apply |
111
- |------------|---------------|
112
- | `todo in_progress` | When you START working on a task/subtask/epic |
113
- | `in_progress done` | When you COMPLETE the work and it is ready |
70
+ | Need | Preferred command |
71
+ |---|---|
72
+ | Next task | `trekoon --toon task next` |
73
+ | A few ready options | `trekoon --toon task ready --limit 5` |
74
+ | Direct blockers for one task | `trekoon --toon dep list <task-id>` |
75
+ | What this item unblocks | `trekoon --toon dep reverse <task-or-subtask-id>` |
76
+ | One full task payload | `trekoon --toon task show <task-id> --all` |
77
+ | One full epic tree | `trekoon --toon epic show <epic-id> --all` |
78
+ | Repeated text in one scope | `trekoon --toon epic|task|subtask search ...` |
114
79
 
115
- ### Status Change Commands
80
+ Avoid broad scans such as `task list --all` or `epic show --all` when
81
+ `task next`, `task ready`, `dep list`, `dep reverse`, or `search` can answer the
82
+ question more cheaply.
116
83
 
117
- ```bash
118
- trekoon task update <task-id> --status in_progress --toon
119
- trekoon task update <task-id> --status done --toon
120
- trekoon subtask update <subtask-id> --status done --toon
121
- trekoon epic update <epic-id> --status done --toon
122
- ```
84
+ ## Creation policy: prefer bulk planning workflows
123
85
 
124
- ## 2) Dependency Management
86
+ When creating multiple related records, do not loop through repeated single-item
87
+ creates unless only one record is needed.
125
88
 
126
- Dependencies define what must be completed before a task can start. A task/subtask can depend on other tasks/subtasks.
89
+ ### Which command to use
127
90
 
128
- ### Commands
91
+ | Situation | Preferred command |
92
+ |---|---|
93
+ | New epic and full graph already known | `trekoon --toon epic create ... --task ... --subtask ... --dep ...` |
94
+ | Existing epic needs linked additions | `trekoon --toon epic expand <epic-id> ...` |
95
+ | Multiple sibling tasks under one epic | `trekoon --toon task create-many --epic <epic-id> --task ...` |
96
+ | Multiple sibling subtasks under one task | `trekoon --toon subtask create-many <task-id> --subtask ...` |
97
+ | Multiple dependency edges across existing IDs | `trekoon --toon dep add-many --dep ...` |
98
+ | One record only | `epic create`, `task create`, or `subtask create` |
129
99
 
130
- ```bash
131
- trekoon dep add <source-id> <depends-on-id> --toon
132
- trekoon dep list <source-id> --toon
133
- trekoon dep remove <source-id> <depends-on-id> --toon
134
- trekoon dep reverse <task-or-subtask-id> --toon
135
- ```
100
+ ### Critical temp-key rule
136
101
 
137
- - `<source-id>`: The task/subtask that has the dependency
138
- - `<depends-on-id>`: The task/subtask that must be completed first
102
+ - Use plain temp keys when declaring records in compact specs, for example
103
+ `task-api` or `sub-tests`.
104
+ - Refer to those records later in the same invocation as `@task-api` or
105
+ `@sub-tests`.
106
+ - `@temp-key` references work in same-invocation graph workflows such as
107
+ one-shot `epic create` and `epic expand`.
108
+ - `dep add-many` does **not** resolve temp keys from earlier commands. Use real
109
+ persisted IDs there.
139
110
 
140
- ### Checking Dependencies
111
+ ### Compact examples
141
112
 
142
- Before starting any task, always check its dependencies:
113
+ #### One-shot epic creation
114
+
115
+ Use this when the epic does not exist yet and you already know the tree.
143
116
 
144
117
  ```bash
145
- trekoon dep list <task-id> --toon
118
+ trekoon --toon epic create \
119
+ --title "Batch command rollout" \
120
+ --description "Ship linked planning in one transaction" \
121
+ --task "task-api|Design API|Define compact grammar|todo" \
122
+ --task "task-cli|Wire CLI|Hook parser and output|todo" \
123
+ --subtask "@task-api|sub-tests|Write tests|Cover parser cases|todo" \
124
+ --dep "@task-cli|@task-api"
146
125
  ```
147
126
 
148
- The response `data.dependencies` array contains entries with:
149
- - `sourceId`: the task you're checking
150
- - `dependsOnId`: what must be done first
151
- - `dependsOnKind`: "task" or "subtask"
127
+ #### Expand an existing epic
152
128
 
153
- ### Dependency Rules
129
+ Use this when the epic already exists and the new batch needs internal links.
154
130
 
155
- 1. A task with dependencies should only be marked `in_progress` when ALL dependencies have status `done`
156
- 2. Dependencies can only exist between tasks and subtasks (not epics)
157
- 3. Cycles are automatically detected and rejected
131
+ ```bash
132
+ trekoon --toon epic expand <epic-id> \
133
+ --task "task-docs|Document workflow|Write operator guide|todo" \
134
+ --subtask "@task-docs|sub-examples|Add examples|Show canonical flows|todo" \
135
+ --dep "@sub-examples|@task-docs"
136
+ ```
158
137
 
159
- ## 3) Task Completion Flow
138
+ #### Create sibling tasks or subtasks
160
139
 
161
- ### Canonical dependency-aware execution loop
140
+ ```bash
141
+ trekoon --toon task create-many --epic <epic-id> \
142
+ --task "seed-api|Design API|Define grammar|todo" \
143
+ --task "seed-cli|Wire CLI|Hook output|todo"
162
144
 
163
- Run this sequence every session:
145
+ trekoon --toon subtask create-many <task-id> \
146
+ --subtask "seed-tests|Write tests|Cover happy path|todo" \
147
+ --subtask "seed-docs|Document flow|Add notes|todo"
148
+ ```
164
149
 
165
- 1. Sync branch/worktree status:
166
- ```bash
167
- trekoon sync status --toon
168
- ```
169
- 2. Pull deterministic ready candidates (or next candidate):
170
- ```bash
171
- trekoon task ready --limit 5 --toon
172
- trekoon task next --toon
173
- ```
174
- 3. Inspect downstream impact before changes:
175
- ```bash
176
- trekoon dep reverse <task-or-subtask-id> --toon
177
- ```
178
- 4. Start work with explicit status updates:
179
- ```bash
180
- trekoon task update <task-id> --status in_progress --toon
181
- ```
182
- 5. Finish or block with appended context + final status:
183
- ```bash
184
- trekoon task update <task-id> --append "Completed implementation" --status done --toon
185
- trekoon task update <task-id> --append "Blocked by <reason>" --status blocked --toon
186
- ```
150
+ #### Add dependencies after records already exist
187
151
 
188
- ### When Completing a Task
152
+ ```bash
153
+ trekoon --toon dep add-many \
154
+ --dep "<task-b>|<task-a>" \
155
+ --dep "<subtask-c>|<task-b>"
156
+ ```
189
157
 
190
- 1. Mark the task as done:
191
- ```bash
192
- trekoon task update <task-id> --status done --toon
193
- ```
158
+ ## Update policy: prefer append-based progress logging
194
159
 
195
- 2. To find the next task that was blocked by this one:
196
- - Inspect downstream nodes: `trekoon dep reverse <task-id> --toon`
197
- - Pull ready queue: `trekoon task ready --limit 5 --toon`
198
- - Pick one deterministically: `trekoon task next --toon`
160
+ Use descriptions as the durable work log. For progress updates, append instead
161
+ of rewriting full descriptions.
199
162
 
200
- ### Finding Next Work
163
+ ### Preferred patterns
201
164
 
202
165
  ```bash
203
- trekoon task ready --limit 5 --toon
204
- trekoon task next --toon
205
- trekoon dep reverse <task-or-subtask-id> --toon
166
+ trekoon --toon task update <task-id> --append "Started implementation" --status in_progress
167
+ trekoon --toon task update <task-id> --append "Completed implementation and checks" --status done
168
+ trekoon --toon task update <task-id> --append "Blocked by <reason>" --status blocked
206
169
  ```
207
170
 
208
- Use `task ready` for ranked candidates and `task next` for the top deterministic pick.
171
+ ### Bulk update rules
209
172
 
210
- ## 4) Load existing work first
173
+ - Bulk update is available for `epic update`, `task update`, and
174
+ `subtask update`.
175
+ - Bulk mode uses `--ids <csv>` or `--all`.
176
+ - Bulk mode supports only `--append` and/or `--status`.
177
+ - Do not pass a positional ID in bulk mode.
178
+ - `--append` and `--description` are mutually exclusive.
179
+ - Prefer `--ids` for narrow, explicit updates.
180
+ - Use `--all` only for clear maintenance sweeps or when the user explicitly wants
181
+ a broad update.
211
182
 
212
- Before creating or changing anything, inspect current context:
183
+ Examples:
213
184
 
214
185
  ```bash
215
- trekoon epic list --toon
216
- trekoon task list --toon
217
- trekoon epic show <id> --all --toon
218
- trekoon task show <id> --all --toon
186
+ trekoon --toon task update --ids id1,id2 --append "Waiting on release" --status blocked
187
+ trekoon --toon epic update --ids epic1,epic2 --append "Sprint planning refreshed" --status in_progress
219
188
  ```
220
189
 
221
- - `epic list` / `task list` / `subtask list` defaults:
222
- - open work only (`in_progress`, `in-progress`, `todo`)
223
- - prioritized as `in_progress`/`in-progress` first, then `todo`
224
- - default limit `10`
225
- - `--cursor <n>` is offset-like pagination for list endpoints
226
- - Filter list explicitly when needed:
190
+ ## Search and replace policy
227
191
 
228
- ```bash
229
- trekoon task list --status in_progress,todo --limit 20 --toon
230
- trekoon epic list --status done --toon
231
- trekoon task list --all --toon
232
- ```
192
+ Use scoped search before manual tree reads when you need to locate repeated
193
+ paths, labels, owners, or migration targets.
233
194
 
234
- - `--all` cannot be combined with `--status` or `--limit`.
235
- - `--all` cannot be combined with `--cursor`.
236
- - Machine pagination contract is in `meta.pagination.hasMore` and
237
- `meta.pagination.nextCursor`.
238
- - Machine list/show responses may also include:
239
- - `meta.defaults`
240
- - `meta.filters`
241
- - `meta.truncation`
242
- - `epic show <id> --all --toon`: full epic tree (tasks + subtasks)
243
- - `task show <id> --all --toon`: task plus its subtasks
195
+ ### Scope choice
244
196
 
245
- ### Canonical storage root behavior
197
+ Prefer the narrowest valid root:
246
198
 
247
- - In git repos/worktrees, Trekoon resolves storage from repository top-level so
248
- nested cwd invocations use one canonical `.trekoon/trekoon.db`.
249
- - In non-git directories, Trekoon falls back to invocation cwd.
250
- - If invocation cwd differs from canonical root, machine output may include
251
- `meta.storageRootDiagnostics`.
199
+ 1. `subtask search` or `subtask replace`
200
+ 2. `task search` or `task replace`
201
+ 3. `epic search` or `epic replace`
252
202
 
253
- ### View Options
203
+ Scope behavior:
254
204
 
255
- | Command | `--view` options |
256
- |---------|------------------|
257
- | `list` | `table` (default), `compact` |
258
- | `show` | `table` (default), `compact`, `tree`, `detail` |
205
+ - `subtask` scope scans only that subtask.
206
+ - `task` scope scans the task plus descendant subtasks.
207
+ - `epic` scope scans the epic plus descendant tasks and subtasks.
259
208
 
260
- ## 5) Create work (epic/task/subtask)
209
+ ### Safe replace workflow
210
+
211
+ 1. Search first.
212
+ 2. Preview replace.
213
+ 3. Apply only after preview matches the intended scope.
261
214
 
262
215
  ```bash
263
- trekoon epic create --title "..." --description "..." --status todo --toon
264
- trekoon task create --epic <epic-id> --title "..." --description "..." --status todo --toon
265
- trekoon subtask create --task <task-id> --title "..." --description "..." --status todo --toon
216
+ trekoon --toon epic search <epic-id> "path/to/somewhere"
217
+ trekoon --toon epic replace <epic-id> --search "path/to/somewhere" --replace "path/to/new-path"
218
+ trekoon --toon epic replace <epic-id> --search "path/to/somewhere" --replace "path/to/new-path" --apply
266
219
  ```
267
220
 
268
- Notes:
269
- - `description` is required for epic/task create and it must be well written.
270
- - `status` defaults to `todo` if omitted.
271
- - `description` is optional for subtask create.
272
-
273
- ## 6) Update work
221
+ Guardrails:
274
222
 
275
- ### Single-item update
223
+ - Use literal, explicit search text.
224
+ - Narrow fields when useful: `--fields title`, `--fields description`, or
225
+ `--fields title,description`.
226
+ - Do not jump straight to `--apply`.
227
+ - Prefer scoped search/replace over manually reading a whole tree and editing
228
+ many records one by one.
276
229
 
277
- ```bash
278
- trekoon epic update <epic-id> --title "..." --description "..." --status in_progress --toon
279
- trekoon task update <task-id> --title "..." --description "..." --status in_progress --toon
280
- trekoon subtask update <subtask-id> --title "..." --description "..." --status in_progress --toon
281
- ```
230
+ ## Setup and fallback
282
231
 
283
- ### Bulk update (task/epic)
232
+ If Trekoon is unavailable or state is missing:
284
233
 
285
234
  ```bash
286
- trekoon task update --all --append "..." --status in_progress --toon
287
- trekoon task update --ids id1,id2 --append "..." --status in_progress --toon
288
-
289
- trekoon epic update --all --append "..." --status in_progress --toon
290
- trekoon epic update --ids id1,id2 --append "..." --status in_progress --toon
235
+ trekoon --toon init
236
+ trekoon --toon quickstart
237
+ trekoon --help --toon
291
238
  ```
292
239
 
293
- Rules:
294
- - `--all` and `--ids` are mutually exclusive.
295
- - In bulk mode, do not pass a positional ID.
296
- - Bulk update supports `--append` and/or `--status`.
297
-
298
- ## 7) Setup/install/init (if `trekoon` is unavailable)
240
+ Use `quickstart` for the canonical execution loop. Use `--help --toon` when you
241
+ need exact syntax.
299
242
 
300
- 1. Install Trekoon (or make sure it is on `PATH`).
301
- 2. In the target repository/worktree, initialize tracker state:
243
+ ## Sync reminders
302
244
 
303
- ```bash
304
- trekoon init --toon
305
- ```
245
+ - Run `trekoon --toon sync status` at session start and before PR or merge.
246
+ - Before merge, pull tracker events from the base branch:
306
247
 
307
- 3. You can always run `trekoon quickstart --toon` or `trekoon --help --toon` to
308
- get more information.
248
+ ```bash
249
+ trekoon --toon sync pull --from main
250
+ ```
309
251
 
310
- If `.trekoon/trekoon.db` is missing, initialize before any create/update commands.
252
+ - If conflicts exist, inspect and resolve them explicitly:
311
253
 
312
- ## 8) Safety
254
+ ```bash
255
+ trekoon --toon sync conflicts list
256
+ trekoon --toon sync conflicts show <conflict-id>
257
+ trekoon --toon sync resolve <conflict-id> --use ours
258
+ ```
313
259
 
314
- - Never edit `.trekoon/trekoon.db` directly.
315
- - `trekoon wipe --yes --toon` is prohibited unless the user explicitly confirms they want a destructive wipe.
260
+ Trekoon stores local state in `.trekoon/trekoon.db`. In git repos and
261
+ worktrees, storage resolves from the repository root.