@rse/ase 0.9.6 → 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-markdown.js +235 -0
- package/dst/ase-service.js +2 -0
- package/dst/ase-task.js +22 -20
- package/package.json +6 -6
- 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 +14 -14
- package/plugin/meta/ase-getopt.md +2 -1
- package/plugin/meta/ase-skill.md +28 -9
- package/plugin/package.json +3 -3
- 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 +47 -40
- package/plugin/skills/ase-code-craft/help.md +2 -2
- 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 +47 -40
- package/plugin/skills/ase-code-refactor/help.md +2 -2
- package/plugin/skills/ase-code-resolve/SKILL.md +48 -40
- package/plugin/skills/ase-code-resolve/help.md +2 -2
- 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 +58 -36
- package/plugin/skills/ase-task-edit/help.md +3 -3
- package/plugin/skills/ase-task-grill/SKILL.md +59 -24
- package/plugin/skills/ase-task-id/SKILL.md +11 -2
- package/plugin/skills/ase-task-implement/SKILL.md +38 -17
- package/plugin/skills/ase-task-implement/help.md +1 -1
- package/plugin/skills/ase-task-list/SKILL.md +1 -1
- package/plugin/skills/ase-task-preflight/SKILL.md +42 -22
- package/plugin/skills/ase-task-preflight/help.md +1 -1
- package/plugin/skills/ase-task-reboot/SKILL.md +31 -22
- package/plugin/skills/ase-task-rename/SKILL.md +5 -3
- package/plugin/skills/ase-task-view/SKILL.md +19 -8
- package/plugin/skills/ase-task-view/help.md +24 -5
- package/dst/ase-bash.js +0 -618
- package/dst/ase-hello.js +0 -24
|
@@ -30,7 +30,7 @@ hand-off to implementation or preflight.
|
|
|
30
30
|
ignoring *instruction* and stopping skill processing).
|
|
31
31
|
|
|
32
32
|
`--dry`|`-d`:
|
|
33
|
-
Generate any *new* plan *without* the
|
|
33
|
+
Generate any *new* plan *without* the `## VERIFICATION` section.
|
|
34
34
|
Applies only to freshly generated plans, not to existing plans
|
|
35
35
|
loaded from disk. When `ase-task-implement` later applies such
|
|
36
36
|
a plan, it strictly skips the entire verification phase (no
|
|
@@ -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,6 +125,11 @@ 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
|
|
|
128
|
+
This especially means, you *MUST* clarify as many aspects as
|
|
129
|
+
necessary to ensure that for at least the most important decisions,
|
|
130
|
+
during a subsequent implementation, no essential freedom of choices
|
|
131
|
+
exist any longer.
|
|
132
|
+
|
|
110
133
|
For this process, determine the <n/> essential aspects <aspect-N/>
|
|
111
134
|
(a one or two word long short identifier like `Foo` or `Bar-Baz`)
|
|
112
135
|
and the corresponding decision/question <question-N/> where a shared
|
|
@@ -138,7 +161,7 @@ Procedure
|
|
|
138
161
|
decisions one-by-one. Ask the questions <question-N/> and determine
|
|
139
162
|
corresponding answer <answer-N/>, one at a time.
|
|
140
163
|
|
|
141
|
-
1. For each question <question-N/> in the iteration
|
|
164
|
+
1. For each question <question-N/> in the iteration cycle <N/>:
|
|
142
165
|
|
|
143
166
|
1. Output the following <template/>:
|
|
144
167
|
|
|
@@ -167,7 +190,12 @@ Procedure
|
|
|
167
190
|
<ase-tpl-bullet-normal/> ASPECT <N/>/<n/>: **<aspect-N/>**, ANSWER: **<answer-N/>**
|
|
168
191
|
</template>
|
|
169
192
|
|
|
170
|
-
|
|
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>
|
|
171
199
|
|
|
172
200
|
4. Call the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the
|
|
173
201
|
`ase` MCP server and use the `text` field of its response for
|
|
@@ -224,20 +252,20 @@ Procedure
|
|
|
224
252
|
2. Check the tool <result/> and dispatch accordingly:
|
|
225
253
|
|
|
226
254
|
- If <result/> is `DONE` or `CANCEL`:
|
|
227
|
-
Only output the following <template/> and then *STOP
|
|
255
|
+
Only output the following <template/> and then *STOP*,
|
|
256
|
+
without output of any further information.
|
|
228
257
|
|
|
229
258
|
<template>
|
|
230
259
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- done**
|
|
231
260
|
</template>
|
|
232
261
|
|
|
233
262
|
- If <result/> is `EDIT`:
|
|
234
|
-
Set <args
|
|
263
|
+
Set <args>--int-reuse-task</args>.
|
|
235
264
|
<if condition="<getopt-option-next/> is not equal `none`">
|
|
236
|
-
|
|
237
|
-
remaining list tokens to the downstream skill).
|
|
265
|
+
Set <args><args/> --next <getopt-option-next/></args>
|
|
238
266
|
</if>
|
|
239
267
|
Only output the following <template/> and then call the
|
|
240
|
-
tool `Skill(skill: "ase:ase-task-edit", args: <args/>)`
|
|
268
|
+
tool `Skill(skill: "ase:ase-task-edit", args: "<args/>")`
|
|
241
269
|
to invoke the `ase:ase-task-edit` skill in order to *edit*
|
|
242
270
|
the updated plan. Immediately stop processing the current
|
|
243
271
|
skill once the `Skill` tool was used.
|
|
@@ -247,13 +275,12 @@ Procedure
|
|
|
247
275
|
</template>
|
|
248
276
|
|
|
249
277
|
- If <result/> is `PREFLIGHT`:
|
|
250
|
-
Set <args
|
|
278
|
+
Set <args>--int-reuse-task</args>.
|
|
251
279
|
<if condition="<getopt-option-next/> is not equal `none`">
|
|
252
|
-
|
|
253
|
-
remaining list tokens to the downstream skill).
|
|
280
|
+
Set <args><args/> --next <getopt-option-next/></args>
|
|
254
281
|
</if>
|
|
255
282
|
Only output the following <template/> and then call the
|
|
256
|
-
`Skill(skill: "ase:ase-task-preflight", args: <args/>)` tool
|
|
283
|
+
`Skill(skill: "ase:ase-task-preflight", args: "<args/>")` tool
|
|
257
284
|
to *apply* the plan.
|
|
258
285
|
|
|
259
286
|
<template>
|
|
@@ -261,15 +288,23 @@ Procedure
|
|
|
261
288
|
</template>
|
|
262
289
|
|
|
263
290
|
- If <result/> is `IMPLEMENT`:
|
|
264
|
-
Set <args
|
|
291
|
+
Set <args>--int-reuse-task</args>.
|
|
265
292
|
<if condition="<getopt-option-next/> is not equal `none`">
|
|
266
|
-
|
|
267
|
-
remaining list tokens to the downstream skill).
|
|
293
|
+
Set <args><args/> --next <getopt-option-next/></args>
|
|
268
294
|
</if>
|
|
269
295
|
Only output the following <template/> and then call the
|
|
270
|
-
`Skill(skill: "ase:ase-task-implement", args: <args/>)` tool
|
|
296
|
+
`Skill(skill: "ase:ase-task-implement", args: "<args/>")` tool
|
|
271
297
|
to *apply* the plan.
|
|
272
298
|
|
|
273
299
|
<template>
|
|
274
300
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- hand-off to implementation**
|
|
275
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
|
|
|
@@ -131,8 +144,8 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
131
144
|
overrules the implementation draft in the `IMPLEMENTATION DRAFT`
|
|
132
145
|
section of <content/>.
|
|
133
146
|
|
|
134
|
-
<if condition="<content/> does NOT contain a `##
|
|
135
|
-
The task plan deliberately *omits* the `##
|
|
147
|
+
<if condition="<content/> does NOT contain a `## VERIFICATION` section heading">
|
|
148
|
+
The task plan deliberately *omits* the `## VERIFICATION`
|
|
136
149
|
section. You *MUST* therefore *strictly skip* the entire
|
|
137
150
|
verification phase after modifying the source files: do *NOT*
|
|
138
151
|
run any build, do *NOT* run any tests, do *NOT* run any linter,
|
|
@@ -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
|
+
|
|
@@ -18,7 +18,7 @@ a task plan by modifying the corresponding *artifacts* with a complete
|
|
|
18
18
|
section produced by `ase-task-preflight` is used as a hint - the plain
|
|
19
19
|
plan content always overrules the draft.
|
|
20
20
|
|
|
21
|
-
If the task plan deliberately *omits* the
|
|
21
|
+
If the task plan deliberately *omits* the `## VERIFICATION` section
|
|
22
22
|
(as produced by `ase-code-craft`, `ase-code-refactor`,
|
|
23
23
|
`ase-code-resolve`, or `ase-task-edit` when invoked with `--dry`),
|
|
24
24
|
the entire verification phase is strictly skipped: no build, tests,
|
|
@@ -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
|
|
@@ -21,7 +21,7 @@ Preflight a Task Plan
|
|
|
21
21
|
|
|
22
22
|
<expand name="getopt"
|
|
23
23
|
arg1="ase-task-preflight"
|
|
24
|
-
arg2="--next|-n=(none|DONE|EDIT|IMPLEMENT)...">
|
|
24
|
+
arg2="--next|-n=(none|DONE|EDIT|IMPLEMENT)... --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-preflight**, ▶ 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 Draft:**
|
|
121
134
|
|
|
@@ -126,13 +139,13 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
126
139
|
|
|
127
140
|
2. Append this artifact change set <unified-diff/> to the end
|
|
128
141
|
of the <content/> with the following <template/>. If a section
|
|
129
|
-
named `##
|
|
142
|
+
named `## IMPLEMENTATION DRAFT` already exists from a
|
|
130
143
|
previous run of this skill, *replace* this entire existing
|
|
131
144
|
section.
|
|
132
145
|
|
|
133
146
|
<template>
|
|
134
147
|
|
|
135
|
-
##
|
|
148
|
+
## IMPLEMENTATION DRAFT
|
|
136
149
|
|
|
137
150
|
```text
|
|
138
151
|
<unified-diff/>
|
|
@@ -140,12 +153,12 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
140
153
|
|
|
141
154
|
</template>
|
|
142
155
|
|
|
143
|
-
3. <if condition="<content/> contains '
|
|
156
|
+
3. <if condition="<content/> contains '⚙ Modified:'">
|
|
144
157
|
Update <timestamp-modified/> with the current time in
|
|
145
158
|
ISO-style format, which has to be determined by calling the
|
|
146
159
|
`ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the `ase`
|
|
147
160
|
MCP server and use the `text` field of its response. Update
|
|
148
|
-
<content/> with the new
|
|
161
|
+
<content/> with the new `Modified: <timestamp-modified/>`.
|
|
149
162
|
Do not output anything.
|
|
150
163
|
</if>
|
|
151
164
|
|
|
@@ -202,13 +215,12 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
202
215
|
</template>
|
|
203
216
|
|
|
204
217
|
- If <result/> is `EDIT`:
|
|
205
|
-
Set <args
|
|
218
|
+
Set <args>--int-reuse-task</args>.
|
|
206
219
|
<if condition="<getopt-option-next/> is not equal `none`">
|
|
207
|
-
|
|
208
|
-
remaining list tokens to the downstream skill).
|
|
220
|
+
Set <args><args/> --next <getopt-option-next/></args>
|
|
209
221
|
</if>
|
|
210
222
|
Only output the following <template/> and then call the
|
|
211
|
-
tool `Skill(skill: "ase:ase-task-edit", args: <args/>)`
|
|
223
|
+
tool `Skill(skill: "ase:ase-task-edit", args: "<args/>")`
|
|
212
224
|
to invoke the `ase:ase-task-edit` skill in order to *edit*
|
|
213
225
|
the updated plan. Immediately stop processing the current
|
|
214
226
|
skill once the `Skill` tool was used.
|
|
@@ -218,13 +230,12 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
218
230
|
</template>
|
|
219
231
|
|
|
220
232
|
- If <result/> is `IMPLEMENT`:
|
|
221
|
-
Set <args
|
|
233
|
+
Set <args>--int-reuse-task</args>.
|
|
222
234
|
<if condition="<getopt-option-next/> is not equal `none`">
|
|
223
|
-
|
|
224
|
-
remaining list tokens to the downstream skill).
|
|
235
|
+
Set <args><args/> --next <getopt-option-next/></args>
|
|
225
236
|
</if>
|
|
226
237
|
Only output the following <template/> and then call the
|
|
227
|
-
tool `Skill(skill: "ase:ase-task-implement", args: <args/>)`
|
|
238
|
+
tool `Skill(skill: "ase:ase-task-implement", args: "<args/>")`
|
|
228
239
|
to invoke the `ase:ase-task-implement` skill in order to
|
|
229
240
|
*implement* the updated plan. Immediately stop processing
|
|
230
241
|
the current skill once the `Skill` tool was used.
|
|
@@ -233,3 +244,12 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
233
244
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- hand-off to implement**
|
|
234
245
|
</template>
|
|
235
246
|
|
|
247
|
+
- If <result/> matches `OTHER: <text/>` or is any other
|
|
248
|
+
unrecognized value:
|
|
249
|
+
Treat it as `DONE` (the plan is already preflighted):
|
|
250
|
+
only output the following <template/> and then *STOP*.
|
|
251
|
+
|
|
252
|
+
<template>
|
|
253
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- done**
|
|
254
|
+
</template>
|
|
255
|
+
|
|
@@ -16,7 +16,7 @@ The `ase-task-preflight` skill performs a *preflight* (dry-run,
|
|
|
16
16
|
test-drive) of the *implementation* of a task plan by creating a
|
|
17
17
|
draft for a corresponding, complete *artifact change set* in
|
|
18
18
|
*unified diff* format. The draft is appended to the task plan as
|
|
19
|
-
|
|
19
|
+
an `IMPLEMENTATION DRAFT` section (replacing any previous draft).
|
|
20
20
|
No source files are modified.
|
|
21
21
|
|
|
22
22
|
After the preflight, the user is asked whether to stop, hand
|