@rse/ase 0.9.7 → 0.9.8
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/dst/ase-getopt.js +11 -1
- package/dst/ase-task.js +20 -21
- package/package.json +2 -2
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/agents/ase-docs-proofread.md +2 -2
- package/plugin/meta/ase-constitution.md +7 -0
- package/plugin/meta/ase-control.md +24 -3
- package/plugin/meta/ase-format-task.md +2 -2
- package/plugin/meta/ase-getopt.md +2 -1
- package/plugin/meta/ase-skill.md +28 -9
- package/plugin/package.json +2 -2
- package/plugin/skills/ase-arch-analyze/SKILL.md +88 -89
- package/plugin/skills/ase-arch-discover/SKILL.md +18 -9
- package/plugin/skills/ase-code-analyze/SKILL.md +6 -5
- package/plugin/skills/ase-code-craft/SKILL.md +42 -35
- package/plugin/skills/ase-code-explain/SKILL.md +1 -1
- package/plugin/skills/ase-code-insight/SKILL.md +1 -1
- package/plugin/skills/ase-code-lint/SKILL.md +16 -8
- package/plugin/skills/ase-code-refactor/SKILL.md +42 -35
- package/plugin/skills/ase-code-resolve/SKILL.md +43 -35
- package/plugin/skills/ase-docs-distill/SKILL.md +1 -1
- package/plugin/skills/ase-docs-distill/help.md +3 -3
- package/plugin/skills/ase-docs-proofread/SKILL.md +22 -13
- package/plugin/skills/ase-meta-brainstorm/SKILL.md +25 -6
- package/plugin/skills/ase-meta-brainstorm/help.md +6 -10
- package/plugin/skills/ase-meta-diff/SKILL.md +5 -4
- package/plugin/skills/ase-meta-diff/help.md +10 -11
- package/plugin/skills/ase-meta-evaluate/SKILL.md +10 -9
- package/plugin/skills/ase-meta-quorum/SKILL.md +15 -5
- package/plugin/skills/ase-meta-review/SKILL.md +3 -3
- package/plugin/skills/ase-meta-review/help.md +3 -3
- package/plugin/skills/ase-meta-search/SKILL.md +9 -8
- package/plugin/skills/ase-meta-steelman/SKILL.md +1 -1
- package/plugin/skills/ase-meta-why/SKILL.md +16 -10
- package/plugin/skills/ase-task-condense/SKILL.md +32 -17
- package/plugin/skills/ase-task-condense/help.md +1 -1
- package/plugin/skills/ase-task-delete/SKILL.md +6 -3
- package/plugin/skills/ase-task-edit/SKILL.md +53 -32
- package/plugin/skills/ase-task-edit/help.md +2 -2
- package/plugin/skills/ase-task-grill/SKILL.md +53 -24
- package/plugin/skills/ase-task-id/SKILL.md +11 -2
- package/plugin/skills/ase-task-implement/SKILL.md +36 -15
- package/plugin/skills/ase-task-list/SKILL.md +1 -1
- package/plugin/skills/ase-task-preflight/SKILL.md +40 -20
- package/plugin/skills/ase-task-preflight/help.md +1 -1
- package/plugin/skills/ase-task-reboot/SKILL.md +27 -18
- package/plugin/skills/ase-task-rename/SKILL.md +5 -3
- package/plugin/skills/ase-task-view/help.md +24 -5
|
@@ -23,7 +23,7 @@ Iteratively Edit a Task Plan
|
|
|
23
23
|
|
|
24
24
|
<expand name="getopt"
|
|
25
25
|
arg1="ase-task-edit"
|
|
26
|
-
arg2="--plan|-p=(none|OVERWRITE|REFINE|PRESERVE) --dry|-d --next|-n=(none|DONE|GRILL|PREFLIGHT|IMPLEMENT)...">
|
|
26
|
+
arg2="--plan|-p=(none|OVERWRITE|REFINE|PRESERVE) --dry|-d --next|-n=(none|DONE|GRILL|PREFLIGHT|IMPLEMENT)... --int-reuse-task">
|
|
27
27
|
$ARGUMENTS
|
|
28
28
|
</expand>
|
|
29
29
|
|
|
@@ -67,7 +67,7 @@ the <instruction/> and all decisions you derived from the
|
|
|
67
67
|
|
|
68
68
|
If a `CHANGELOG.md` file exists in the project (or in any
|
|
69
69
|
affected sub-package), the plan *MUST* include, as part of
|
|
70
|
-
its `##
|
|
70
|
+
its `## CHANGES` section, an explicit bullet point
|
|
71
71
|
describing the addition of a corresponding new entry to
|
|
72
72
|
that `CHANGELOG.md` file, aligned with its existing style
|
|
73
73
|
and conventions.
|
|
@@ -111,7 +111,7 @@ Set <content-dirty>true</content-dirty>.
|
|
|
111
111
|
</template>
|
|
112
112
|
</if>
|
|
113
113
|
|
|
114
|
-
2.
|
|
114
|
+
2. <elseif condition="
|
|
115
115
|
<instruction/> has the format `<id/>: <text/>` where
|
|
116
116
|
<id/> matches the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$` and
|
|
117
117
|
<text/> is *empty*
|
|
@@ -126,9 +126,9 @@ Set <content-dirty>true</content-dirty>.
|
|
|
126
126
|
<template>
|
|
127
127
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **task given**
|
|
128
128
|
</template>
|
|
129
|
-
</
|
|
129
|
+
</elseif>
|
|
130
130
|
|
|
131
|
-
3.
|
|
131
|
+
3. <elseif condition="
|
|
132
132
|
<instruction/> has the format `<id/>: <text/>` where
|
|
133
133
|
<id/> matches the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$` and
|
|
134
134
|
<text/> is *not empty*
|
|
@@ -144,9 +144,9 @@ Set <content-dirty>true</content-dirty>.
|
|
|
144
144
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **task given**
|
|
145
145
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ⇌ instruction: **<instruction/>**, ▶ status: **instruction given**
|
|
146
146
|
</template>
|
|
147
|
-
</
|
|
147
|
+
</elseif>
|
|
148
148
|
|
|
149
|
-
4.
|
|
149
|
+
4. <elseif condition="
|
|
150
150
|
<instruction/> is not empty
|
|
151
151
|
">
|
|
152
152
|
Only output the following <template/>:
|
|
@@ -155,9 +155,9 @@ Set <content-dirty>true</content-dirty>.
|
|
|
155
155
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **task inherited**
|
|
156
156
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ⇌ instruction: **<instruction/>**, ▶ status: **instruction given**
|
|
157
157
|
</template>
|
|
158
|
-
</
|
|
158
|
+
</elseif>
|
|
159
159
|
|
|
160
|
-
5.
|
|
160
|
+
5. <elseif condition="
|
|
161
161
|
<instruction/> is empty
|
|
162
162
|
">
|
|
163
163
|
Only output the following <template/>:
|
|
@@ -165,14 +165,26 @@ Set <content-dirty>true</content-dirty>.
|
|
|
165
165
|
<template>
|
|
166
166
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **task inherited**
|
|
167
167
|
</template>
|
|
168
|
-
</
|
|
168
|
+
</elseif>
|
|
169
169
|
|
|
170
170
|
2. **Determine Plan:**
|
|
171
171
|
|
|
172
|
-
1.
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
172
|
+
1. Determine any existing plan content:
|
|
173
|
+
|
|
174
|
+
<if condition="<getopt-option-int-reuse-task/> is equal `true`">
|
|
175
|
+
Set <text/> to the `text` argument of the most recent
|
|
176
|
+
`ase_task_save(id: '<ase-task-id/>', ...)` tool call,
|
|
177
|
+
*without* calling `ase_task_load` again. Set <status>plan
|
|
178
|
+
reused</status>. Do not output anything.
|
|
179
|
+
</if>
|
|
180
|
+
<else>
|
|
181
|
+
Call the `ase_task_load(id: "<ase-task-id/>")` tool of the
|
|
182
|
+
`ase` MCP server to load any existing plan content and set
|
|
183
|
+
<text/> to the `text` output field of this `ase_task_load`
|
|
184
|
+
tool call. Do not output anything related to this MCP tool
|
|
185
|
+
call. Set <status>plan loaded</status>.
|
|
186
|
+
</else>
|
|
187
|
+
|
|
176
188
|
Set <content-dirty>false</content-dirty>.
|
|
177
189
|
|
|
178
190
|
- If <text/> starts with `ERROR:`:
|
|
@@ -187,7 +199,7 @@ Set <content-dirty>true</content-dirty>.
|
|
|
187
199
|
Only output the following <template/>:
|
|
188
200
|
|
|
189
201
|
<template>
|
|
190
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status:
|
|
202
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **<status/>**
|
|
191
203
|
</template>
|
|
192
204
|
|
|
193
205
|
2. <if condition="<content/> is empty AND <instruction/> is empty">
|
|
@@ -271,7 +283,7 @@ Set <content-dirty>true</content-dirty>.
|
|
|
271
283
|
</template>
|
|
272
284
|
</if>
|
|
273
285
|
|
|
274
|
-
4. <if condition="<content/> does not contain '#
|
|
286
|
+
4. <if condition="<content/> does not contain '# TASK' AND <instruction/> is empty">
|
|
275
287
|
Set <instruction><content/></instruction> (set instruction to content).
|
|
276
288
|
Set <content></content> (set content to empty).
|
|
277
289
|
Set <content-dirty>true</content-dirty>.
|
|
@@ -296,12 +308,12 @@ Set <content-dirty>true</content-dirty>.
|
|
|
296
308
|
`PREFLIGHT`, or declines/cancels in the dialog of step 3.4:
|
|
297
309
|
|
|
298
310
|
1. *Update timestamp*:
|
|
299
|
-
<if condition="<content/> contains '
|
|
311
|
+
<if condition="<content/> contains '⚙ Modified:' AND <content-dirty/> is 'true'">
|
|
300
312
|
Update <timestamp-modified/> with the current time in
|
|
301
313
|
ISO-style format, which has to be determined by calling the
|
|
302
314
|
`ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the `ase`
|
|
303
315
|
MCP server and use the `text` field of its response. Update
|
|
304
|
-
<content/> with the new
|
|
316
|
+
<content/> with the new `Modified: <timestamp-modified/>`.
|
|
305
317
|
Do not output anything.
|
|
306
318
|
</if>
|
|
307
319
|
|
|
@@ -350,8 +362,8 @@ Set <content-dirty>true</content-dirty>.
|
|
|
350
362
|
Set <instruction></instruction> (clear the instruction, as
|
|
351
363
|
any instruction carried in via the arguments was already
|
|
352
364
|
applied to the plan in step 2 before this loop), so that a
|
|
353
|
-
|
|
354
|
-
refinement instruction below.
|
|
365
|
+
later `OTHER: <text/>` refinement correctly starts from a
|
|
366
|
+
*fresh* refinement instruction below.
|
|
355
367
|
|
|
356
368
|
- else:
|
|
357
369
|
Only output the following <template/> and then immediately
|
|
@@ -385,13 +397,16 @@ Set <content-dirty>true</content-dirty>.
|
|
|
385
397
|
|
|
386
398
|
- If <result/> is `GRILL`:
|
|
387
399
|
|
|
388
|
-
*Break* out of the *loop*.
|
|
400
|
+
*Break* out of the *loop*.
|
|
401
|
+
Set <args></args> (set args to empty).
|
|
402
|
+
<if condition="the plan was saved via `ase_task_save` in step 3.2">
|
|
403
|
+
Set <args>--int-reuse-task</args>.
|
|
404
|
+
</if>
|
|
389
405
|
<if condition="<getopt-option-next/> is not equal `none`">
|
|
390
|
-
|
|
391
|
-
remaining list tokens to the downstream skill).
|
|
406
|
+
Set <args><args/> --next <getopt-option-next/></args>
|
|
392
407
|
</if>
|
|
393
408
|
Only output the following <template/> and then call the
|
|
394
|
-
`Skill(skill: "ase:ase-task-grill", args: <args/>)` tool
|
|
409
|
+
`Skill(skill: "ase:ase-task-grill", args: "<args/>")` tool
|
|
395
410
|
to *grill* the finalized plan.
|
|
396
411
|
|
|
397
412
|
<template>
|
|
@@ -400,13 +415,16 @@ Set <content-dirty>true</content-dirty>.
|
|
|
400
415
|
|
|
401
416
|
- If <result/> is `PREFLIGHT`:
|
|
402
417
|
|
|
403
|
-
*Break* out of the *loop*.
|
|
418
|
+
*Break* out of the *loop*.
|
|
419
|
+
Set <args></args> (set args to empty).
|
|
420
|
+
<if condition="the plan was saved via `ase_task_save` in step 3.2">
|
|
421
|
+
Set <args>--int-reuse-task</args>.
|
|
422
|
+
</if>
|
|
404
423
|
<if condition="<getopt-option-next/> is not equal `none`">
|
|
405
|
-
|
|
406
|
-
remaining list tokens to the downstream skill).
|
|
424
|
+
Set <args><args/> --next <getopt-option-next/></args>
|
|
407
425
|
</if>
|
|
408
426
|
Only output the following <template/> and then call the
|
|
409
|
-
`Skill(skill: "ase:ase-task-preflight", args: <args/>)` tool
|
|
427
|
+
`Skill(skill: "ase:ase-task-preflight", args: "<args/>")` tool
|
|
410
428
|
to *apply* the finalized plan.
|
|
411
429
|
|
|
412
430
|
<template>
|
|
@@ -415,13 +433,16 @@ Set <content-dirty>true</content-dirty>.
|
|
|
415
433
|
|
|
416
434
|
- If <result/> is `IMPLEMENT`:
|
|
417
435
|
|
|
418
|
-
*Break* out of the *loop*.
|
|
436
|
+
*Break* out of the *loop*.
|
|
437
|
+
Set <args></args> (set args to empty).
|
|
438
|
+
<if condition="the plan was saved via `ase_task_save` in step 3.2">
|
|
439
|
+
Set <args>--int-reuse-task</args>.
|
|
440
|
+
</if>
|
|
419
441
|
<if condition="<getopt-option-next/> is not equal `none`">
|
|
420
|
-
|
|
421
|
-
remaining list tokens to the downstream skill).
|
|
442
|
+
Set <args><args/> --next <getopt-option-next/></args>
|
|
422
443
|
</if>
|
|
423
444
|
Only output the following <template/> and then call the
|
|
424
|
-
`Skill(skill: "ase:ase-task-implement", args: <args/>)` tool
|
|
445
|
+
`Skill(skill: "ase:ase-task-implement", args: "<args/>")` tool
|
|
425
446
|
to *apply* the finalized plan.
|
|
426
447
|
|
|
427
448
|
<template>
|
|
@@ -48,8 +48,8 @@ hand-off to implementation or preflight.
|
|
|
48
48
|
`none` (default, interactive answer required), `DONE` (no next
|
|
49
49
|
step), `GRILL` (hand-over to `ase-task-grill`), `PREFLIGHT`
|
|
50
50
|
(hand-over to `ase-task-preflight`), or `IMPLEMENT` (hand-over to
|
|
51
|
-
`ase-task-implement`). Example: `--next GRILL,DONE`
|
|
52
|
-
|
|
51
|
+
`ase-task-implement`). Example: `--next GRILL,DONE` hands the plan
|
|
52
|
+
off to grilling and forwards `DONE` so grilling exits without asking.
|
|
53
53
|
|
|
54
54
|
## ARGUMENTS
|
|
55
55
|
|
|
@@ -22,7 +22,7 @@ Iteratively Grill a Task Plan
|
|
|
22
22
|
|
|
23
23
|
<expand name="getopt"
|
|
24
24
|
arg1="ase-task-grill"
|
|
25
|
-
arg2="--next|-n=(none|DONE|EDIT)...">
|
|
25
|
+
arg2="--next|-n=(none|DONE|EDIT|IMPLEMENT|PREFLIGHT)... --int-reuse-task">
|
|
26
26
|
$ARGUMENTS
|
|
27
27
|
</expand>
|
|
28
28
|
|
|
@@ -36,9 +36,15 @@ task plan until reaching a shared understanding.
|
|
|
36
36
|
Procedure
|
|
37
37
|
---------
|
|
38
38
|
|
|
39
|
+
You *MUST* follow the following numbered items *strictly* *sequentially*!
|
|
40
|
+
You *MUST* not skip any numbered item during processing!
|
|
41
|
+
|
|
42
|
+
You *MUST* *NOT* output anything in this entire procedure, *except* when
|
|
43
|
+
explicitly requested by this procedure via outputs based on a <template/>!
|
|
44
|
+
|
|
39
45
|
1. **Determine Task:**
|
|
40
46
|
|
|
41
|
-
1. Set <id
|
|
47
|
+
1. Set <id><getopt-arguments/></id> initially.
|
|
42
48
|
Inherit the always existing <ase-task-id/> from the current context.
|
|
43
49
|
Inherit the always existing <ase-session-id/> from the current context.
|
|
44
50
|
Do not output anything.
|
|
@@ -59,22 +65,34 @@ Procedure
|
|
|
59
65
|
</template>
|
|
60
66
|
</if>
|
|
61
67
|
|
|
62
|
-
2.
|
|
68
|
+
2. <elseif condition="<id/> is NOT empty">
|
|
63
69
|
The argument is neither empty nor a valid task id. As this
|
|
64
70
|
skill only accepts an optional `[<id>]` argument and *never*
|
|
65
71
|
a free-text instruction, only output the following <template/>
|
|
66
72
|
and then immediately *STOP* processing the entire current skill:
|
|
67
73
|
|
|
68
74
|
<template>
|
|
69
|
-
⧉ **ASE**: ☻ skill: **ase-task-grill**, ▶
|
|
75
|
+
⧉ **ASE**: ☻ skill: **ase-task-grill**, ▶ ERROR: expected single `[<id>]` argument
|
|
70
76
|
</template>
|
|
71
|
-
</
|
|
77
|
+
</elseif>
|
|
72
78
|
|
|
73
79
|
2. **Determine Task Plan:**
|
|
74
80
|
|
|
75
|
-
1.
|
|
76
|
-
|
|
77
|
-
|
|
81
|
+
1. Determine the current task plan content:
|
|
82
|
+
|
|
83
|
+
<if condition="<getopt-option-int-reuse-task/> is equal `true`">
|
|
84
|
+
Set <text/> to the `text` argument of the most recent
|
|
85
|
+
`ase_task_save(id: '<ase-task-id/>', ...)` tool call,
|
|
86
|
+
*without* calling `ase_task_load` again. Set <status>plan
|
|
87
|
+
reused</status>. Do not output anything.
|
|
88
|
+
</if>
|
|
89
|
+
<else>
|
|
90
|
+
Call the `ase_task_load(id: "<ase-task-id/>")` tool of the
|
|
91
|
+
`ase` MCP server to load the current task plan content and
|
|
92
|
+
set <text/> to the `text` output field of this `ase_task_load`
|
|
93
|
+
tool call. Do not output anything related to this MCP tool
|
|
94
|
+
call. Set <status>plan loaded</status>.
|
|
95
|
+
</else>
|
|
78
96
|
|
|
79
97
|
- If <text/> starts with `ERROR:` or `WARNING:`:
|
|
80
98
|
Output the following <template/> and then immediately *STOP*
|
|
@@ -91,7 +109,7 @@ Procedure
|
|
|
91
109
|
Output the following <template/>:
|
|
92
110
|
|
|
93
111
|
<template>
|
|
94
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status:
|
|
112
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **<status/>**
|
|
95
113
|
</template>
|
|
96
114
|
|
|
97
115
|
2. <if condition="<plan/> is empty">
|
|
@@ -107,7 +125,7 @@ Procedure
|
|
|
107
125
|
*essential aspect* of the task plan in <plan/> *until* reaching a
|
|
108
126
|
shared understanding and no decisions/questions are left open.
|
|
109
127
|
|
|
110
|
-
This especially means, you *MUST* clarify as
|
|
128
|
+
This especially means, you *MUST* clarify as many aspects as
|
|
111
129
|
necessary to ensure that for at least the most important decisions,
|
|
112
130
|
during a subsequent implementation, no essential freedom of choices
|
|
113
131
|
exist any longer.
|
|
@@ -143,7 +161,7 @@ Procedure
|
|
|
143
161
|
decisions one-by-one. Ask the questions <question-N/> and determine
|
|
144
162
|
corresponding answer <answer-N/>, one at a time.
|
|
145
163
|
|
|
146
|
-
1. For each question <question-N/> in the iteration
|
|
164
|
+
1. For each question <question-N/> in the iteration cycle <N/>:
|
|
147
165
|
|
|
148
166
|
1. Output the following <template/>:
|
|
149
167
|
|
|
@@ -172,7 +190,12 @@ Procedure
|
|
|
172
190
|
<ase-tpl-bullet-normal/> ASPECT <N/>/<n/>: **<aspect-N/>**, ANSWER: **<answer-N/>**
|
|
173
191
|
</template>
|
|
174
192
|
|
|
175
|
-
|
|
193
|
+
2. Finally, update the plan in <plan/> based on all answers <answer-N/>.
|
|
194
|
+
|
|
195
|
+
3. <if condition="<plan/> contains 'Created: <text/>'">
|
|
196
|
+
Set <timestamp-created><text/></timestamp-created> (set
|
|
197
|
+
timestamp-created to extracted text)
|
|
198
|
+
</if>
|
|
176
199
|
|
|
177
200
|
4. Call the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the
|
|
178
201
|
`ase` MCP server and use the `text` field of its response for
|
|
@@ -237,13 +260,12 @@ Procedure
|
|
|
237
260
|
</template>
|
|
238
261
|
|
|
239
262
|
- If <result/> is `EDIT`:
|
|
240
|
-
Set <args
|
|
263
|
+
Set <args>--int-reuse-task</args>.
|
|
241
264
|
<if condition="<getopt-option-next/> is not equal `none`">
|
|
242
|
-
|
|
243
|
-
remaining list tokens to the downstream skill).
|
|
265
|
+
Set <args><args/> --next <getopt-option-next/></args>
|
|
244
266
|
</if>
|
|
245
267
|
Only output the following <template/> and then call the
|
|
246
|
-
tool `Skill(skill: "ase:ase-task-edit", args: <args/>)`
|
|
268
|
+
tool `Skill(skill: "ase:ase-task-edit", args: "<args/>")`
|
|
247
269
|
to invoke the `ase:ase-task-edit` skill in order to *edit*
|
|
248
270
|
the updated plan. Immediately stop processing the current
|
|
249
271
|
skill once the `Skill` tool was used.
|
|
@@ -253,13 +275,12 @@ Procedure
|
|
|
253
275
|
</template>
|
|
254
276
|
|
|
255
277
|
- If <result/> is `PREFLIGHT`:
|
|
256
|
-
Set <args
|
|
278
|
+
Set <args>--int-reuse-task</args>.
|
|
257
279
|
<if condition="<getopt-option-next/> is not equal `none`">
|
|
258
|
-
|
|
259
|
-
remaining list tokens to the downstream skill).
|
|
280
|
+
Set <args><args/> --next <getopt-option-next/></args>
|
|
260
281
|
</if>
|
|
261
282
|
Only output the following <template/> and then call the
|
|
262
|
-
`Skill(skill: "ase:ase-task-preflight", args: <args/>)` tool
|
|
283
|
+
`Skill(skill: "ase:ase-task-preflight", args: "<args/>")` tool
|
|
263
284
|
to *apply* the plan.
|
|
264
285
|
|
|
265
286
|
<template>
|
|
@@ -267,15 +288,23 @@ Procedure
|
|
|
267
288
|
</template>
|
|
268
289
|
|
|
269
290
|
- If <result/> is `IMPLEMENT`:
|
|
270
|
-
Set <args
|
|
291
|
+
Set <args>--int-reuse-task</args>.
|
|
271
292
|
<if condition="<getopt-option-next/> is not equal `none`">
|
|
272
|
-
|
|
273
|
-
remaining list tokens to the downstream skill).
|
|
293
|
+
Set <args><args/> --next <getopt-option-next/></args>
|
|
274
294
|
</if>
|
|
275
295
|
Only output the following <template/> and then call the
|
|
276
|
-
`Skill(skill: "ase:ase-task-implement", args: <args/>)` tool
|
|
296
|
+
`Skill(skill: "ase:ase-task-implement", args: "<args/>")` tool
|
|
277
297
|
to *apply* the plan.
|
|
278
298
|
|
|
279
299
|
<template>
|
|
280
300
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- hand-off to implementation**
|
|
281
301
|
</template>
|
|
302
|
+
|
|
303
|
+
- If <result/> matches `OTHER: <text/>` or is any other
|
|
304
|
+
unrecognized value:
|
|
305
|
+
Treat it as `DONE` (the updated plan is already saved):
|
|
306
|
+
only output the following <template/> and then *STOP*.
|
|
307
|
+
|
|
308
|
+
<template>
|
|
309
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- done**
|
|
310
|
+
</template>
|
|
@@ -24,7 +24,16 @@ Configure Task Id
|
|
|
24
24
|
1. Determine request:
|
|
25
25
|
<request>$ARGUMENTS</request>
|
|
26
26
|
|
|
27
|
-
2. <if condition="<request/> is empty">
|
|
27
|
+
2. <if condition="<request/> is NOT empty AND <request/> does NOT match the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`">
|
|
28
|
+
Only output the following <template/> and then immediately
|
|
29
|
+
*STOP* processing the entire current skill:
|
|
30
|
+
|
|
31
|
+
<template>
|
|
32
|
+
⧉ **ASE**: ☻ skill: **ase-task-id**, ▶ ERROR: given task id `<request/>` is not a valid id
|
|
33
|
+
</template>
|
|
34
|
+
</if>
|
|
35
|
+
|
|
36
|
+
3. <if condition="<request/> is empty">
|
|
28
37
|
- Call the `ase_task_id(session: "<ase-session-id/>")`
|
|
29
38
|
tool from the `ase` MCP server and set
|
|
30
39
|
<ase-task-id/> to its `text` output.
|
|
@@ -35,7 +44,7 @@ Configure Task Id
|
|
|
35
44
|
</template>
|
|
36
45
|
</if>
|
|
37
46
|
|
|
38
|
-
|
|
47
|
+
4. <if condition="<request/> is NOT empty">
|
|
39
48
|
- Set <ase-task-id><request/></ase-task-id> and
|
|
40
49
|
call the `ase_task_id(id: "<ase-task-id/>", session: "<ase-session-id/>")`
|
|
41
50
|
tool from the `ase` MCP server.
|
|
@@ -21,7 +21,7 @@ Implement a Task Plan
|
|
|
21
21
|
|
|
22
22
|
<expand name="getopt"
|
|
23
23
|
arg1="ase-task-implement"
|
|
24
|
-
arg2="--next|-n=(none|DONE|DELETE)...">
|
|
24
|
+
arg2="--next|-n=(none|DONE|DELETE)... --int-reuse-task">
|
|
25
25
|
$ARGUMENTS
|
|
26
26
|
</expand>
|
|
27
27
|
|
|
@@ -65,7 +65,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
65
65
|
</template>
|
|
66
66
|
</if>
|
|
67
67
|
|
|
68
|
-
2.
|
|
68
|
+
2. <elseif condition="
|
|
69
69
|
<instruction/> has the format `<id/>: <text/>` where
|
|
70
70
|
<id/> matches the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$` and
|
|
71
71
|
<text/> is *empty*
|
|
@@ -80,9 +80,9 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
80
80
|
<template>
|
|
81
81
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **task given**
|
|
82
82
|
</template>
|
|
83
|
-
</
|
|
83
|
+
</elseif>
|
|
84
84
|
|
|
85
|
-
3.
|
|
85
|
+
3. <elseif condition="<instruction/> is NOT empty">
|
|
86
86
|
The argument is neither empty nor a valid task id. As this
|
|
87
87
|
skill only accepts an optional `[<id>]` argument and *never*
|
|
88
88
|
a free-text instruction, only output the following <template/>
|
|
@@ -91,13 +91,25 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
91
91
|
<template>
|
|
92
92
|
⧉ **ASE**: ☻ skill: **ase-task-implement**, ▶ ERROR: expected single `[<id>]` argument
|
|
93
93
|
</template>
|
|
94
|
-
</
|
|
94
|
+
</elseif>
|
|
95
95
|
|
|
96
96
|
2. **Determine Operation**:
|
|
97
97
|
|
|
98
|
-
1.
|
|
99
|
-
|
|
100
|
-
|
|
98
|
+
1. Determine the current task plan content:
|
|
99
|
+
|
|
100
|
+
<if condition="<getopt-option-int-reuse-task/> is equal `true`">
|
|
101
|
+
Set <text/> to the `text` argument of the most recent
|
|
102
|
+
`ase_task_save(id: '<ase-task-id/>', ...)` tool call,
|
|
103
|
+
*without* calling `ase_task_load` again. Set <status>plan
|
|
104
|
+
reused</status>. Do not output anything.
|
|
105
|
+
</if>
|
|
106
|
+
<else>
|
|
107
|
+
Call the `ase_task_load(id: "<ase-task-id/>")` tool of the
|
|
108
|
+
`ase` MCP server to load the current task plan content and
|
|
109
|
+
set <text/> to the `text` output field of this `ase_task_load`
|
|
110
|
+
tool call. Do not output anything related to this MCP tool
|
|
111
|
+
call. Set <status>plan loaded</status>.
|
|
112
|
+
</else>
|
|
101
113
|
|
|
102
114
|
- If <text/> starts with `ERROR:` or `WARNING:`:
|
|
103
115
|
Set <content></content> (set content to empty).
|
|
@@ -110,12 +122,13 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
110
122
|
Only output the following <template/>:
|
|
111
123
|
|
|
112
124
|
<template>
|
|
113
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status:
|
|
125
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **<status/>**
|
|
114
126
|
</template>
|
|
115
127
|
|
|
116
128
|
2. If the <content/> is still empty, complain and tell the user to
|
|
117
129
|
use the `ase-code-resolve`, `ase-code-refactor`, `ase-code-craft`,
|
|
118
|
-
or `ase-task-edit` skills first to create a task plan.
|
|
130
|
+
or `ase-task-edit` skills first to create a task plan. Then
|
|
131
|
+
immediately stop processing this skill.
|
|
119
132
|
|
|
120
133
|
3. **Create Implementation:**
|
|
121
134
|
|
|
@@ -189,11 +202,10 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
189
202
|
</template>
|
|
190
203
|
|
|
191
204
|
- If <result/> is `DELETE`:
|
|
192
|
-
Set <args></args> (empty).
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
remaining
|
|
196
|
-
</if>
|
|
205
|
+
Set <args></args> (empty). Do *not* forward any remaining
|
|
206
|
+
`--next` list tokens, because the `ase:ase-task-delete`
|
|
207
|
+
skill accepts only an optional `[<id>]` argument and no
|
|
208
|
+
`--next` option; remaining tokens are intentionally discarded.
|
|
197
209
|
Only output the following <template/> and then call the
|
|
198
210
|
tool `Skill(skill: "ase:ase-task-delete", args: <args/>)`
|
|
199
211
|
to invoke the `ase:ase-task-delete` skill in order to
|
|
@@ -204,3 +216,12 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
204
216
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan implemented -- hand-off to delete task**
|
|
205
217
|
</template>
|
|
206
218
|
|
|
219
|
+
- If <result/> matches `OTHER: <text/>` or is any other
|
|
220
|
+
unrecognized value:
|
|
221
|
+
Treat it as `DONE` (the plan is already implemented):
|
|
222
|
+
only output the following <template/> and then *STOP*.
|
|
223
|
+
|
|
224
|
+
<template>
|
|
225
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan implemented -- done**
|
|
226
|
+
</template>
|
|
227
|
+
|
|
@@ -27,7 +27,7 @@ List Task Plans
|
|
|
27
27
|
*List* all available *task plans* of the current project.
|
|
28
28
|
</objective>
|
|
29
29
|
|
|
30
|
-
1. Call the `ase_task_list(verbose:
|
|
30
|
+
1. Call the `ase_task_list(verbose: <getopt-option-verbose/>)` tool from
|
|
31
31
|
the `ase` MCP server. The result is a structured object with a
|
|
32
32
|
`tasks` array where each entry has an `id` field, and -- if
|
|
33
33
|
<getopt-option-verbose/> is `true` -- additionally an `mtime` field
|