@rse/ase 0.9.43 → 0.9.45
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-artifact.js +28 -24
- package/dst/ase-config.js +27 -36
- package/dst/ase-diagram.js +15 -35
- package/dst/ase-getopt.js +10 -15
- package/dst/ase-hook.js +29 -27
- package/dst/ase-kv.js +24 -29
- package/dst/ase-log.js +10 -3
- package/dst/ase-markdown.js +135 -102
- package/dst/ase-mcp.js +3 -10
- package/dst/ase-meta.js +6 -4
- package/dst/ase-persona.js +7 -11
- package/dst/ase-service.js +28 -28
- package/dst/ase-setup.js +65 -28
- package/dst/ase-skills.js +2 -2
- package/dst/ase-statusline.js +26 -34
- package/dst/ase-task.js +60 -63
- package/dst/ase-version.js +2 -1
- package/dst/ase.js +7 -11
- package/package.json +12 -10
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +2 -2
- package/plugin/agents/ase-code-lint.md +15 -4
- package/plugin/agents/ase-docs-proofread.md +9 -1
- package/plugin/agents/ase-meta-chat.md +19 -13
- package/plugin/agents/ase-meta-diagram.md +1 -1
- package/plugin/agents/ase-meta-search.md +1 -2
- package/plugin/etc/eslint.mjs +0 -2
- package/plugin/meta/ase-common-task.md +145 -0
- package/plugin/meta/ase-constitution.md +5 -2
- package/plugin/meta/ase-control.md +1 -1
- package/plugin/meta/ase-dialog.md +7 -7
- package/plugin/meta/ase-format-arch.md +12 -12
- package/plugin/meta/ase-format-spec.md +23 -23
- package/plugin/meta/ase-format-task.md +9 -11
- package/plugin/meta/ase-getopt.md +1 -1
- package/plugin/meta/ase-persona.md +3 -3
- package/plugin/meta/ase-skill.md +3 -3
- package/plugin/meta/ase-tenets.md +4 -4
- package/plugin/package.json +8 -8
- package/plugin/skills/ase-arch-analyze/SKILL.md +2 -3
- package/plugin/skills/ase-arch-analyze/help.md +2 -2
- package/plugin/skills/ase-arch-discover/SKILL.md +2 -2
- package/plugin/skills/ase-arch-discover/help.md +3 -2
- package/plugin/skills/ase-code-analyze/SKILL.md +0 -1
- package/plugin/skills/ase-code-craft/SKILL.md +11 -11
- package/plugin/skills/ase-code-lint/SKILL.md +31 -13
- package/plugin/skills/ase-code-refactor/SKILL.md +13 -13
- package/plugin/skills/ase-code-refactor/help.md +1 -1
- package/plugin/skills/ase-code-resolve/SKILL.md +10 -10
- package/plugin/skills/ase-code-resolve/help.md +1 -1
- package/plugin/skills/ase-docs-distill/SKILL.md +6 -6
- package/plugin/skills/ase-docs-distill/help.md +6 -4
- package/plugin/skills/ase-docs-proofread/SKILL.md +23 -8
- package/plugin/skills/ase-meta-brainstorm/help.md +1 -1
- package/plugin/skills/ase-meta-changelog/SKILL.md +9 -5
- package/plugin/skills/ase-meta-commit/SKILL.md +8 -6
- package/plugin/skills/ase-meta-compat/SKILL.md +14 -5
- package/plugin/skills/ase-meta-diaboli/SKILL.md +6 -6
- package/plugin/skills/ase-meta-diff/SKILL.md +10 -10
- package/plugin/skills/ase-meta-evaluate/SKILL.md +6 -9
- package/plugin/skills/ase-meta-persona/SKILL.md +1 -1
- package/plugin/skills/ase-meta-quorum/SKILL.md +43 -12
- package/plugin/skills/ase-meta-search/SKILL.md +1 -1
- package/plugin/skills/ase-meta-search/help.md +4 -2
- package/plugin/skills/ase-meta-steelman/SKILL.md +5 -5
- package/plugin/skills/ase-meta-steelman/help.md +5 -3
- package/plugin/skills/ase-meta-why/SKILL.md +2 -2
- package/plugin/skills/ase-meta-why/help.md +3 -1
- package/plugin/skills/ase-sync-export/SKILL.md +20 -17
- package/plugin/skills/ase-sync-import/SKILL.md +20 -16
- package/plugin/skills/ase-sync-import/help.md +2 -2
- package/plugin/skills/ase-sync-reconcile/SKILL.md +10 -10
- package/plugin/skills/ase-sync-reconcile/help.md +1 -1
- package/plugin/skills/ase-task-condense/SKILL.md +39 -85
- package/plugin/skills/ase-task-delete/SKILL.md +1 -1
- package/plugin/skills/ase-task-edit/SKILL.md +43 -51
- package/plugin/skills/ase-task-grill/SKILL.md +11 -13
- package/plugin/skills/ase-task-id/SKILL.md +7 -3
- package/plugin/skills/ase-task-implement/SKILL.md +18 -111
- package/plugin/skills/ase-task-implement/help.md +2 -2
- package/plugin/skills/ase-task-list/SKILL.md +3 -0
- package/plugin/skills/ase-task-preflight/SKILL.md +22 -115
- package/plugin/skills/ase-task-reboot/SKILL.md +39 -71
- package/plugin/skills/ase-task-reboot/help.md +2 -1
- package/plugin/skills/ase-task-view/SKILL.md +7 -7
|
@@ -41,20 +41,20 @@ Procedure
|
|
|
41
41
|
|
|
42
42
|
<define name="apply-refinement">
|
|
43
43
|
Treat the <instruction/> as a *refinement instruction* for
|
|
44
|
-
the plan, and update <content/> in-place by *applying* the
|
|
44
|
+
the plan, and update <task-content/> in-place by *applying* the
|
|
45
45
|
requested <instruction/> to the *plan*.
|
|
46
46
|
|
|
47
47
|
When refining the plan this way, preserve the overall structure of the
|
|
48
48
|
plan and only modify what the user actually requested. Do *not* rewrite
|
|
49
49
|
unrelated sections of the plan.
|
|
50
50
|
|
|
51
|
-
Calculate the number of words <words/> of <content/>.
|
|
52
|
-
Set <content-dirty>true</content-dirty>.
|
|
51
|
+
Calculate the number of words <words/> of <task-content/>.
|
|
52
|
+
Set <task-content-dirty>true</task-content-dirty>.
|
|
53
53
|
</define>
|
|
54
54
|
|
|
55
55
|
<define name="generate-plan">
|
|
56
56
|
Create a new plan from scratch and store the result as
|
|
57
|
-
<content/> by closely following the defined plan format
|
|
57
|
+
<task-content/> by closely following the defined plan format
|
|
58
58
|
<format/> and injecting into it all the information from
|
|
59
59
|
the <instruction/> and all decisions you derived from the
|
|
60
60
|
<instruction/>.
|
|
@@ -69,7 +69,7 @@ and conventions.
|
|
|
69
69
|
<if condition="<getopt-option-dry/> is equal `true`">
|
|
70
70
|
You *MUST* completely omit the `## VERIFICATION` section
|
|
71
71
|
(including its heading and all of its bullet points) from
|
|
72
|
-
<content/>.
|
|
72
|
+
<task-content/>.
|
|
73
73
|
</if>
|
|
74
74
|
|
|
75
75
|
Call the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the
|
|
@@ -77,8 +77,18 @@ Call the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the
|
|
|
77
77
|
for fresh <timestamp-created/> and <timestamp-modified/>
|
|
78
78
|
information. Then insert the current <ase-task-id/>,
|
|
79
79
|
<timestamp-created/>, and <timestamp-modified/> information
|
|
80
|
-
and calculate the number of words <words/> of <content/>.
|
|
81
|
-
Set <content-dirty>true</content-dirty>.
|
|
80
|
+
and calculate the number of words <words/> of <task-content/>.
|
|
81
|
+
Set <task-content-dirty>true</task-content-dirty>.
|
|
82
|
+
</define>
|
|
83
|
+
|
|
84
|
+
<define name="handoff-args">
|
|
85
|
+
Set <args></args> (set args to empty).
|
|
86
|
+
<if condition="the plan was saved via `ase_task_save` in step 3.2">
|
|
87
|
+
Set <args>--int-reuse-task</args>.
|
|
88
|
+
</if>
|
|
89
|
+
<if condition="<getopt-option-next/> is not equal `none`">
|
|
90
|
+
Set <args><args/> --next <getopt-option-next/></args>
|
|
91
|
+
</if>
|
|
82
92
|
</define>
|
|
83
93
|
|
|
84
94
|
1. **Determine Task and Instruction:**
|
|
@@ -183,24 +193,24 @@ Set <content-dirty>true</content-dirty>.
|
|
|
183
193
|
call. Set <status>plan loaded</status>.
|
|
184
194
|
</else>
|
|
185
195
|
|
|
186
|
-
Set <content-dirty>false</content-dirty>.
|
|
196
|
+
Set <task-content-dirty>false</task-content-dirty>.
|
|
187
197
|
|
|
188
|
-
- If <text/> starts with `ERROR:`:
|
|
198
|
+
- If <text/> starts with `ERROR:` or `WARNING:`:
|
|
189
199
|
Silently ignore the MCP error.
|
|
190
|
-
Set <content/> to empty.
|
|
200
|
+
Set <task-content/> to empty.
|
|
191
201
|
Set <words/> to "0".
|
|
192
202
|
Do not output anything.
|
|
193
203
|
|
|
194
|
-
- If <text/> starts NOT with `ERROR:`:
|
|
195
|
-
Set <content><text/></content> (set content to text).
|
|
196
|
-
Calculate the number of words <words/> of <content/>.
|
|
204
|
+
- If <text/> starts NOT with `ERROR:` and NOT with `WARNING:`:
|
|
205
|
+
Set <task-content><text/></task-content> (set task content to text).
|
|
206
|
+
Calculate the number of words <words/> of <task-content/>.
|
|
197
207
|
Only output the following <template/>:
|
|
198
208
|
|
|
199
209
|
<template>
|
|
200
210
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **<status/>**
|
|
201
211
|
</template>
|
|
202
212
|
|
|
203
|
-
2. <if condition="<content/> is empty AND <instruction/> is empty">
|
|
213
|
+
2. <if condition="<task-content/> is empty AND <instruction/> is empty">
|
|
204
214
|
Ask the user interactively, without a special tool, for the
|
|
205
215
|
initial plan content with a single question:
|
|
206
216
|
|
|
@@ -214,9 +224,9 @@ Set <content-dirty>true</content-dirty>.
|
|
|
214
224
|
</template>
|
|
215
225
|
</if>
|
|
216
226
|
|
|
217
|
-
3. <if condition="<content/> is not empty AND
|
|
227
|
+
3. <if condition="<task-content/> is not empty AND
|
|
218
228
|
<instruction/> is not empty AND
|
|
219
|
-
<instruction/> is not equal <content/>">
|
|
229
|
+
<instruction/> is not equal <task-content/>">
|
|
220
230
|
*Determine previous-plan handling*:
|
|
221
231
|
|
|
222
232
|
- If <getopt-option-plan/> matches the regex `^(OVERWRITE|REFINE|PRESERVE)$`:
|
|
@@ -285,14 +295,14 @@ Set <content-dirty>true</content-dirty>.
|
|
|
285
295
|
</template>
|
|
286
296
|
</if>
|
|
287
297
|
|
|
288
|
-
4. <if condition="no line of <content/> matches the case-insensitive regex `^\s*#+\s*TASK\b` AND <instruction/> is empty">
|
|
289
|
-
Set <instruction><content/></instruction> (set instruction to content).
|
|
290
|
-
Set <content></content> (set content to empty).
|
|
291
|
-
Set <content-dirty>true</content-dirty>.
|
|
298
|
+
4. <if condition="no line of <task-content/> matches the case-insensitive regex `^\s*#+\s*TASK\b` AND <instruction/> is empty">
|
|
299
|
+
Set <instruction><task-content/></instruction> (set instruction to task content).
|
|
300
|
+
Set <task-content></task-content> (set task content to empty).
|
|
301
|
+
Set <task-content-dirty>true</task-content-dirty>.
|
|
292
302
|
Do not output anything.
|
|
293
303
|
</if>
|
|
294
304
|
|
|
295
|
-
5. <if condition="<content/> is empty AND <instruction/> is not empty">
|
|
305
|
+
5. <if condition="<task-content/> is empty AND <instruction/> is not empty">
|
|
296
306
|
<expand name="generate-plan"/>
|
|
297
307
|
|
|
298
308
|
Only output the following <template/> and continue processing:
|
|
@@ -310,22 +320,22 @@ Set <content-dirty>true</content-dirty>.
|
|
|
310
320
|
`PREFLIGHT`, or declines/cancels in the dialog of step 3.4:
|
|
311
321
|
|
|
312
322
|
1. *Update timestamp*:
|
|
313
|
-
<if condition="<content/> contains '⚙ Modified:' AND <content-dirty/> is 'true'">
|
|
323
|
+
<if condition="<task-content/> contains '⚙ Modified:' AND <task-content-dirty/> is 'true'">
|
|
314
324
|
Update <timestamp-modified/> with the current time in
|
|
315
325
|
ISO-style format, which has to be determined by calling the
|
|
316
326
|
`ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the `ase`
|
|
317
327
|
MCP server and use the `text` field of its response. Update
|
|
318
|
-
the `⚙ Modified: ...` line of <content/> with the new
|
|
328
|
+
the `⚙ Modified: ...` line of <task-content/> with the new
|
|
319
329
|
`⚙ Modified: <timestamp-modified/>`.
|
|
320
330
|
Do not output anything.
|
|
321
331
|
</if>
|
|
322
332
|
|
|
323
333
|
2. *Persist plan*:
|
|
324
|
-
<if condition="<content-dirty/> is 'true'">
|
|
325
|
-
Call the `ase_task_save(id: "<ase-task-id/>", text: "<content/>")` tool
|
|
334
|
+
<if condition="<task-content-dirty/> is 'true'">
|
|
335
|
+
Call the `ase_task_save(id: "<ase-task-id/>", text: "<task-content/>")` tool
|
|
326
336
|
of the `ase` MCP server to persist the current plan, and then
|
|
327
|
-
set <content-dirty>false</content-dirty> again. Calculate the
|
|
328
|
-
number of words <words/> of <content/>. Do not output anything
|
|
337
|
+
set <task-content-dirty>false</task-content-dirty> again. Calculate the
|
|
338
|
+
number of words <words/> of <task-content/>. Do not output anything
|
|
329
339
|
related to this MCP tool call except the following <template/>:
|
|
330
340
|
|
|
331
341
|
<template>
|
|
@@ -333,9 +343,9 @@ Set <content-dirty>true</content-dirty>.
|
|
|
333
343
|
</template>
|
|
334
344
|
</if>
|
|
335
345
|
|
|
336
|
-
3. *Render plan*: Treat <content/> as *verbatim* Markdown.
|
|
346
|
+
3. *Render plan*: Treat <task-content/> as *verbatim* Markdown.
|
|
337
347
|
Only output the following <template/>, so the user
|
|
338
|
-
can read the plan and react to it. If <content/> is longer
|
|
348
|
+
can read the plan and react to it. If <task-content/> is longer
|
|
339
349
|
than 90 lines and a `## IMPLEMENTATION DRAFT` section (from the
|
|
340
350
|
companion skill `ase-task-preflight`) exists, replace the entire
|
|
341
351
|
content of the `## IMPLEMENTATION DRAFT` section with `[...]`.
|
|
@@ -344,7 +354,7 @@ Set <content-dirty>true</content-dirty>.
|
|
|
344
354
|
|
|
345
355
|
<template>
|
|
346
356
|
<ase-tpl-head title="TASK"/>
|
|
347
|
-
<content/>
|
|
357
|
+
<task-content/>
|
|
348
358
|
<ase-tpl-foot title="TASK"/>
|
|
349
359
|
</template>
|
|
350
360
|
|
|
@@ -405,13 +415,7 @@ Set <content-dirty>true</content-dirty>.
|
|
|
405
415
|
- If <result/> is `GRILL`:
|
|
406
416
|
|
|
407
417
|
*Break* out of the *loop*.
|
|
408
|
-
|
|
409
|
-
<if condition="the plan was saved via `ase_task_save` in step 3.2">
|
|
410
|
-
Set <args>--int-reuse-task</args>.
|
|
411
|
-
</if>
|
|
412
|
-
<if condition="<getopt-option-next/> is not equal `none`">
|
|
413
|
-
Set <args><args/> --next <getopt-option-next/></args>
|
|
414
|
-
</if>
|
|
418
|
+
<expand name="handoff-args"/>
|
|
415
419
|
Only output the following <template/> and then call the
|
|
416
420
|
`Skill(skill: "ase:ase-task-grill", args: "<args/>")` tool
|
|
417
421
|
to *grill* the finalized plan.
|
|
@@ -423,13 +427,7 @@ Set <content-dirty>true</content-dirty>.
|
|
|
423
427
|
- If <result/> is `PREFLIGHT`:
|
|
424
428
|
|
|
425
429
|
*Break* out of the *loop*.
|
|
426
|
-
|
|
427
|
-
<if condition="the plan was saved via `ase_task_save` in step 3.2">
|
|
428
|
-
Set <args>--int-reuse-task</args>.
|
|
429
|
-
</if>
|
|
430
|
-
<if condition="<getopt-option-next/> is not equal `none`">
|
|
431
|
-
Set <args><args/> --next <getopt-option-next/></args>
|
|
432
|
-
</if>
|
|
430
|
+
<expand name="handoff-args"/>
|
|
433
431
|
Only output the following <template/> and then call the
|
|
434
432
|
`Skill(skill: "ase:ase-task-preflight", args: "<args/>")` tool
|
|
435
433
|
to *apply* the finalized plan.
|
|
@@ -441,13 +439,7 @@ Set <content-dirty>true</content-dirty>.
|
|
|
441
439
|
- If <result/> is `IMPLEMENT`:
|
|
442
440
|
|
|
443
441
|
*Break* out of the *loop*.
|
|
444
|
-
|
|
445
|
-
<if condition="the plan was saved via `ase_task_save` in step 3.2">
|
|
446
|
-
Set <args>--int-reuse-task</args>.
|
|
447
|
-
</if>
|
|
448
|
-
<if condition="<getopt-option-next/> is not equal `none`">
|
|
449
|
-
Set <args><args/> --next <getopt-option-next/></args>
|
|
450
|
-
</if>
|
|
442
|
+
<expand name="handoff-args"/>
|
|
451
443
|
Only output the following <template/> and then call the
|
|
452
444
|
`Skill(skill: "ase:ase-task-implement", args: "<args/>")` tool
|
|
453
445
|
to *apply* the finalized plan.
|
|
@@ -36,6 +36,13 @@ task plan until reaching a shared understanding.
|
|
|
36
36
|
Procedure
|
|
37
37
|
---------
|
|
38
38
|
|
|
39
|
+
<define name="handoff-args">
|
|
40
|
+
Set <args>--int-reuse-task</args>.
|
|
41
|
+
<if condition="<getopt-option-next/> is not equal `none`">
|
|
42
|
+
Set <args><args/> --next <getopt-option-next/></args>
|
|
43
|
+
</if>
|
|
44
|
+
</define>
|
|
45
|
+
|
|
39
46
|
1. **Determine Task:**
|
|
40
47
|
|
|
41
48
|
1. Set <id><getopt-arguments/></id> initially.
|
|
@@ -223,7 +230,7 @@ Procedure
|
|
|
223
230
|
words <words/> of <plan/>.
|
|
224
231
|
|
|
225
232
|
5. Call the `ase_task_save(id: "<ase-task-id/>",
|
|
226
|
-
text: "<plan/>")` of the `ase` MCP server to save the updated
|
|
233
|
+
text: "<plan/>")` tool of the `ase` MCP server to save the updated
|
|
227
234
|
task plan content. Do not output anything related to this MCP
|
|
228
235
|
call.
|
|
229
236
|
|
|
@@ -282,10 +289,7 @@ Procedure
|
|
|
282
289
|
</template>
|
|
283
290
|
|
|
284
291
|
- If <result/> is `EDIT`:
|
|
285
|
-
|
|
286
|
-
<if condition="<getopt-option-next/> is not equal `none`">
|
|
287
|
-
Set <args><args/> --next <getopt-option-next/></args>
|
|
288
|
-
</if>
|
|
292
|
+
<expand name="handoff-args"/>
|
|
289
293
|
Only output the following <template/> and then call the
|
|
290
294
|
tool `Skill(skill: "ase:ase-task-edit", args: "<args/>")`
|
|
291
295
|
to invoke the `ase:ase-task-edit` skill in order to *edit*
|
|
@@ -297,10 +301,7 @@ Procedure
|
|
|
297
301
|
</template>
|
|
298
302
|
|
|
299
303
|
- If <result/> is `PREFLIGHT`:
|
|
300
|
-
|
|
301
|
-
<if condition="<getopt-option-next/> is not equal `none`">
|
|
302
|
-
Set <args><args/> --next <getopt-option-next/></args>
|
|
303
|
-
</if>
|
|
304
|
+
<expand name="handoff-args"/>
|
|
304
305
|
Only output the following <template/> and then call the
|
|
305
306
|
`Skill(skill: "ase:ase-task-preflight", args: "<args/>")` tool
|
|
306
307
|
to *apply* the plan.
|
|
@@ -310,10 +311,7 @@ Procedure
|
|
|
310
311
|
</template>
|
|
311
312
|
|
|
312
313
|
- If <result/> is `IMPLEMENT`:
|
|
313
|
-
|
|
314
|
-
<if condition="<getopt-option-next/> is not equal `none`">
|
|
315
|
-
Set <args><args/> --next <getopt-option-next/></args>
|
|
316
|
-
</if>
|
|
314
|
+
<expand name="handoff-args"/>
|
|
317
315
|
Only output the following <template/> and then call the
|
|
318
316
|
`Skill(skill: "ase:ase-task-implement", args: "<args/>")` tool
|
|
319
317
|
to *apply* the plan.
|
|
@@ -26,6 +26,9 @@ Configure Task Id
|
|
|
26
26
|
*Get* or *set* the unique *task id* of the current session.
|
|
27
27
|
</objective>
|
|
28
28
|
|
|
29
|
+
Procedure
|
|
30
|
+
---------
|
|
31
|
+
|
|
29
32
|
1. Determine request:
|
|
30
33
|
<request><getopt-arguments/></request>
|
|
31
34
|
Inherit the always existing <ase-session-id/> and the current
|
|
@@ -43,9 +46,10 @@ Configure Task Id
|
|
|
43
46
|
3. <if condition="<request/> is empty">
|
|
44
47
|
- Call the `ase_task_id(session: "<ase-session-id/>")`
|
|
45
48
|
tool from the `ase` MCP server and set <text/> to its
|
|
46
|
-
`text` output.
|
|
47
|
-
|
|
48
|
-
|
|
49
|
+
`text` output. Only on a clean response set
|
|
50
|
+
<ase-task-id><text/></ase-task-id>. On an `ERROR:`/`WARNING:`
|
|
51
|
+
response, silently ignore the MCP error (deviating from the
|
|
52
|
+
generic MCP error rule) and keep the <ase-task-id/>
|
|
49
53
|
inherited from the current context as the fallback.
|
|
50
54
|
|
|
51
55
|
- Output:
|
|
@@ -31,99 +31,30 @@ with a corresponding, complete *change set*.
|
|
|
31
31
|
</objective>
|
|
32
32
|
|
|
33
33
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-format-task.md
|
|
34
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-common-task.md
|
|
34
35
|
|
|
35
36
|
Procedure
|
|
36
37
|
---------
|
|
37
38
|
|
|
38
39
|
1. **Determine Task:**
|
|
39
40
|
|
|
40
|
-
1. Set <instruction><getopt-arguments/></instruction> initially
|
|
41
|
+
1. Set <instruction><getopt-arguments/></instruction> initially, with any
|
|
42
|
+
leading and trailing whitespace stripped.
|
|
41
43
|
Inherit the always existing <ase-task-id/> from the current context.
|
|
42
44
|
Inherit the always existing <ase-session-id/> from the current context.
|
|
43
45
|
Do not output anything.
|
|
44
46
|
|
|
45
47
|
2. React on task id:
|
|
46
48
|
|
|
47
|
-
|
|
48
|
-
<instruction/> matches the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`
|
|
49
|
-
">
|
|
50
|
-
Set <ase-task-id><instruction/></ase-task-id> (set task
|
|
51
|
-
id to instruction) and <instruction></instruction> (set
|
|
52
|
-
instruction empty), call the `ase_task_id(id: "<ase-task-id/>",
|
|
53
|
-
session: "<ase-session-id/>")` tool from the `ase` MCP
|
|
54
|
-
server to switch the task, and then only output the
|
|
55
|
-
following <template/>:
|
|
49
|
+
<expand name="task-react-id" arg1="ase-task-implement"></expand>
|
|
56
50
|
|
|
57
|
-
|
|
58
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **task given**
|
|
59
|
-
</template>
|
|
60
|
-
</if>
|
|
61
|
-
|
|
62
|
-
2. <elseif condition="
|
|
63
|
-
<instruction/> has the format `<id/>: <text/>` where
|
|
64
|
-
<id/> matches the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$` and
|
|
65
|
-
<text/> is *empty*
|
|
66
|
-
">
|
|
67
|
-
Set <instruction></instruction> (set instruction to empty)
|
|
68
|
-
and <ase-task-id><id/></ase-task-id> (set task id to
|
|
69
|
-
id) and call the `ase_task_id(id: "<ase-task-id/>", session:
|
|
70
|
-
"<ase-session-id/>")` tool from the `ase` MCP server to
|
|
71
|
-
switch the task, and then only output the following
|
|
72
|
-
<template/>:
|
|
73
|
-
|
|
74
|
-
<template>
|
|
75
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **task given**
|
|
76
|
-
</template>
|
|
77
|
-
</elseif>
|
|
78
|
-
|
|
79
|
-
3. <elseif condition="<instruction/> is NOT empty">
|
|
80
|
-
The argument is neither empty nor a valid task id. As this
|
|
81
|
-
skill only accepts an optional `[<id>]` argument and *never*
|
|
82
|
-
a free-text instruction, only output the following <template/>
|
|
83
|
-
and then immediately *STOP* processing the entire current skill:
|
|
84
|
-
|
|
85
|
-
<template>
|
|
86
|
-
⧉ **ASE**: ☻ skill: **ase-task-implement**, ▶ ERROR: expected single `[<id>]` argument
|
|
87
|
-
</template>
|
|
88
|
-
</elseif>
|
|
89
|
-
|
|
90
|
-
2. **Determine Operation**:
|
|
51
|
+
2. **Determine Operation:**
|
|
91
52
|
|
|
92
53
|
1. Determine the current task plan content:
|
|
93
54
|
|
|
94
|
-
<
|
|
95
|
-
<getopt-option-int-reuse-task/> is equal `true`
|
|
96
|
-
*and* a `ase_task_save(id: '<ase-task-id/>', ...)` tool call
|
|
97
|
-
exists earlier in the current session
|
|
98
|
-
">
|
|
99
|
-
Set <text/> to the `text` argument of the most recent
|
|
100
|
-
`ase_task_save(id: '<ase-task-id/>', ...)` tool call,
|
|
101
|
-
*without* calling `ase_task_load` again. Set <status>plan
|
|
102
|
-
reused</status>. Do not output anything.
|
|
103
|
-
</if>
|
|
104
|
-
<else>
|
|
105
|
-
Call the `ase_task_load(id: "<ase-task-id/>")` tool of the
|
|
106
|
-
`ase` MCP server to load the current task plan content and
|
|
107
|
-
set <text/> to the `text` output field of this `ase_task_load`
|
|
108
|
-
tool call. Do not output anything related to this MCP tool
|
|
109
|
-
call. Set <status>plan loaded</status>.
|
|
110
|
-
</else>
|
|
111
|
-
|
|
112
|
-
- If <text/> starts with `ERROR:` or `WARNING:`:
|
|
113
|
-
Set <content></content> (set content to empty).
|
|
114
|
-
Set <words/> to "0".
|
|
115
|
-
|
|
116
|
-
- If <text/> starts NOT with `ERROR:` and NOT with `WARNING:`:
|
|
117
|
-
Set <content><text/></content> (set content to text).
|
|
118
|
-
Calculate the number of words <words/> of <content/>.
|
|
119
|
-
|
|
120
|
-
Only output the following <template/>:
|
|
121
|
-
|
|
122
|
-
<template>
|
|
123
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **<status/>**
|
|
124
|
-
</template>
|
|
55
|
+
<expand name="task-load-content"></expand>
|
|
125
56
|
|
|
126
|
-
2. If the <content/> is still empty, complain and tell the user to
|
|
57
|
+
2. If the <task-content/> is still empty, complain and tell the user to
|
|
127
58
|
use the `ase-code-resolve`, `ase-code-refactor`, `ase-code-craft`,
|
|
128
59
|
or `ase-task-edit` skills first to create a task plan. Then
|
|
129
60
|
immediately stop processing this skill.
|
|
@@ -134,15 +65,15 @@ Procedure
|
|
|
134
65
|
by modifying the *artifacts* with a corresponding, complete
|
|
135
66
|
*change set*.
|
|
136
67
|
|
|
137
|
-
For this, primarily follow and honor the task plan in <content/>.
|
|
68
|
+
For this, primarily follow and honor the task plan in <task-content/>.
|
|
138
69
|
|
|
139
70
|
Secondarily, derive hints from the optionally existing
|
|
140
71
|
`IMPLEMENTATION DRAFT` section (from skill `ase-task-preflight`)
|
|
141
|
-
in <content/>. But the specification text in <content/> always
|
|
72
|
+
in <task-content/>. But the specification text in <task-content/> always
|
|
142
73
|
overrules the implementation draft in the `IMPLEMENTATION DRAFT`
|
|
143
|
-
section of <content/>.
|
|
74
|
+
section of <task-content/>.
|
|
144
75
|
|
|
145
|
-
<if condition="<content/> does NOT contain a `## VERIFICATION` section heading">
|
|
76
|
+
<if condition="<task-content/> does NOT contain a `## VERIFICATION` section heading">
|
|
146
77
|
The task plan deliberately *omits* the `## VERIFICATION`
|
|
147
78
|
section. You *MUST* therefore *strictly skip* the entire
|
|
148
79
|
verification phase after modifying the source files: do *NOT*
|
|
@@ -162,37 +93,13 @@ Procedure
|
|
|
162
93
|
|
|
163
94
|
1. *Determine next step*:
|
|
164
95
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
- If <head/> matches the regex `^(DONE|DELETE)$`:
|
|
173
|
-
Honor the pre-selected token.
|
|
174
|
-
Set <result><head/></result>.
|
|
175
|
-
|
|
176
|
-
- else:
|
|
177
|
-
Only output the following <template/> and then immediately
|
|
178
|
-
*STOP* processing the entire current skill:
|
|
179
|
-
|
|
180
|
-
<template>
|
|
181
|
-
⧉ **ASE**: ☻ skill: **ase-task-implement**, ▶ ERROR: invalid `--next` token: **<head/>**
|
|
182
|
-
</template>
|
|
183
|
-
|
|
184
|
-
- If <getopt-option-next/> is equal to `none`:
|
|
185
|
-
|
|
186
|
-
In the following, you *MUST* *NOT* use your built-in
|
|
187
|
-
<user-dialog-tool/> tool! Instead, you *MUST* just show a
|
|
188
|
-
custom dialog according to the expanded `custom-dialog`
|
|
189
|
-
definition. You *MUST* closely follow this definition:
|
|
190
|
-
|
|
191
|
-
<expand name="custom-dialog" arg1="--no-other">
|
|
192
|
-
Next Step: How would you like to proceed with the plan?
|
|
193
|
-
DONE: Stop processing and PRESERVE task plan.
|
|
194
|
-
DELETE: Stop processing and DELETE the task plan.
|
|
195
|
-
</expand>
|
|
96
|
+
<expand name="task-next-select"
|
|
97
|
+
arg1="ase-task-implement"
|
|
98
|
+
arg2="DONE|DELETE">
|
|
99
|
+
Next Step: How would you like to proceed with the plan?
|
|
100
|
+
DONE: Stop processing and PRESERVE task plan.
|
|
101
|
+
DELETE: Stop processing and DELETE the task plan.
|
|
102
|
+
</expand>
|
|
196
103
|
|
|
197
104
|
2. Check the tool <result/> and dispatch accordingly:
|
|
198
105
|
|
|
@@ -34,8 +34,8 @@ delete the task plan, unless `--next` pre-selects this choice.
|
|
|
34
34
|
Automatically answer the user dialog for the next step. *option*
|
|
35
35
|
is a single token or a *comma-separated chronological list* of
|
|
36
36
|
tokens; the *first* token is consumed by this skill, and any
|
|
37
|
-
remaining tokens are *
|
|
38
|
-
|
|
37
|
+
remaining tokens are intentionally *discarded*, because the
|
|
38
|
+
downstream `ase-task-delete` skill accepts no `--next` option.
|
|
39
39
|
Recognized tokens at this skill: `none` (default, interactive
|
|
40
40
|
answer required), `DONE` (preserve task plan and stop), or
|
|
41
41
|
`DELETE` (hand off to `ase-task-delete`).
|
|
@@ -27,6 +27,9 @@ List Task Plans
|
|
|
27
27
|
*List* all available *task plans* of the current project.
|
|
28
28
|
</objective>
|
|
29
29
|
|
|
30
|
+
Procedure
|
|
31
|
+
---------
|
|
32
|
+
|
|
30
33
|
1. Call the `ase_task_list(verbose: <getopt-option-verbose/>)` tool from
|
|
31
34
|
the `ase` MCP server. The result is a structured object with a
|
|
32
35
|
`tasks` array where each entry has an `id` field, and -- if
|