@winton979/task-cli 1.1.0 → 1.2.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/LICENSE +21 -0
- package/README.md +55 -18
- package/package.json +2 -1
- package/src/cli.js +2 -2
- package/src/init.js +77 -23
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 winton979
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -57,7 +57,7 @@ task --help
|
|
|
57
57
|
|
|
58
58
|
After initialization, Task CLI creates the `.ai/` workspace and installs workflow skills into both `.claude/skills/` and `.codex/skills/`.
|
|
59
59
|
|
|
60
|
-
Use `task refresh` in existing projects to remove and reinstall only the workflow skills managed by task-cli. It does not delete your `.ai` briefs, archives, or decision log.
|
|
60
|
+
Use `task refresh` in existing projects to remove and reinstall only the workflow skills managed by task-cli. It does not delete your `.ai` briefs, internal archives, or decision log.
|
|
61
61
|
|
|
62
62
|
Use `task doctor` to check whether the required directories exist, whether managed skills are missing or outdated, and whether the `.gitignore` rules are present.
|
|
63
63
|
|
|
@@ -70,9 +70,11 @@ Use `task doctor` to check whether the required directories exist, whether manag
|
|
|
70
70
|
```text
|
|
71
71
|
/task-fast
|
|
72
72
|
↓
|
|
73
|
-
clarify + brief + implement + validate
|
|
73
|
+
clarify + brief + implement + validate
|
|
74
74
|
↓
|
|
75
75
|
/task-review
|
|
76
|
+
or
|
|
77
|
+
/task-cancel
|
|
76
78
|
```
|
|
77
79
|
|
|
78
80
|
### Larger Requirement
|
|
@@ -84,9 +86,9 @@ TASK_READY
|
|
|
84
86
|
↓
|
|
85
87
|
/task-implement
|
|
86
88
|
↓
|
|
87
|
-
/task archived
|
|
88
|
-
↓
|
|
89
89
|
/task-review
|
|
90
|
+
or
|
|
91
|
+
/task-cancel
|
|
90
92
|
```
|
|
91
93
|
|
|
92
94
|
### Bug Fix
|
|
@@ -98,9 +100,9 @@ BUG_READY
|
|
|
98
100
|
↓
|
|
99
101
|
/bug-fix
|
|
100
102
|
↓
|
|
101
|
-
/bug archived
|
|
102
|
-
↓
|
|
103
103
|
/bug-review
|
|
104
|
+
or
|
|
105
|
+
/bug-cancel
|
|
104
106
|
```
|
|
105
107
|
|
|
106
108
|
---
|
|
@@ -113,12 +115,14 @@ BUG_READY
|
|
|
113
115
|
* task-explore
|
|
114
116
|
* task-implement
|
|
115
117
|
* task-review
|
|
118
|
+
* task-cancel
|
|
116
119
|
|
|
117
120
|
### Bug Workflow
|
|
118
121
|
|
|
119
122
|
* bug-explore
|
|
120
123
|
* bug-fix
|
|
121
124
|
* bug-review
|
|
125
|
+
* bug-cancel
|
|
122
126
|
|
|
123
127
|
### Other
|
|
124
128
|
|
|
@@ -155,27 +159,56 @@ Instead of maintaining large specifications, it focuses on:
|
|
|
155
159
|
|
|
156
160
|
1. Clarifying requirements before coding
|
|
157
161
|
2. Capturing execution context in concise briefs
|
|
158
|
-
3. Executing with validation
|
|
162
|
+
3. Executing with validation while archiving automatically in the background
|
|
159
163
|
4. Reviewing work against acceptance criteria
|
|
160
164
|
5. Keeping a lightweight decision history
|
|
161
165
|
|
|
162
166
|
The goal is to improve quality without slowing down iteration speed.
|
|
163
167
|
|
|
168
|
+
## Compared with OpenSpec-Style Workflows
|
|
169
|
+
|
|
170
|
+
Task CLI is designed as a lightweight alternative to heavier spec-driven systems such as OpenSpec.
|
|
171
|
+
|
|
172
|
+
Detailed specification workflows can improve alignment, traceability, and consistency. They are often the right choice for large initiatives, cross-team programs, and environments with strong process requirements.
|
|
173
|
+
|
|
174
|
+
The difficulty is that the same level of ceremony does not always fit day-to-day engineering work. For frequent bug fixes, small features, and fast iteration, the process can become heavier than the change itself. When that happens, maintenance overhead increases, documentation quality starts to drift, and teams gradually stop using the workflow as originally intended.
|
|
175
|
+
|
|
176
|
+
Task CLI takes a narrower and more pragmatic approach:
|
|
177
|
+
|
|
178
|
+
* clarify the requirement
|
|
179
|
+
* capture only the minimum useful brief
|
|
180
|
+
* execute against acceptance criteria
|
|
181
|
+
* review the result
|
|
182
|
+
* keep a lightweight decision trail
|
|
183
|
+
|
|
184
|
+
The goal is not to replace specification systems in every context. It is to provide a workflow that people will actually keep using during day-to-day engineering work.
|
|
164
185
|
|
|
165
|
-
##
|
|
186
|
+
## Strengths and Tradeoffs
|
|
166
187
|
|
|
167
|
-
|
|
188
|
+
Task CLI is optimized for execution speed and sustained adoption rather than full process coverage.
|
|
168
189
|
|
|
169
|
-
|
|
170
|
-
* `bug-explore` now includes bug brief generation.
|
|
171
|
-
* `task-implement` and `bug-fix` now validate and archive the brief when the work is complete.
|
|
190
|
+
Strengths:
|
|
172
191
|
|
|
173
|
-
|
|
192
|
+
* much lower process overhead for bugs, small features, and short iterations
|
|
193
|
+
* easier to adopt in mature codebases where engineers already know the product context
|
|
194
|
+
* encourages real usage because the workflow is short enough to sustain
|
|
195
|
+
* keeps enough structure to improve clarity without forcing large documents
|
|
174
196
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
*
|
|
178
|
-
*
|
|
197
|
+
Tradeoffs:
|
|
198
|
+
|
|
199
|
+
* less suitable for large cross-team initiatives that need formal design traceability
|
|
200
|
+
* relies more on engineer judgment and review quality than a full specification process
|
|
201
|
+
* stores less long-form historical context than a dedicated spec repository
|
|
202
|
+
|
|
203
|
+
## Recommended Workflow Model
|
|
204
|
+
|
|
205
|
+
Task CLI keeps the user-facing flow short:
|
|
206
|
+
|
|
207
|
+
* `task-fast`
|
|
208
|
+
* `task-explore -> task-implement -> task-review` or `task-cancel`
|
|
209
|
+
* `bug-explore -> bug-fix -> bug-review` or `bug-cancel`
|
|
210
|
+
|
|
211
|
+
The `archive/` directories remain as internal storage. They are not separate user steps in the recommended workflow.
|
|
179
212
|
|
|
180
213
|
## Upgrading Existing Projects
|
|
181
214
|
|
|
@@ -188,7 +221,7 @@ task refresh
|
|
|
188
221
|
This will:
|
|
189
222
|
|
|
190
223
|
* keep `.ai/tasks`, `.ai/bugs`, and `.ai/decisions`
|
|
191
|
-
* remove only these managed skills from `.claude/skills/` and `.codex/skills/`: `task-fast`, `task-explore`, `task-implement`, `task-review`, `bug-explore`, `bug-fix`, `bug-review`, `decision-log`
|
|
224
|
+
* remove only these managed skills from `.claude/skills/` and `.codex/skills/`: `task-fast`, `task-explore`, `task-implement`, `task-review`, `task-cancel`, `bug-explore`, `bug-fix`, `bug-review`, `bug-cancel`, `decision-log`
|
|
192
225
|
* reinstall the latest versions of those skills
|
|
193
226
|
|
|
194
227
|
This avoids touching unrelated custom skills in the same project.
|
|
@@ -199,5 +232,9 @@ Before refreshing, you can inspect the current setup with:
|
|
|
199
232
|
task doctor
|
|
200
233
|
```
|
|
201
234
|
|
|
235
|
+
## License
|
|
236
|
+
|
|
237
|
+
MIT
|
|
238
|
+
|
|
202
239
|
> Task CLI does not install Grill Me automatically.
|
|
203
240
|
> Users remain free to choose any Grill Me compatible implementation.
|
package/package.json
CHANGED
package/src/cli.js
CHANGED
|
@@ -26,8 +26,8 @@ Usage:
|
|
|
26
26
|
|
|
27
27
|
Recommended flows after init:
|
|
28
28
|
fast: task-fast
|
|
29
|
-
task: task-explore -> task-implement -> task-review
|
|
30
|
-
bug: bug-explore -> bug-fix -> bug-review`);
|
|
29
|
+
task: task-explore -> task-implement -> task-review | task-cancel
|
|
30
|
+
bug: bug-explore -> bug-fix -> bug-review | bug-cancel`);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
switch (cmd) {
|
package/src/init.js
CHANGED
|
@@ -14,10 +14,10 @@ const GITIGNORE_BLOCK = [
|
|
|
14
14
|
const SKILLS = {
|
|
15
15
|
'task-fast': {
|
|
16
16
|
name: 'task-fast',
|
|
17
|
-
description: 'Fast path for small requirements. Clarify quickly, create the brief, implement, verify
|
|
17
|
+
description: 'Fast path for small requirements. Clarify quickly, create the brief, implement, and verify. Archive automatically on completion.',
|
|
18
18
|
content: `---
|
|
19
19
|
name: task-fast
|
|
20
|
-
description: Fast path for small requirements. Clarify quickly, create the brief, implement, verify
|
|
20
|
+
description: Fast path for small requirements. Clarify quickly, create the brief, implement, and verify. Archive automatically on completion.
|
|
21
21
|
user-invocable: true
|
|
22
22
|
---
|
|
23
23
|
|
|
@@ -35,7 +35,7 @@ Workflow
|
|
|
35
35
|
3. Show the brief before coding.
|
|
36
36
|
4. If the user does not object, implement immediately.
|
|
37
37
|
5. Verify the result against the acceptance criteria.
|
|
38
|
-
6.
|
|
38
|
+
6. Archive the brief automatically by moving it to:
|
|
39
39
|
|
|
40
40
|
.ai/tasks/archive/YYYY-MM-DD-task-name.md
|
|
41
41
|
|
|
@@ -138,10 +138,10 @@ TASK_READY
|
|
|
138
138
|
|
|
139
139
|
'task-implement': {
|
|
140
140
|
name: 'task-implement',
|
|
141
|
-
description: 'Implement the latest active task brief
|
|
141
|
+
description: 'Implement the latest active task brief and validate it. Archive automatically when complete.',
|
|
142
142
|
content: `---
|
|
143
143
|
name: task-implement
|
|
144
|
-
description: Implement the latest active task brief
|
|
144
|
+
description: Implement the latest active task brief and validate it. Archive automatically when complete.
|
|
145
145
|
user-invocable: true
|
|
146
146
|
---
|
|
147
147
|
|
|
@@ -158,7 +158,7 @@ Rules
|
|
|
158
158
|
5. Avoid unnecessary refactoring.
|
|
159
159
|
6. State assumptions explicitly.
|
|
160
160
|
7. Validate the result before stopping.
|
|
161
|
-
8. If the work is complete,
|
|
161
|
+
8. If the work is complete, archive the brief automatically by moving it to .ai/tasks/archive/.
|
|
162
162
|
|
|
163
163
|
Output
|
|
164
164
|
|
|
@@ -174,18 +174,15 @@ Files modified.
|
|
|
174
174
|
|
|
175
175
|
How acceptance criteria were satisfied.
|
|
176
176
|
|
|
177
|
-
## Archive
|
|
178
|
-
|
|
179
|
-
Whether the brief was archived.
|
|
180
177
|
`,
|
|
181
178
|
},
|
|
182
179
|
|
|
183
180
|
'task-review': {
|
|
184
181
|
name: 'task-review',
|
|
185
|
-
description: 'Review the latest task implementation against the
|
|
182
|
+
description: 'Review the latest task implementation against the corresponding task brief.',
|
|
186
183
|
content: `---
|
|
187
184
|
name: task-review
|
|
188
|
-
description: Review the latest task implementation against the
|
|
185
|
+
description: Review the latest task implementation against the corresponding task brief.
|
|
189
186
|
user-invocable: true
|
|
190
187
|
---
|
|
191
188
|
|
|
@@ -228,6 +225,36 @@ Anything not fully implemented.
|
|
|
228
225
|
`,
|
|
229
226
|
},
|
|
230
227
|
|
|
228
|
+
'task-cancel': {
|
|
229
|
+
name: 'task-cancel',
|
|
230
|
+
description: 'Discard the current task analysis output and implementation changes for this attempt.',
|
|
231
|
+
content: `---
|
|
232
|
+
name: task-cancel
|
|
233
|
+
description: Discard the current task analysis output and implementation changes for this attempt.
|
|
234
|
+
user-invocable: true
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
Purpose
|
|
238
|
+
|
|
239
|
+
Abandon the current task attempt completely.
|
|
240
|
+
|
|
241
|
+
Rules
|
|
242
|
+
|
|
243
|
+
1. Target only the current task attempt.
|
|
244
|
+
2. Discard the current task brief and any analysis artifacts created for this attempt.
|
|
245
|
+
3. Discard code changes made for this attempt.
|
|
246
|
+
4. Do not archive the task brief.
|
|
247
|
+
5. Do not keep partial implementation.
|
|
248
|
+
6. Do not preserve temporary conclusions from this attempt as accepted decisions.
|
|
249
|
+
7. Do not touch unrelated historical archives, other active briefs, or user-authored changes outside this attempt.
|
|
250
|
+
8. If the exact changed files are uncertain, stop and ask for confirmation before deleting or reverting anything.
|
|
251
|
+
|
|
252
|
+
Output
|
|
253
|
+
|
|
254
|
+
TASK_CANCELLED
|
|
255
|
+
`,
|
|
256
|
+
},
|
|
257
|
+
|
|
231
258
|
'bug-explore': {
|
|
232
259
|
name: 'bug-explore',
|
|
233
260
|
description: 'Investigate a bug and generate a fix brief in one step, without writing code.',
|
|
@@ -294,10 +321,10 @@ BUG_READY
|
|
|
294
321
|
|
|
295
322
|
'bug-fix': {
|
|
296
323
|
name: 'bug-fix',
|
|
297
|
-
description: 'Fix the latest active bug brief
|
|
324
|
+
description: 'Fix the latest active bug brief and validate the result. Archive automatically when complete.',
|
|
298
325
|
content: `---
|
|
299
326
|
name: bug-fix
|
|
300
|
-
description: Fix the latest active bug brief
|
|
327
|
+
description: Fix the latest active bug brief and validate the result. Archive automatically when complete.
|
|
301
328
|
user-invocable: true
|
|
302
329
|
---
|
|
303
330
|
|
|
@@ -314,7 +341,7 @@ Rules
|
|
|
314
341
|
5. Preserve existing behavior.
|
|
315
342
|
6. Explain reasoning.
|
|
316
343
|
7. Validate the fix before stopping.
|
|
317
|
-
8. If the bug is fixed,
|
|
344
|
+
8. If the bug is fixed, archive the brief automatically by moving it to .ai/bugs/archive/.
|
|
318
345
|
|
|
319
346
|
Output
|
|
320
347
|
|
|
@@ -330,18 +357,15 @@ Changes made.
|
|
|
330
357
|
|
|
331
358
|
Verification performed.
|
|
332
359
|
|
|
333
|
-
## Archive
|
|
334
|
-
|
|
335
|
-
Whether the brief was archived.
|
|
336
360
|
`,
|
|
337
361
|
},
|
|
338
362
|
|
|
339
363
|
'bug-review': {
|
|
340
364
|
name: 'bug-review',
|
|
341
|
-
description: 'Review the latest bug fix against the
|
|
365
|
+
description: 'Review the latest bug fix against the corresponding bug brief.',
|
|
342
366
|
content: `---
|
|
343
367
|
name: bug-review
|
|
344
|
-
description: Review the latest bug fix against the
|
|
368
|
+
description: Review the latest bug fix against the corresponding bug brief.
|
|
345
369
|
user-invocable: true
|
|
346
370
|
---
|
|
347
371
|
|
|
@@ -378,6 +402,36 @@ Further improvements.
|
|
|
378
402
|
`,
|
|
379
403
|
},
|
|
380
404
|
|
|
405
|
+
'bug-cancel': {
|
|
406
|
+
name: 'bug-cancel',
|
|
407
|
+
description: 'Discard the current bug analysis output and code changes for this attempt.',
|
|
408
|
+
content: `---
|
|
409
|
+
name: bug-cancel
|
|
410
|
+
description: Discard the current bug analysis output and code changes for this attempt.
|
|
411
|
+
user-invocable: true
|
|
412
|
+
---
|
|
413
|
+
|
|
414
|
+
Purpose
|
|
415
|
+
|
|
416
|
+
Abandon the current bug-fix attempt completely.
|
|
417
|
+
|
|
418
|
+
Rules
|
|
419
|
+
|
|
420
|
+
1. Target only the current bug-fix attempt.
|
|
421
|
+
2. Discard the current bug brief and any analysis artifacts created for this attempt.
|
|
422
|
+
3. Discard code changes made for this attempt.
|
|
423
|
+
4. Do not archive the bug brief.
|
|
424
|
+
5. Do not keep partial fixes.
|
|
425
|
+
6. Do not preserve temporary conclusions from this attempt as accepted decisions.
|
|
426
|
+
7. Do not touch unrelated historical archives, other active briefs, or user-authored changes outside this attempt.
|
|
427
|
+
8. If the exact changed files are uncertain, stop and ask for confirmation before deleting or reverting anything.
|
|
428
|
+
|
|
429
|
+
Output
|
|
430
|
+
|
|
431
|
+
BUG_CANCELLED
|
|
432
|
+
`,
|
|
433
|
+
},
|
|
434
|
+
|
|
381
435
|
'decision-log': {
|
|
382
436
|
name: 'decision-log',
|
|
383
437
|
description: 'Record implementation decisions to .ai/decisions/decisions.md. Append-only, max 10 lines per entry.',
|
|
@@ -539,8 +593,8 @@ export function init(cwd, { fs, path, log }) {
|
|
|
539
593
|
|
|
540
594
|
log.info(`\nTask workflow initialized. Recommended flows:
|
|
541
595
|
fast: task-fast
|
|
542
|
-
task: task-explore -> task-implement -> task-review
|
|
543
|
-
bug: bug-explore -> bug-fix -> bug-review
|
|
596
|
+
task: task-explore -> task-implement -> task-review | task-cancel
|
|
597
|
+
bug: bug-explore -> bug-fix -> bug-review | bug-cancel
|
|
544
598
|
other: decision-log`);
|
|
545
599
|
}
|
|
546
600
|
|
|
@@ -573,8 +627,8 @@ export function refresh(cwd, { fs, path, log }) {
|
|
|
573
627
|
|
|
574
628
|
log.info(`\nTask workflow refreshed. Managed skills reinstalled:
|
|
575
629
|
fast: task-fast
|
|
576
|
-
task: task-explore -> task-implement -> task-review
|
|
577
|
-
bug: bug-explore -> bug-fix -> bug-review
|
|
630
|
+
task: task-explore -> task-implement -> task-review | task-cancel
|
|
631
|
+
bug: bug-explore -> bug-fix -> bug-review | bug-cancel
|
|
578
632
|
other: decision-log`);
|
|
579
633
|
}
|
|
580
634
|
|